changeset 6746:9b076bc3ab67 hs25-b01

Merge
author amurillo
date Fri, 14 Sep 2012 21:50:58 -0700
parents d70102c4cb73 (current diff) 6dfc6a541338 (diff)
children 80e4129f0e28
files agent/src/share/classes/sun/jvm/hotspot/ci/ciArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/ci/ciInstanceKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/ci/ciKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/ci/ciMethodKlass.java agent/src/share/classes/sun/jvm/hotspot/ci/ciObjArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/ci/ciTypeArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSPermGen.java agent/src/share/classes/sun/jvm/hotspot/memory/CMSPermGen.java agent/src/share/classes/sun/jvm/hotspot/memory/CMSPermGenGen.java agent/src/share/classes/sun/jvm/hotspot/memory/CompactingPermGen.java agent/src/share/classes/sun/jvm/hotspot/memory/CompactingPermGenGen.java agent/src/share/classes/sun/jvm/hotspot/memory/ContigPermSpace.java agent/src/share/classes/sun/jvm/hotspot/memory/PermGen.java agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/CompiledICHolderKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethodKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/KlassKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/MethodDataKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/MethodKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/ObjArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/oops/TypeArrayKlassKlass.java agent/src/share/classes/sun/jvm/hotspot/ui/tree/BadOopTreeNodeAdapter.java make/solaris/makefiles/reorder_COMPILER1_amd64 make/solaris/makefiles/reorder_COMPILER1_i486 make/solaris/makefiles/reorder_COMPILER1_sparc make/solaris/makefiles/reorder_COMPILER1_sparcv9 make/solaris/makefiles/reorder_COMPILER2_amd64 make/solaris/makefiles/reorder_COMPILER2_i486 make/solaris/makefiles/reorder_COMPILER2_sparc make/solaris/makefiles/reorder_COMPILER2_sparcv9 make/solaris/makefiles/reorder_CORE_i486 make/solaris/makefiles/reorder_CORE_sparc make/solaris/makefiles/reorder_CORE_sparcv9 make/solaris/makefiles/reorder_TIERED_amd64 make/solaris/makefiles/reorder_TIERED_i486 make/solaris/makefiles/reorder_TIERED_sparc make/solaris/makefiles/reorder_TIERED_sparcv9 make/solaris/reorder.sh src/cpu/sparc/vm/dump_sparc.cpp src/cpu/x86/vm/dump_x86_32.cpp src/cpu/x86/vm/dump_x86_64.cpp src/cpu/zero/vm/dump_zero.cpp src/share/vm/ci/ciArrayKlassKlass.hpp src/share/vm/ci/ciCPCache.cpp src/share/vm/ci/ciCPCache.hpp src/share/vm/ci/ciInstanceKlassKlass.cpp src/share/vm/ci/ciInstanceKlassKlass.hpp src/share/vm/ci/ciKlassKlass.cpp src/share/vm/ci/ciKlassKlass.hpp src/share/vm/ci/ciMethodKlass.cpp src/share/vm/ci/ciMethodKlass.hpp src/share/vm/ci/ciObjArrayKlassKlass.cpp src/share/vm/ci/ciObjArrayKlassKlass.hpp src/share/vm/ci/ciTypeArrayKlassKlass.cpp src/share/vm/ci/ciTypeArrayKlassKlass.hpp src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp src/share/vm/gc_implementation/parallelScavenge/psPermGen.hpp src/share/vm/memory/classify.cpp src/share/vm/memory/classify.hpp src/share/vm/memory/compactPermGen.hpp src/share/vm/memory/compactingPermGenGen.cpp src/share/vm/memory/compactingPermGenGen.hpp src/share/vm/memory/dump.cpp src/share/vm/memory/permGen.cpp src/share/vm/memory/permGen.hpp src/share/vm/memory/restore.cpp src/share/vm/memory/serialize.cpp src/share/vm/oops/arrayKlassKlass.cpp src/share/vm/oops/arrayKlassKlass.hpp src/share/vm/oops/compiledICHolderKlass.cpp src/share/vm/oops/compiledICHolderKlass.hpp src/share/vm/oops/compiledICHolderOop.cpp src/share/vm/oops/compiledICHolderOop.hpp src/share/vm/oops/constMethodKlass.cpp src/share/vm/oops/constMethodKlass.hpp src/share/vm/oops/constMethodOop.cpp src/share/vm/oops/constMethodOop.hpp src/share/vm/oops/constantPoolKlass.cpp src/share/vm/oops/constantPoolKlass.hpp src/share/vm/oops/constantPoolOop.cpp src/share/vm/oops/constantPoolOop.hpp src/share/vm/oops/cpCacheKlass.cpp src/share/vm/oops/cpCacheKlass.hpp src/share/vm/oops/cpCacheOop.cpp src/share/vm/oops/cpCacheOop.hpp src/share/vm/oops/instanceKlassKlass.cpp src/share/vm/oops/instanceKlassKlass.hpp src/share/vm/oops/klassKlass.cpp src/share/vm/oops/klassKlass.hpp src/share/vm/oops/klassOop.cpp src/share/vm/oops/klassOop.hpp src/share/vm/oops/methodDataKlass.cpp src/share/vm/oops/methodDataKlass.hpp src/share/vm/oops/methodDataOop.cpp src/share/vm/oops/methodDataOop.hpp src/share/vm/oops/methodKlass.cpp src/share/vm/oops/methodKlass.hpp src/share/vm/oops/methodOop.cpp src/share/vm/oops/methodOop.hpp src/share/vm/oops/objArrayKlassKlass.cpp src/share/vm/oops/objArrayKlassKlass.hpp src/share/vm/oops/typeArrayKlassKlass.cpp src/share/vm/oops/typeArrayKlassKlass.hpp
diffstat 898 files changed, 35521 insertions(+), 92090 deletions(-) [+]
line wrap: on
line diff
--- a/agent/doc/clhsdb.html	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/doc/clhsdb.html	Fri Sep 14 21:50:58 2012 -0700
@@ -38,10 +38,10 @@
   assert true | false <font color="red">turn on/off asserts in SA code</font>
   attach pid | exec core  <font color="red">attach SA to a process or core</font>
   class name <font color="red">find a Java class from debuggee and print oop</font>
-  classes <font color="red">print all loaded Java classes with klassOop</font>
+  classes <font color="red">print all loaded Java classes with Klass*</font>
   detach <font color="red">detach SA from current target</font>
   dis address [ length ]  <font color="red">disassemble (sparc/x86) specified number of instructions from given address</font>
-  dumpclass { address | name } [ directory ] <font color="red">dump .class file for given klassOop or class name</font>
+  dumpclass { address | name } [ directory ] <font color="red">dump .class file for given Klass* or class name</font>
   dumpheap [ file ] <font color="red">dump heap in hprof binary format</font>
   echo [ true | false ] <font color="red">turn on/off command echo mode</font>
   examine [ address/count ] | [ address,address] <font color="red">show contents of memory from given address</font>
@@ -51,7 +51,7 @@
   help [ command ] <font color="red">print help message for all commands or just given command</font>
   history <font color="red">show command history. usual !command-number syntax works.</font>
   inspect expression <font color="red">inspect a given oop</font>
-  jdis address <font color="red">show bytecode disassembly of a given methodOop</font>
+  jdis address <font color="red">show bytecode disassembly of a given Method*</font>
   jhisto <font color="red">show Java heap histogram</font>
   jseval script <font color="red">evaluate a given string as JavaScript code</font>
   jsload file <font color="red">load and evaluate a JavaScript file</font>
@@ -59,7 +59,7 @@
   livenmethods <font color="red">show all live nmethods</font>
   mem address [ length ] <font color="red">show contents of memory -- also shows closest ELF/COFF symbol if found</font>
   pmap <font color="red">show Solaris pmap-like output</font>
-  print expression <font color="red">print given klassOop, methodOop or arbitrary address</font>
+  print expression <font color="red">print given Klass*, Method* or arbitrary address</font>
   printas type expression <font color="red">print given address as given HotSpot type. eg. print JavaThread &lt;address&gt;</font>
   printstatics [ type ] <font color="red">print static fields of given HotSpot type (or all types if none specified)</font>
   pstack [-v] <font color="red">show mixed mode stack trace for all Java, non-Java threads. -v is verbose mode</font>
--- a/agent/src/os/bsd/ps_core.c	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/os/bsd/ps_core.c	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -210,7 +210,6 @@
 // mapped.  This structure gets written to a file.  It is not a class,
 // so that the compilers don't add any compiler-private data to it.
 
-// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
 #define NUM_SHARED_MAPS 4
 
 // Refer to FileMapInfo::_current_version in filemap.hpp
@@ -234,7 +233,7 @@
     char   _read_only;       // read only space?
     char   _allow_exec;      // executable code in space?
 
-  } _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
+  } _space[NUM_SHARED_MAPS];
 
   // Ignore the rest of the FileMapHeader. We don't need those fields here.
 };
--- a/agent/src/os/linux/ps_core.c	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/os/linux/ps_core.c	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -209,7 +209,6 @@
 // mapped.  This structure gets written to a file.  It is not a class,
 // so that the compilers don't add any compiler-private data to it.
 
-// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
 #define NUM_SHARED_MAPS 4
 
 // Refer to FileMapInfo::_current_version in filemap.hpp
@@ -233,7 +232,7 @@
     char   _read_only;       // read only space?
     char   _allow_exec;      // executable code in space?
 
-  } _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
+  } _space[NUM_SHARED_MAPS];
 
   // Ignore the rest of the FileMapHeader. We don't need those fields here.
 };
--- a/agent/src/os/solaris/proc/saproc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/os/solaris/proc/saproc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -510,7 +510,6 @@
 // mapped.  This structure gets written to a file.  It is not a class, so
 // that the compilers don't add any compiler-private data to it.
 
-// Refer to CompactingPermGenGen::n_regions in compactingPermGenGen.hpp
 const int NUM_SHARED_MAPS = 4;
 
 // Refer to FileMapInfo::_current_version in filemap.hpp
@@ -531,7 +530,7 @@
    bool   _read_only;       // read only space?
    bool   _allow_exec;      // executable code in space?
 
- } _space[NUM_SHARED_MAPS]; // was _space[CompactingPermGenGen::n_regions];
+ } _space[NUM_SHARED_MAPS];
 
  // Ignore the rest of the FileMapHeader. We don't need those fields here.
 };
--- a/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -634,29 +634,57 @@
                 } else {
                     String s = t.nextToken();
                     if (s.equals("-a")) {
-                        HeapVisitor iterator = new DefaultHeapVisitor() {
-                                public boolean doObj(Oop obj) {
-                                    if (obj instanceof MethodData) {
-                                        Method m = ((MethodData)obj).getMethod();
-                                        out.println("MethodData " + obj.getHandle() + " for " +
+                        SystemDictionary sysDict = VM.getVM().getSystemDictionary();
+                        sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
+                                public void visit(Klass k) {
+                                    if (k instanceof InstanceKlass) {
+                                        MethodArray methods = ((InstanceKlass)k).getMethods();
+                                        for (int i = 0; i < methods.length(); i++) {
+                                            Method m = methods.at(i);
+                                            MethodData mdo = m.getMethodData();
+                                            if (mdo != null) {
+                                                out.println("MethodData " + mdo.getAddress() + " for " +
                                                     "method " + m.getMethodHolder().getName().asString() + "." +
                                                     m.getName().asString() +
-                                                    m.getSignature().asString() + "@" + m.getHandle());
-                                        ((MethodData)obj).printDataOn(out);
+                                                            m.getSignature().asString() + "@" + m.getAddress());
+                                                mdo.printDataOn(out);
                                     }
-                                    return false;
+                                }
+                                    }
                                 }
-                            };
-                        VM.getVM().getObjectHeap().iteratePerm(iterator);
+                            }
+                            );
                     } else {
                         Address a = VM.getVM().getDebugger().parseAddress(s);
-                        OopHandle handle = a.addOffsetToAsOopHandle(0);
-                        MethodData mdo = (MethodData)VM.getVM().getObjectHeap().newOop(handle);
+                        MethodData mdo = (MethodData) Metadata.instantiateWrapperFor(a);
                         mdo.printDataOn(out);
                     }
                 }
             }
         },
+        new Command("printall", "printall", false) {
+            // Print every MDO in the heap or the one referenced by expression.
+            public void doit(Tokens t) {
+                if (t.countTokens() != 0) {
+                    usage();
+                } else {
+                    SystemDictionary sysDict = VM.getVM().getSystemDictionary();
+                    sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
+                            public void visit(Klass k) {
+                                if (k instanceof InstanceKlass && ((InstanceKlass)k).getConstants().getCache() != null) {
+                                    MethodArray methods = ((InstanceKlass)k).getMethods();
+                                    for (int i = 0; i < methods.length(); i++) {
+                                        Method m = methods.at(i);
+                                        HTMLGenerator gen = new HTMLGenerator(false);
+                                        out.println(gen.genHTML(m));
+                                    }
+                                }
+                            }
+                        }
+                        );
+                }
+            }
+        },
         new Command("dumpideal", "dumpideal { -a | id }", false) {
             // Do a full dump of the nodes reachabile from root in each compiler thread.
             public void doit(Tokens t) {
@@ -1229,7 +1257,7 @@
                             }
                         };
                     VM.getVM().getObjectHeap().iterateRaw(iterator);
-                } else if (type.equals("heap") || type.equals("perm")) {
+                } else if (type.equals("heap")) {
                     HeapVisitor iterator = new DefaultHeapVisitor() {
                             public boolean doObj(Oop obj) {
                                 int index = 0;
@@ -1246,11 +1274,7 @@
                                 return false;
                             }
                         };
-                    if (type.equals("heap")) {
                         VM.getVM().getObjectHeap().iterate(iterator);
-                    } else {
-                        VM.getVM().getObjectHeap().iteratePerm(iterator);
-                    }
                 } else if (type.equals("codecache")) {
                     CodeCacheVisitor v = new CodeCacheVisitor() {
                             public void prologue(Address start, Address end) {
--- a/agent/src/share/classes/sun/jvm/hotspot/HSDB.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/HSDB.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -998,7 +998,7 @@
                                                        curFrame.addressOfInterpreterFrameLocal((int) interpreterFrameMethod.getMaxLocals() + offset),
                                                        "Interpreter locals area for frame with SP = " + curFrame.getSP()));
               }
-              String methodAnno = "Interpreter frame methodOop";
+              String methodAnno = "Interpreter frame Method*";
               if (interpreterFrameMethod == null) {
                 methodAnno += " (BAD OOP)";
               }
@@ -1054,13 +1054,6 @@
                             }
                           }
 
-                          if (bad) {
-                            // Try perm gen
-                            if (heap.permGen().isIn(handle)) {
-                              anno = "PermGen ";
-                              bad = false;
-                            }
-                          }
                         } else if (collHeap instanceof ParallelScavengeHeap) {
                           ParallelScavengeHeap heap = (ParallelScavengeHeap) collHeap;
                           if (heap.youngGen().isIn(handle)) {
@@ -1069,9 +1062,6 @@
                           } else if (heap.oldGen().isIn(handle)) {
                             anno = "PSOldGen ";
                             bad = false;
-                          } else if (heap.permGen().isIn(handle)) {
-                            anno = "PSPermGen ";
-                            bad = false;
                           }
                         } else {
                           // Optimistically assume the oop isn't bad
--- a/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -50,6 +50,7 @@
   private static final int C_INT8_SIZE  = 1;
   private static final int C_INT32_SIZE = 4;
   private static final int C_INT64_SIZE = 8;
+  private static int pointerSize = UNINITIALIZED_SIZE;
 
   private static final boolean DEBUG;
   static {
@@ -185,6 +186,9 @@
         long size             = entryAddr.getCIntegerAt(typeEntrySizeOffset, C_INT64_SIZE, true);
 
         createType(typeName, superclassName, isOopType, isIntegerType, isUnsigned, size);
+        if (pointerSize == UNINITIALIZED_SIZE && typeName.equals("void*")) {
+          pointerSize = (int)size;
+        }
       }
 
       entryAddr = entryAddr.addOffsetTo(typeEntryArrayStride);
@@ -678,7 +682,11 @@
       }
     }
     result = new BasicPointerType(this, typeName, targetType);
-    result.setSize(UNINITIALIZED_SIZE);
+    if (pointerSize == UNINITIALIZED_SIZE && !typeName.equals("void*")) {
+      // void* must be declared early so that other pointer types can use that to set their size.
+      throw new InternalError("void* type hasn't been seen when parsing " + typeName);
+    }
+    result.setSize(pointerSize);
     addType(result);
     return result;
   }
@@ -731,9 +739,11 @@
                                            "had its size redefined (old was " + curType.getSize() + ", new is " + size + ").");
             }
 
+            if (!typeNameIsPointerType(typeName)) {
             System.err.println("Warning: the type \"" + typeName + "\" (declared in the remote VM in VMStructs::localHotSpotVMTypes) " +
                                "had its size declared as " + size + " twice. Continuing.");
         }
+        }
 
     }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.io.PrintStream;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciArrayKlassKlass extends ciKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciArrayKlassKlass");
-  }
-
-
-  public ciArrayKlassKlass(Address addr) {
-    super(addr);
-  }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciBaseObject.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+package sun.jvm.hotspot.ci;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.types.*;
+
+public class ciBaseObject extends VMObject {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    Type type      = db.lookupType("ciBaseObject");
+    identField = new CIntField(type.getCIntegerField("_ident"), 0);
+  }
+
+  private static CIntField identField;
+
+  public ciBaseObject(Address addr) {
+    super(addr);
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciInstanceKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciInstanceKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -47,8 +47,8 @@
     Type type      = db.lookupType("ciInstanceKlass");
     initStateField = new CIntField(type.getCIntegerField("_init_state"), 0);
     isSharedField = new CIntField(type.getCIntegerField("_is_shared"), 0);
-    CLASS_STATE_LINKED = db.lookupIntConstant("instanceKlass::linked").intValue();
-    CLASS_STATE_FULLY_INITIALIZED = db.lookupIntConstant("instanceKlass::fully_initialized").intValue();
+    CLASS_STATE_LINKED = db.lookupIntConstant("InstanceKlass::linked").intValue();
+    CLASS_STATE_FULLY_INITIALIZED = db.lookupIntConstant("InstanceKlass::fully_initialized").intValue();
   }
 
   private static CIntField initStateField;
@@ -63,7 +63,7 @@
   public int initState() {
     int initState = (int)initStateField.getValue(getAddress());
     if (isShared() && initState < CLASS_STATE_LINKED) {
-      InstanceKlass ik = (InstanceKlass)getOop();
+      InstanceKlass ik = (InstanceKlass)getMetadata();
       initState = ik.getInitStateAsInt();
     }
     return initState;
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciInstanceKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciInstanceKlassKlass extends ciKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciInstanceKlassKlass");
-  }
-
-
-  public ciInstanceKlassKlass(Address addr) {
-    super(addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.io.PrintStream;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciKlassKlass extends ciKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciKlassKlass");
-  }
-
-
-  public ciKlassKlass(Address addr) {
-    super(addr);
-  }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciMetadata.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+package sun.jvm.hotspot.ci;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.types.*;
+
+public class ciMetadata extends ciBaseObject {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    Type type      = db.lookupType("ciMetadata");
+    metadataField = new MetadataField(type.getAddressField("_metadata"), 0);
+  }
+
+  private static MetadataField metadataField;
+
+  public Metadata getMetadata() {
+    return metadataField.getValue(getAddress());
+  }
+
+  public ciMetadata(Address addr) {
+    super(addr);
+  }
+
+  public void printOn(PrintStream out) {
+    getMetadata().printValueOn(out);
+  }
+
+  public String toString() {
+    return getMetadata().toString();
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethod.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -32,7 +32,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 
-public class ciMethod extends ciObject {
+public class ciMethod extends ciMetadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -61,7 +61,7 @@
   }
 
   public Method method() {
-    return (Method)getOop();
+    return (Method)getMetadata();
   }
 
   public int interpreterThrowoutCount() {
@@ -75,7 +75,7 @@
   public int instructionsSize() {
     if (instructionsSizeField == null) {
       // XXX
-      Method method = (Method)getOop();
+      Method method = method();
       NMethod nm = method.getNativeMethod();
       if (nm != null) return (int)nm.codeEnd().minus(nm.getVerifiedEntryPoint());
       return 0;
@@ -84,7 +84,7 @@
   }
 
   public void printShortName(PrintStream st) {
-    Method method = (Method)getOop();
+    Method method = method();
     st.printf(" %s::%s", method.getMethodHolder().getName().asString().replace('/', '.'),
               method.getName().asString());
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethodData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethodData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -31,7 +31,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 
-public class ciMethodData extends ciObject {
+public class ciMethodData extends ciMetadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -54,7 +54,7 @@
     extraDataSizeField = new CIntField(type.getCIntegerField("_extra_data_size"), 0);
     dataSizeField = new CIntField(type.getCIntegerField("_data_size"), 0);
     stateField = new CIntField(type.getCIntegerField("_state"), 0);
-    sizeofMethodDataOopDesc = (int)db.lookupType("methodDataOopDesc").getSize();;
+    sizeofMethodDataOopDesc = (int)db.lookupType("MethodData").getSize();;
   }
 
   private static AddressField origField;
@@ -83,7 +83,7 @@
   }
 
   public byte[] orig() {
-    // fetch the orig methodDataOopDesc data between header and dataSize
+    // fetch the orig MethodData data between header and dataSize
     Address base = getAddress().addOffsetTo(origField.getOffset());
     byte[] result = new byte[MethodData.sizeofMethodDataOopDesc];
     for (int i = 0; i < MethodData.sizeofMethodDataOopDesc; i++) {
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciMethodKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciMethodKlass extends ciKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciMethodKlass");
-  }
-
-
-  public ciMethodKlass(Address addr) {
-    super(addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciObjArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.io.PrintStream;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciObjArrayKlassKlass extends ciArrayKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciObjArrayKlassKlass");
-  }
-
-
-  public ciObjArrayKlassKlass(Address addr) {
-    super(addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciObject.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciObject.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -31,7 +31,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 
-public class ciObject extends VMObject {
+public class ciObject extends ciBaseObject {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -42,12 +42,10 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type      = db.lookupType("ciObject");
-    identField = new CIntField(type.getCIntegerField("_ident"), 0);
     klassField = type.getAddressField("_klass");
     handleField = type.getAddressField("_handle");
   }
 
-  private static CIntField identField;
   private static AddressField klassField;
   private static AddressField handleField;
 
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciObjectFactory.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciObjectFactory.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -44,18 +44,20 @@
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type      = db.lookupType("ciObjectFactory");
     unloadedMethodsField = type.getAddressField("_unloaded_methods");
-    ciObjectsField = type.getAddressField("_ci_objects");
+    ciMetadataField = type.getAddressField("_ci_metadata");
     symbolsField = type.getAddressField("_symbols");
 
     ciObjectConstructor = new VirtualBaseConstructor<ciObject>(db, db.lookupType("ciObject"), "sun.jvm.hotspot.ci", ciObject.class);
+    ciMetadataConstructor = new VirtualBaseConstructor<ciMetadata>(db, db.lookupType("ciMetadata"), "sun.jvm.hotspot.ci", ciMetadata.class);
     ciSymbolConstructor = new VirtualBaseConstructor<ciSymbol>(db, db.lookupType("ciSymbol"), "sun.jvm.hotspot.ci", ciSymbol.class);
   }
 
   private static AddressField unloadedMethodsField;
-  private static AddressField ciObjectsField;
+  private static AddressField ciMetadataField;
   private static AddressField symbolsField;
 
   private static VirtualBaseConstructor<ciObject> ciObjectConstructor;
+  private static VirtualBaseConstructor<ciMetadata> ciMetadataConstructor;
   private static VirtualBaseConstructor<ciSymbol> ciSymbolConstructor;
 
   public static ciObject get(Address addr) {
@@ -64,8 +66,14 @@
     return (ciObject)ciObjectConstructor.instantiateWrapperFor(addr);
   }
 
-  public GrowableArray<ciObject> objects() {
-    return GrowableArray.create(ciObjectsField.getValue(getAddress()), ciObjectConstructor);
+  public static ciMetadata getMetadata(Address addr) {
+    if (addr == null) return null;
+
+    return (ciMetadata)ciMetadataConstructor.instantiateWrapperFor(addr);
+  }
+
+  public GrowableArray<ciMetadata> objects() {
+    return GrowableArray.create(ciMetadataField.getValue(getAddress()), ciMetadataConstructor);
   }
 
   public GrowableArray<ciSymbol> symbols() {
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciReceiverTypeData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciReceiverTypeData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -42,7 +42,7 @@
 
   public ciKlass receiverAt(int row) {
     //assert((uint)row < rowLimit(), "oob");
-    ciObject recv = ciObjectFactory.get(addressAt(receiverCellIndex(row)));
+    ciMetadata recv = ciObjectFactory.getMetadata(addressAt(receiverCellIndex(row)));
     if (recv != null && !(recv instanceof ciKlass)) {
       System.err.println(recv);
     }
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciSymbol.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciSymbol.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -31,7 +31,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 
-public class ciSymbol extends VMObject {
+public class ciSymbol extends ciMetadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -42,12 +42,10 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type = db.lookupType("ciSymbol");
-    identField = type.getCIntegerField("_ident");
     symbolField = type.getAddressField("_symbol");
   }
 
   private static AddressField symbolField;
-  private static CIntegerField identField;
 
   public String asUtf88() {
     Symbol sym = Symbol.create(symbolField.getValue(getAddress()));
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciType.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciType.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -30,7 +30,7 @@
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
 
-public class ciType extends ciObject {
+public class ciType extends ciMetadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciTypeArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package sun.jvm.hotspot.ci;
-
-import java.io.PrintStream;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.oops.*;
-import sun.jvm.hotspot.types.*;
-
-public class ciTypeArrayKlassKlass extends ciArrayKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("ciTypeArrayKlassKlass");
-  }
-
-
-  public ciTypeArrayKlassKlass(Address addr) {
-    super(addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ci/ciVirtualCallData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ci/ciVirtualCallData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -42,7 +42,7 @@
 
   public ciKlass receiverAt(int row) {
     //assert((uint)row < rowLimit(), "oob");
-    ciObject recv = ciObjectFactory.get(addressAt(receiverCellIndex(row)));
+    ciMetadata recv = ciObjectFactory.getMetadata(addressAt(receiverCellIndex(row)));
     if (recv != null && !(recv instanceof ciKlass)) {
       System.err.println(recv);
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/classfile/ClassLoaderData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ *
+ */
+
+package sun.jvm.hotspot.classfile;
+
+import java.io.PrintStream;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.types.*;
+
+public class ClassLoaderData extends VMObject {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    Type type      = db.lookupType("ClassLoaderData");
+    classLoaderField = type.getOopField("_class_loader");
+    nextField = type.getAddressField("_next");
+  }
+
+  private static sun.jvm.hotspot.types.OopField classLoaderField;
+  private static AddressField nextField;
+
+  public ClassLoaderData(Address addr) {
+    super(addr);
+  }
+
+  public static ClassLoaderData instantiateWrapperFor(Address addr) {
+    if (addr == null) {
+      return null;
+    }
+    return new ClassLoaderData(addr);
+  }
+
+  public Oop getClassLoader() {
+    return VM.getVM().getObjectHeap().newOop(classLoaderField.getValue(getAddress()));
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/DebugInfoReadStream.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -29,6 +29,7 @@
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.runtime.VM;
 import sun.jvm.hotspot.utilities.*;
+import sun.jvm.hotspot.oops.Method;
 
 public class DebugInfoReadStream extends CompressedReadStream {
   private NMethod code;
@@ -53,6 +54,10 @@
     return code.getOopAt(readInt());
   }
 
+  public Method readMethod() {
+    return code.getMethodAt(readInt());
+  }
+
   ScopeValue readObjectValue() {
     int id = readInt();
     if (Assert.ASSERTS_ENABLED) {
--- a/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/NMethod.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -35,7 +35,7 @@
 
 public class NMethod extends CodeBlob {
   private static long          pcDescSize;
-  private static sun.jvm.hotspot.types.OopField methodField;
+  private static AddressField  methodField;
   /** != InvocationEntryBci if this nmethod is an on-stack replacement method */
   private static CIntegerField entryBCIField;
   /** To support simple linked-list chaining of nmethods */
@@ -50,6 +50,7 @@
   private static CIntegerField origPCOffsetField;
   private static CIntegerField stubOffsetField;
   private static CIntegerField oopsOffsetField;
+  private static CIntegerField metadataOffsetField;
   private static CIntegerField scopesDataOffsetField;
   private static CIntegerField scopesPCsOffsetField;
   private static CIntegerField dependenciesOffsetField;
@@ -88,7 +89,7 @@
   private static void initialize(TypeDataBase db) {
     Type type = db.lookupType("nmethod");
 
-    methodField                 = type.getOopField("_method");
+    methodField                 = type.getAddressField("_method");
     entryBCIField               = type.getCIntegerField("_entry_bci");
     osrLinkField                = type.getAddressField("_osr_link");
     scavengeRootLinkField       = type.getAddressField("_scavenge_root_link");
@@ -100,6 +101,7 @@
     origPCOffsetField           = type.getCIntegerField("_orig_pc_offset");
     stubOffsetField             = type.getCIntegerField("_stub_offset");
     oopsOffsetField             = type.getCIntegerField("_oops_offset");
+    metadataOffsetField         = type.getCIntegerField("_metadata_offset");
     scopesDataOffsetField       = type.getCIntegerField("_scopes_data_offset");
     scopesPCsOffsetField        = type.getCIntegerField("_scopes_pcs_offset");
     dependenciesOffsetField     = type.getCIntegerField("_dependencies_offset");
@@ -126,7 +128,7 @@
   }
 
   public Method getMethod() {
-    return (Method) VM.getVM().getObjectHeap().newOop(methodField.getValue(addr));
+    return (Method)Metadata.instantiateWrapperFor(methodField.getValue(addr));
   }
 
   // Type info
@@ -146,7 +148,9 @@
   public Address stubBegin()            { return headerBegin().addOffsetTo(getStubOffset());         }
   public Address stubEnd()              { return headerBegin().addOffsetTo(getOopsOffset());         }
   public Address oopsBegin()            { return headerBegin().addOffsetTo(getOopsOffset());         }
-  public Address oopsEnd()              { return headerBegin().addOffsetTo(getScopesDataOffset());   }
+  public Address oopsEnd()              { return headerBegin().addOffsetTo(getMetadataOffset());     }
+  public Address metadataBegin()        { return headerBegin().addOffsetTo(getMetadataOffset());     }
+  public Address metadataEnd()          { return headerBegin().addOffsetTo(getScopesDataOffset());   }
   public Address scopesDataBegin()      { return headerBegin().addOffsetTo(getScopesDataOffset());   }
   public Address scopesDataEnd()        { return headerBegin().addOffsetTo(getScopesPCsOffset());    }
   public Address scopesPCsBegin()       { return headerBegin().addOffsetTo(getScopesPCsOffset());    }
@@ -162,6 +166,7 @@
   public int instsSize()                { return (int) instsEnd()       .minus(instsBegin());        }
   public int stubSize()                 { return (int) stubEnd()        .minus(stubBegin());         }
   public int oopsSize()                 { return (int) oopsEnd()        .minus(oopsBegin());         }
+  public int metadataSize()             { return (int) metadataEnd()    .minus(metadataBegin());     }
   public int scopesDataSize()           { return (int) scopesDataEnd()  .minus(scopesDataBegin());   }
   public int scopesPCsSize()            { return (int) scopesPCsEnd()   .minus(scopesPCsBegin());    }
   public int dependenciesSize()         { return (int) dependenciesEnd().minus(dependenciesBegin()); }
@@ -185,12 +190,14 @@
   public boolean instsContains       (Address addr) { return instsBegin()       .lessThanOrEqual(addr) && instsEnd()       .greaterThan(addr); }
   public boolean stubContains        (Address addr) { return stubBegin()        .lessThanOrEqual(addr) && stubEnd()        .greaterThan(addr); }
   public boolean oopsContains        (Address addr) { return oopsBegin()        .lessThanOrEqual(addr) && oopsEnd()        .greaterThan(addr); }
+  public boolean metadataContains    (Address addr) { return metadataBegin()    .lessThanOrEqual(addr) && metadataEnd()    .greaterThan(addr); }
   public boolean scopesDataContains  (Address addr) { return scopesDataBegin()  .lessThanOrEqual(addr) && scopesDataEnd()  .greaterThan(addr); }
   public boolean scopesPCsContains   (Address addr) { return scopesPCsBegin()   .lessThanOrEqual(addr) && scopesPCsEnd()   .greaterThan(addr); }
   public boolean handlerTableContains(Address addr) { return handlerTableBegin().lessThanOrEqual(addr) && handlerTableEnd().greaterThan(addr); }
   public boolean nulChkTableContains (Address addr) { return nulChkTableBegin() .lessThanOrEqual(addr) && nulChkTableEnd() .greaterThan(addr); }
 
   public int getOopsLength() { return (int) (oopsSize() / VM.getVM().getOopSize()); }
+  public int getMetadataLength() { return (int) (metadataSize() / VM.getVM().getOopSize()); }
 
   /** Entry points */
   public Address getEntryPoint()         { return entryPointField.getValue(addr);         }
@@ -205,6 +212,19 @@
     return oopsBegin().getOopHandleAt((index - 1) * VM.getVM().getOopSize());
   }
 
+  /** Support for metadata in scopes and relocs. Note: index 0 is reserved for null. */
+  public Address getMetadataAt(int index) {
+    if (index == 0) return null;
+    if (Assert.ASSERTS_ENABLED) {
+      Assert.that(index > 0 && index <= getMetadataLength(), "must be a valid non-zero index");
+    }
+    return metadataBegin().getAddressAt((index - 1) * VM.getVM().getOopSize());
+  }
+
+  public Method getMethodAt(int index) {
+    return (Method)Metadata.instantiateWrapperFor(getMetadataAt(index));
+  }
+
   // FIXME: add interpreter_entry_point()
   // FIXME: add lazy_interpreter_entry_point() for C2
 
@@ -412,6 +432,7 @@
   private int getDeoptMhOffset()      { return (int) deoptMhOffsetField     .getValue(addr); }
   private int getStubOffset()         { return (int) stubOffsetField        .getValue(addr); }
   private int getOopsOffset()         { return (int) oopsOffsetField        .getValue(addr); }
+  private int getMetadataOffset()     { return (int) metadataOffsetField    .getValue(addr); }
   private int getScopesDataOffset()   { return (int) scopesDataOffsetField  .getValue(addr); }
   private int getScopesPCsOffset()    { return (int) scopesPCsOffsetField   .getValue(addr); }
   private int getDependenciesOffset() { return (int) dependenciesOffsetField.getValue(addr); }
--- a/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/code/ScopeDesc.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -61,7 +61,7 @@
     DebugInfoReadStream stream  = streamAt(decodeOffset);
 
     senderDecodeOffset = stream.readInt();
-    method = (Method) VM.getVM().getObjectHeap().newOop(stream.readOopHandle());
+    method = stream.readMethod();
     bci    = stream.readBCI();
     // Decode offsets for body and sender
     localsDecodeOffset      = stream.readInt();
@@ -79,7 +79,7 @@
     DebugInfoReadStream stream  = streamAt(decodeOffset);
 
     senderDecodeOffset = stream.readInt();
-    method = (Method) VM.getVM().getObjectHeap().newOop(stream.readOopHandle());
+    method = stream.readMethod();
     bci    = stream.readBCI();
     // Decode offsets for body and sender
     localsDecodeOffset      = stream.readInt();
--- a/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/compiler/CompileTask.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -56,8 +56,8 @@
   }
 
   public Method method() {
-    OopHandle oh =  methodField.getValue(getAddress()).getOopHandleAt(0);
-    return (Method)VM.getVM().getObjectHeap().newOop(oh);
+    Address oh =  methodField.getValue(getAddress()).getAddressAt(0);
+    return (Method)Metadata.instantiateWrapperFor(oh);
   }
 
   public int osrBci() {
--- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/PSPermGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.gc_implementation.parallelScavenge;
-
-import java.io.*;
-import java.util.*;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.gc_implementation.shared.*;
-import sun.jvm.hotspot.memory.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-public class PSPermGen extends PSOldGen {
-   static {
-      VM.registerVMInitializedObserver(new Observer() {
-         public void update(Observable o, Object data) {
-            initialize(VM.getVM().getTypeDataBase());
-         }
-      });
-   }
-
-   private static synchronized void initialize(TypeDataBase db) {
-      // just checking type existence
-      Type type = db.lookupType("PSPermGen");
-   }
-
-   public PSPermGen(Address addr) {
-      super(addr);
-   }
-
-   public void printOn(PrintStream tty) {
-      tty.print("PSPermGen [ ");
-      objectSpace().printOn(tty);
-      tty.print(" ] ");
-   }
-
-   // FIXME: no other stuff yet
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/ParallelScavengeHeap.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/gc_implementation/parallelScavenge/ParallelScavengeHeap.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -45,7 +45,6 @@
       Type type = db.lookupType("ParallelScavengeHeap");
       youngGenField = type.getAddressField("_young_gen");
       oldGenField    = type.getAddressField("_old_gen");
-      permGenField    = type.getAddressField("_perm_gen");
    }
 
    public ParallelScavengeHeap(Address addr) {
@@ -55,7 +54,6 @@
    // Fields
    private static AddressField youngGenField;
    private static AddressField oldGenField;
-   private static AddressField permGenField;
 
    // Accessors
    public PSYoungGen youngGen() {
@@ -66,10 +64,6 @@
       return (PSOldGen) VMObjectFactory.newObject(PSOldGen.class, oldGenField.getValue());
    }
 
-   public PSPermGen permGen() {
-      return (PSPermGen) VMObjectFactory.newObject(PSPermGen.class, permGenField.getValue());
-   }
-
    public long capacity() {
       return youngGen().capacity() + oldGen().capacity();
    }
@@ -87,10 +81,6 @@
          return true;
       }
 
-      if (permGen().isIn(a)) {
-         return true;
-      }
-
       return false;
    }
 
@@ -102,7 +92,6 @@
       tty.print("ParallelScavengeHeap [ ");
       youngGen().printOn(tty);
       oldGen().printOn(tty);
-      permGen().printOn(tty);
       tty.print(" ] ");
    }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeDisassembler.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeDisassembler.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -138,9 +138,9 @@
             }
          }
 
-         Object bytecodeObj = null;
+         Bytecode bytecodeObj = null;
          try {
-            bytecodeObj = cstr.newInstance(new Object[] { method, new Integer(bci) });
+            bytecodeObj = (Bytecode)cstr.newInstance(new Object[] { method, new Integer(bci) });
          } catch (Exception exp) {
             if (Assert.ASSERTS_ENABLED) {
                Assert.that(false, "Bytecode instance of class "
@@ -153,11 +153,10 @@
          }
 
          try {
-            visitor.visit((Bytecode) bytecodeObj);
+            visitor.visit(bytecodeObj);
          } catch(ClassCastException castfail) {
-            if (Assert.ASSERTS_ENABLED) {
-               Assert.that(false, clazz.getName() + " is not derived from Bytecode!");
-            }
+             castfail.printStackTrace();
+             System.err.println(method.getAddress() + " " + bci);
          }
       }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInvoke.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeInvoke.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -55,8 +55,7 @@
   public Symbol name() {
     ConstantPool cp = method().getConstants();
     if (isInvokedynamic()) {
-       int[] nt = cp.getNameAndTypeAt(indexForFieldOrMethod());
-       return cp.getSymbolAt(nt[0]);
+      return cp.uncachedGetNameRefAt(indexForFieldOrMethod());
     }
     return cp.getNameRefAt(index());
   }
@@ -65,20 +64,11 @@
   public Symbol signature() {
     ConstantPool cp = method().getConstants();
     if (isInvokedynamic()) {
-       int[] nt = cp.getNameAndTypeAt(indexForFieldOrMethod());
-       return cp.getSymbolAt(nt[1]);
+      return cp.uncachedGetSignatureRefAt(indexForFieldOrMethod());
     }
     return cp.getSignatureRefAt(index());
   }
 
-  public int getSecondaryIndex() {
-    if (isInvokedynamic()) {
-      // change byte-ordering of 4-byte integer
-      return VM.getVM().getBytes().swapInt(javaSignedWordAt(1));
-    }
-    return super.getSecondaryIndex();  // throw an error
-  }
-
   public Method getInvokedMethod() {
     return method().getConstants().getMethodRefAt(index());
   }
@@ -123,7 +113,7 @@
     buf.append(Integer.toString(indexForFieldOrMethod()));
     if (isInvokedynamic()) {
        buf.append('(');
-       buf.append(Integer.toString(getSecondaryIndex()));
+      buf.append(Integer.toString(index()));
        buf.append(')');
     }
     buf.append(" [Method ");
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeLoadConstant.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -46,12 +46,11 @@
   }
 
   public int poolIndex() {
-    int i = rawIndex();
+    int index = rawIndex();
     if (hasCacheIndex()) {
-      ConstantPoolCache cpCache = method().getConstants().getCache();
-      return cpCache.getEntryAt(i).getConstantPoolIndex();
+      return method().getConstants().objectToCPIndex(index);
     } else {
-      return i;
+      return index;
     }
   }
 
@@ -72,8 +71,7 @@
   private Oop getCachedConstant() {
     int i = cacheIndex();
     if (i >= 0) {
-      ConstantPoolCache cpCache = method().getConstants().getCache();
-      return cpCache.getEntryAt(i).getF1();
+      throw new InternalError("invokedynamic not implemented yet");
     }
     return null;
   }
@@ -96,7 +94,7 @@
        return (ctag.isDouble() || ctag.isLong()) ? true: false;
     } else {
        // has to be int or float or String or Klass
-       return (ctag.isUnresolvedString() || ctag.isString()
+       return (ctag.isString()
                || ctag.isUnresolvedKlass() || ctag.isKlass()
                || ctag.isMethodHandle() || ctag.isMethodType()
                || ctag.isInt() || ctag.isFloat())? true: false;
@@ -124,9 +122,9 @@
     ConstantPool cpool = method().getConstants();
     int cpIndex = poolIndex();
     ConstantPool.CPSlot oop = cpool.getSlotAt(cpIndex);
-    if (oop.isOop()) {
-      return (Klass) oop.getOop();
-    } else if (oop.isMetaData()) {
+    if (oop.isResolved()) {
+      return oop.getKlass();
+    } else if (oop.isUnresolved()) {
       return oop.getSymbol();
     } else {
        throw new RuntimeException("should not reach here");
@@ -163,28 +161,21 @@
        return "<float " + Float.toString(cpool.getFloatAt(cpIndex)) + "F>";
     } else if (ctag.isDouble()) {
        return "<double " + Double.toString(cpool.getDoubleAt(cpIndex)) + "D>";
-    } else if (ctag.isString() || ctag.isUnresolvedString()) {
+    } else if (ctag.isString()) {
        // tag change from 'unresolved' to 'string' does not happen atomically.
        // We just look at the object at the corresponding index and
        // decide based on the oop type.
-       ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex);
-       if (obj.isMetaData()) {
-         Symbol sym = obj.getSymbol();
+       Symbol sym = cpool.getUnresolvedStringAt(cpIndex);
          return "<String \"" + sym.asString() + "\">";
-       } else if (obj.isOop()) {
-         return "<String \"" + OopUtilities.stringOopToString(obj.getOop()) + "\">";
-       } else {
-          throw new RuntimeException("should not reach here");
-       }
     } else if (ctag.isKlass() || ctag.isUnresolvedKlass()) {
        // tag change from 'unresolved' to 'klass' does not happen atomically.
        // We just look at the object at the corresponding index and
        // decide based on the oop type.
        ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex);
-       if (obj.isOop()) {
-         Klass k = (Klass) obj.getOop();
-         return "<Class " + k.getName().asString() + "@" + k.getHandle() + ">";
-       } else if (obj.isMetaData()) {
+       if (obj.isResolved()) {
+         Klass k = obj.getKlass();
+         return "<Class " + k.getName().asString() + "@" + k.getAddress() + ">";
+       } else if (obj.isUnresolved()) {
          Symbol sym = obj.getSymbol();
          return "<Class " + sym.asString() + ">";
        } else {
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithCPIndex.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithCPIndex.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -35,10 +35,17 @@
   }
 
   // the constant pool index for this bytecode
-  public int index() { return getIndexU2(code(), false); }
-
-  public int getSecondaryIndex() {
-     throw new IllegalArgumentException("must be invokedynamic");
+  public int index() {
+    if (code() == Bytecodes._invokedynamic) {
+      int index = getIndexU4();
+      if (ConstantPool.isInvokedynamicIndex(index)) {
+        return ConstantPool.decodeInvokedynamicIndex(index);
+      } else {
+        return index;
+      }
+    } else {
+      return getIndexU2(code(), false);
+    }
   }
 
   protected int indexForFieldOrMethod() {
@@ -47,12 +54,8 @@
      int cpCacheIndex = index();
      if (cpCache == null) {
         return cpCacheIndex;
-     } else if (code() == Bytecodes._invokedynamic) {
-        int secondaryIndex = getSecondaryIndex();
-        return cpCache.getMainEntryAt(secondaryIndex).getConstantPoolIndex();
      } else {
-        // change byte-ordering and go via cache
-        return cpCache.getEntryAt((int) (0xFFFF & VM.getVM().getBytes().swapShort((short) cpCacheIndex))).getConstantPoolIndex();
+      return cpCache.getEntryAt((int) (0xFFFF & cpCacheIndex)).getConstantPoolIndex();
      }
   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/BytecodeWithKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -33,15 +33,15 @@
   }
 
   protected Klass getKlass() {
-    return method().getConstants().getKlassRefAt(index());
+    return method().getConstants().getKlassAt(index());
   }
 
   public Symbol getClassName() {
     ConstantPool.CPSlot obj = method().getConstants().getSlotAt(index());
-    if (obj.isMetaData()) {
+    if (obj.isUnresolved()) {
       return obj.getSymbol();
     } else {
-      return ((Klass)obj.getOop()).getName();
+      return obj.getKlass().getName();
     }
   }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/interpreter/Bytecodes.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -362,7 +362,7 @@
 
   // find a bytecode, behind a breakpoint if necessary:
   // FIXME: not yet implementable
-  //   static Code       non_breakpoint_code_at(address bcp, methodOop method = null);
+  //   static Code       non_breakpoint_code_at(address bcp, Method* method = null);
 
   // Bytecode attributes
   public static boolean   isDefined    (int code) { return 0 <= code && code < number_of_codes && flags(code, false) != 0; }
@@ -743,7 +743,7 @@
     def(_invokespecial       , "invokespecial"       , "bJJ"  , null    , BasicType.getTIllegal(), -1, true );
     def(_invokestatic        , "invokestatic"        , "bJJ"  , null    , BasicType.getTIllegal(),  0, true );
     def(_invokeinterface     , "invokeinterface"     , "bJJ__", null    , BasicType.getTIllegal(), -1, true );
-    def(_invokedynamic       , "invokedynamic"       , "bJJJJ", null    , BasicType.getTIllegal(), -1, true );
+    def(_invokedynamic       , "invokedynamic"       , "bJJJJ", null    , BasicType.getTIllegal(),  0, true );
     def(_new                 , "new"                 , "bkk"  , null    , BasicType.getTObject() ,  1, true );
     def(_newarray            , "newarray"            , "bc"   , null    , BasicType.getTObject() ,  0, true );
     def(_anewarray           , "anewarray"           , "bkk"  , null    , BasicType.getTObject() ,  0, true );
@@ -763,6 +763,7 @@
 
     //  JVM bytecodes
     //  bytecode               bytecode name           format   wide f.   result tp               stk traps  std code
+
     def(_fast_agetfield      , "fast_agetfield"      , "bJJ"  , null    , BasicType.getTObject() ,  0, true , _getfield       );
     def(_fast_bgetfield      , "fast_bgetfield"      , "bJJ"  , null    , BasicType.getTInt()    ,  0, true , _getfield       );
     def(_fast_cgetfield      , "fast_cgetfield"      , "bJJ"  , null    , BasicType.getTChar()   ,  0, true , _getfield       );
--- a/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/jdi/ReferenceTypeImpl.java	Fri Sep 14 21:50:58 2012 -0700
@@ -135,15 +135,15 @@
         ReferenceTypeImpl other = (ReferenceTypeImpl)refType;
         int comp = name().compareTo(other.name());
         if (comp == 0) {
-            Oop rf1 = ref();
-            Oop rf2 = other.ref();
+            Klass rf1 = ref();
+            Klass rf2 = other.ref();
             // optimize for typical case: refs equal and VMs equal
             if (rf1.equals(rf2)) {
                 // sequenceNumbers are always positive
                 comp = vm.sequenceNumber -
                  ((VirtualMachineImpl)(other.virtualMachine())).sequenceNumber;
             } else {
-                comp = rf1.getHandle().minus(rf2.getHandle()) < 0? -1 : 1;
+                comp = rf1.getAddress().minus(rf2.getAddress()) < 0? -1 : 1;
             }
         }
         return comp;
@@ -225,7 +225,7 @@
     private boolean isThrowableBacktraceField(sun.jvm.hotspot.oops.Field fld) {
         // refer to JvmtiEnv::GetClassFields in jvmtiEnv.cpp.
         // We want to filter out java.lang.Throwable.backtrace (see 4446677).
-        // It contains some methodOops that aren't quite real Objects.
+        // It contains some Method*s that aren't quite real Objects.
         if (fld.getFieldHolder().getName().equals(vm.javaLangThrowable()) &&
             fld.getID().getName().equals("backtrace")) {
             return true;
@@ -932,7 +932,7 @@
     }
 
     long uniqueID() {
-        return vm.getAddressValue(ref());
+        return vm.getAddressValue(ref().getJavaMirror());
     }
 
     // new method since 1.6
--- a/agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/jdi/VirtualMachineImpl.java	Fri Sep 14 21:50:58 2012 -0700
@@ -447,7 +447,7 @@
                 newRefType = new ClassTypeImpl(this, (InstanceKlass)kk);
             }
         } else {
-            throw new RuntimeException("should not reach here");
+            throw new RuntimeException("should not reach here:" + kk);
         }
 
         typesByID.put(kk, newRefType);
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CMSPermGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-public class CMSPermGen extends PermGen {
-   // The "generation" view.
-   private static AddressField genField;
-
-   static {
-      VM.registerVMInitializedObserver(new Observer() {
-         public void update(Observable o, Object data) {
-            initialize(VM.getVM().getTypeDataBase());
-         }
-      });
-   }
-
-   private static synchronized void initialize(TypeDataBase db) {
-      Type type = db.lookupType("CMSPermGen");
-      genField = type.getAddressField("_gen");
-   }
-
-   public CMSPermGen(Address addr) {
-      super(addr);
-   }
-
-   public Generation asGen() {
-      return GenerationFactory.newObject(genField.getValue(addr));
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CMSPermGenGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import sun.jvm.hotspot.debugger.*;
-
-public class CMSPermGenGen extends ConcurrentMarkSweepGeneration {
-   public CMSPermGenGen(Address addr) {
-      super(addr);
-   }
-
-   public String name() {
-      return "concurrent-mark-sweep perm gen";
-   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -168,7 +168,7 @@
       final long addressSize = vm.getAddressSize();
 
       for (; cur.lessThan(limit);) {
-         Address klassOop = cur.getAddressAt(addressSize);
+         Address k = cur.getAddressAt(addressSize);
          if (FreeChunk.indicatesFreeChunk(cur)) {
             if (! cur.equals(regionStart)) {
                res.add(new MemRegion(regionStart, cur));
@@ -181,7 +181,7 @@
             // note that fc.size() gives chunk size in heap words
             cur = cur.addOffsetTo(chunkSize * addressSize);
             regionStart = cur;
-         } else if (klassOop != null) {
+         } else if (k != null) {
             Oop obj = heap.newOop(cur.addOffsetToAsOopHandle(0));
             long objectSize = obj.getObjectSize();
             cur = cur.addOffsetTo(adjustObjectSizeInBytes(objectSize));
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactingPermGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2000, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import java.util.*;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-/** A PermGen implemented with a contiguous space. */
-
-public class CompactingPermGen extends PermGen {
-  // The "generation" view.
-  private static AddressField genField;
-
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) {
-    Type type = db.lookupType("CompactingPermGen");
-
-    genField = type.getAddressField("_gen");
-  }
-
-  public CompactingPermGen(Address addr) {
-    super(addr);
-  }
-
-  public Generation asGen() {
-    return GenerationFactory.newObject(genField.getValue(addr));
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/CompactingPermGenGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2000, 2005, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import java.io.*;
-import java.util.*;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-/** This is the "generation" view of a CompactingPermGen. */
-public class CompactingPermGenGen extends OneContigSpaceCardGeneration {
-  private static AddressField unsharedBottomField;
-  private static AddressField unsharedEndField;
-  private static AddressField sharedBottomField;
-  private static AddressField sharedEndField;
-  private static AddressField readOnlyBottomField;
-  private static AddressField readOnlyEndField;
-  private static AddressField readWriteBottomField;
-  private static AddressField readWriteEndField;
-  private static AddressField roSpaceField;
-  private static AddressField rwSpaceField;
-
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) {
-     Type type = db.lookupType("CompactingPermGenGen");
-     unsharedBottomField = type.getAddressField("unshared_bottom");
-     unsharedEndField = type.getAddressField("unshared_end");
-     sharedBottomField = type.getAddressField("shared_bottom");
-     sharedEndField = type.getAddressField("shared_end");
-     readOnlyBottomField = type.getAddressField("readonly_bottom");
-     readOnlyEndField = type.getAddressField("readonly_end");
-     readWriteBottomField = type.getAddressField("readwrite_bottom");
-     readWriteEndField = type.getAddressField("readwrite_end");
-     roSpaceField = type.getAddressField("_ro_space");
-     rwSpaceField = type.getAddressField("_rw_space");
-  }
-
-  public boolean isSharingEnabled() {
-    return VM.getVM().isSharingEnabled();
-  }
-
-  // NEEDS_CLEANUP
-  public CompactingPermGenGen(Address addr) {
-    super(addr);
-  }
-
-  public OffsetTableContigSpace roSpace() {
-    return newOffsetTableContigSpace(roSpaceField.getValue(addr));
-  }
-
-  public OffsetTableContigSpace rwSpace() {
-    return newOffsetTableContigSpace(rwSpaceField.getValue(addr));
-  }
-
-  public String name() {
-    return "compacting permanent generation";
-  }
-
-  public static Address unsharedBottom() {
-    return unsharedBottomField.getValue();
-  }
-
-  public static Address unsharedEnd() {
-    return unsharedEndField.getValue();
-  }
-
-  public static Address sharedBottom() {
-    return sharedBottomField.getValue();
-  }
-
-  public static Address sharedEnd() {
-    return sharedEndField.getValue();
-  }
-
-  public static Address readOnlyBottom() {
-    return readOnlyBottomField.getValue();
-  }
-
-  public static Address readOnlyEnd() {
-    return readOnlyEndField.getValue();
-  }
-
-  public static Address readWriteBottom() {
-    return readWriteBottomField.getValue();
-  }
-
-  public static Address readWriteEnd() {
-    return readWriteEndField.getValue();
-  }
-
-  public static boolean isShared(Address p) {
-    return sharedBottom().lessThanOrEqual(p) && sharedEnd().greaterThan(p);
-  }
-
-  public static boolean isSharedReadOnly(Address p) {
-    return readOnlyBottom().lessThanOrEqual(p) && readOnlyEnd().greaterThan(p);
-  }
-
-  public static boolean isSharedReadWrite(Address p) {
-    return readWriteBottom().lessThanOrEqual(p) && readWriteEnd().greaterThan(p);
-  }
-
-  public boolean isIn(Address p) {
-    return unsharedBottom().lessThanOrEqual(p) && sharedEnd().greaterThan(p);
-  }
-
-  public void spaceIterate(SpaceClosure blk, boolean usedOnly) {
-    super.spaceIterate(blk, usedOnly);
-    if (isSharingEnabled()) {
-      blk.doSpace(roSpace());
-      blk.doSpace(rwSpace());
-    }
-  }
-
-  public void printOn(PrintStream tty) {
-    tty.print("  perm");
-    theSpace().printOn(tty);
-    if (isSharingEnabled()) {
-      tty.print("  ro space: ");
-      roSpace().printOn(tty);
-      tty.print(", rw space: ");
-      rwSpace().printOn(tty);
-    }
-  }
-
-  private OffsetTableContigSpace newOffsetTableContigSpace(Address addr) {
-    return (OffsetTableContigSpace) VMObjectFactory.newObject(
-               OffsetTableContigSpace.class, addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/ContigPermSpace.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2000, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import sun.jvm.hotspot.debugger.*;
-
-/** No additional functionality for now */
-
-public class ContigPermSpace extends OffsetTableContigSpace {
-  public ContigPermSpace(Address addr) {
-    super(addr);
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/Dictionary.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/Dictionary.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -63,10 +63,9 @@
     for (int index = 0; index < tblSize; index++) {
       for (DictionaryEntry probe = (DictionaryEntry) bucket(index); probe != null;
                                              probe = (DictionaryEntry) probe.next()) {
-        Oop k = probe.klass();
-        if (k.isKlass() &&
-            heap.equal(probe.loader(), ((InstanceKlass) k).getClassLoader())) {
-          v.visit((Klass) k);
+        Klass k = probe.klass();
+        if (heap.equal(probe.loader(), ((InstanceKlass) k).getClassLoader())) {
+            v.visit(k);
         }
       }
     }
@@ -78,10 +77,8 @@
     for (int index = 0; index < tblSize; index++) {
       for (DictionaryEntry probe = (DictionaryEntry) bucket(index); probe != null;
                                              probe = (DictionaryEntry) probe.next()) {
-        Oop k = probe.klass();
-        if (k.isKlass()) {
-          v.visit((Klass) k, probe.loader());
-        }
+        Klass k = probe.klass();
+        v.visit(k, probe.loader());
       }
     }
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/DictionaryEntry.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.memory;
 
 import java.util.*;
+import sun.jvm.hotspot.classfile.ClassLoaderData;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
@@ -43,12 +44,12 @@
   private static synchronized void initialize(TypeDataBase db) {
     Type type = db.lookupType("DictionaryEntry");
     pdSetField = type.getAddressField("_pd_set");
-    loaderField = type.getOopField("_loader");
+    loaderDataField = type.getAddressField("_loader_data");
   }
 
   // Fields
   private static AddressField pdSetField;
-  private static sun.jvm.hotspot.types.OopField loaderField;
+  private static AddressField loaderDataField;
 
   // Accessors
 
@@ -59,11 +60,15 @@
   }
 
   public Oop loader() {
-    return VM.getVM().getObjectHeap().newOop(loaderField.getValue(addr));
+    return loaderData().getClassLoader();
+  }
+
+  public ClassLoaderData loaderData() {
+    return ClassLoaderData.instantiateWrapperFor(loaderDataField.getValue(addr));
   }
 
   public Klass klass() {
-    return (Klass)VM.getVM().getObjectHeap().newOop(literalValue().addOffsetToAsOopHandle(0));
+    return (Klass)Metadata.instantiateWrapperFor(literalValue());
   }
 
   public DictionaryEntry(Address addr) {
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/GenCollectedHeap.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/GenCollectedHeap.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -90,7 +90,7 @@
       }
     }
 
-    return permGen().isIn(a);
+    return false;
   }
 
   public long capacity() {
@@ -140,7 +140,5 @@
       tty.println("Invocations: " + getGen(i).invocations());
       tty.println();
     }
-    permGen().printOn(tty);
-    tty.println("Invocations: " + permGen().invocations());
   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/Generation.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/Generation.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -39,7 +39,6 @@
         <ul>
         <li> OneContigSpaceCardGeneration
           <ul>
-          <li> CompactingPermGenGen
           <li> TenuredGeneration
           </ul>
         </ul>
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/GenerationFactory.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/GenerationFactory.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -47,8 +47,6 @@
   private static synchronized void initialize(TypeDataBase db) {
     ctor = new VirtualConstructor(db);
 
-    ctor.addMapping("CompactingPermGenGen", CompactingPermGenGen.class);
-    ctor.addMapping("CMSPermGenGen", CMSPermGenGen.class);
     ctor.addMapping("DefNewGeneration", DefNewGeneration.class);
     ctor.addMapping("ParNewGeneration", ParNewGeneration.class);
     ctor.addMapping("TenuredGeneration", TenuredGeneration.class);
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/PermGen.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2000, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.memory;
-
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-
-/** All heaps contains a "permanent generation," containing permanent
-    (reflective) objects.  This is like a regular generation in some
-    ways, but unlike one in others, and so is split apart. (FIXME:
-    this distinction is confusing and seems unnecessary.) */
-
-public abstract class PermGen extends VMObject {
-  // NEEDS_CLEANUP
-  public PermGen(Address addr) {
-    super(addr);
-  }
-
-  public abstract Generation asGen();
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/PlaceholderEntry.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.memory;
 
 import java.util.*;
+import sun.jvm.hotspot.classfile.ClassLoaderData;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.types.*;
@@ -42,15 +43,19 @@
 
   private static synchronized void initialize(TypeDataBase db) {
     Type type = db.lookupType("PlaceholderEntry");
-    loaderField = type.getOopField("_loader");
+    loaderDataField = type.getAddressField("_loader_data");
   }
 
   // Field
-  private static sun.jvm.hotspot.types.OopField loaderField;
+  private static AddressField loaderDataField;
 
   // Accessor
   public Oop loader() {
-    return VM.getVM().getObjectHeap().newOop(loaderField.getValue(addr));
+    return loaderData().getClassLoader();
+  }
+
+  public ClassLoaderData loaderData() {
+    return ClassLoaderData.instantiateWrapperFor(loaderDataField.getValue(addr));
   }
 
   public PlaceholderEntry(Address addr) {
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/SharedHeap.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/SharedHeap.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -33,7 +33,6 @@
 import sun.jvm.hotspot.types.*;
 
 public abstract class SharedHeap extends CollectedHeap {
-  private static AddressField permGenField;
   private static VirtualConstructor ctor;
 
   static {
@@ -46,31 +45,14 @@
 
   private static synchronized void initialize(TypeDataBase db) {
     Type type = db.lookupType("SharedHeap");
-    permGenField        = type.getAddressField("_perm_gen");
     ctor = new VirtualConstructor(db);
-    ctor.addMapping("CompactingPermGen", CompactingPermGen.class);
-    ctor.addMapping("CMSPermGen", CMSPermGen.class);
-
   }
 
   public SharedHeap(Address addr) {
     super(addr);
   }
 
-  /** These functions return the "permanent" generation, in which
-      reflective objects are allocated and stored.  Two versions, the
-      second of which returns the view of the perm gen as a
-      generation. (FIXME: this distinction is strange and seems
-      unnecessary, and should be cleaned up.) */
-  public PermGen perm() {
-    return (PermGen) ctor.instantiateWrapperFor(permGenField.getValue(addr));
-  }
-
   public CollectedHeapName kind() {
     return CollectedHeapName.SHARED_HEAP;
   }
-
-  public Generation permGen() {
-    return perm().asGen();
   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Fri Sep 14 21:50:58 2012 -0700
@@ -37,13 +37,13 @@
   private static AddressField loaderConstraintTableField;
   private static sun.jvm.hotspot.types.OopField javaSystemLoaderField;
 
-  private static sun.jvm.hotspot.types.OopField objectKlassField;
-  private static sun.jvm.hotspot.types.OopField classLoaderKlassField;
-  private static sun.jvm.hotspot.types.OopField stringKlassField;
-  private static sun.jvm.hotspot.types.OopField systemKlassField;
-  private static sun.jvm.hotspot.types.OopField threadKlassField;
-  private static sun.jvm.hotspot.types.OopField threadGroupKlassField;
-  private static sun.jvm.hotspot.types.OopField methodHandleKlassField;
+  private static AddressField objectKlassField;
+  private static AddressField classLoaderKlassField;
+  private static AddressField stringKlassField;
+  private static AddressField systemKlassField;
+  private static AddressField threadKlassField;
+  private static AddressField threadGroupKlassField;
+  private static AddressField methodHandleKlassField;
 
   static {
     VM.registerVMInitializedObserver(new Observer() {
@@ -62,13 +62,13 @@
     loaderConstraintTableField = type.getAddressField("_loader_constraints");
     javaSystemLoaderField = type.getOopField("_java_system_loader");
 
-    objectKlassField = type.getOopField(WK_KLASS("Object_klass"));
-    classLoaderKlassField = type.getOopField(WK_KLASS("ClassLoader_klass"));
-    stringKlassField = type.getOopField(WK_KLASS("String_klass"));
-    systemKlassField = type.getOopField(WK_KLASS("System_klass"));
-    threadKlassField = type.getOopField(WK_KLASS("Thread_klass"));
-    threadGroupKlassField = type.getOopField(WK_KLASS("ThreadGroup_klass"));
-    methodHandleKlassField = type.getOopField(WK_KLASS("MethodHandle_klass"));
+    objectKlassField = type.getAddressField(WK_KLASS("Object_klass"));
+    classLoaderKlassField = type.getAddressField(WK_KLASS("ClassLoader_klass"));
+    stringKlassField = type.getAddressField(WK_KLASS("String_klass"));
+    systemKlassField = type.getAddressField(WK_KLASS("System_klass"));
+    threadKlassField = type.getAddressField(WK_KLASS("Thread_klass"));
+    threadGroupKlassField = type.getAddressField(WK_KLASS("ThreadGroup_klass"));
+    methodHandleKlassField = type.getAddressField(WK_KLASS("MethodHandle_klass"));
   }
 
   // This WK functions must follow the definitions in systemDictionary.hpp:
@@ -104,31 +104,31 @@
   // few well known classes -- not all are added here.
   // add more if needed.
   public static InstanceKlass getThreadKlass() {
-    return (InstanceKlass) newOop(threadKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(threadKlassField.getValue());
   }
 
   public static InstanceKlass getThreadGroupKlass() {
-    return (InstanceKlass) newOop(threadGroupKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(threadGroupKlassField.getValue());
   }
 
   public static InstanceKlass getObjectKlass() {
-    return (InstanceKlass) newOop(objectKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(objectKlassField.getValue());
   }
 
   public static InstanceKlass getStringKlass() {
-    return (InstanceKlass) newOop(stringKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(stringKlassField.getValue());
   }
 
   public static InstanceKlass getClassLoaderKlass() {
-    return (InstanceKlass) newOop(classLoaderKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(classLoaderKlassField.getValue());
   }
 
   public static InstanceKlass getSystemKlass() {
-    return (InstanceKlass) newOop(systemKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(systemKlassField.getValue());
   }
 
   public static InstanceKlass getMethodHandleKlass() {
-    return (InstanceKlass) newOop(methodHandleKlassField.getValue());
+    return (InstanceKlass)Metadata.instantiateWrapperFor(methodHandleKlassField.getValue());
   }
 
   public InstanceKlass getAbstractOwnableSynchronizerKlass() {
--- a/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -42,17 +42,14 @@
   private static sun.jvm.hotspot.types.OopField systemThreadGroupField;
 
   // single dimensional primitive array klasses
-  private static sun.jvm.hotspot.types.OopField boolArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField byteArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField charArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField intArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField shortArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField longArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField singleArrayKlassObjField;
-  private static sun.jvm.hotspot.types.OopField doubleArrayKlassObjField;
-
-  // system obj array klass object
-  private static sun.jvm.hotspot.types.OopField systemObjArrayKlassObjField;
+  private static sun.jvm.hotspot.types.AddressField boolArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField byteArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField charArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField intArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField shortArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField longArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField singleArrayKlassField;
+  private static sun.jvm.hotspot.types.AddressField doubleArrayKlassField;
 
   private static AddressField narrowOopBaseField;
   private static CIntegerField narrowOopShiftField;
@@ -78,16 +75,14 @@
     mainThreadGroupField   = type.getOopField("_main_thread_group");
     systemThreadGroupField = type.getOopField("_system_thread_group");
 
-    boolArrayKlassObjField = type.getOopField("_boolArrayKlassObj");
-    byteArrayKlassObjField = type.getOopField("_byteArrayKlassObj");
-    charArrayKlassObjField = type.getOopField("_charArrayKlassObj");
-    intArrayKlassObjField = type.getOopField("_intArrayKlassObj");
-    shortArrayKlassObjField = type.getOopField("_shortArrayKlassObj");
-    longArrayKlassObjField = type.getOopField("_longArrayKlassObj");
-    singleArrayKlassObjField = type.getOopField("_singleArrayKlassObj");
-    doubleArrayKlassObjField = type.getOopField("_doubleArrayKlassObj");
-
-    systemObjArrayKlassObjField = type.getOopField("_systemObjArrayKlassObj");
+    boolArrayKlassField      = type.getAddressField("_boolArrayKlassObj");
+    byteArrayKlassField      = type.getAddressField("_byteArrayKlassObj");
+    charArrayKlassField      = type.getAddressField("_charArrayKlassObj");
+    intArrayKlassField       = type.getAddressField("_intArrayKlassObj");
+    shortArrayKlassField     = type.getAddressField("_shortArrayKlassObj");
+    longArrayKlassField      = type.getAddressField("_longArrayKlassObj");
+    singleArrayKlassField    = type.getAddressField("_singleArrayKlassObj");
+    doubleArrayKlassField    = type.getAddressField("_doubleArrayKlassObj");
 
     narrowOopBaseField = type.getAddressField("_narrow_oop._base");
     narrowOopShiftField = type.getCIntegerField("_narrow_oop._shift");
@@ -138,21 +133,17 @@
     return newOop(systemThreadGroupField.getValue());
   }
 
-  public Oop systemObjArrayKlassObj() {
-    return newOop(systemObjArrayKlassObjField.getValue());
-  }
-
   // iterate through the single dimensional primitive array klasses
-  // refer to basic_type_classes_do(void f(klassOop)) in universe.cpp
+  // refer to basic_type_classes_do(void f(Klass*)) in universe.cpp
   public void basicTypeClassesDo(SystemDictionary.ClassVisitor visitor) {
-    visitor.visit((Klass)newOop(boolArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(byteArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(charArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(intArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(shortArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(longArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(singleArrayKlassObjField.getValue()));
-    visitor.visit((Klass)newOop(doubleArrayKlassObjField.getValue()));
+    visitor.visit(new TypeArrayKlass(boolArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(byteArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(charArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(intArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(shortArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(longArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(singleArrayKlassField.getValue()));
+    visitor.visit(new TypeArrayKlass(doubleArrayKlassField.getValue()));
   }
 
   public void print() { printOn(System.out); }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/AccessFlags.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/AccessFlags.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -57,7 +57,7 @@
   public long getValue         () { return flags; }
 
   // Hotspot internal flags
-  // methodOop flags
+  // Method* flags
   public boolean isMonitorMatching   () { return (flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
   public boolean hasMonitorBytecodes () { return (flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
   public boolean hasLoops            () { return (flags & JVM_ACC_HAS_LOOPS              ) != 0; }
@@ -69,13 +69,13 @@
   public boolean hasJsrs             () { return (flags & JVM_ACC_HAS_JSRS               ) != 0; }
   public boolean isObsolete          () { return (flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
 
-  // klassOop flags
+  // Klass* flags
   public boolean hasMirandaMethods    () { return (flags & JVM_ACC_HAS_MIRANDA_METHODS    ) != 0; }
   public boolean hasVanillaConstructor() { return (flags & JVM_ACC_HAS_VANILLA_CONSTRUCTOR) != 0; }
   public boolean hasFinalizer         () { return (flags & JVM_ACC_HAS_FINALIZER          ) != 0; }
   public boolean isCloneable          () { return (flags & JVM_ACC_IS_CLONEABLE           ) != 0; }
 
-  // klassOop and methodOop flags
+  // Klass* and Method* flags
   public boolean hasLocalVariableTable() { return (flags & JVM_ACC_HAS_LOCAL_VARIABLE_TABLE ) != 0; }
 
   // field flags
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Array.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Array.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -59,7 +59,7 @@
     if (headerSize != 0) {
       return headerSize;
     }
-    if (VM.getVM().isCompressedOopsEnabled()) {
+    if (VM.getVM().isCompressedHeadersEnabled()) {
       headerSize = typeSize;
     } else {
       headerSize = VM.getVM().alignUp(typeSize + VM.getVM().getIntSize(),
@@ -80,7 +80,7 @@
     if (lengthOffsetInBytes != 0) {
       return lengthOffsetInBytes;
     }
-    if (VM.getVM().isCompressedOopsEnabled()) {
+    if (VM.getVM().isCompressedHeadersEnabled()) {
       lengthOffsetInBytes = typeSize - VM.getVM().getIntSize();
     } else {
       lengthOffsetInBytes = typeSize;
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -49,10 +49,6 @@
     int aindex = index + arrayStartOffSet;
     return intAt(aindex);
   }
-  Oop arrayOopAt(int index) {
-    int aindex = index + arrayStartOffSet;
-    return oopAt(aindex);
-  }
 
   // Code generation support for subclasses.
   static int arrayElementOffset(int index) {
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -45,24 +45,24 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type          = db.lookupType("arrayKlass");
-    dimension          = new CIntField(type.getCIntegerField("_dimension"), Oop.getHeaderSize());
-    higherDimension    = new OopField(type.getOopField("_higher_dimension"), Oop.getHeaderSize());
-    lowerDimension     = new OopField(type.getOopField("_lower_dimension"), Oop.getHeaderSize());
-    vtableLen          = new CIntField(type.getCIntegerField("_vtable_len"), Oop.getHeaderSize());
-    allocSize          = new CIntField(type.getCIntegerField("_alloc_size"), Oop.getHeaderSize());
-    componentMirror    = new OopField(type.getOopField("_component_mirror"), Oop.getHeaderSize());
+    dimension          = new CIntField(type.getCIntegerField("_dimension"), 0);
+    higherDimension    = new MetadataField(type.getAddressField("_higher_dimension"), 0);
+    lowerDimension     = new MetadataField(type.getAddressField("_lower_dimension"), 0);
+    vtableLen          = new CIntField(type.getCIntegerField("_vtable_len"), 0);
+    allocSize          = new CIntField(type.getCIntegerField("_alloc_size"), 0);
+    componentMirror    = new OopField(type.getOopField("_component_mirror"), 0);
     javaLangCloneableName = null;
     javaLangObjectName = null;
     javaIoSerializableName = null;
   }
 
-  ArrayKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public ArrayKlass(Address addr) {
+    super(addr);
   }
 
   private static CIntField dimension;
-  private static OopField  higherDimension;
-  private static OopField  lowerDimension;
+  private static MetadataField  higherDimension;
+  private static MetadataField  lowerDimension;
   private static CIntField vtableLen;
   private static CIntField allocSize;
   private static OopField  componentMirror;
@@ -141,19 +141,13 @@
     tty.print("ArrayKlass");
   }
 
-  public long getObjectSize() {
-    return alignObjectSize(InstanceKlass.getHeaderSize() + getVtableLen() * getHeap().getOopSize());
-  }
-
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
       visitor.doCInt(dimension, true);
-      visitor.doOop(higherDimension, true);
-      visitor.doOop(lowerDimension, true);
+    visitor.doMetadata(higherDimension, true);
+    visitor.doMetadata(lowerDimension, true);
       visitor.doCInt(vtableLen, true);
       visitor.doCInt(allocSize, true);
       visitor.doOop(componentMirror, true);
     }
   }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-public class ArrayKlassKlass extends KlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type = db.lookupType("arrayKlassKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  ArrayKlassKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("ArrayKlassKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/BooleanField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/BooleanField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a boolean field simply provides access to the value.
 public class BooleanField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public boolean getValue(Oop obj) { return obj.getHandle().getJBooleanAt(getOffset()); }
+  public boolean getValue(VMObject obj) { return obj.getAddress().getJBooleanAt(getOffset()); }
   public void setValue(Oop obj, boolean value) throws MutationException {
     // Fix this: setJBooleanAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ByteField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ByteField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a byte field simply provides access to the value.
 public class ByteField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public byte getValue(Oop obj) { return obj.getHandle().getJByteAt(getOffset()); }
+  public byte getValue(VMObject obj) { return obj.getAddress().getJByteAt(getOffset()); }
   public void setValue(Oop obj, char value) throws MutationException {
     // Fix this: setJCharAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/CIntField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/CIntField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -24,6 +24,7 @@
 
 package sun.jvm.hotspot.oops;
 
+import sun.jvm.hotspot.runtime.VMObject;
 import sun.jvm.hotspot.debugger.*;
 
 // The class for an C int field simply provides access to the value.
@@ -39,7 +40,10 @@
   private boolean isUnsigned;
 
   public long getValue(Oop obj) {
-    return obj.getHandle().getCIntegerAt(getOffset(), size, isUnsigned);
+    return getValue(obj.getHandle());
+  }
+  public long getValue(VMObject obj) {
+    return getValue(obj.getAddress());
   }
   public long getValue(Address addr) {
     return addr.getCIntegerAt(getOffset(), size, isUnsigned);
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/CharField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/CharField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a char field simply provides access to the value.
 public class CharField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public char getValue(Oop obj) { return obj.getHandle().getJCharAt(getOffset()); }
+  public char getValue(VMObject obj) { return obj.getAddress().getJCharAt(getOffset()); }
   public void setValue(Oop obj, char value) throws MutationException {
     // Fix this: setJCharAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/CheckedExceptionElement.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/CheckedExceptionElement.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -48,10 +48,10 @@
 
   private static long offsetOfClassCPIndex;
 
-  private OopHandle handle;
+  private Address   handle;
   private long      offset;
 
-  public CheckedExceptionElement(OopHandle handle, long offset) {
+  public CheckedExceptionElement(Address handle, long offset) {
     this.handle = handle;
     this.offset = offset;
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/CompiledICHolder.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/CompiledICHolder.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -30,7 +30,7 @@
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.*;
 
-public class CompiledICHolder extends Oop {
+public class CompiledICHolder extends VMObject {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -40,14 +40,14 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type    = db.lookupType("compiledICHolderOopDesc");
-    holderMethod = new OopField(type.getOopField("_holder_method"), 0);
-    holderKlass  = new OopField(type.getOopField("_holder_klass"), 0);
+    Type type    = db.lookupType("CompiledICHolder");
+    holderMethod = new MetadataField(type.getAddressField("_holder_method"), 0);
+    holderKlass  = new MetadataField(type.getAddressField("_holder_klass"), 0);
     headerSize   = type.getSize();
   }
 
-  CompiledICHolder(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public CompiledICHolder(Address addr) {
+      super(addr);
   }
 
   public boolean isCompiledICHolder()  { return true; }
@@ -55,8 +55,8 @@
   private static long headerSize;
 
   // Fields
-  private static OopField holderMethod;
-  private static OopField holderKlass;
+  private static MetadataField holderMethod;
+  private static MetadataField holderKlass;
 
   // Accessors for declared fields
   public Method getHolderMethod() { return (Method) holderMethod.getValue(this); }
@@ -65,16 +65,4 @@
   public void printValueOn(PrintStream tty) {
     tty.print("CompiledICHolder");
   }
-
-  public long getObjectSize() {
-    return alignObjectSize(headerSize);
   }
-
-  void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(holderMethod, true);
-      visitor.doOop(holderKlass, true);
-    }
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/CompiledICHolderKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-public class CompiledICHolderKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("compiledICHolderKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  CompiledICHolderKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("CompilerICHolderKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethod.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethod.java	Fri Sep 14 21:50:58 2012 -0700
@@ -34,7 +34,7 @@
 import sun.jvm.hotspot.types.*;
 import sun.jvm.hotspot.utilities.*;
 
-public class ConstMethod extends Oop {
+public class ConstMethod extends VMObject {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -50,18 +50,18 @@
   private static int HAS_EXCEPTION_TABLE;
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type                  = db.lookupType("constMethodOopDesc");
-    constants                  = new OopField(type.getOopField("_constants"), 0);
+    Type type                  = db.lookupType("ConstMethod");
+    constants                  = new MetadataField(type.getAddressField("_constants"), 0);
     constMethodSize            = new CIntField(type.getCIntegerField("_constMethod_size"), 0);
     flags                      = new ByteField(type.getJByteField("_flags"), 0);
 
     // enum constants for flags
-    HAS_LINENUMBER_TABLE      = db.lookupIntConstant("constMethodOopDesc::_has_linenumber_table").intValue();
-    HAS_CHECKED_EXCEPTIONS     = db.lookupIntConstant("constMethodOopDesc::_has_checked_exceptions").intValue();
-    HAS_LOCALVARIABLE_TABLE   = db.lookupIntConstant("constMethodOopDesc::_has_localvariable_table").intValue();
-    HAS_EXCEPTION_TABLE       = db.lookupIntConstant("constMethodOopDesc::_has_exception_table").intValue();
+    HAS_LINENUMBER_TABLE      = db.lookupIntConstant("ConstMethod::_has_linenumber_table").intValue();
+    HAS_CHECKED_EXCEPTIONS     = db.lookupIntConstant("ConstMethod::_has_checked_exceptions").intValue();
+    HAS_LOCALVARIABLE_TABLE   = db.lookupIntConstant("ConstMethod::_has_localvariable_table").intValue();
+    HAS_EXCEPTION_TABLE       = db.lookupIntConstant("ConstMethod::_has_exception_table").intValue();
 
-    // Size of Java bytecodes allocated immediately after constMethodOop.
+    // Size of Java bytecodes allocated immediately after ConstMethod*.
     codeSize                   = new CIntField(type.getCIntegerField("_code_size"), 0);
     nameIndex                  = new CIntField(type.getCIntegerField("_name_index"), 0);
     signatureIndex             = new CIntField(type.getCIntegerField("_signature_index"), 0);
@@ -81,12 +81,12 @@
     exceptionTableElementSize = type.getSize();
   }
 
-  ConstMethod(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public ConstMethod(Address addr) {
+    super(addr);
   }
 
   // Fields
-  private static OopField  constants;
+  private static MetadataField constants;
   private static CIntField constMethodSize;
   private static ByteField flags;
   private static CIntField codeSize;
@@ -104,8 +104,8 @@
 
   public Method getMethod() {
     InstanceKlass ik = (InstanceKlass)getConstants().getPoolHolder();
-    ObjArray methods = ik.getMethods();
-    return (Method)methods.getObjAt(getIdNum());
+    MethodArray methods = ik.getMethods();
+    return methods.at((int)getIdNum());
   }
 
   // Accessors for declared fields
@@ -157,7 +157,7 @@
 
   /** Get a bytecode or breakpoint at the given bci */
   public int getBytecodeOrBPAt(int bci) {
-    return getHandle().getJByteAt(bytecodeOffset + bci) & 0xFF;
+    return getAddress().getJByteAt(bytecodeOffset + bci) & 0xFF;
   }
 
   public byte getBytecodeByteArg(int bci) {
@@ -215,23 +215,21 @@
      for( int i=0; i < bc.length; i++ )
      {
         long offs = bytecodeOffset + i;
-        bc[i] = getHandle().getJByteAt( offs );
+        bc[i] = getAddress().getJByteAt( offs );
      }
      return bc;
   }
 
-  public long getObjectSize() {
-    return getConstMethodSize() * getHeap().getOopSize();
+  public long getSize() {
+    return getConstMethodSize();
   }
 
   public void printValueOn(PrintStream tty) {
-    tty.print("ConstMethod " + getName().asString() + getSignature().asString() + "@" + getHandle());
+    tty.print("ConstMethod " + getName().asString() + getSignature().asString() + "@" + getAddress());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(constants, true);
+  public void iterateFields(MetadataVisitor visitor) {
+    visitor.doMetadata(constants, true);
       visitor.doCInt(constMethodSize, true);
       visitor.doByte(flags, true);
       visitor.doCInt(codeSize, true);
@@ -240,7 +238,6 @@
       visitor.doCInt(genericSignatureIndex, true);
       visitor.doCInt(codeSize, true);
     }
-  }
 
   // Accessors
 
@@ -266,7 +263,7 @@
       // The line numbers are a short array of 2-tuples [start_pc, line_number].
       // Not necessarily sorted and not necessarily one-to-one.
       CompressedLineNumberReadStream stream =
-        new CompressedLineNumberReadStream(getHandle(), (int) offsetOfCompressedLineNumberTable());
+        new CompressedLineNumberReadStream(getAddress(), (int) offsetOfCompressedLineNumberTable());
       while (stream.readPair()) {
         if (stream.bci() == bci) {
           // perfect match
@@ -290,7 +287,7 @@
     }
     int len = getLineNumberTableLength();
     CompressedLineNumberReadStream stream =
-      new CompressedLineNumberReadStream(getHandle(), (int) offsetOfCompressedLineNumberTable());
+      new CompressedLineNumberReadStream(getAddress(), (int) offsetOfCompressedLineNumberTable());
     LineNumberTableElement[] ret = new LineNumberTableElement[len];
 
     for (int idx = 0; idx < len; idx++) {
@@ -316,7 +313,7 @@
     LocalVariableTableElement[] ret = new LocalVariableTableElement[getLocalVariableTableLength()];
     long offset = offsetOfLocalVariableTable();
     for (int i = 0; i < ret.length; i++) {
-      ret[i] = new LocalVariableTableElement(getHandle(), offset);
+      ret[i] = new LocalVariableTableElement(getAddress(), offset);
       offset += localVariableTableElementSize;
     }
     return ret;
@@ -333,7 +330,7 @@
     ExceptionTableElement[] ret = new ExceptionTableElement[getExceptionTableLength()];
     long offset = offsetOfExceptionTable();
     for (int i = 0; i < ret.length; i++) {
-      ret[i] = new ExceptionTableElement(getHandle(), offset);
+      ret[i] = new ExceptionTableElement(getAddress(), offset);
       offset += exceptionTableElementSize;
     }
     return ret;
@@ -350,7 +347,7 @@
     CheckedExceptionElement[] ret = new CheckedExceptionElement[getCheckedExceptionsLength()];
     long offset = offsetOfCheckedExceptions();
     for (int i = 0; i < ret.length; i++) {
-      ret[i] = new CheckedExceptionElement(getHandle(), offset);
+      ret[i] = new CheckedExceptionElement(getAddress(), offset);
       offset += checkedExceptionElementSize;
     }
     return ret;
@@ -370,14 +367,14 @@
     return bytecodeOffset + getCodeSize();
   }
 
-  // Offset of start of compressed line number table (see methodOop.hpp)
+  // Offset of start of compressed line number table (see method.hpp)
   private long offsetOfCompressedLineNumberTable() {
     return offsetOfCodeEnd() + (isNative() ? 2 * VM.getVM().getAddressSize() : 0);
   }
 
-  // Offset of last short in methodOop
+  // Offset of last short in Method*
   private long offsetOfLastU2Element() {
-    return getObjectSize() - 2;
+    return getSize() * VM.getVM().getObjectHeap().getOopSize() - 2;
   }
 
   private long offsetOfCheckedExceptionsLength() {
@@ -386,7 +383,7 @@
 
   private int getCheckedExceptionsLength() {
     if (hasCheckedExceptions()) {
-      return (int) getHandle().getCIntegerAt(offsetOfCheckedExceptionsLength(), 2, true);
+      return (int) getAddress().getCIntegerAt(offsetOfCheckedExceptionsLength(), 2, true);
     } else {
       return 0;
     }
@@ -407,7 +404,7 @@
     int len = 0;
     if (hasLineNumberTable()) {
       CompressedLineNumberReadStream stream =
-        new CompressedLineNumberReadStream(getHandle(), (int) offsetOfCompressedLineNumberTable());
+        new CompressedLineNumberReadStream(getAddress(), (int) offsetOfCompressedLineNumberTable());
       while (stream.readPair()) {
         len += 1;
       }
@@ -417,7 +414,7 @@
 
   private int getLocalVariableTableLength() {
     if (hasLocalVariableTable()) {
-      return (int) getHandle().getCIntegerAt(offsetOfLocalVariableTableLength(), 2, true);
+      return (int) getAddress().getCIntegerAt(offsetOfLocalVariableTableLength(), 2, true);
     } else {
       return 0;
     }
@@ -450,7 +447,7 @@
 
   private int getExceptionTableLength() {
     if (hasExceptionTable()) {
-      return (int) getHandle().getCIntegerAt(offsetOfExceptionTableLength(), 2, true);
+      return (int) getAddress().getCIntegerAt(offsetOfExceptionTableLength(), 2, true);
     } else {
       return 0;
     }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstMethodKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// The ConstMethodKlass is the klass of a ConstMethod
-
-public class ConstMethodKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("constMethodKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  ConstMethodKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("ConstMethodKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -34,8 +34,7 @@
 // A ConstantPool is an oop containing class constants
 // as described in the class file
 
-public class ConstantPool extends Oop implements ClassConstants {
-
+public class ConstantPool extends Metadata implements ClassConstants {
   public class CPSlot {
     private Address ptr;
 
@@ -46,24 +45,20 @@
       this.ptr = sym.getAddress().orWithMask(1);
     }
 
-    public boolean isOop() {
+    public boolean isResolved() {
       return (ptr.minus(null) & 1) == 0;
     }
-    public boolean isMetaData() {
+    public boolean isUnresolved() {
       return (ptr.minus(null) & 1) == 1;
     }
 
     public Symbol getSymbol() {
-      if (isMetaData()) {
+      if (!isUnresolved()) throw new InternalError("not a symbol");
         return Symbol.create(ptr.xorWithMask(1));
       }
-      throw new InternalError("not a symbol");
-    }
-    public Oop getOop() {
-      if (isOop()) {
-        return VM.getVM().getObjectHeap().newOop(ptr.addOffsetToAsOopHandle(0));
-      }
-      throw new InternalError("not an oop");
+    public Klass getKlass() {
+      if (!isResolved()) throw new InternalError("not klass");
+      return (Klass)Metadata.instantiateWrapperFor(ptr);
     }
   }
 
@@ -83,31 +78,35 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type   = db.lookupType("constantPoolOopDesc");
-    tags        = new OopField(type.getOopField("_tags"), 0);
-    operands    = new OopField(type.getOopField("_operands"), 0);
-    cache       = new OopField(type.getOopField("_cache"), 0);
-    poolHolder  = new OopField(type.getOopField("_pool_holder"), 0);
+    Type type   = db.lookupType("ConstantPool");
+    tags        = type.getAddressField("_tags");
+    operands    = type.getAddressField("_operands");
+    cache       = type.getAddressField("_cache");
+    poolHolder  = new MetadataField(type.getAddressField("_pool_holder"), 0);
     length      = new CIntField(type.getCIntegerField("_length"), 0);
+    resolvedReferences      = type.getAddressField("_resolved_references");
+    referenceMap = type.getAddressField("_reference_map");
     headerSize  = type.getSize();
     elementSize = 0;
     // fetch constants:
-    INDY_BSM_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_bsm_offset").intValue();
-    INDY_ARGC_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_argc_offset").intValue();
-    INDY_ARGV_OFFSET = db.lookupIntConstant("constantPoolOopDesc::_indy_argv_offset").intValue();
+    INDY_BSM_OFFSET = db.lookupIntConstant("ConstantPool::_indy_bsm_offset").intValue();
+    INDY_ARGC_OFFSET = db.lookupIntConstant("ConstantPool::_indy_argc_offset").intValue();
+    INDY_ARGV_OFFSET = db.lookupIntConstant("ConstantPool::_indy_argv_offset").intValue();
   }
 
-  ConstantPool(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public ConstantPool(Address addr) {
+    super(addr);
   }
 
   public boolean isConstantPool()      { return true; }
 
-  private static OopField tags;
-  private static OopField operands;
-  private static OopField cache;
-  private static OopField poolHolder;
+  private static AddressField tags;
+  private static AddressField operands;
+  private static AddressField cache;
+  private static MetadataField poolHolder;
   private static CIntField length; // number of elements in oop
+  private static AddressField  resolvedReferences;
+  private static AddressField  referenceMap;
 
   private static long headerSize;
   private static long elementSize;
@@ -116,11 +115,31 @@
   private static int INDY_ARGC_OFFSET;
   private static int INDY_ARGV_OFFSET;
 
-  public TypeArray         getTags()       { return (TypeArray)         tags.getValue(this); }
-  public TypeArray         getOperands()   { return (TypeArray)         operands.getValue(this); }
-  public ConstantPoolCache getCache()      { return (ConstantPoolCache) cache.getValue(this); }
+  public U1Array           getTags()       { return new U1Array(tags.getValue(getAddress())); }
+  public U2Array           getOperands()   { return new U2Array(operands.getValue(getAddress())); }
+  public ConstantPoolCache getCache()      {
+    Address addr = cache.getValue(getAddress());
+    return (ConstantPoolCache) VMObjectFactory.newObject(ConstantPoolCache.class, addr);
+  }
   public Klass             getPoolHolder() { return (Klass)             poolHolder.getValue(this); }
-  public int               getLength()     { return (int)length.getValue(this); }
+  public int               getLength()     { return (int)length.getValue(getAddress()); }
+  public Oop               getResolvedReferences() {
+    Address handle = resolvedReferences.getValue(getAddress());
+    if (handle != null) {
+      // Load through the handle
+      OopHandle refs = handle.getOopHandleAt(0);
+      return VM.getVM().getObjectHeap().newOop(refs);
+    }
+    return null;
+  }
+
+  public U2Array referenceMap() {
+    return new U2Array(referenceMap.getValue(getAddress()));
+  }
+
+  public int objectToCPIndex(int index) {
+    return referenceMap().at(index);
+  }
 
   private long getElementSize() {
     if (elementSize !=0 ) {
@@ -139,33 +158,32 @@
   }
 
   public ConstantTag getTagAt(long index) {
-    return new ConstantTag(getTags().getByteAt((int) index));
+    return new ConstantTag((byte)getTags().at((int) index));
   }
 
   public CPSlot getSlotAt(long index) {
-    return new CPSlot(getHandle().getAddressAt(indexOffset(index)));
+    return new CPSlot(getAddressAtRaw(index));
   }
 
-  public Oop getObjAtRaw(long index){
-    return getHeap().newOop(getHandle().getOopHandleAt(indexOffset(index)));
+  public Address getAddressAtRaw(long index) {
+    return getAddress().getAddressAt(indexOffset(index));
   }
 
   public Symbol getSymbolAt(long index) {
-    CPSlot slot = getSlotAt(index);
-    return slot.getSymbol();
+    return Symbol.create(getAddressAtRaw(index));
   }
 
   public int getIntAt(long index){
-    return getHandle().getJIntAt(indexOffset(index));
+    return getAddress().getJIntAt(indexOffset(index));
   }
 
   public float getFloatAt(long index){
-    return getHandle().getJFloatAt(indexOffset(index));
+    return getAddress().getJFloatAt(indexOffset(index));
   }
 
   public long getLongAt(long index) {
-    int oneHalf = getHandle().getJIntAt(indexOffset(index + 1));
-    int otherHalf   = getHandle().getJIntAt(indexOffset(index));
+    int oneHalf = getAddress().getJIntAt(indexOffset(index + 1));
+    int otherHalf   = getAddress().getJIntAt(indexOffset(index));
     // buildLongFromIntsPD accepts higher address value, lower address value
     // in that order.
     return VM.getVM().buildLongFromIntsPD(oneHalf, otherHalf);
@@ -185,7 +203,7 @@
       i = which;
     } else {
       // change byte-ordering and go via cache
-      i = cache.getEntryAt(0xFFFF & VM.getVM().getBytes().swapShort((short) which)).getConstantPoolIndex();
+      i = cache.getEntryAt(0xFFFF & which).getConstantPoolIndex();
     }
     if (Assert.ASSERTS_ENABLED) {
       Assert.that(getTagAt(i).isFieldOrMethod(), "Corrupted constant pool");
@@ -202,7 +220,7 @@
 
   public int[] getNameAndTypeAt(int which) {
     if (Assert.ASSERTS_ENABLED) {
-      Assert.that(getTagAt(which).isNameAndType(), "Corrupted constant pool");
+      Assert.that(getTagAt(which).isNameAndType(), "Corrupted constant pool: " + which + " " + getTagAt(which));
     }
     int i = getIntAt(which);
     if (DEBUG) {
@@ -215,6 +233,10 @@
     return implGetNameRefAt(which, false);
   }
 
+  public Symbol uncachedGetNameRefAt(int which) {
+    return implGetNameRefAt(which, true);
+  }
+
   private Symbol implGetNameRefAt(int which, boolean uncached) {
     int signatureIndex = getNameRefIndexAt(implNameAndTypeRefIndexAt(which, uncached));
     return getSymbolAt(signatureIndex);
@@ -224,35 +246,57 @@
     return implGetSignatureRefAt(which, false);
   }
 
+  public Symbol uncachedGetSignatureRefAt(int which) {
+    return implGetSignatureRefAt(which, true);
+  }
+
   private Symbol implGetSignatureRefAt(int which, boolean uncached) {
     int signatureIndex = getSignatureRefIndexAt(implNameAndTypeRefIndexAt(which, uncached));
     return getSymbolAt(signatureIndex);
   }
 
+  public static boolean isInvokedynamicIndex(int i) { return (i < 0); }
+
+  public static int  decodeInvokedynamicIndex(int i) { Assert.that(isInvokedynamicIndex(i),  ""); return ~i; }
+
+  // The invokedynamic points at the object index.  The object map points at
+  // the cpCache index and the cpCache entry points at the original constant
+  // pool index.
+  public int invokedynamicCPCacheIndex(int index) {
+    Assert.that(isInvokedynamicIndex(index), "should be a invokedynamic index");
+    int rawIndex = decodeInvokedynamicIndex(index);
+    return referenceMap().at(rawIndex);
+  }
+
+  ConstantPoolCacheEntry invokedynamicCPCacheEntryAt(int index) {
+    // decode index that invokedynamic points to.
+    int cpCacheIndex = invokedynamicCPCacheIndex(index);
+    return getCache().getEntryAt(cpCacheIndex);
+  }
 
   private int implNameAndTypeRefIndexAt(int which, boolean uncached) {
     int i = which;
     if (!uncached && getCache() != null) {
-      if (ConstantPoolCache.isSecondaryIndex(which)) {
-        // Invokedynamic index.
-        int pool_index = getCache().getMainEntryAt(which).getConstantPoolIndex();
-        pool_index = invokeDynamicNameAndTypeRefIndexAt(pool_index);
-        // assert(tagAt(pool_index).isNameAndType(), "");
-        return pool_index;
+      if (isInvokedynamicIndex(which)) {
+        // Invokedynamic index is index into resolved_references
+        int poolIndex = invokedynamicCPCacheEntryAt(which).getConstantPoolIndex();
+        poolIndex = invokeDynamicNameAndTypeRefIndexAt(poolIndex);
+        Assert.that(getTagAt(poolIndex).isNameAndType(), "");
+        return poolIndex;
       }
       // change byte-ordering and go via cache
       i = remapInstructionOperandFromCache(which);
     } else {
       if (getTagAt(which).isInvokeDynamic()) {
-        int pool_index = invokeDynamicNameAndTypeRefIndexAt(which);
-        // assert(tag_at(pool_index).is_name_and_type(), "");
-        return pool_index;
+        int poolIndex = invokeDynamicNameAndTypeRefIndexAt(which);
+        Assert.that(getTagAt(poolIndex).isNameAndType(), "");
+        return poolIndex;
       }
     }
     // assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
     // assert(!tag_at(i).is_invoke_dynamic(), "Must be handled above");
-    int ref_index = getIntAt(i);
-    return extractHighShortFromInt(ref_index);
+    int refIndex = getIntAt(i);
+    return extractHighShortFromInt(refIndex);
   }
 
   private int remapInstructionOperandFromCache(int operand) {
@@ -269,16 +313,29 @@
   }
 
   // returns null, if not resolved.
-  public Klass getKlassRefAt(int which) {
+  public Klass getKlassAt(int which) {
     if( ! getTagAt(which).isKlass()) return null;
-    return (Klass) getObjAtRaw(which);
+    return (Klass)Metadata.instantiateWrapperFor(getAddressAtRaw(which));
+  }
+
+  public Symbol getKlassNameAt(int which) {
+    CPSlot entry = getSlotAt(which);
+    if (entry.isResolved()) {
+      return entry.getKlass().getName();
+    } else {
+      return entry.getSymbol();
+    }
+  }
+
+  public Symbol getUnresolvedStringAt(int which) {
+    return getSymbolAt(which);
   }
 
   // returns null, if not resolved.
   public InstanceKlass getFieldOrMethodKlassRefAt(int which) {
     int refIndex = getFieldOrMethodAt(which);
     int klassIndex = extractLowShortFromInt(refIndex);
-    return (InstanceKlass) getKlassRefAt(klassIndex);
+    return (InstanceKlass) getKlassAt(klassIndex);
   }
 
   // returns null, if not resolved.
@@ -371,16 +428,16 @@
       Assert.that(getTagAt(i).isInvokeDynamic(), "Corrupted constant pool");
     }
     int bsmSpec = extractLowShortFromInt(this.getIntAt(i));
-    TypeArray operands = getOperands();
+    U2Array operands = getOperands();
     if (operands == null)  return null;  // safety first
-    int basePos = VM.getVM().buildIntFromShorts(operands.getShortAt(bsmSpec * 2 + 0),
-                                                operands.getShortAt(bsmSpec * 2 + 1));
+    int basePos = VM.getVM().buildIntFromShorts(operands.at(bsmSpec * 2 + 0),
+                                                operands.at(bsmSpec * 2 + 1));
     int argv = basePos + INDY_ARGV_OFFSET;
-    int argc = operands.getShortAt(basePos + INDY_ARGC_OFFSET);
+    int argc = operands.at(basePos + INDY_ARGC_OFFSET);
     int endPos = argv + argc;
     short[] values = new short[endPos - basePos];
     for (int j = 0; j < values.length; j++) {
-        values[j] = operands.getShortAt(basePos+j);
+        values[j] = operands.at(basePos+j);
     }
     return values;
   }
@@ -407,25 +464,24 @@
     case JVM_CONSTANT_InvokeDynamic:      return "JVM_CONSTANT_InvokeDynamic";
     case JVM_CONSTANT_Invalid:            return "JVM_CONSTANT_Invalid";
     case JVM_CONSTANT_UnresolvedClass:    return "JVM_CONSTANT_UnresolvedClass";
+    case JVM_CONSTANT_ClassIndex:         return "JVM_CONSTANT_ClassIndex";
+    case JVM_CONSTANT_StringIndex:        return "JVM_CONSTANT_StringIndex";
     case JVM_CONSTANT_UnresolvedClassInError:    return "JVM_CONSTANT_UnresolvedClassInError";
-    case JVM_CONSTANT_ClassIndex:         return "JVM_CONSTANT_ClassIndex";
-    case JVM_CONSTANT_UnresolvedString:   return "JVM_CONSTANT_UnresolvedString";
-    case JVM_CONSTANT_StringIndex:        return "JVM_CONSTANT_StringIndex";
+    case JVM_CONSTANT_MethodHandleInError:return "JVM_CONSTANT_MethodHandleInError";
+    case JVM_CONSTANT_MethodTypeInError:  return "JVM_CONSTANT_MethodTypeInError";
+    case JVM_CONSTANT_Object:             return "JVM_CONSTANT_Object";
     }
     throw new InternalError("Unknown tag: " + tag);
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(tags, true);
-      visitor.doOop(cache, true);
-      visitor.doOop(poolHolder, true);
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
+    visitor.doMetadata(poolHolder, true);
 
       final int length = (int) getLength();
       // zero'th pool entry is always invalid. ignore it.
       for (int index = 1; index < length; index++) {
-        int ctag = (int) getTags().getByteAt((int) index);
+      int ctag = (int) getTags().at((int) index);
         switch (ctag) {
         case JVM_CONSTANT_ClassIndex:
         case JVM_CONSTANT_StringIndex:
@@ -452,7 +508,6 @@
         case JVM_CONSTANT_UnresolvedClassInError:
         case JVM_CONSTANT_UnresolvedClass:
         case JVM_CONSTANT_Class:
-        case JVM_CONSTANT_UnresolvedString:
         case JVM_CONSTANT_Utf8:
           visitor.doOop(new OopField(new NamedFieldIdentifier(nameForTag(ctag)), indexOffset(index), true), true);
           break;
@@ -469,27 +524,19 @@
         }
       }
     }
-    /*
-    int length = getLength();
-    for (int index = 0; index < length; index++) {
-      long offset = baseOffset + (index + typeDataBase.getOopSize());
-      visitor.doOop(new IndexableField(index, offset, false), getObjAt(index));
-    }
-    */
-  }
 
   public void writeBytes(OutputStream os) throws IOException {
           // Map between any modified UTF-8 and it's constant pool index.
           Map utf8ToIndex = new HashMap();
       DataOutputStream dos = new DataOutputStream(os);
-      TypeArray tags = getTags();
+      U1Array tags = getTags();
       int len = (int)getLength();
       int ci = 0; // constant pool index
 
       // collect all modified UTF-8 Strings from Constant Pool
 
       for (ci = 1; ci < len; ci++) {
-          byte cpConstType = tags.getByteAt(ci);
+          int cpConstType = tags.at(ci);
           if(cpConstType == JVM_CONSTANT_Utf8) {
               Symbol sym = getSymbolAt(ci);
               utf8ToIndex.put(sym.asString(), new Short((short) ci));
@@ -502,7 +549,7 @@
 
 
       for(ci = 1; ci < len; ci++) {
-          int cpConstType = (int)tags.getByteAt(ci);
+          int cpConstType = tags.at(ci);
           // write cp_info
           // write constant type
           switch(cpConstType) {
@@ -548,8 +595,8 @@
 
               case JVM_CONSTANT_Class: {
                   dos.writeByte(cpConstType);
-                  // Klass already resolved. ConstantPool constains klassOop.
-                  Klass refKls = (Klass) getObjAtRaw(ci);
+                  // Klass already resolved. ConstantPool constains Klass*.
+                  Klass refKls = (Klass)Metadata.instantiateWrapperFor(getAddressAtRaw(ci));
                   String klassName = refKls.getName().asString();
                   Short s = (Short) utf8ToIndex.get(klassName);
                   dos.writeShort(s.shortValue());
@@ -570,24 +617,13 @@
 
               case JVM_CONSTANT_String: {
                   dos.writeByte(cpConstType);
-                  String str = OopUtilities.stringOopToString(getObjAtRaw(ci));
+                  String str = getUnresolvedStringAt(ci).asString();
                   Short s = (Short) utf8ToIndex.get(str);
                   dos.writeShort(s.shortValue());
                   if (DEBUG) debugMessage("CP[" + ci + "] = string " + s);
                   break;
               }
 
-                  // case JVM_CONSTANT_StringIndex:
-              case JVM_CONSTANT_UnresolvedString: {
-                  dos.writeByte(JVM_CONSTANT_String);
-                  String val = getSymbolAt(ci).asString();
-
-                  Short s = (Short) utf8ToIndex.get(val);
-                  dos.writeShort(s.shortValue());
-                  if (DEBUG) debugMessage("CP[" + ci + "] = string " + s);
-                  break;
-              }
-
               // all external, internal method/field references
               case JVM_CONSTANT_Fieldref:
               case JVM_CONSTANT_Methodref:
@@ -618,12 +654,21 @@
               case JVM_CONSTANT_MethodHandle: {
                   dos.writeByte(cpConstType);
                   int value = getIntAt(ci);
-                  short nameIndex = (short) extractLowShortFromInt(value);
-                  short signatureIndex = (short) extractHighShortFromInt(value);
-                  dos.writeShort(nameIndex);
-                  dos.writeShort(signatureIndex);
-                  if (DEBUG) debugMessage("CP[" + ci + "] = N&T name = " + nameIndex
-                                          + ", type = " + signatureIndex);
+                  byte refKind = (byte) extractLowShortFromInt(value);
+                  short memberIndex = (short) extractHighShortFromInt(value);
+                  dos.writeByte(refKind);
+                  dos.writeShort(memberIndex);
+                  if (DEBUG) debugMessage("CP[" + ci + "] = MH kind = " +
+                                          refKind + ", mem = " + memberIndex);
+                  break;
+              }
+
+              case JVM_CONSTANT_MethodType: {
+                  dos.writeByte(cpConstType);
+                  int value = getIntAt(ci);
+                  short refIndex = (short) value;
+                  dos.writeShort(refIndex);
+                  if (DEBUG) debugMessage("CP[" + ci + "] = MT index = " + refIndex);
                   break;
               }
 
@@ -634,13 +679,13 @@
                   short nameAndTypeIndex = (short) extractHighShortFromInt(value);
                   dos.writeShort(bsmIndex);
                   dos.writeShort(nameAndTypeIndex);
-                  if (DEBUG) debugMessage("CP[" + ci + "] = indy BSM = " + bsmIndex
-                                          + ", N&T = " + nameAndTypeIndex);
+                  if (DEBUG) debugMessage("CP[" + ci + "] = INDY bsm = " +
+                                          bsmIndex + ", N&T = " + nameAndTypeIndex);
                   break;
               }
 
               default:
-                  throw new InternalError("unknown tag: " + cpConstType);
+                  throw new InternalError("Unknown tag: " + cpConstType);
           } // switch
       }
       dos.flush();
@@ -648,16 +693,11 @@
   }
 
   public void printValueOn(PrintStream tty) {
-    Oop holder = poolHolder.getValue(this);
-    if (holder instanceof Klass) {
-      tty.print("ConstantPool for " + ((Klass)holder).getName().asString());
-    } else {
-      tty.print("ConstantPool for partially loaded class");
-    }
+    tty.print("ConstantPool for " + getPoolHolder().getName().asString());
   }
 
-  public long getObjectSize() {
-    return alignObjectSize(headerSize + (getLength() * getElementSize()));
+  public long getSize() {
+    return Oop.alignObjectSize(headerSize + getLength());
   }
 
   //----------------------------------------------------------------------
@@ -665,12 +705,12 @@
   //
 
   private static int extractHighShortFromInt(int val) {
-    // must stay in sync with constantPoolOopDesc::name_and_type_at_put, method_at_put, etc.
+    // must stay in sync with ConstantPool::name_and_type_at_put, method_at_put, etc.
     return (val >> 16) & 0xFFFF;
   }
 
   private static int extractLowShortFromInt(int val) {
-    // must stay in sync with constantPoolOopDesc::name_and_type_at_put, method_at_put, etc.
+    // must stay in sync with ConstantPool::name_and_type_at_put, method_at_put, etc.
     return val & 0xFFFF;
   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -31,10 +31,10 @@
 import sun.jvm.hotspot.types.*;
 import sun.jvm.hotspot.utilities.*;
 
-//  ConstantPoolCache : A constant pool cache (constantPoolCacheOopDesc).
-//  See cpCacheOop.hpp for details about this class.
+//  ConstantPoolCache : A constant pool cache (ConstantPoolCache).
+//  See cpCache.hpp for details about this class.
 //
-public class ConstantPoolCache extends Oop {
+public class ConstantPoolCache extends Metadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -44,31 +44,33 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("constantPoolCacheOopDesc");
-    constants      = new OopField(type.getOopField("_constant_pool"), 0);
+    Type type      = db.lookupType("ConstantPoolCache");
+    constants      = new MetadataField(type.getAddressField("_constant_pool"), 0);
     baseOffset     = type.getSize();
     Type elType    = db.lookupType("ConstantPoolCacheEntry");
     elementSize    = elType.getSize();
     length         = new CIntField(type.getCIntegerField("_length"), 0);
+    intSize        = VM.getVM().getObjectHeap().getIntSize();
   }
 
-  ConstantPoolCache(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public ConstantPoolCache(Address addr) {
+    super(addr);
   }
 
   public boolean isConstantPoolCache() { return true; }
 
-  private static OopField constants;
+  private static MetadataField constants;
 
   private static long baseOffset;
   private static long elementSize;
   private static CIntField length;
+  private static long intSize;
 
 
   public ConstantPool getConstants() { return (ConstantPool) constants.getValue(this); }
 
-  public long getObjectSize() {
-    return alignObjectSize(baseOffset + getLength() * elementSize);
+  public long getSize() {
+    return Oop.alignObjectSize(baseOffset + getLength() * elementSize);
   }
 
   public ConstantPoolCacheEntry getEntryAt(int i) {
@@ -76,41 +78,10 @@
     return new ConstantPoolCacheEntry(this, i);
   }
 
-  public static boolean isSecondaryIndex(int i)     { return (i < 0); }
-  public static int     decodeSecondaryIndex(int i) { return  isSecondaryIndex(i) ? ~i : i; }
-  public static int     encodeSecondaryIndex(int i) { return !isSecondaryIndex(i) ? ~i : i; }
-
-  // secondary entries hold invokedynamic call site bindings
-  public ConstantPoolCacheEntry getSecondaryEntryAt(int i) {
-    int rawIndex = i;
-    if (isSecondaryIndex(i)) {
-      rawIndex = decodeSecondaryIndex(i);
-    }
-    ConstantPoolCacheEntry e = getEntryAt(rawIndex);
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(e.isSecondaryEntry(), "must be a secondary entry:" + rawIndex);
-    }
-    return e;
-  }
-
-  public ConstantPoolCacheEntry getMainEntryAt(int i) {
-    int primaryIndex = i;
-    if (isSecondaryIndex(i)) {
-      // run through an extra level of indirection:
-      int rawIndex = decodeSecondaryIndex(i);
-      primaryIndex = getEntryAt(rawIndex).getMainEntryIndex();
-    }
-    ConstantPoolCacheEntry e = getEntryAt(primaryIndex);
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(!e.isSecondaryEntry(), "must not be a secondary entry:" + primaryIndex);
-    }
-    return e;
-  }
-
   public int getIntAt(int entry, int fld) {
     //alignObjectSize ?
-    long offset = baseOffset + /*alignObjectSize*/entry * elementSize + fld* getHeap().getIntSize();
-    return (int) getHandle().getCIntegerAt(offset, getHeap().getIntSize(), true );
+    long offset = baseOffset + /*alignObjectSize*/entry * elementSize + fld * intSize;
+    return (int) getAddress().getCIntegerAt(offset, intSize, true );
   }
 
 
@@ -119,17 +90,15 @@
   }
 
   public int getLength() {
-    return (int) length.getValue(this);
+    return (int) length.getValue(getAddress());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(constants, true);
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
+    visitor.doMetadata(constants, true);
       for (int i = 0; i < getLength(); i++) {
         ConstantPoolCacheEntry entry = getEntryAt(i);
         entry.iterateFields(visitor);
       }
     }
-  }
 };
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheEntry.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheEntry.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -34,7 +34,7 @@
   private static long          size;
   private static long          baseOffset;
   private static CIntegerField indices;
-  private static sun.jvm.hotspot.types.OopField f1;
+  private static AddressField  f1;
   private static CIntegerField f2;
   private static CIntegerField flags;
 
@@ -54,11 +54,11 @@
     size = type.getSize();
 
     indices = type.getCIntegerField("_indices");
-    f1      = type.getOopField     ("_f1");
+    f1      = type.getAddressField ("_f1");
     f2      = type.getCIntegerField("_f2");
     flags   = type.getCIntegerField("_flags");
 
-    type = db.lookupType("constantPoolCacheOopDesc");
+    type = db.lookupType("ConstantPoolCache");
     baseOffset = type.getSize();
   }
 
@@ -69,43 +69,32 @@
 
   public int getConstantPoolIndex() {
     if (Assert.ASSERTS_ENABLED) {
-      Assert.that(!isSecondaryEntry(), "must not be a secondary CP entry");
+      Assert.that((getIndices() & 0xFFFF) != 0, "must be main entry");
     }
     return (int) (getIndices() & 0xFFFF);
   }
 
-  public boolean isSecondaryEntry() {
-    return (getIndices() & 0xFFFF) == 0;
+  private long getIndices() {
+    return cp.getAddress().getCIntegerAt(indices.getOffset() + offset, indices.getSize(), indices.isUnsigned());
   }
 
-  public int getMainEntryIndex() {
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(isSecondaryEntry(), "must be a secondary CP entry");
-    }
-    return (int) (getIndices() >>> 16);
-  }
-
-  private long getIndices() {
-      return cp.getHandle().getCIntegerAt(indices.getOffset() + offset, indices.getSize(), indices.isUnsigned());
-  }
-
-  public Oop getF1() {
-    return cp.getHeap().newOop(cp.getHandle().getOopHandleAt(f1.getOffset() + offset));
+  public Metadata getF1() {
+    return Metadata.instantiateWrapperFor(cp.getAddress().getAddressAt(f1.getOffset() + offset));
   }
 
   public int getF2() {
-    return cp.getHandle().getJIntAt(f1.getOffset() + offset);
+    return cp.getAddress().getJIntAt(f1.getOffset() + offset);
   }
 
   public int getFlags() {
-    return cp.getHandle().getJIntAt(flags.getOffset() + offset);
+    return cp.getAddress().getJIntAt(flags.getOffset() + offset);
   }
 
   static NamedFieldIdentifier f1FieldName = new NamedFieldIdentifier("_f1");
   static NamedFieldIdentifier f2FieldName = new NamedFieldIdentifier("_f2");
   static NamedFieldIdentifier flagsFieldName = new NamedFieldIdentifier("_flags");
 
-  public void iterateFields(OopVisitor visitor) {
+  public void iterateFields(MetadataVisitor visitor) {
     visitor.doOop(new OopField(f1FieldName, f1.getOffset() + offset, true), true);
     visitor.doInt(new IntField(f2FieldName, f2.getOffset() + offset, true), true);
     visitor.doInt(new IntField(flagsFieldName, flags.getOffset() + offset, true), true);
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2000, 2008, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// A ConstantPoolCacheKlass is the klass of a ConstantPoolCache
-
-public class ConstantPoolCacheKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("constantPoolCacheKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  ConstantPoolCacheKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("ConstantPoolCacheKlass");
-  }
-
-  private static long headerSize;
-}
-
-
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2000, 2008, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// A ConstantPoolKlass is the klass of a ConstantPool
-
-public class ConstantPoolKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("constantPoolKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  ConstantPoolKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("ConstantPoolKlass");
-  }
-
-  private static long headerSize;
-}
-
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/DataLayout.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/DataLayout.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -64,7 +64,7 @@
   private boolean handlized;
 
   public DataLayout(MethodData d, int o) {
-    data = d.getHandle();
+    data = d.getAddress();
     offset = o;
   }
 
@@ -89,15 +89,6 @@
     return (int)data.getCIntegerAt(offset + cellOffset(index), MethodData.cellSize, false);
   }
 
-  Oop oopAt(int index) {
-    OopHandle handle;
-    if (handlized) {
-      throw new InternalError("unsupported");
-    }
-    handle = data.getOopHandleAt(offset + cellOffset(index));
-    return VM.getVM().getObjectHeap().newOop(handle);
-  }
-
   public Address addressAt(int index) {
     OopHandle handle;
     if (handlized) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/DefaultMetadataVisitor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import sun.jvm.hotspot.debugger.Address;
+
+/** A DefaultMetadataVisitor implements basic no-op MetadataVisitor
+    functionality except that the setObj() and getObj() methods are
+    implemented properly. */
+abstract public class DefaultMetadataVisitor implements MetadataVisitor {
+  private Metadata obj;
+
+  public void prologue()                        {}
+
+  // Called after visiting an object
+  public void epilogue()                        {}
+
+  public void setObj(Metadata obj) {
+    this.obj = obj;
+  }
+
+  public Metadata getObj() {
+    return obj;
+  }
+
+  // Callback methods for each field type in an object
+  abstract public void doMetadata(MetadataField field, boolean isVMField);
+  public void doOop(OopField field, boolean isVMField)         {}
+  public void doOop(NarrowOopField field, boolean isVMField)   {}
+  public void doByte(ByteField field, boolean isVMField)       {}
+  public void doChar(CharField field, boolean isVMField)       {}
+  public void doBoolean(BooleanField field, boolean isVMField) {}
+  public void doShort(ShortField field, boolean isVMField)     {}
+  public void doInt(IntField field, boolean isVMField)         {}
+  public void doLong(LongField field, boolean isVMField)       {}
+  public void doFloat(FloatField field, boolean isVMField)     {}
+  public void doDouble(DoubleField field, boolean isVMField)   {}
+  public void doCInt(CIntField field, boolean isVMField)       {}
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -45,6 +45,7 @@
   }
 
   // Callback methods for each field type in an object
+  public void doMetadata(MetadataField field, boolean isVMField) {}
   public void doOop(OopField field, boolean isVMField)         {}
   public void doOop(NarrowOopField field, boolean isVMField)   {}
   public void doByte(ByteField field, boolean isVMField)       {}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/DoubleField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/DoubleField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a double field simply provides access to the value.
 public class DoubleField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public double getValue(Oop obj) { return obj.getHandle().getJDoubleAt(getOffset()); }
+  public double getValue(VMObject obj) { return obj.getAddress().getJDoubleAt(getOffset()); }
   public void setValue(Oop obj, double value) throws MutationException {
     // Fix this: setJDoubleAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ExceptionTableElement.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ExceptionTableElement.java	Fri Sep 14 21:50:58 2012 -0700
@@ -54,10 +54,10 @@
   private static long offsetOfHandlerPC;
   private static long offsetOfCatchTypeIndex;
 
-  private OopHandle handle;
+  private Address handle;
   private long      offset;
 
-  public ExceptionTableElement(OopHandle handle, long offset) {
+  public ExceptionTableElement(Address handle, long offset) {
     this.handle = handle;
     this.offset = offset;
   }
@@ -78,4 +78,3 @@
     return (int) handle.getCIntegerAt(offset + offsetOfCatchTypeIndex, 2, true);
   }
 }
-
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Field.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Field.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,6 +27,7 @@
 import java.io.*;
 
 import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.utilities.*;
 
 // Super class for all fields in an object
 public class Field {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/FieldVisitor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2000, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+// An OopVisitor can be used to inspect all fields within an object.
+// Fields include vm fields, java fields, indexable fields.
+
+public interface FieldVisitor {
+  // Callback methods for each field type in an object
+  public void doMetadata(MetadataField field, boolean isVMField);
+  public void doOop(OopField field, boolean isVMField);
+  public void doOop(NarrowOopField field, boolean isVMField);
+  public void doByte(ByteField field, boolean isVMField);
+  public void doChar(CharField field, boolean isVMField);
+  public void doBoolean(BooleanField field, boolean isVMField);
+  public void doShort(ShortField field, boolean isVMField);
+  public void doInt(IntField field, boolean isVMField);
+  public void doLong(LongField field, boolean isVMField);
+  public void doFloat(FloatField field, boolean isVMField);
+  public void doDouble(DoubleField field, boolean isVMField);
+  public void doCInt(CIntField field, boolean isVMField);
+};
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/FloatField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/FloatField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a float field simply provides access to the value.
 public class FloatField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public float getValue(Oop obj) { return obj.getHandle().getJFloatAt(getOffset()); }
+  public float getValue(VMObject obj) { return obj.getAddress().getJFloatAt(getOffset()); }
   public void setValue(Oop obj, float value) throws MutationException {
     // Fix this: setJFloatAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/GenerateOopMap.java	Fri Sep 14 21:50:58 2012 -0700
@@ -613,7 +613,7 @@
         tty.print(" idx " + idx);
         /*
           int idx = currentBC.getIndexU2();
-          constantPoolOop cp    = method().constants();
+          ConstantPool* cp    = method().constants();
           int nameAndTypeIdx    = cp.name_and_type_ref_index_at(idx);
           int signatureIdx      = cp.signature_ref_index_at(nameAndTypeIdx);
           Symbol* signature     = cp.symbol_at(signatureIdx);
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -53,7 +53,7 @@
 
   // Returns header size in bytes.
   public static long getHeaderSize() {
-    if (VM.getVM().isCompressedOopsEnabled()) {
+    if (VM.getVM().isCompressedHeadersEnabled()) {
       return typeSize - VM.getVM().getIntSize();
     } else {
       return typeSize;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceClassLoaderKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.memory.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.utilities.*;
+
+// An InstanceKlass is the VM level representation of a Java class.
+
+public class InstanceClassLoaderKlass extends InstanceKlass {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    // Just make sure it's there for now
+    Type type = db.lookupType("InstanceClassLoaderKlass");
+  }
+
+  public InstanceClassLoaderKlass(Address addr) {
+    super(addr);
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -26,6 +26,7 @@
 
 import java.io.*;
 import java.util.*;
+import sun.jvm.hotspot.classfile.ClassLoaderData;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.memory.*;
 import sun.jvm.hotspot.runtime.*;
@@ -53,7 +54,6 @@
   private static int FIELD_SLOTS;
 
   // ClassState constants
-  private static int CLASS_STATE_UNPARSABLE_BY_GC;
   private static int CLASS_STATE_ALLOCATED;
   private static int CLASS_STATE_LOADED;
   private static int CLASS_STATE_LINKED;
@@ -62,34 +62,34 @@
   private static int CLASS_STATE_INITIALIZATION_ERROR;
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type            = db.lookupType("instanceKlass");
-    arrayKlasses         = new OopField(type.getOopField("_array_klasses"), Oop.getHeaderSize());
-    methods              = new OopField(type.getOopField("_methods"), Oop.getHeaderSize());
-    methodOrdering       = new OopField(type.getOopField("_method_ordering"), Oop.getHeaderSize());
-    localInterfaces      = new OopField(type.getOopField("_local_interfaces"), Oop.getHeaderSize());
-    transitiveInterfaces = new OopField(type.getOopField("_transitive_interfaces"), Oop.getHeaderSize());
-    fields               = new OopField(type.getOopField("_fields"), Oop.getHeaderSize());
-    javaFieldsCount      = new CIntField(type.getCIntegerField("_java_fields_count"), Oop.getHeaderSize());
-    constants            = new OopField(type.getOopField("_constants"), Oop.getHeaderSize());
-    classLoader          = new OopField(type.getOopField("_class_loader"), Oop.getHeaderSize());
-    protectionDomain     = new OopField(type.getOopField("_protection_domain"), Oop.getHeaderSize());
-    signers              = new OopField(type.getOopField("_signers"), Oop.getHeaderSize());
+    Type type            = db.lookupType("InstanceKlass");
+    arrayKlasses         = new MetadataField(type.getAddressField("_array_klasses"), 0);
+    methods              = type.getAddressField("_methods");
+    methodOrdering       = type.getAddressField("_method_ordering");
+    localInterfaces      = type.getAddressField("_local_interfaces");
+    transitiveInterfaces = type.getAddressField("_transitive_interfaces");
+    fields               = type.getAddressField("_fields");
+    javaFieldsCount      = new CIntField(type.getCIntegerField("_java_fields_count"), 0);
+    constants            = new MetadataField(type.getAddressField("_constants"), 0);
+    classLoaderData      = type.getAddressField("_class_loader_data");
+    protectionDomain     = new OopField(type.getOopField("_protection_domain"), 0);
+    signers              = new OopField(type.getOopField("_signers"), 0);
     sourceFileName       = type.getAddressField("_source_file_name");
     sourceDebugExtension = type.getAddressField("_source_debug_extension");
-    innerClasses         = new OopField(type.getOopField("_inner_classes"), Oop.getHeaderSize());
-    nonstaticFieldSize   = new CIntField(type.getCIntegerField("_nonstatic_field_size"), Oop.getHeaderSize());
-    staticFieldSize      = new CIntField(type.getCIntegerField("_static_field_size"), Oop.getHeaderSize());
-    staticOopFieldCount   = new CIntField(type.getCIntegerField("_static_oop_field_count"), Oop.getHeaderSize());
-    nonstaticOopMapSize  = new CIntField(type.getCIntegerField("_nonstatic_oop_map_size"), Oop.getHeaderSize());
-    isMarkedDependent    = new CIntField(type.getCIntegerField("_is_marked_dependent"), Oop.getHeaderSize());
-    initState            = new CIntField(type.getCIntegerField("_init_state"), Oop.getHeaderSize());
-    vtableLen            = new CIntField(type.getCIntegerField("_vtable_len"), Oop.getHeaderSize());
-    itableLen            = new CIntField(type.getCIntegerField("_itable_len"), Oop.getHeaderSize());
+    innerClasses         = type.getAddressField("_inner_classes");
+    nonstaticFieldSize   = new CIntField(type.getCIntegerField("_nonstatic_field_size"), 0);
+    staticFieldSize      = new CIntField(type.getCIntegerField("_static_field_size"), 0);
+    staticOopFieldCount   = new CIntField(type.getCIntegerField("_static_oop_field_count"), 0);
+    nonstaticOopMapSize  = new CIntField(type.getCIntegerField("_nonstatic_oop_map_size"), 0);
+    isMarkedDependent    = new CIntField(type.getCIntegerField("_is_marked_dependent"), 0);
+    initState            = new CIntField(type.getCIntegerField("_init_state"), 0);
+    vtableLen            = new CIntField(type.getCIntegerField("_vtable_len"), 0);
+    itableLen            = new CIntField(type.getCIntegerField("_itable_len"), 0);
     breakpoints          = type.getAddressField("_breakpoints");
     genericSignature     = type.getAddressField("_generic_signature");
-    majorVersion         = new CIntField(type.getCIntegerField("_major_version"), Oop.getHeaderSize());
-    minorVersion         = new CIntField(type.getCIntegerField("_minor_version"), Oop.getHeaderSize());
-    headerSize           = alignObjectOffset(Oop.getHeaderSize() + type.getSize());
+    majorVersion         = new CIntField(type.getCIntegerField("_major_version"), 0);
+    minorVersion         = new CIntField(type.getCIntegerField("_minor_version"), 0);
+    headerSize           = Oop.alignObjectOffset(type.getSize());
 
     // read field offset constants
     ACCESS_FLAGS_OFFSET            = db.lookupIntConstant("FieldInfo::access_flags_offset").intValue();
@@ -100,18 +100,17 @@
     HIGH_OFFSET                    = db.lookupIntConstant("FieldInfo::high_offset").intValue();
     FIELD_SLOTS                    = db.lookupIntConstant("FieldInfo::field_slots").intValue();
     // read ClassState constants
-    CLASS_STATE_UNPARSABLE_BY_GC = db.lookupIntConstant("instanceKlass::unparsable_by_gc").intValue();
-    CLASS_STATE_ALLOCATED = db.lookupIntConstant("instanceKlass::allocated").intValue();
-    CLASS_STATE_LOADED = db.lookupIntConstant("instanceKlass::loaded").intValue();
-    CLASS_STATE_LINKED = db.lookupIntConstant("instanceKlass::linked").intValue();
-    CLASS_STATE_BEING_INITIALIZED = db.lookupIntConstant("instanceKlass::being_initialized").intValue();
-    CLASS_STATE_FULLY_INITIALIZED = db.lookupIntConstant("instanceKlass::fully_initialized").intValue();
-    CLASS_STATE_INITIALIZATION_ERROR = db.lookupIntConstant("instanceKlass::initialization_error").intValue();
+    CLASS_STATE_ALLOCATED = db.lookupIntConstant("InstanceKlass::allocated").intValue();
+    CLASS_STATE_LOADED = db.lookupIntConstant("InstanceKlass::loaded").intValue();
+    CLASS_STATE_LINKED = db.lookupIntConstant("InstanceKlass::linked").intValue();
+    CLASS_STATE_BEING_INITIALIZED = db.lookupIntConstant("InstanceKlass::being_initialized").intValue();
+    CLASS_STATE_FULLY_INITIALIZED = db.lookupIntConstant("InstanceKlass::fully_initialized").intValue();
+    CLASS_STATE_INITIALIZATION_ERROR = db.lookupIntConstant("InstanceKlass::initialization_error").intValue();
 
   }
 
-  InstanceKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public InstanceKlass(Address addr) {
+    super(addr);
     if (getJavaFieldsCount() != getAllFieldsCount()) {
       // Exercise the injected field logic
       for (int i = getJavaFieldsCount(); i < getAllFieldsCount(); i++) {
@@ -121,20 +120,20 @@
     }
   }
 
-  private static OopField  arrayKlasses;
-  private static OopField  methods;
-  private static OopField  methodOrdering;
-  private static OopField  localInterfaces;
-  private static OopField  transitiveInterfaces;
-  private static OopField  fields;
+  private static MetadataField arrayKlasses;
+  private static AddressField  methods;
+  private static AddressField  methodOrdering;
+  private static AddressField  localInterfaces;
+  private static AddressField  transitiveInterfaces;
+  private static AddressField fields;
   private static CIntField javaFieldsCount;
-  private static OopField  constants;
-  private static OopField  classLoader;
+  private static MetadataField constants;
+  private static AddressField  classLoaderData;
   private static OopField  protectionDomain;
   private static OopField  signers;
   private static AddressField  sourceFileName;
   private static AddressField  sourceDebugExtension;
-  private static OopField  innerClasses;
+  private static AddressField  innerClasses;
   private static CIntField nonstaticFieldSize;
   private static CIntField staticFieldSize;
   private static CIntField staticOopFieldCount;
@@ -150,7 +149,6 @@
 
   // type safe enum for ClassState from instanceKlass.hpp
   public static class ClassState {
-     public static final ClassState UNPARSABLE_BY_GC = new ClassState("unparsable_by_gc");
      public static final ClassState ALLOCATED    = new ClassState("allocated");
      public static final ClassState LOADED       = new ClassState("loaded");
      public static final ClassState LINKED       = new ClassState("linked");
@@ -172,9 +170,7 @@
   public int  getInitStateAsInt() { return (int) initState.getValue(this); }
   public ClassState getInitState() {
      int state = getInitStateAsInt();
-     if (state == CLASS_STATE_UNPARSABLE_BY_GC) {
-        return ClassState.UNPARSABLE_BY_GC;
-     } else if (state == CLASS_STATE_ALLOCATED) {
+     if (state == CLASS_STATE_ALLOCATED) {
         return ClassState.ALLOCATED;
      } else if (state == CLASS_STATE_LOADED) {
         return ClassState.LOADED;
@@ -242,19 +238,24 @@
     return getSizeHelper() * VM.getVM().getAddressSize();
   }
 
+  public long getSize() {
+    return Oop.alignObjectSize(getHeaderSize() + Oop.alignObjectOffset(getVtableLen()) +
+                               Oop.alignObjectOffset(getItableLen()) + Oop.alignObjectOffset(getNonstaticOopMapSize()));
+  }
+
   public static long getHeaderSize() { return headerSize; }
 
   public short getFieldAccessFlags(int index) {
-    return getFields().getShortAt(index * FIELD_SLOTS + ACCESS_FLAGS_OFFSET);
+    return getFields().at(index * FIELD_SLOTS + ACCESS_FLAGS_OFFSET);
   }
 
   public short getFieldNameIndex(int index) {
     if (index >= getJavaFieldsCount()) throw new IndexOutOfBoundsException("not a Java field;");
-    return getFields().getShortAt(index * FIELD_SLOTS + NAME_INDEX_OFFSET);
+    return getFields().at(index * FIELD_SLOTS + NAME_INDEX_OFFSET);
   }
 
   public Symbol getFieldName(int index) {
-    int nameIndex = getFields().getShortAt(index * FIELD_SLOTS + NAME_INDEX_OFFSET);
+    int nameIndex = getFields().at(index * FIELD_SLOTS + NAME_INDEX_OFFSET);
     if (index < getJavaFieldsCount()) {
       return getConstants().getSymbolAt(nameIndex);
     } else {
@@ -264,11 +265,11 @@
 
   public short getFieldSignatureIndex(int index) {
     if (index >= getJavaFieldsCount()) throw new IndexOutOfBoundsException("not a Java field;");
-    return getFields().getShortAt(index * FIELD_SLOTS + SIGNATURE_INDEX_OFFSET);
+    return getFields().at(index * FIELD_SLOTS + SIGNATURE_INDEX_OFFSET);
   }
 
   public Symbol getFieldSignature(int index) {
-    int signatureIndex = getFields().getShortAt(index * FIELD_SLOTS + SIGNATURE_INDEX_OFFSET);
+    int signatureIndex = getFields().at(index * FIELD_SLOTS + SIGNATURE_INDEX_OFFSET);
     if (index < getJavaFieldsCount()) {
       return getConstants().getSymbolAt(signatureIndex);
     } else {
@@ -277,7 +278,7 @@
   }
 
   public short getFieldGenericSignatureIndex(int index) {
-    int len = (int)getFields().getLength();
+     int len = getFields().length();
     int allFieldsCount = getAllFieldsCount();
     int generic_signature_slot = allFieldsCount * FIELD_SLOTS;
     for (int i = 0; i < allFieldsCount; i++) {
@@ -285,7 +286,7 @@
       AccessFlags access = new AccessFlags(flags);
       if (i == index) {
         if (access.fieldHasGenericSignature()) {
-          return getFields().getShortAt(generic_signature_slot);
+           return getFields().at(generic_signature_slot);
         } else {
           return 0;
         }
@@ -308,25 +309,23 @@
 
   public short getFieldInitialValueIndex(int index) {
     if (index >= getJavaFieldsCount()) throw new IndexOutOfBoundsException("not a Java field;");
-    return getFields().getShortAt(index * FIELD_SLOTS + INITVAL_INDEX_OFFSET);
+    return getFields().at(index * FIELD_SLOTS + INITVAL_INDEX_OFFSET);
   }
 
   public int getFieldOffset(int index) {
-    TypeArray fields = getFields();
-    return VM.getVM().buildIntFromShorts(fields.getShortAt(index * FIELD_SLOTS + LOW_OFFSET),
-                                         fields.getShortAt(index * FIELD_SLOTS + HIGH_OFFSET));
+    U2Array fields = getFields();
+    return VM.getVM().buildIntFromShorts(fields.at(index * FIELD_SLOTS + LOW_OFFSET),
+                                         fields.at(index * FIELD_SLOTS + HIGH_OFFSET));
   }
 
   // Accessors for declared fields
   public Klass     getArrayKlasses()        { return (Klass)        arrayKlasses.getValue(this); }
-  public ObjArray  getMethods()             { return (ObjArray)     methods.getValue(this); }
-  public TypeArray getMethodOrdering()      { return (TypeArray)    methodOrdering.getValue(this); }
-  public ObjArray  getLocalInterfaces()     { return (ObjArray)     localInterfaces.getValue(this); }
-  public ObjArray  getTransitiveInterfaces() { return (ObjArray)     transitiveInterfaces.getValue(this); }
-  public TypeArray getFields()              { return (TypeArray)    fields.getValue(this); }
+  public MethodArray  getMethods()              { return new MethodArray(methods.getValue(getAddress())); }
+  public KlassArray   getLocalInterfaces()      { return new KlassArray(localInterfaces.getValue(getAddress())); }
+  public KlassArray   getTransitiveInterfaces() { return new KlassArray(transitiveInterfaces.getValue(getAddress())); }
   public int       getJavaFieldsCount()     { return                (int) javaFieldsCount.getValue(this); }
   public int       getAllFieldsCount()      {
-    int len = (int)getFields().getLength();
+     int len = getFields().length();
     int allFieldsCount = 0;
     for (; allFieldsCount*FIELD_SLOTS < len; allFieldsCount++) {
       short flags = getFieldAccessFlags(allFieldsCount);
@@ -338,12 +337,12 @@
     return allFieldsCount;
   }
   public ConstantPool getConstants()        { return (ConstantPool) constants.getValue(this); }
-  public Oop       getClassLoader()         { return                classLoader.getValue(this); }
+  public ClassLoaderData getClassLoaderData() { return                ClassLoaderData.instantiateWrapperFor(classLoaderData.getValue(getAddress())); }
+  public Oop       getClassLoader()         { return                getClassLoaderData().getClassLoader(); }
   public Oop       getProtectionDomain()    { return                protectionDomain.getValue(this); }
   public ObjArray  getSigners()             { return (ObjArray)     signers.getValue(this); }
   public Symbol    getSourceFileName()      { return getSymbol(sourceFileName); }
-  public String    getSourceDebugExtension(){ return                CStringUtilities.getString(sourceDebugExtension.getValue(getHandle())); }
-  public TypeArray getInnerClasses()        { return (TypeArray)    innerClasses.getValue(this); }
+  public String    getSourceDebugExtension(){ return                CStringUtilities.getString(sourceDebugExtension.getValue(getAddress())); }
   public long      getNonstaticFieldSize()  { return                nonstaticFieldSize.getValue(this); }
   public long      getStaticOopFieldCount() { return                staticOopFieldCount.getValue(this); }
   public long      getNonstaticOopMapSize() { return                nonstaticOopMapSize.getValue(this); }
@@ -383,8 +382,8 @@
   public long computeModifierFlags() {
     long access = getAccessFlags();
     // But check if it happens to be member class.
-    TypeArray innerClassList = getInnerClasses();
-    int length = ( innerClassList == null)? 0 : (int) innerClassList.getLength();
+    U2Array innerClassList = getInnerClasses();
+    int length = (innerClassList == null)? 0 : (int) innerClassList.length();
     if (length > 0) {
        if (Assert.ASSERTS_ENABLED) {
           Assert.that(length % InnerClassAttributeOffset.innerClassNextOffset == 0 ||
@@ -395,7 +394,7 @@
           if (i == length - EnclosingMethodAttributeOffset.enclosing_method_attribute_size) {
               break;
           }
-          int ioff = innerClassList.getShortAt(i +
+          int ioff = innerClassList.at(i +
                          InnerClassAttributeOffset.innerClassInnerClassInfoOffset);
           // 'ioff' can be zero.
           // refer to JVM spec. section 4.7.5.
@@ -404,9 +403,9 @@
              // since we are looking for the flags for our self.
              ConstantPool.CPSlot classInfo = getConstants().getSlotAt(ioff);
              Symbol name = null;
-             if (classInfo.isOop()) {
-               name = ((Klass) classInfo.getOop()).getName();
-             } else if (classInfo.isMetaData()) {
+             if (classInfo.isResolved()) {
+               name = classInfo.getKlass().getName();
+             } else if (classInfo.isUnresolved()) {
                name = classInfo.getSymbol();
              } else {
                 throw new RuntimeException("should not reach here");
@@ -414,7 +413,7 @@
 
              if (name.equals(getName())) {
                 // This is really a member class
-                access = innerClassList.getShortAt(i +
+                access = innerClassList.at(i +
                         InnerClassAttributeOffset.innerClassAccessFlagsOffset);
                 break;
              }
@@ -440,8 +439,8 @@
   }
 
   private boolean isInInnerClasses(Symbol sym, boolean includeLocals) {
-    TypeArray innerClassList = getInnerClasses();
-    int length = ( innerClassList == null)? 0 : (int) innerClassList.getLength();
+    U2Array innerClassList = getInnerClasses();
+    int length = ( innerClassList == null)? 0 : (int) innerClassList.length();
     if (length > 0) {
        if (Assert.ASSERTS_ENABLED) {
          Assert.that(length % InnerClassAttributeOffset.innerClassNextOffset == 0 ||
@@ -452,27 +451,19 @@
          if (i == length - EnclosingMethodAttributeOffset.enclosing_method_attribute_size) {
              break;
          }
-         int ioff = innerClassList.getShortAt(i +
+         int ioff = innerClassList.at(i +
                         InnerClassAttributeOffset.innerClassInnerClassInfoOffset);
          // 'ioff' can be zero.
          // refer to JVM spec. section 4.7.5.
          if (ioff != 0) {
             ConstantPool.CPSlot iclassInfo = getConstants().getSlotAt(ioff);
-            Symbol innerName = null;
-            if (iclassInfo.isOop()) {
-              innerName = ((Klass) iclassInfo.getOop()).getName();
-            } else if (iclassInfo.isMetaData()) {
-              innerName = iclassInfo.getSymbol();
-            } else {
-               throw new RuntimeException("should not reach here");
-            }
-
+            Symbol innerName = getConstants().getKlassNameAt(ioff);
             Symbol myname = getName();
-            int ooff = innerClassList.getShortAt(i +
+            int ooff = innerClassList.at(i +
                         InnerClassAttributeOffset.innerClassOuterClassInfoOffset);
             // for anonymous classes inner_name_index of InnerClasses
             // attribute is zero.
-            int innerNameIndex = innerClassList.getShortAt(i +
+            int innerNameIndex = innerClassList.at(i +
                         InnerClassAttributeOffset.innerClassInnerNameOffset);
             // if this is not a member (anonymous, local etc.), 'ooff' will be zero
             // refer to JVM spec. section 4.7.5.
@@ -488,9 +479,9 @@
             } else {
                ConstantPool.CPSlot oclassInfo = getConstants().getSlotAt(ooff);
                Symbol outerName = null;
-               if (oclassInfo.isOop()) {
-                 outerName = ((Klass) oclassInfo.getOop()).getName();
-               } else if (oclassInfo.isMetaData()) {
+               if (oclassInfo.isResolved()) {
+                 outerName = oclassInfo.getKlass().getName();
+               } else if (oclassInfo.isUnresolved()) {
                  outerName = oclassInfo.getSymbol();
                } else {
                   throw new RuntimeException("should not reach here");
@@ -513,10 +504,10 @@
     if (Assert.ASSERTS_ENABLED) {
       Assert.that(k.isInterface(), "should not reach here");
     }
-    ObjArray interfaces =  getTransitiveInterfaces();
-    final int len = (int) interfaces.getLength();
+    KlassArray interfaces =  getTransitiveInterfaces();
+    final int len = interfaces.length();
     for (int i = 0; i < len; i++) {
-      if (interfaces.getObjAt(i).equals(k)) return true;
+      if (interfaces.getAt(i).equals(k)) return true;
     }
     return false;
   }
@@ -533,20 +524,14 @@
     tty.print("InstanceKlass for " + getName().asString());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(arrayKlasses, true);
-      visitor.doOop(methods, true);
-      visitor.doOop(methodOrdering, true);
-      visitor.doOop(localInterfaces, true);
-      visitor.doOop(transitiveInterfaces, true);
-      visitor.doOop(fields, true);
-      visitor.doOop(constants, true);
-      visitor.doOop(classLoader, true);
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
+    visitor.doMetadata(arrayKlasses, true);
+    // visitor.doOop(methods, true);
+    // visitor.doOop(localInterfaces, true);
+    // visitor.doOop(transitiveInterfaces, true);
       visitor.doOop(protectionDomain, true);
       visitor.doOop(signers, true);
-      visitor.doOop(innerClasses, true);
       visitor.doCInt(nonstaticFieldSize, true);
       visitor.doCInt(staticFieldSize, true);
       visitor.doCInt(staticOopFieldCount, true);
@@ -556,7 +541,6 @@
       visitor.doCInt(vtableLen, true);
       visitor.doCInt(itableLen, true);
     }
-  }
 
   /*
    *  Visit the static fields of this InstanceKlass with the obj of
@@ -628,10 +612,10 @@
 
   /** Find field in direct superinterfaces. */
   public Field findInterfaceField(Symbol name, Symbol sig) {
-    ObjArray interfaces = getLocalInterfaces();
-    int n = (int) interfaces.getLength();
+    KlassArray interfaces = getLocalInterfaces();
+    int n = interfaces.length();
     for (int i = 0; i < n; i++) {
-      InstanceKlass intf1 = (InstanceKlass) interfaces.getObjAt(i);
+      InstanceKlass intf1 = (InstanceKlass) interfaces.getAt(i);
       if (Assert.ASSERTS_ENABLED) {
         Assert.that(intf1.isInterface(), "just checking type");
       }
@@ -727,10 +711,10 @@
         // transitiveInterfaces contains all interfaces implemented
         // by this class and its superclass chain with no duplicates.
 
-        ObjArray interfaces = getTransitiveInterfaces();
-        int n = (int) interfaces.getLength();
+        KlassArray interfaces = getTransitiveInterfaces();
+        int n = interfaces.length();
         for (int i = 0; i < n; i++) {
-            InstanceKlass intf1 = (InstanceKlass) interfaces.getObjAt(i);
+            InstanceKlass intf1 = (InstanceKlass) interfaces.getAt(i);
             if (Assert.ASSERTS_ENABLED) {
                 Assert.that(intf1.isInterface(), "just checking type");
             }
@@ -759,20 +743,20 @@
       // Contains a Method for each method declared in this class/interface
       // not including inherited methods.
 
-      ObjArray methods = getMethods();
-      int length = (int)methods.getLength();
+      MethodArray methods = getMethods();
+      int length = methods.length();
       Object[] tmp = new Object[length];
 
-      TypeArray methodOrdering = getMethodOrdering();
-      if (methodOrdering.getLength() != length) {
+      IntArray methodOrdering = getMethodOrdering();
+      if (methodOrdering.length() != length) {
          // no ordering info present
          for (int index = 0; index < length; index++) {
-            tmp[index] = methods.getObjAt(index);
+            tmp[index] = methods.at(index);
          }
       } else {
          for (int index = 0; index < length; index++) {
-            int originalIndex = getMethodOrdering().getIntAt(index);
-            tmp[originalIndex] = methods.getObjAt(index);
+            int originalIndex = methodOrdering.at(index);
+            tmp[originalIndex] = methods.at(index);
          }
       }
 
@@ -786,25 +770,17 @@
         // Contains an InstanceKlass for each interface in this classes
         // 'implements' clause.
 
-        ObjArray interfaces = getLocalInterfaces();
-        int length = (int) interfaces.getLength();
+        KlassArray interfaces = getLocalInterfaces();
+        int length = interfaces.length();
         List directImplementedInterfaces = new ArrayList(length);
 
         for (int index = 0; index < length; index ++) {
-            directImplementedInterfaces.add(interfaces.getObjAt(index));
+            directImplementedInterfaces.add(interfaces.getAt(index));
         }
 
         return directImplementedInterfaces;
     }
 
-
-  public long getObjectSize() {
-    long bodySize =    alignObjectOffset(getVtableLen() * getHeap().getOopSize())
-                     + alignObjectOffset(getItableLen() * getHeap().getOopSize())
-                     + (getNonstaticOopMapSize()) * getHeap().getOopSize();
-    return alignObjectSize(headerSize + bodySize);
-  }
-
   public Klass arrayKlassImpl(boolean orNull, int n) {
     // FIXME: in reflective system this would need to change to
     // actually allocate
@@ -841,12 +817,28 @@
     return findMethod(getMethods(), name, sig);
   }
 
-  /** Breakpoint support (see methods on methodOop for details) */
+  /** Breakpoint support (see methods on Method* for details) */
   public BreakpointInfo getBreakpoints() {
-    Address addr = getHandle().getAddressAt(Oop.getHeaderSize() + breakpoints.getOffset());
+    Address addr = getAddress().getAddressAt(breakpoints.getOffset());
     return (BreakpointInfo) VMObjectFactory.newObject(BreakpointInfo.class, addr);
   }
 
+  public IntArray  getMethodOrdering() {
+    Address addr = getAddress().getAddressAt(methodOrdering.getOffset());
+    return (IntArray) VMObjectFactory.newObject(IntArray.class, addr);
+  }
+
+  public U2Array getFields() {
+    Address addr = getAddress().getAddressAt(fields.getOffset());
+    return (U2Array) VMObjectFactory.newObject(U2Array.class, addr);
+  }
+
+  public U2Array getInnerClasses() {
+    Address addr = getAddress().getAddressAt(innerClasses.getOffset());
+    return (U2Array) VMObjectFactory.newObject(U2Array.class, addr);
+  }
+
+
   //----------------------------------------------------------------------
   // Internals only below this point
   //
@@ -928,14 +920,14 @@
     throw new RuntimeException("Illegal field type at index " + index);
   }
 
-  private static Method findMethod(ObjArray methods, Symbol name, Symbol signature) {
-    int len = (int) methods.getLength();
+  private static Method findMethod(MethodArray methods, Symbol name, Symbol signature) {
+    int len = methods.length();
     // methods are sorted, so do binary search
     int l = 0;
     int h = len - 1;
     while (l <= h) {
       int mid = (l + h) >> 1;
-      Method m = (Method) methods.getObjAt(mid);
+      Method m = methods.at(mid);
       int res = m.getName().fastCompare(name);
       if (res == 0) {
         // found matching name; do linear search to find matching signature
@@ -944,13 +936,13 @@
         // search downwards through overloaded methods
         int i;
         for (i = mid - 1; i >= l; i--) {
-          Method m1 = (Method) methods.getObjAt(i);
+          Method m1 = methods.at(i);
           if (!m1.getName().equals(name)) break;
           if (m1.getSignature().equals(signature)) return m1;
         }
         // search upwards
         for (i = mid + 1; i <= h; i++) {
-          Method m1 = (Method) methods.getObjAt(i);
+          Method m1 = methods.at(i);
           if (!m1.getName().equals(name)) break;
           if (m1.getSignature().equals(signature)) return m1;
         }
@@ -977,10 +969,10 @@
     return null;
   }
 
-  private static int linearSearch(ObjArray methods, Symbol name, Symbol signature) {
-    int len = (int) methods.getLength();
+  private static int linearSearch(MethodArray methods, Symbol name, Symbol signature) {
+    int len = (int) methods.length();
     for (int index = 0; index < len; index++) {
-      Method m = (Method) methods.getObjAt(index);
+      Method m = methods.at(index);
       if (m.getSignature().equals(signature) && m.getName().equals(name)) {
         return index;
       }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// An InstanceKlassKlass is the klass of an InstanceKlass.
-// There only exist one instance Universe::instanceKlassKlassObj()
-
-public class InstanceKlassKlass extends KlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("instanceKlassKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  InstanceKlassKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("InstanceKlassKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceMirrorKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceMirrorKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -45,11 +45,11 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     // Just make sure it's there for now
-    Type type = db.lookupType("instanceMirrorKlass");
+    Type type = db.lookupType("InstanceMirrorKlass");
   }
 
-  InstanceMirrorKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public InstanceMirrorKlass(Address addr) {
+    super(addr);
   }
 
   public long getObjectSize(Oop o) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceRefKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.memory.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+import sun.jvm.hotspot.utilities.*;
+
+// An InstanceKlass is the VM level representation of a Java class.
+
+public class InstanceRefKlass extends InstanceKlass {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    // Just make sure it's there for now
+    Type type = db.lookupType("InstanceRefKlass");
+  }
+
+  public InstanceRefKlass(Address addr) {
+    super(addr);
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/IntField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/IntField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for an int field simply provides access to the value.
 public class IntField extends Field {
@@ -46,6 +47,9 @@
     }
     return obj.getHandle().getJIntAt(getOffset());
   }
+  public int getValue(VMObject obj) {
+    return obj.getAddress().getJIntAt(getOffset());
+  }
   public void setValue(Oop obj, int value) throws MutationException {
     // Fix this: setJIntAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -30,7 +30,7 @@
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.*;
 
-public class Klass extends Oop implements ClassConstants {
+public class Klass extends Metadata implements ClassConstants {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -50,14 +50,14 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type    = db.lookupType("Klass");
-    javaMirror   = new OopField(type.getOopField("_java_mirror"), Oop.getHeaderSize());
-    superField   = new OopField(type.getOopField("_super"), Oop.getHeaderSize());
-    layoutHelper = new IntField(type.getJIntField("_layout_helper"), Oop.getHeaderSize());
+    javaMirror   = new OopField(type.getOopField("_java_mirror"), 0);
+    superField   = new MetadataField(type.getAddressField("_super"), 0);
+    layoutHelper = new IntField(type.getJIntField("_layout_helper"), 0);
     name         = type.getAddressField("_name");
-    accessFlags  = new CIntField(type.getCIntegerField("_access_flags"), Oop.getHeaderSize());
-    subklass     = new OopField(type.getOopField("_subklass"), Oop.getHeaderSize());
-    nextSibling  = new OopField(type.getOopField("_next_sibling"), Oop.getHeaderSize());
-    allocCount   = new CIntField(type.getCIntegerField("_alloc_count"), Oop.getHeaderSize());
+    accessFlags  = new CIntField(type.getCIntegerField("_access_flags"), 0);
+    subklass     = new MetadataField(type.getAddressField("_subklass"), 0);
+    nextSibling  = new MetadataField(type.getAddressField("_next_sibling"), 0);
+    allocCount   = new CIntField(type.getCIntegerField("_alloc_count"), 0);
 
     LH_INSTANCE_SLOW_PATH_BIT  = db.lookupIntConstant("Klass::_lh_instance_slow_path_bit").intValue();
     LH_LOG2_ELEMENT_SIZE_SHIFT = db.lookupIntConstant("Klass::_lh_log2_element_size_shift").intValue();
@@ -68,8 +68,8 @@
     LH_ARRAY_TAG_OBJ_VALUE     = db.lookupIntConstant("Klass::_lh_array_tag_obj_value").intValue();
   }
 
-  Klass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public Klass(Address addr) {
+    super(addr);
   }
 
   // jvmdi support - see also class_status in VM code
@@ -81,20 +81,20 @@
 
   // Fields
   private static OopField  javaMirror;
-  private static OopField  superField;
+  private static MetadataField  superField;
   private static IntField layoutHelper;
   private static AddressField  name;
   private static CIntField accessFlags;
-  private static OopField  subklass;
-  private static OopField  nextSibling;
+  private static MetadataField  subklass;
+  private static MetadataField  nextSibling;
   private static CIntField allocCount;
 
   private Address getValue(AddressField field) {
-    return getHandle().getAddressAt(field.getOffset() + Oop.getHeaderSize());
+    return addr.getAddressAt(field.getOffset());
   }
 
   protected Symbol getSymbol(AddressField field) {
-    return Symbol.create(getHandle().getAddressAt(field.getOffset() + Oop.getHeaderSize()));
+    return Symbol.create(addr.getAddressAt(field.getOffset()));
   }
 
   // Accessors for declared fields
@@ -164,19 +164,16 @@
     tty.print("Klass");
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
+  public void iterateFields(MetadataVisitor visitor) {
       visitor.doOop(javaMirror, true);
-      visitor.doOop(superField, true);
+    visitor.doMetadata(superField, true);
       visitor.doInt(layoutHelper, true);
       // visitor.doOop(name, true);
       visitor.doCInt(accessFlags, true);
-      visitor.doOop(subklass, true);
-      visitor.doOop(nextSibling, true);
+    visitor.doMetadata(subklass, true);
+    visitor.doMetadata(nextSibling, true);
       visitor.doCInt(allocCount, true);
     }
-  }
 
   public long getObjectSize() {
     throw new RuntimeException("should not reach here");
@@ -191,11 +188,11 @@
   public Klass arrayKlassOrNull()         { return arrayKlassImpl(true);        }
 
   public Klass arrayKlassImpl(boolean orNull, int rank) {
-    throw new RuntimeException("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
+    throw new RuntimeException("array_klass should be dispatched to InstanceKlass, objArrayKlass or typeArrayKlass");
   }
 
   public Klass arrayKlassImpl(boolean orNull) {
-    throw new RuntimeException("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
+    throw new RuntimeException("array_klass should be dispatched to InstanceKlass, objArrayKlass or typeArrayKlass");
   }
 
   // This returns the name in the form java/lang/String which isn't really a signature
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/KlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// A KlassKlass serves as the fix point of the klass chain.
-// The klass of KlassKlass is itself.
-
-public class KlassKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("klassKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  KlassKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("KlassKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/LocalVariableTableElement.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/LocalVariableTableElement.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -58,10 +58,10 @@
   private static long offsetOfSignatureCPIndex;
   private static long offsetOfSlot;
 
-  private OopHandle handle;
+  private Address   handle;
   private long      offset;
 
-  public LocalVariableTableElement(OopHandle handle, long offset) {
+  public LocalVariableTableElement(Address handle, long offset) {
     this.handle = handle;
     this.offset = offset;
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/LongField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/LongField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a long field simply provides access to the value.
 public class LongField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public long getValue(Oop obj) { return obj.getHandle().getJLongAt(getOffset()); }
+  public long getValue(VMObject obj) { return obj.getAddress().getJLongAt(getOffset()); }
   public void setValue(Oop obj, long value) {
     // Fix this: setJLongAt is missing in Address
   }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Metadata.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import java.io.*;
+import java.util.*;
+import sun.jvm.hotspot.utilities.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.*;
+
+abstract public class Metadata extends VMObject {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+        public void update(Observable o, Object data) {
+          initialize(VM.getVM().getTypeDataBase());
+        }
+      });
+  }
+
+  public Metadata(Address addr) {
+    super(addr);
+  }
+
+  private static VirtualBaseConstructor<Metadata> metadataConstructor;
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    metadataConstructor = new VirtualBaseConstructor<Metadata>(db, db.lookupType("Metadata"), null, null);
+    // Define an explicit mapping since the C++ and Java type names don't match.
+    metadataConstructor.addMapping("Metadata", Metadata.class);
+    metadataConstructor.addMapping("Klass", Klass.class);
+    metadataConstructor.addMapping("InstanceKlass", InstanceKlass.class);
+    metadataConstructor.addMapping("InstanceMirrorKlass", InstanceMirrorKlass.class);
+    metadataConstructor.addMapping("InstanceRefKlass", InstanceRefKlass.class);
+    metadataConstructor.addMapping("InstanceClassLoaderKlass", InstanceClassLoaderKlass.class);
+    metadataConstructor.addMapping("typeArrayKlass", TypeArrayKlass.class);
+    metadataConstructor.addMapping("objArrayKlass", ObjArrayKlass.class);
+    metadataConstructor.addMapping("Method", Method.class);
+    metadataConstructor.addMapping("MethodData", MethodData.class);
+    metadataConstructor.addMapping("ConstMethod", ConstMethod.class);
+    metadataConstructor.addMapping("ConstantPool", ConstantPool.class);
+    metadataConstructor.addMapping("ConstantPoolCache", ConstantPoolCache.class);
+  }
+
+  public static Metadata instantiateWrapperFor(Address addr) {
+    return metadataConstructor.instantiateWrapperFor(addr);
+  }
+
+  public void iterate(MetadataVisitor visitor) {
+    visitor.setObj(this);
+    visitor.prologue();
+    iterateFields(visitor);
+    visitor.epilogue();
+  }
+
+  void iterateFields(MetadataVisitor visitor) {
+  }
+
+  abstract public void printValueOn(PrintStream tty);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/MetadataField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+import sun.jvm.hotspot.runtime.VMObject;
+import sun.jvm.hotspot.debugger.*;
+
+// The class for an C int field simply provides access to the value.
+public class MetadataField extends Field {
+
+  public MetadataField(sun.jvm.hotspot.types.AddressField vmField, long startOffset) {
+    super(new NamedFieldIdentifier(vmField.getName()), vmField.getOffset() + startOffset, true);
+  }
+
+  public Metadata getValue(Oop obj) {
+    return getValue(obj.getHandle());
+  }
+  public Metadata getValue(VMObject obj) {
+    return getValue(obj.getAddress());
+  }
+  public Metadata getValue(Address addr) {
+    return Metadata.instantiateWrapperFor(addr.getAddressAt(getOffset()));
+  }
+  public void setValue(Oop obj, long value) throws MutationException {
+    // Fix this: set* missing in Address
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/MetadataVisitor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2000, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.oops;
+
+// A MetadataVisitor can be used to inspect all fields within an object.
+// Fields include vm fields, java fields, indexable fields.
+
+public interface MetadataVisitor extends FieldVisitor {
+  // Called before visiting an object
+  public void prologue();
+
+  // Called after visiting an object
+  public void epilogue();
+
+  public void setObj(Metadata obj);
+
+  // Returns the object being visited
+  public Metadata getObj();
+};
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Method.java	Fri Sep 14 21:50:58 2012 -0700
@@ -36,7 +36,7 @@
 
 // A Method represents a Java method
 
-public class Method extends Oop {
+public class Method extends Metadata {
   static {
     VM.registerVMInitializedObserver(new Observer() {
         public void update(Observable o, Object data) {
@@ -46,9 +46,9 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type                  = db.lookupType("methodOopDesc");
-    constMethod                = new OopField(type.getOopField("_constMethod"), 0);
-    methodData                 = new OopField(type.getOopField("_method_data"), 0);
+    Type type                  = db.lookupType("Method");
+    constMethod                = type.getAddressField("_constMethod");
+    methodData                 = type.getAddressField("_method_data");
     methodSize                 = new CIntField(type.getCIntegerField("_method_size"), 0);
     maxStack                   = new CIntField(type.getCIntegerField("_max_stack"), 0);
     maxLocals                  = new CIntField(type.getCIntegerField("_max_locals"), 0);
@@ -74,15 +74,15 @@
     classInitializerName = null;
   }
 
-  Method(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public Method(Address addr) {
+    super(addr);
   }
 
   public boolean isMethod()            { return true; }
 
   // Fields
-  private static OopField  constMethod;
-  private static OopField  methodData;
+  private static AddressField  constMethod;
+  private static AddressField  methodData;
   private static CIntField methodSize;
   private static CIntField maxStack;
   private static CIntField maxLocals;
@@ -122,11 +122,17 @@
   */
 
   // Accessors for declared fields
-  public ConstMethod  getConstMethod()                { return (ConstMethod)  constMethod.getValue(this);       }
+  public ConstMethod  getConstMethod()                {
+    Address addr = constMethod.getValue(getAddress());
+    return (ConstMethod) VMObjectFactory.newObject(ConstMethod.class, addr);
+  }
   public ConstantPool getConstants()                  {
     return getConstMethod().getConstants();
   }
-  public MethodData   getMethodData()                 { return (MethodData) methodData.getValue(this);          }
+  public MethodData   getMethodData()                 {
+    Address addr = methodData.getValue(getAddress());
+    return (MethodData) VMObjectFactory.newObject(MethodData.class, addr);
+  }
   /** WARNING: this is in words, not useful in this system; use getObjectSize() instead */
   public long         getMethodSize()                 { return                methodSize.getValue(this);        }
   public long         getMaxStack()                   { return                maxStack.getValue(this);          }
@@ -153,7 +159,7 @@
 
   // get associated compiled native method, if available, else return null.
   public NMethod getNativeMethod() {
-    Address addr = code.getValue(getHandle());
+    Address addr = code.getValue(getAddress());
     return (NMethod) VMObjectFactory.newObject(NMethod.class, addr);
   }
 
@@ -268,25 +274,21 @@
     return entry;
   }
 
-  public long getObjectSize() {
-    return getMethodSize() * getHeap().getOopSize();
+  public long getSize() {
+    return getMethodSize();
   }
 
   public void printValueOn(PrintStream tty) {
-    tty.print("Method " + getName().asString() + getSignature().asString() + "@" + getHandle());
+    tty.print("Method " + getName().asString() + getSignature().asString() + "@" + getAddress());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(constMethod, true);
+  public void iterateFields(MetadataVisitor visitor) {
       visitor.doCInt(methodSize, true);
       visitor.doCInt(maxStack, true);
       visitor.doCInt(maxLocals, true);
       visitor.doCInt(sizeOfParameters, true);
       visitor.doCInt(accessFlags, true);
     }
-  }
 
   public boolean hasLineNumberTable() {
     return getConstMethod().hasLineNumberTable();
@@ -357,10 +359,10 @@
     return buf.toString().replace('/', '.');
   }
   public int interpreterThrowoutCount() {
-    return (int) interpreterThrowoutCountField.getValue(getHandle());
+    return (int) interpreterThrowoutCountField.getValue(this);
   }
 
   public int interpreterInvocationCount() {
-    return (int) interpreterInvocationCountField.getValue(getHandle());
+    return (int) interpreterInvocationCountField.getValue(this);
   }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/MethodData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -33,7 +33,7 @@
 
 // A MethodData provides interpreter profiling information
 
-public class MethodData extends Oop {
+public class MethodData extends Metadata {
   static int TypeProfileWidth = 2;
   static int BciProfileWidth = 2;
   static int CompileThreshold;
@@ -129,11 +129,11 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type      = db.lookupType("methodDataOopDesc");
+    Type type      = db.lookupType("MethodData");
     baseOffset     = type.getSize();
 
     size           = new CIntField(type.getCIntegerField("_size"), 0);
-    method         = new OopField(type.getOopField("_method"), 0);
+    method         = new MetadataField(type.getAddressField("_method"), 0);
 
     VM.Flag[] flags = VM.getVM().getCommandLineFlags();
     for (int f = 0; f < flags.length; f++) {
@@ -188,25 +188,21 @@
     }
   }
 
-  MethodData(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public MethodData(Address addr) {
+    super(addr);
   }
 
   public boolean isMethodData()        { return true; }
 
   private static long baseOffset;
   private static CIntField size;
-  private static OopField  method;
+  private static MetadataField  method;
   private static CIntField dataSize;
   private static AddressField data;
 
   public static int sizeofMethodDataOopDesc;
   public static int cellSize;
 
-  public long getObjectSize() {
-    return alignObjectSize(size.getValue(this));
-  }
-
   public Method getMethod() {
     return (Method) method.getValue(this);
   }
@@ -216,19 +212,17 @@
     tty.print("MethodData for " + m.getName().asString() + m.getSignature().asString());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(method, true);
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
+    visitor.doMetadata(method, true);
       visitor.doCInt(size, true);
     }
-  }
 
   int dataSize() {
     if (dataSize == null) {
       return 0;
     } else {
-      return (int)dataSize.getValue(this);
+      return (int)dataSize.getValue(getAddress());
     }
   }
 
@@ -298,13 +292,13 @@
   }
 
   public byte[] orig() {
-    // fetch the orig methodDataOopDesc data between header and dataSize
-    return fetchDataAt(this.getHandle(), 0, sizeofMethodDataOopDesc);
+    // fetch the orig MethodData data between header and dataSize
+    return fetchDataAt(getAddress(), 0, sizeofMethodDataOopDesc);
   }
 
   public long[] data() {
     // Read the data as an array of intptr_t elements
-    OopHandle base = getHandle();
+    Address base = getAddress();
     long offset = data.getOffset();
     int elements = dataSize() / cellSize;
     long[] result = new long[elements];
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/MethodDataKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// The MethodDataKlass is the klass of a MethodData oop
-
-public class MethodDataKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("methodDataKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  MethodDataKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("MethodDataKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/MethodKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// The MethodKlass is the klass of a Method
-
-public class MethodKlass extends Klass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("methodKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  MethodKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("MethodKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ObjArrayKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ObjArrayKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,16 +44,16 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type = db.lookupType("objArrayKlass");
-    elementKlass = new OopField(type.getOopField("_element_klass"), Oop.getHeaderSize());
-    bottomKlass  = new OopField(type.getOopField("_bottom_klass"), Oop.getHeaderSize());
+    elementKlass = new MetadataField(type.getAddressField("_element_klass"), 0);
+    bottomKlass  = new MetadataField(type.getAddressField("_bottom_klass"), 0);
   }
 
-  ObjArrayKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public ObjArrayKlass(Address addr) {
+    super(addr);
   }
 
-  private static OopField elementKlass;
-  private static OopField bottomKlass;
+  private static MetadataField elementKlass;
+  private static MetadataField bottomKlass;
 
   public Klass getElementKlass() { return (Klass) elementKlass.getValue(this); }
   public Klass getBottomKlass()  { return (Klass) bottomKlass.getValue(this); }
@@ -71,12 +71,10 @@
     return arrayFlags;
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
-      visitor.doOop(elementKlass, true);
-      visitor.doOop(bottomKlass, true);
-    }
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
+    visitor.doMetadata(elementKlass, true);
+    visitor.doMetadata(bottomKlass, true);
   }
 
   public Klass arrayKlassImpl(boolean orNull, int n) {
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ObjArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-// An ObjArrayKlassKlass is klass for ObjArrayKlass'
-// We only have one
-
-public class ObjArrayKlassKlass extends ArrayKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type = db.lookupType("objArrayKlassKlass");
-    headerSize         = type.getSize() + Oop.getHeaderSize();
-  }
-
-  ObjArrayKlassKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("ObjArrayKlassKlass");
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -48,35 +48,15 @@
     DEBUG = System.getProperty("sun.jvm.hotspot.oops.ObjectHeap.DEBUG") != null;
   }
 
-  private OopHandle              methodKlassHandle;
-  private OopHandle              constMethodKlassHandle;
-  private OopHandle              methodDataKlassHandle;
-  private OopHandle              constantPoolKlassHandle;
-  private OopHandle              constantPoolCacheKlassHandle;
-  private OopHandle              klassKlassHandle;
-  private OopHandle              instanceKlassKlassHandle;
-  private OopHandle              typeArrayKlassKlassHandle;
-  private OopHandle              objArrayKlassKlassHandle;
-  private OopHandle              boolArrayKlassHandle;
-  private OopHandle              byteArrayKlassHandle;
-  private OopHandle              charArrayKlassHandle;
-  private OopHandle              intArrayKlassHandle;
-  private OopHandle              shortArrayKlassHandle;
-  private OopHandle              longArrayKlassHandle;
-  private OopHandle              singleArrayKlassHandle;
-  private OopHandle              doubleArrayKlassHandle;
-  private OopHandle              arrayKlassKlassHandle;
-  private OopHandle              compiledICHolderKlassHandle;
+  private Address              boolArrayKlassHandle;
+  private Address              byteArrayKlassHandle;
+  private Address              charArrayKlassHandle;
+  private Address              intArrayKlassHandle;
+  private Address              shortArrayKlassHandle;
+  private Address              longArrayKlassHandle;
+  private Address              singleArrayKlassHandle;
+  private Address              doubleArrayKlassHandle;
 
-  private MethodKlass            methodKlassObj;
-  private ConstMethodKlass       constMethodKlassObj;
-  private MethodDataKlass        methodDataKlassObj;
-  private ConstantPoolKlass      constantPoolKlassObj;
-  private ConstantPoolCacheKlass constantPoolCacheKlassObj;
-  private KlassKlass             klassKlassObj;
-  private InstanceKlassKlass     instanceKlassKlassObj;
-  private TypeArrayKlassKlass    typeArrayKlassKlassObj;
-  private ObjArrayKlassKlass     objArrayKlassKlassObj;
   private TypeArrayKlass         boolArrayKlassObj;
   private TypeArrayKlass         byteArrayKlassObj;
   private TypeArrayKlass         charArrayKlassObj;
@@ -85,71 +65,34 @@
   private TypeArrayKlass         longArrayKlassObj;
   private TypeArrayKlass         singleArrayKlassObj;
   private TypeArrayKlass         doubleArrayKlassObj;
-  private ArrayKlassKlass        arrayKlassKlassObj;
-  private CompiledICHolderKlass  compiledICHolderKlassObj;
 
   public void initialize(TypeDataBase db) throws WrongTypeException {
     // Lookup the roots in the object hierarchy.
     Type universeType = db.lookupType("Universe");
 
-    methodKlassHandle         = universeType.getOopField("_methodKlassObj").getValue();
-    methodKlassObj            = new MethodKlass(methodKlassHandle, this);
-
-    constMethodKlassHandle    = universeType.getOopField("_constMethodKlassObj").getValue();
-    constMethodKlassObj       = new ConstMethodKlass(constMethodKlassHandle, this);
+    boolArrayKlassHandle      = universeType.getAddressField("_boolArrayKlassObj").getValue();
+    boolArrayKlassObj         = new TypeArrayKlass(boolArrayKlassHandle);
 
-    constantPoolKlassHandle   = universeType.getOopField("_constantPoolKlassObj").getValue();
-    constantPoolKlassObj      = new ConstantPoolKlass(constantPoolKlassHandle, this);
-
-    constantPoolCacheKlassHandle = universeType.getOopField("_constantPoolCacheKlassObj").getValue();
-    constantPoolCacheKlassObj = new ConstantPoolCacheKlass(constantPoolCacheKlassHandle, this);
+    byteArrayKlassHandle      = universeType.getAddressField("_byteArrayKlassObj").getValue();
+    byteArrayKlassObj         = new TypeArrayKlass(byteArrayKlassHandle);
 
-    klassKlassHandle          = universeType.getOopField("_klassKlassObj").getValue();
-    klassKlassObj             = new KlassKlass(klassKlassHandle, this);
-
-    arrayKlassKlassHandle     = universeType.getOopField("_arrayKlassKlassObj").getValue();
-    arrayKlassKlassObj        = new ArrayKlassKlass(arrayKlassKlassHandle, this);
+    charArrayKlassHandle      = universeType.getAddressField("_charArrayKlassObj").getValue();
+    charArrayKlassObj         = new TypeArrayKlass(charArrayKlassHandle);
 
-    instanceKlassKlassHandle  = universeType.getOopField("_instanceKlassKlassObj").getValue();
-    instanceKlassKlassObj     = new InstanceKlassKlass(instanceKlassKlassHandle, this);
-
-    typeArrayKlassKlassHandle = universeType.getOopField("_typeArrayKlassKlassObj").getValue();
-    typeArrayKlassKlassObj    = new TypeArrayKlassKlass(typeArrayKlassKlassHandle, this);
-
-    objArrayKlassKlassHandle  = universeType.getOopField("_objArrayKlassKlassObj").getValue();
-    objArrayKlassKlassObj     = new ObjArrayKlassKlass(objArrayKlassKlassHandle, this);
+    intArrayKlassHandle       = universeType.getAddressField("_intArrayKlassObj").getValue();
+    intArrayKlassObj          = new TypeArrayKlass(intArrayKlassHandle);
 
-    boolArrayKlassHandle      = universeType.getOopField("_boolArrayKlassObj").getValue();
-    boolArrayKlassObj         = new TypeArrayKlass(boolArrayKlassHandle, this);
-
-    byteArrayKlassHandle      = universeType.getOopField("_byteArrayKlassObj").getValue();
-    byteArrayKlassObj         = new TypeArrayKlass(byteArrayKlassHandle, this);
+    shortArrayKlassHandle     = universeType.getAddressField("_shortArrayKlassObj").getValue();
+    shortArrayKlassObj        = new TypeArrayKlass(shortArrayKlassHandle);
 
-    charArrayKlassHandle      = universeType.getOopField("_charArrayKlassObj").getValue();
-    charArrayKlassObj         = new TypeArrayKlass(charArrayKlassHandle, this);
-
-    intArrayKlassHandle       = universeType.getOopField("_intArrayKlassObj").getValue();
-    intArrayKlassObj          = new TypeArrayKlass(intArrayKlassHandle, this);
-
-    shortArrayKlassHandle     = universeType.getOopField("_shortArrayKlassObj").getValue();
-    shortArrayKlassObj        = new TypeArrayKlass(shortArrayKlassHandle, this);
+    longArrayKlassHandle      = universeType.getAddressField("_longArrayKlassObj").getValue();
+    longArrayKlassObj         = new TypeArrayKlass(longArrayKlassHandle);
 
-    longArrayKlassHandle      = universeType.getOopField("_longArrayKlassObj").getValue();
-    longArrayKlassObj         = new TypeArrayKlass(longArrayKlassHandle, this);
-
-    singleArrayKlassHandle    = universeType.getOopField("_singleArrayKlassObj").getValue();
-    singleArrayKlassObj       = new TypeArrayKlass(singleArrayKlassHandle, this);
+    singleArrayKlassHandle    = universeType.getAddressField("_singleArrayKlassObj").getValue();
+    singleArrayKlassObj       = new TypeArrayKlass(singleArrayKlassHandle);
 
-    doubleArrayKlassHandle    = universeType.getOopField("_doubleArrayKlassObj").getValue();
-    doubleArrayKlassObj       = new TypeArrayKlass(doubleArrayKlassHandle, this);
-
-    if (!VM.getVM().isCore()) {
-      methodDataKlassHandle   = universeType.getOopField("_methodDataKlassObj").getValue();
-      methodDataKlassObj      = new MethodDataKlass(methodDataKlassHandle, this);
-
-      compiledICHolderKlassHandle = universeType.getOopField("_compiledICHolderKlassObj").getValue();
-      compiledICHolderKlassObj= new CompiledICHolderKlass(compiledICHolderKlassHandle ,this);
-    }
+    doubleArrayKlassHandle    = universeType.getAddressField("_doubleArrayKlassObj").getValue();
+    doubleArrayKlassObj       = new TypeArrayKlass(doubleArrayKlassHandle);
   }
 
   public ObjectHeap(TypeDataBase db) throws WrongTypeException {
@@ -195,16 +138,6 @@
   public long getDoubleSize()  { return doubleSize;  }
 
   // Accessors for well-known system classes (from Universe)
-  public MethodKlass            getMethodKlassObj()            { return methodKlassObj; }
-  public ConstMethodKlass       getConstMethodKlassObj()       { return constMethodKlassObj; }
-  public MethodDataKlass        getMethodDataKlassObj()        { return methodDataKlassObj; }
-  public ConstantPoolKlass      getConstantPoolKlassObj()      { return constantPoolKlassObj; }
-  public ConstantPoolCacheKlass getConstantPoolCacheKlassObj() { return constantPoolCacheKlassObj; }
-  public KlassKlass             getKlassKlassObj()             { return klassKlassObj; }
-  public ArrayKlassKlass        getArrayKlassKlassObj()        { return arrayKlassKlassObj; }
-  public InstanceKlassKlass     getInstanceKlassKlassObj()     { return instanceKlassKlassObj; }
-  public ObjArrayKlassKlass     getObjArrayKlassKlassObj()     { return objArrayKlassKlassObj; }
-  public TypeArrayKlassKlass    getTypeArrayKlassKlassObj()    { return typeArrayKlassKlassObj; }
   public TypeArrayKlass         getBoolArrayKlassObj()         { return boolArrayKlassObj; }
   public TypeArrayKlass         getByteArrayKlassObj()         { return byteArrayKlassObj; }
   public TypeArrayKlass         getCharArrayKlassObj()         { return charArrayKlassObj; }
@@ -213,12 +146,6 @@
   public TypeArrayKlass         getLongArrayKlassObj()         { return longArrayKlassObj; }
   public TypeArrayKlass         getSingleArrayKlassObj()       { return singleArrayKlassObj; }
   public TypeArrayKlass         getDoubleArrayKlassObj()       { return doubleArrayKlassObj; }
-  public CompiledICHolderKlass  getCompiledICHolderKlassObj()  {
-    if (Assert.ASSERTS_ENABLED) {
-      Assert.that(!VM.getVM().isCore(), "must not be called for core build");
-    }
-    return compiledICHolderKlassObj;
-  }
 
   /** Takes a BasicType and returns the corresponding primitive array
       klass */
@@ -301,22 +228,13 @@
     visitor.epilogue();
   }
 
-  // Iterates through only the perm generation for the purpose of
-  // finding static fields for liveness analysis
-  public void iteratePerm(HeapVisitor visitor) {
-    CollectedHeap heap = VM.getVM().getUniverse().heap();
-    List liveRegions = new ArrayList();
-    addPermGenLiveRegions(liveRegions, heap);
-    sortLiveRegions(liveRegions);
-    iterateLiveRegions(liveRegions, visitor, null);
+  public boolean isValidMethod(Address handle) {
+    try {
+      Method m = (Method)Metadata.instantiateWrapperFor(handle);
+      return true;
+    } catch (Exception e) {
+      return false;
   }
-
-  public boolean isValidMethod(OopHandle handle) {
-    OopHandle klass = Oop.getKlassForOopHandle(handle);
-    if (klass != null && klass.equals(methodKlassHandle)) {
-      return true;
-    }
-    return false;
   }
 
   // Creates an instance from the Oop hierarchy based based on the handle
@@ -329,60 +247,12 @@
     // Handle the null reference
     if (handle == null) return null;
 
-    // First check if handle is one of the root objects
-    if (handle.equals(methodKlassHandle))              return getMethodKlassObj();
-    if (handle.equals(constMethodKlassHandle))         return getConstMethodKlassObj();
-    if (handle.equals(constantPoolKlassHandle))        return getConstantPoolKlassObj();
-    if (handle.equals(constantPoolCacheKlassHandle))   return getConstantPoolCacheKlassObj();
-    if (handle.equals(instanceKlassKlassHandle))       return getInstanceKlassKlassObj();
-    if (handle.equals(objArrayKlassKlassHandle))       return getObjArrayKlassKlassObj();
-    if (handle.equals(klassKlassHandle))               return getKlassKlassObj();
-    if (handle.equals(arrayKlassKlassHandle))          return getArrayKlassKlassObj();
-    if (handle.equals(typeArrayKlassKlassHandle))      return getTypeArrayKlassKlassObj();
-    if (handle.equals(boolArrayKlassHandle))           return getBoolArrayKlassObj();
-    if (handle.equals(byteArrayKlassHandle))           return getByteArrayKlassObj();
-    if (handle.equals(charArrayKlassHandle))           return getCharArrayKlassObj();
-    if (handle.equals(intArrayKlassHandle))            return getIntArrayKlassObj();
-    if (handle.equals(shortArrayKlassHandle))          return getShortArrayKlassObj();
-    if (handle.equals(longArrayKlassHandle))           return getLongArrayKlassObj();
-    if (handle.equals(singleArrayKlassHandle))         return getSingleArrayKlassObj();
-    if (handle.equals(doubleArrayKlassHandle))         return getDoubleArrayKlassObj();
-    if (!VM.getVM().isCore()) {
-      if (handle.equals(compiledICHolderKlassHandle))  return getCompiledICHolderKlassObj();
-      if (handle.equals(methodDataKlassHandle))        return getMethodDataKlassObj();
-    }
-
     // Then check if obj.klass() is one of the root objects
-    OopHandle klass = Oop.getKlassForOopHandle(handle);
+    Klass klass = Oop.getKlassForOopHandle(handle);
     if (klass != null) {
-      if (klass.equals(methodKlassHandle))              return new Method(handle, this);
-      if (klass.equals(constMethodKlassHandle))         return new ConstMethod(handle, this);
-      if (klass.equals(constantPoolKlassHandle))        return new ConstantPool(handle, this);
-      if (klass.equals(constantPoolCacheKlassHandle))   return new ConstantPoolCache(handle, this);
-      if (!VM.getVM().isCore()) {
-        if (klass.equals(compiledICHolderKlassHandle))  return new CompiledICHolder(handle, this);
-        if (klass.equals(methodDataKlassHandle))        return new MethodData(handle, this);
-      }
-      if (klass.equals(instanceKlassKlassHandle)) {
-          InstanceKlass ik = new InstanceKlass(handle, this);
-          if (ik.getName().asString().equals("java/lang/Class")) {
-              // We would normally do this using the vtable style
-              // lookup but since it's not used for these currently
-              // it's simpler to just check for the name.
-              return new InstanceMirrorKlass(handle, this);
-          }
-          return ik;
-      }
-      if (klass.equals(objArrayKlassKlassHandle))       return new ObjArrayKlass(handle, this);
-      if (klass.equals(typeArrayKlassKlassHandle))      return new TypeArrayKlass(handle, this);
-
-      // Lastly check if obj.klass().klass() is on of the root objects
-      OopHandle klassKlass = Oop.getKlassForOopHandle(klass);
-      if (klassKlass != null) {
-        if (klassKlass.equals(instanceKlassKlassHandle))    return new Instance(handle, this);
-        if (klassKlass.equals(objArrayKlassKlassHandle))    return new ObjArray(handle, this);
-        if (klassKlass.equals(typeArrayKlassKlassHandle))   return new TypeArray(handle, this);
-      }
+      if (klass instanceof TypeArrayKlass) return new TypeArray(handle, this);
+      if (klass instanceof ObjArrayKlass) return new ObjArray(handle, this);
+      if (klass instanceof InstanceKlass) return new Instance(handle, this);
     }
 
     if (DEBUG) {
@@ -434,21 +304,15 @@
     visitor.prologue(totalSize);
 
     CompactibleFreeListSpace cmsSpaceOld = null;
-    CompactibleFreeListSpace cmsSpacePerm = null;
     CollectedHeap heap = VM.getVM().getUniverse().heap();
 
     if (heap instanceof GenCollectedHeap) {
       GenCollectedHeap genHeap = (GenCollectedHeap) heap;
       Generation genOld = genHeap.getGen(1);
-      Generation genPerm = genHeap.permGen();
       if (genOld instanceof ConcurrentMarkSweepGeneration) {
           ConcurrentMarkSweepGeneration concGen = (ConcurrentMarkSweepGeneration)genOld;
           cmsSpaceOld = concGen.cmsSpace();
       }
-      if (genPerm instanceof ConcurrentMarkSweepGeneration) {
-          ConcurrentMarkSweepGeneration concGen = (ConcurrentMarkSweepGeneration)genPerm;
-          cmsSpacePerm = concGen.cmsSpace();
-      }
     }
 
     for (int i = 0; i < liveRegions.size(); i += 2) {
@@ -476,8 +340,6 @@
 
              if ( (cmsSpaceOld != null) && cmsSpaceOld.contains(handle) ){
                  size = cmsSpaceOld.collector().blockSizeUsingPrintezisBits(handle);
-             } else if ((cmsSpacePerm != null) && cmsSpacePerm.contains(handle) ){
-                 size = cmsSpacePerm.collector().blockSizeUsingPrintezisBits(handle);
              }
 
              if (size <= 0) {
@@ -494,8 +356,7 @@
                           break;
                   }
           }
-          if ( (cmsSpaceOld != null) && cmsSpaceOld.contains(handle) ||
-               (cmsSpacePerm != null) && cmsSpacePerm.contains(handle) ) {
+          if ( (cmsSpaceOld != null) && cmsSpaceOld.contains(handle)) {
               handle = handle.addOffsetToAsOopHandle(CompactibleFreeListSpace.adjustObjectSizeInBytes(obj.getObjectSize()) );
           } else {
               handle = handle.addOffsetToAsOopHandle(obj.getObjectSize());
@@ -513,32 +374,6 @@
     visitor.epilogue();
   }
 
-  private void addPermGenLiveRegions(List output, CollectedHeap heap) {
-    LiveRegionsCollector lrc = new LiveRegionsCollector(output);
-    if (heap instanceof SharedHeap) {
-       if (Assert.ASSERTS_ENABLED) {
-          Assert.that(heap instanceof GenCollectedHeap ||
-                      heap instanceof G1CollectedHeap,
-                      "Expecting GenCollectedHeap or G1CollectedHeap, " +
-                      "but got " + heap.getClass().getName());
-       }
-       // Handles both GenCollectedHeap and G1CollectedHeap
-       SharedHeap sharedHeap = (SharedHeap) heap;
-       Generation gen = sharedHeap.permGen();
-       gen.spaceIterate(lrc, true);
-    } else if (heap instanceof ParallelScavengeHeap) {
-       ParallelScavengeHeap psh = (ParallelScavengeHeap) heap;
-       PSPermGen permGen = psh.permGen();
-       addLiveRegions(permGen.objectSpace().getLiveRegions(), output);
-    } else {
-       if (Assert.ASSERTS_ENABLED) {
-          Assert.that(false,
-                      "Expecting SharedHeap or ParallelScavengeHeap, " +
-                      "but got " + heap.getClass().getName());
-       }
-    }
-  }
-
   private void addLiveRegions(List input, List output) {
      for (Iterator itr = input.iterator(); itr.hasNext();) {
         MemRegion reg = (MemRegion) itr.next();
@@ -608,9 +443,6 @@
        }
     }
 
-    // handle perm generation
-    addPermGenLiveRegions(liveRegions, heap);
-
     // If UseTLAB is enabled, snip out regions associated with TLABs'
     // dead regions. Note that TLABs can be present in any generation.
 
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -84,10 +84,6 @@
           return tak.getElementTypeName() + "[]";
        } else if (k instanceof ObjArrayKlass) {
           ObjArrayKlass oak = (ObjArrayKlass) ak;
-          // See whether it's a "system objArray"
-          if (oak.equals(VM.getVM().getUniverse().systemObjArrayKlassObj())) {
-            return "* System ObjArray";
-          }
           Klass bottom = oak.getBottomKlass();
           int dim = (int) oak.getDimension();
           StringBuffer buf = new StringBuffer();
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -30,7 +30,6 @@
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.*;
-import sun.jvm.hotspot.memory.CompactingPermGenGen;
 
 // Oop represents the superclass for all types of
 // objects in the HotSpot object heap.
@@ -47,8 +46,11 @@
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type type  = db.lookupType("oopDesc");
     mark       = new CIntField(type.getCIntegerField("_mark"), 0);
-    klass      = new OopField(type.getOopField("_metadata._klass"), 0);
-    compressedKlass  = new NarrowOopField(type.getOopField("_metadata._compressed_klass"), 0);
+    klass      = new MetadataField(type.getAddressField("_metadata._klass"), 0);
+    if (VM.getVM().isCompressedHeadersEnabled()) {
+      // compressedKlass  = new CIntField(type.getCIntegerField("_metadata._compressed_klass"), 0);
+      throw new InternalError("unimplemented");
+    }
     headerSize = type.getSize();
   }
 
@@ -71,28 +73,16 @@
   public  static long getHeaderSize() { return headerSize; } // Header size in bytes.
 
   private static CIntField mark;
-  private static OopField  klass;
-  private static NarrowOopField compressedKlass;
-
-  public boolean isShared() {
-    return CompactingPermGenGen.isShared(handle);
-  }
-
-  public boolean isSharedReadOnly() {
-    return CompactingPermGenGen.isSharedReadOnly(handle);
-  }
-
-  public boolean isSharedReadWrite() {
-    return CompactingPermGenGen.isSharedReadWrite(handle);
-  }
+  private static MetadataField  klass;
+  private static CIntField compressedKlass;
 
   // Accessors for declared fields
   public Mark  getMark()   { return new Mark(getHandle()); }
   public Klass getKlass() {
-    if (VM.getVM().isCompressedOopsEnabled()) {
-      return (Klass) compressedKlass.getValue(this);
+    if (VM.getVM().isCompressedHeadersEnabled()) {
+      throw new InternalError("unimplemented");
     } else {
-      return (Klass) klass.getValue(this);
+      return (Klass)klass.getValue(getHandle());
     }
   }
 
@@ -113,14 +103,7 @@
   public boolean isArray()             { return false; }
   public boolean isObjArray()          { return false; }
   public boolean isTypeArray()         { return false; }
-  public boolean isSymbol()            { return false; }
-  public boolean isKlass()             { return false; }
   public boolean isThread()            { return false; }
-  public boolean isMethod()            { return false; }
-  public boolean isMethodData()        { return false; }
-  public boolean isConstantPool()      { return false; }
-  public boolean isConstantPoolCache() { return false; }
-  public boolean isCompiledICHolder()  { return false; }
 
   // Align the object size.
   public static long alignObjectSize(long size) {
@@ -167,10 +150,10 @@
   void iterateFields(OopVisitor visitor, boolean doVMFields) {
     if (doVMFields) {
       visitor.doCInt(mark, true);
-      if (VM.getVM().isCompressedOopsEnabled()) {
-        visitor.doOop(compressedKlass, true);
+      if (VM.getVM().isCompressedHeadersEnabled()) {
+        throw new InternalError("unimplemented");
       } else {
-        visitor.doOop(klass, true);
+        visitor.doMetadata(klass, true);
       }
     }
   }
@@ -223,14 +206,14 @@
   public boolean verify() { return true;}
 
   // Package-private routine to speed up ObjectHeap.newOop
-  static OopHandle getKlassForOopHandle(OopHandle handle) {
+  static Klass getKlassForOopHandle(OopHandle handle) {
     if (handle == null) {
       return null;
     }
-    if (VM.getVM().isCompressedOopsEnabled()) {
-      return handle.getCompOopHandleAt(compressedKlass.getOffset());
+    if (VM.getVM().isCompressedHeadersEnabled()) {
+      throw new InternalError("Unimplemented");
     } else {
-      return handle.getOopHandleAt(klass.getOffset());
+      return (Klass)Metadata.instantiateWrapperFor(handle.getAddressAt(klass.getOffset()));
     }
   }
 };
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/OopField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/OopField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,8 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for an oop field simply provides access to the value.
 public class OopField extends Field {
@@ -55,6 +57,15 @@
     return obj.getHandle().getOopHandleAt(getOffset());
   }
 
+  public Oop getValue(VMObject obj) {
+    return VM.getVM().getObjectHeap().newOop(getValueAsOopHandle(obj));
+  }
+
+  /** Debugging support */
+  public OopHandle getValueAsOopHandle(VMObject obj) {
+    return obj.getAddress().getOopHandleAt(getOffset());
+  }
+
   public void setValue(Oop obj) throws MutationException {
     // Fix this: setOopAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -52,6 +52,12 @@
     field.printOn(tty);
   }
 
+  public void doMetadata(MetadataField field, boolean isVMField) {
+    printField(field);
+    field.getValue(getObj()).printValueOn(tty);
+    tty.println();
+  }
+
   public void doOop(OopField field, boolean isVMField) {
     printField(field);
     Oop.printOopValueOn(field.getValue(getObj()), tty);
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,7 +27,7 @@
 // An OopVisitor can be used to inspect all fields within an object.
 // Fields include vm fields, java fields, indexable fields.
 
-public interface OopVisitor {
+public interface OopVisitor extends FieldVisitor {
   // Called before visiting an object
   public void prologue();
 
@@ -38,17 +38,4 @@
 
   // Returns the object being visited
   public Oop getObj();
-
-  // Callback methods for each field type in an object
-  public void doOop(OopField field, boolean isVMField);
-  public void doOop(NarrowOopField field, boolean isVMField);
-  public void doByte(ByteField field, boolean isVMField);
-  public void doChar(CharField field, boolean isVMField);
-  public void doBoolean(BooleanField field, boolean isVMField);
-  public void doShort(ShortField field, boolean isVMField);
-  public void doInt(IntField field, boolean isVMField);
-  public void doLong(LongField field, boolean isVMField);
-  public void doFloat(FloatField field, boolean isVMField);
-  public void doDouble(DoubleField field, boolean isVMField);
-  public void doCInt(CIntField field, boolean isVMField);
 };
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ProfileData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ProfileData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -61,10 +61,6 @@
   int uintAt(int index) {
     return (int)intptrAt(index);
   }
-  Oop oopAt(int index) {
-    return data().oopAt(index);
-  }
-
   public Address addressAt(int index) {
     return data().addressAt(index);
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ReceiverTypeData.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ReceiverTypeData.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -75,8 +75,8 @@
   // would fail.  The 'normal' version should be used whenever possible.
   Klass receiverUnchecked(int row) {
     //assert(row < rowLimit(), "oob");
-    Oop recv = oopAt(receiverCellIndex(row));
-    return (Klass)recv;
+    Address recv = addressAt(receiverCellIndex(row));
+    return (Klass)Metadata.instantiateWrapperFor(recv);
   }
 
   public Klass receiver(int row) {
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/ShortField.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/ShortField.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,6 +25,7 @@
 package sun.jvm.hotspot.oops;
 
 import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.VMObject;
 
 // The class for a short field simply provides access to the value.
 public class ShortField extends Field {
@@ -41,6 +42,7 @@
   }
 
   public short getValue(Oop obj) { return obj.getHandle().getJShortAt(getOffset()); }
+  public short getValue(VMObject obj) { return obj.getAddress().getJShortAt(getOffset()); }
   public void setValue(Oop obj, short value) throws MutationException {
     // Fix this: setJFloatAt is missing in Address
   }
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/TypeArray.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/TypeArray.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -43,7 +43,7 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type = db.lookupType("typeArrayOopDesc");
+    Type type = db.lookupType("typeArrayOop");
   }
 
   TypeArray(OopHandle handle, ObjectHeap heap) {
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/TypeArrayKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/TypeArrayKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,11 +44,11 @@
 
   private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
     Type t             = db.lookupType("typeArrayKlass");
-    maxLength          = new CIntField(t.getCIntegerField("_max_length"), Oop.getHeaderSize());
+    maxLength          = new CIntField(t.getCIntegerField("_max_length"), 0);
   }
 
-  TypeArrayKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
+  public TypeArrayKlass(Address addr) {
+    super(addr);
   }
 
   private static CIntField  maxLength;
@@ -96,12 +96,10 @@
     tty.print("TypeArrayKlass for " + getTypeName());
   }
 
-  public void iterateFields(OopVisitor visitor, boolean doVMFields) {
-    super.iterateFields(visitor, doVMFields);
-    if (doVMFields) {
+  public void iterateFields(MetadataVisitor visitor) {
+    super.iterateFields(visitor);
       visitor.doCInt(maxLength, true);
     }
-  }
 
   public Klass arrayKlassImpl(boolean orNull, int n) {
     int dimension = (int) getDimension();
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/TypeArrayKlassKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2000, 2001, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.oops;
-
-import java.io.*;
-import java.util.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.runtime.*;
-import sun.jvm.hotspot.types.*;
-
-public class TypeArrayKlassKlass extends ArrayKlassKlass {
-  static {
-    VM.registerVMInitializedObserver(new Observer() {
-        public void update(Observable o, Object data) {
-          initialize(VM.getVM().getTypeDataBase());
-        }
-      });
-  }
-
-  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
-    Type type  = db.lookupType("typeArrayKlassKlass");
-    headerSize = type.getSize() + Oop.getHeaderSize();
-  }
-
-  public TypeArrayKlassKlass(OopHandle handle, ObjectHeap heap) {
-    super(handle, heap);
-  }
-
-  private static long headerSize;
-
-  public long getObjectSize() { return alignObjectSize(headerSize); }
-
-  public void printValueOn(PrintStream tty) {
-    tty.print("TypeArrayKlassKlass");
-  }
-};
--- a/agent/src/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/oops/java_lang_Class.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -29,6 +29,7 @@
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.memory.*;
 import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.types.AddressField;
 import sun.jvm.hotspot.types.Type;
 import sun.jvm.hotspot.types.TypeDataBase;
 import sun.jvm.hotspot.utilities.*;
@@ -40,7 +41,7 @@
 public class java_lang_Class {
 
   // java.lang.Class fields
-  static OopField klassField;
+  static int klassOffset;
   static IntField oopSizeField;
 
   static {
@@ -55,19 +56,18 @@
     // klass and oop_size are HotSpot magic fields and hence we can't
     // find them from InstanceKlass for java.lang.Class.
     Type jlc = db.lookupType("java_lang_Class");
-    int klassOffset = (int) jlc.getCIntegerField("_klass_offset").getValue();
-    if (VM.getVM().isCompressedOopsEnabled()) {
-      klassField = new NarrowOopField(new NamedFieldIdentifier("klass"), klassOffset, true);
-    } else {
-      klassField = new OopField(new NamedFieldIdentifier("klass"), klassOffset, true);
-    }
+    klassOffset = (int) jlc.getCIntegerField("_klass_offset").getValue();
     int oopSizeOffset = (int) jlc.getCIntegerField("_oop_size_offset").getValue();
     oopSizeField = new IntField(new NamedFieldIdentifier("oop_size"), oopSizeOffset, true);
   }
 
-  /** get klassOop field at offset hc_klass_offset from a java.lang.Class object */
+  /** get Klass* field at offset hc_klass_offset from a java.lang.Class object */
   public static Klass asKlass(Oop aClass) {
-    return (Klass) java_lang_Class.klassField.getValue(aClass);
+    if (VM.getVM().isCompressedHeadersEnabled()) {
+      throw new InternalError("unimplemented");
+    } else {
+      return (Klass)Metadata.instantiateWrapperFor(aClass.getHandle().getAddressAt(klassOffset));
+    }
   }
 
   /** get oop_size field at offset oop_size_offset from a java.lang.Class object */
--- a/agent/src/share/classes/sun/jvm/hotspot/opto/CallJavaNode.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/opto/CallJavaNode.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -54,7 +54,7 @@
   }
 
   public ciMethod method() {
-    return (ciMethod) ciObjectFactory.get(methodField.getValue(getAddress()));
+    return (ciMethod) ciObjectFactory.getMetadata(methodField.getValue(getAddress()));
   }
 
   public void dumpSpec(PrintStream out) {
--- a/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/opto/Compile.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -74,7 +74,7 @@
   }
 
   public ciMethod method() {
-    return (ciMethod) ciObjectFactory.get(methodField.getValue(getAddress()));
+    return (ciMethod) ciObjectFactory.getMetadata(methodField.getValue(getAddress()));
   }
 
   public PhaseCFG cfg() {
--- a/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/opto/InlineTree.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -69,7 +69,7 @@
   }
 
   public ciMethod method() {
-    return (ciMethod) ciObjectFactory.get(methodField.getValue(getAddress()));
+    return (ciMethod) ciObjectFactory.getMetadata(methodField.getValue(getAddress()));
   }
 
   public JVMState callerJvms() {
--- a/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/opto/JVMState.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -81,7 +81,7 @@
   }
 
   public ciMethod method() {
-    return (ciMethod) ciObjectFactory.get(methodField.getValue(getAddress()));
+    return (ciMethod) ciObjectFactory.getMetadata(methodField.getValue(getAddress()));
   }
 
   public int bci() {
--- a/agent/src/share/classes/sun/jvm/hotspot/opto/MachCallJavaNode.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/opto/MachCallJavaNode.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -52,7 +52,7 @@
   private static CIntField bciField;
 
   public ciMethod method() {
-    return (ciMethod) ciObjectFactory.get(methodField.getValue(getAddress()));
+    return (ciMethod) ciObjectFactory.getMetadata(methodField.getValue(getAddress()));
   }
 
   public MachCallJavaNode(Address addr) {
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/ClassConstants.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -61,20 +61,13 @@
     // For bad value initialization
     public static final int JVM_CONSTANT_Invalid            = 0;
 
-    // Temporary tag until actual use
-    public static final int JVM_CONSTANT_UnresolvedClass    = 100;
-
-    // Temporary tag while constructing constant pool
-    public static final int JVM_CONSTANT_ClassIndex         = 101;
-
-    // Temporary tag until actual use
-    public static final int JVM_CONSTANT_UnresolvedString   = 102;
-
-    // Temporary tag while constructing constant pool
-    public static final int JVM_CONSTANT_StringIndex        = 103;
-
-    // Temporary tag while constructing constant pool
-    public static final int JVM_CONSTANT_UnresolvedClassInError = 104;
+    public static final int JVM_CONSTANT_UnresolvedClass          = 100;  // Temporary tag until actual use
+    public static final int JVM_CONSTANT_ClassIndex               = 101;  // Temporary tag while constructing constant pool
+    public static final int JVM_CONSTANT_StringIndex              = 102;  // Temporary tag while constructing constant pool
+    public static final int JVM_CONSTANT_UnresolvedClassInError   = 103;  // Error tag due to resolution error
+    public static final int JVM_CONSTANT_MethodHandleInError      = 104;  // Error tag due to resolution error
+    public static final int JVM_CONSTANT_MethodTypeInError        = 105;  // Error tag due to resolution error
+    public static final int JVM_CONSTANT_Object                   = 106;  // Required for BoundMethodHandle arguments.
 
     // 1.5 major/minor version numbers from JVM spec. 3rd edition
     public static final short MAJOR_VERSION = 49;
@@ -109,7 +102,7 @@
     // flags actually put in .class file
     public static final long JVM_ACC_WRITTEN_FLAGS = 0x00007FFF;
 
-    // methodOop flags
+    // Method* flags
     // monitorenter/monitorexit bytecodes match
     public static final long JVM_ACC_MONITOR_MATCH = 0x10000000;
     // Method contains monitorenter/monitorexit bytecodes
@@ -130,7 +123,7 @@
     // RedefineClasses() has made method obsolete
     public static final long JVM_ACC_IS_OBSOLETE            = 0x00010000;
 
-    // klassOop flags
+    // Klass* flags
     // True if this class has miranda methods in it's vtable
     public static final long JVM_ACC_HAS_MIRANDA_METHODS      = 0x10000000;
     // True if klass has a vanilla default constructor
@@ -140,14 +133,14 @@
     // True if klass supports the Clonable interface
     public static final long JVM_ACC_IS_CLONEABLE             = 0x80000000;
 
-    // klassOop and methodOop flags
+    // Klass* and Method* flags
     public static final long JVM_ACC_HAS_LOCAL_VARIABLE_TABLE = 0x00200000;
     // flags promoted from methods to the holding klass
     public static final long JVM_ACC_PROMOTED_FLAGS           = 0x00200000;
 
     // field flags
     // Note: these flags must be defined in the low order 16 bits because
-    // instanceKlass only stores a ushort worth of information from the
+    // InstanceKlass only stores a ushort worth of information from the
     // AccessFlags value.
     // field access is watched by JVMTI
     public static final long JVM_ACC_FIELD_ACCESS_WATCHED         = 0x00002000;
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -72,8 +72,8 @@
       });
   }
 
-  /** Size of constMethodOopDesc for computing BCI from BCP (FIXME: hack) */
-  private static long    constMethodOopDescSize;
+  /** Size of ConstMethod for computing BCI from BCP (FIXME: hack) */
+  private static long    ConstMethodSize;
 
   private static int pcReturnOffset;
 
@@ -82,10 +82,10 @@
   }
 
   private static synchronized void initialize(TypeDataBase db) {
-    Type constMethodOopType = db.lookupType("constMethodOopDesc");
+    Type ConstMethodType = db.lookupType("ConstMethod");
     // FIXME: not sure whether alignment here is correct or how to
     // force it (round up to address size?)
-    constMethodOopDescSize = constMethodOopType.getSize();
+    ConstMethodSize = ConstMethodType.getSize();
 
     pcReturnOffset = db.lookupIntConstant("frame::pc_return_offset").intValue();
   }
@@ -97,7 +97,7 @@
     if (bcp == null) return 0;
     long bci = bcp.minus(null);
     if (bci >= 0 && bci < cm.getCodeSize()) return (int) bci;
-    return (int) (bcp.minus(cm.getHandle()) - constMethodOopDescSize);
+    return (int) (bcp.minus(cm.getAddress()) - ConstMethodSize);
   }
 
   protected int bcpToBci(Address bcp, Method m) {
@@ -285,7 +285,7 @@
   // NOTE that the accessor "addressOfInterpreterFrameBCX" has
   // necessarily been eliminated. The byte code pointer is inherently
   // an interior pointer to a Method (the bytecodes follow the
-  // methodOopDesc data structure) and therefore acquisition of it in
+  // Method data structure) and therefore acquisition of it in
   // this system can not be allowed. All accesses to interpreter frame
   // byte codes are via the byte code index (BCI).
 
@@ -374,7 +374,7 @@
 
   /** Current method */
   public Method            getInterpreterFrameMethod() {
-    return (Method) VM.getVM().getObjectHeap().newOop(addressOfInterpreterFrameMethod().getOopHandleAt(0));
+    return (Method)Metadata.instantiateWrapperFor(addressOfInterpreterFrameMethod().getAddressAt(0));
   }
 
   /** Current method */
@@ -385,7 +385,7 @@
   public abstract Address  addressOfInterpreterFrameCPCache();
   /** Constant pool cache */
   public ConstantPoolCache getInterpreterFrameCPCache() {
-    return (ConstantPoolCache) VM.getVM().getObjectHeap().newOop(addressOfInterpreterFrameCPCache().getOopHandleAt(0));
+    return (ConstantPoolCache) Metadata.instantiateWrapperFor(addressOfInterpreterFrameCPCache().getAddressAt(0));
   }
 
   //--------------------------------------------------------------------------------
@@ -583,8 +583,9 @@
     //    }
 
     // process fixed part
-    oopVisitor.visitAddress(addressOfInterpreterFrameMethod());
-    oopVisitor.visitAddress(addressOfInterpreterFrameCPCache());
+    // FIXME: these are no longer oops, so should anything be visitied?
+    // oopVisitor.visitAddress(addressOfInterpreterFrameMethod());
+    // oopVisitor.visitAddress(addressOfInterpreterFrameCPCache());
 
     // FIXME: expose interpreterFrameMirrorOffset
     //    if (m.isNative() && m.isStatic()) {
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/JNIid.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/JNIid.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -31,11 +31,11 @@
 import sun.jvm.hotspot.types.*;
 
 public class JNIid extends VMObject {
-  private static sun.jvm.hotspot.types.OopField holder;
+  private static MetadataField holder;
   private static AddressField next;
   private static CIntegerField offset;
-  private static sun.jvm.hotspot.types.OopField resolvedMethod;
-  private static sun.jvm.hotspot.types.OopField resolvedReceiver;
+  private static MetadataField resolvedMethod;
+  private static MetadataField resolvedReceiver;
 
   private ObjectHeap heap;
 
@@ -77,11 +77,11 @@
     return new JNIid(nextAddr, heap);
   }
 
-  public Klass     holder()           { return (Klass) heap.newOop(holder.getValue(addr)); }
+  public Klass     holder()           { return (Klass) holder.getValue(addr); }
   public int       offset()           { return (int) offset.getValue(addr); }
   public Method    method() {
-    return (Method) ((InstanceKlass) holder()).getMethods().getObjAt(offset());
+    return ((InstanceKlass) holder()).getMethods().at(offset());
   }
-  public Method    resolvedMethod()   { return (Method) heap.newOop(resolvedMethod.getValue(addr)); }
-  public Klass     resolvedReceiver() { return (Klass) heap.newOop(resolvedReceiver.getValue(addr)); }
+  public Method    resolvedMethod()   { return (Method)resolvedMethod.getValue(addr); }
+  public Klass     resolvedReceiver() { return (Klass) resolvedReceiver.getValue(addr); }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -97,6 +97,7 @@
   /** alignment constants */
   private boolean      isLP64;
   private int          bytesPerLong;
+  private int          bytesPerWord;
   private int          objectAlignmentInBytes;
   private int          minObjAlignmentInBytes;
   private int          logMinObjAlignmentInBytes;
@@ -128,6 +129,7 @@
   private static CIntegerType boolType;
   private Boolean sharingEnabled;
   private Boolean compressedOopsEnabled;
+  private Boolean compressedHeadersEnabled;
 
   // command line flags supplied to VM - see struct Flag in globals.hpp
   public static final class Flag {
@@ -303,7 +305,7 @@
     // We infer the presence of C1 or C2 from a couple of fields we
     // already have present in the type database
     {
-      Type type = db.lookupType("methodOopDesc");
+      Type type = db.lookupType("Method");
       if (type.getField("_from_compiled_entry", false, false) == null) {
         // Neither C1 nor C2 is present
         usingClientCompiler = false;
@@ -325,6 +327,7 @@
       isLP64 = debugger.getMachineDescription().isLP64();
     }
     bytesPerLong = db.lookupIntConstant("BytesPerLong").intValue();
+    bytesPerWord = db.lookupIntConstant("BytesPerWord").intValue();
     heapWordSize = db.lookupIntConstant("HeapWordSize").intValue();
     oopSize  = db.lookupIntConstant("oopSize").intValue();
 
@@ -509,6 +512,10 @@
     return bytesPerLong;
   }
 
+  public int getBytesPerWord() {
+    return bytesPerWord;
+  }
+
   /** Get minimum object alignment in bytes. */
   public int getMinObjAlignmentInBytes() {
     return minObjAlignmentInBytes;
@@ -772,6 +779,15 @@
     return compressedOopsEnabled.booleanValue();
   }
 
+  public boolean isCompressedHeadersEnabled() {
+    if (compressedHeadersEnabled == null) {
+        Flag flag = getCommandLineFlag("UseCompressedHeaders");
+        compressedHeadersEnabled = (flag == null) ? Boolean.FALSE:
+             (flag.getBool()? Boolean.TRUE: Boolean.FALSE);
+    }
+    return compressedHeadersEnabled.booleanValue();
+  }
+
   public int getObjectAlignmentInBytes() {
     if (objectAlignmentInBytes == 0) {
         Flag flag = getCommandLineFlag("ObjectAlignmentInBytes");
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/VMObjectFactory.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -57,6 +57,12 @@
       });
       return c.newInstance(new Object[] { addr });
     }
+    catch (java.lang.reflect.InvocationTargetException ite) {
+        if (ite.getTargetException() instanceof RuntimeException) {
+            throw (RuntimeException)ite.getTargetException();
+        }
+        throw new ConstructionException(ite);
+    }
     catch (Exception e) {
       throw new ConstructionException(e);
     }
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualBaseConstructor.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/VirtualBaseConstructor.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -47,6 +47,7 @@
     map     = new HashMap();
     this.baseType = baseType;
     this.unknownTypeHandler = unknownTypeHandler;
+    if (packageName != null) {
     // Try to find mirror types for each of the types.  If there isn't
     // a direct mirror then try to find an instantiable superclass and
     // treat it as that.
@@ -73,22 +74,36 @@
       }
     }
   }
+  }
+
+  /** Adds a mapping from the given C++ type name to the given Java
+      class. The latter must be a subclass of
+      sun.jvm.hotspot.runtime.VMObject. Returns false if there was
+      already a class for this type name in the map. */
+  public boolean addMapping(String cTypeName, Class clazz) {
+    if (map.get(cTypeName) != null) {
+      return false;
+    }
+
+    map.put(cTypeName, clazz);
+    return true;
+  }
 
   /** Instantiate the most-precisely typed wrapper object available
       for the type of the given Address. If no type in the mapping
       matched the type of the Address, throws a WrongTypeException.
       Returns null for a null address (similar behavior to
       VMObjectFactory). */
-  public VMObject instantiateWrapperFor(Address addr) throws WrongTypeException {
+  public T instantiateWrapperFor(Address addr) throws WrongTypeException {
     if (addr == null) {
       return null;
     }
 
     Type type = db.findDynamicTypeForAddress(addr, baseType);
     if (type != null) {
-        return (VMObject) VMObjectFactory.newObject((Class) map.get(type.getName()), addr);
+      return (T) VMObjectFactory.newObject((Class) map.get(type.getName()), addr);
     } else if (unknownTypeHandler != null) {
-        return (VMObject) VMObjectFactory.newObject(unknownTypeHandler, addr);
+      return (T) VMObjectFactory.newObject(unknownTypeHandler, addr);
     }
 
     throw newWrongTypeException(addr);
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64Frame.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/ia64/IA64Frame.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -345,8 +345,8 @@
     // for use in a non-debugging, or reflective, system. Need to
     // figure out how to express this.
     Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0);
-    OopHandle methodHandle = addressOfInterpreterFrameMethod().getOopHandleAt(0);
-    Method method = (Method) VM.getVM().getObjectHeap().newOop(methodHandle);
+    Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
+    Method method = (Method)Metadata.instantiateWrapperFor(methodHandle);
     return bcpToBci(bcp, method);
   }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/sparc/SPARCFrame.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/sparc/SPARCFrame.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -423,7 +423,7 @@
       return false;
     }
 
-    OopHandle methodHandle = addressOfInterpreterFrameMethod().getOopHandleAt(0);
+    Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
 
     if (VM.getVM().getObjectHeap().isValidMethod(methodHandle) == false) {
       return false;
@@ -444,7 +444,7 @@
 
     Method method;
     try {
-       method = (Method) VM.getVM().getObjectHeap().newOop(methodHandle);
+      method = (Method)Metadata.instantiateWrapperFor(methodHandle);
     } catch (UnknownOopException ex) {
        return false;
     }
@@ -744,8 +744,8 @@
   // private:
   //
   //  // where LcpoolCache is saved:
-  //  constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const {
-  //    return (constantPoolCacheOop*)sp_addr_at( LcpoolCache.sp_offset_in_saved_window());
+  //  ConstantPoolCache** interpreter_frame_cpoolcache_addr() const {
+  //    return (ConstantPoolCache**)sp_addr_at( LcpoolCache.sp_offset_in_saved_window());
   //  }
   //
   //  // where Lmonitors is saved:
@@ -787,8 +787,8 @@
     // for use in a non-debugging, or reflective, system. Need to
     // figure out how to express this.
     Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0);
-    OopHandle methodHandle = addressOfInterpreterFrameMethod().getOopHandleAt(0);
-    Method method = (Method) VM.getVM().getObjectHeap().newOop(methodHandle);
+    Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
+    Method method = (Method)Metadata.instantiateWrapperFor(methodHandle);
     return bcpToBci(bcp, method);
   }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/runtime/x86/X86Frame.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -452,8 +452,8 @@
     // for use in a non-debugging, or reflective, system. Need to
     // figure out how to express this.
     Address bcp = addressOfInterpreterFrameBCX().getAddressAt(0);
-    OopHandle methodHandle = addressOfInterpreterFrameMethod().getOopHandleAt(0);
-    Method method = (Method) VM.getVM().getObjectHeap().newOop(methodHandle);
+    Address methodHandle = addressOfInterpreterFrameMethod().getAddressAt(0);
+    Method method = (Method)Metadata.instantiateWrapperFor(methodHandle);
     return bcpToBci(bcp, method);
   }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/HeapSummary.java	Fri Sep 14 21:50:58 2012 -0700
@@ -65,8 +65,8 @@
       printValMB("OldSize          = ", getFlagValue("OldSize", flagMap));
       printValue("NewRatio         = ", getFlagValue("NewRatio", flagMap));
       printValue("SurvivorRatio    = ", getFlagValue("SurvivorRatio", flagMap));
-      printValMB("PermSize         = ", getFlagValue("PermSize", flagMap));
-      printValMB("MaxPermSize      = ", getFlagValue("MaxPermSize", flagMap));
+      printValMB("MetaspaceSize    = ", getFlagValue("MetaspaceSize", flagMap));
+      printValMB("MaxMetaspaceSize = ", getFlagValue("MaxMetaspaceSize", flagMap));
       printValMB("G1HeapRegionSize = ", HeapRegion.grainBytes());
 
       System.out.println();
@@ -118,10 +118,6 @@
          } else {
              throw new RuntimeException("unknown SharedHeap type : " + heap.getClass());
          }
-         // Perm generation shared by the above
-         Generation permGen = sharedHeap.permGen();
-         System.out.println("Perm Generation:");
-         printGen(permGen);
       } else if (heap instanceof ParallelScavengeHeap) {
          ParallelScavengeHeap psh = (ParallelScavengeHeap) heap;
          PSYoungGen youngGen = psh.youngGen();
@@ -134,14 +130,6 @@
          printValMB("used     = ", oldGen.used());
          printValMB("free     = ", oldFree);
          System.out.println(alignment + (double)oldGen.used() * 100.0 / oldGen.capacity() + "% used");
-
-         PSPermGen permGen = psh.permGen();
-         long permFree = permGen.capacity() - permGen.used();
-         System.out.println("PS Perm Generation");
-         printValMB("capacity = ", permGen.capacity());
-         printValMB("used     = ", permGen.used());
-         printValMB("free     = ", permFree);
-         System.out.println(alignment + (double)permGen.used() * 100.0 / permGen.capacity() + "% used");
       } else {
          throw new RuntimeException("unknown CollectedHeap type : " + heap.getClass());
       }
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/PStack.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/PStack.java	Fri Sep 14 21:50:58 2012 -0700
@@ -34,7 +34,7 @@
 import sun.jvm.hotspot.runtime.*;
 
 public class PStack extends Tool {
-    // in non-verbose mode, methodOops are not printed in java frames
+    // in non-verbose mode, Method*s are not printed in java frames
    public PStack(boolean v, boolean concurrentLocks) {
       this.verbose = v;
       this.concurrentLocks = concurrentLocks;
@@ -247,7 +247,7 @@
             }
 
             if (verbose) {
-               sb.append(" methodOop:" + method.getHandle());
+               sb.append(" Method*:" + method.getAddress());
             }
 
             if (vf.isCompiledFrame()) {
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/PermStat.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/PermStat.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -201,7 +201,7 @@
          if (loaderKlass != null) {
             out.print(loaderKlass.getName().asString());
             out.print('@');
-            out.print(loader.getKlass().getHandle());
+            out.print(loader.getKlass().getAddress());
          } else {
             out.print("    null!    ");
          }
@@ -233,47 +233,45 @@
    }
 
    // Don't count the shared empty arrays
-   private static long arraySize(Array arr) {
-     return arr.getLength() != 0L ? arr.getObjectSize() : 0L;
+   private static long arraySize(GenericArray arr) {
+     return arr.getLength() != 0L ? arr.getSize() : 0L;
    }
 
    private long computeSize(InstanceKlass k) {
       long size = 0L;
       // the InstanceKlass object itself
-      size += k.getObjectSize();
+      size += k.getSize();
 
       // Constant pool
       ConstantPool cp = k.getConstants();
-      size += cp.getObjectSize();
-      size += objectSize(cp.getCache());
-      size += objectSize(cp.getTags());
+      size += cp.getSize();
+      if (cp.getCache() != null) {
+        size += cp.getCache().getSize();
+      }
+      size += arraySize(cp.getTags());
 
       // Interfaces
       size += arraySize(k.getLocalInterfaces());
       size += arraySize(k.getTransitiveInterfaces());
 
       // Inner classes
-      size += objectSize(k.getInnerClasses());
+      size += arraySize(k.getInnerClasses());
 
       // Fields
-      size += objectSize(k.getFields());
+      size += arraySize(k.getFields());
 
       // Methods
-      ObjArray methods = k.getMethods();
+      MethodArray methods = k.getMethods();
       int nmethods = (int) methods.getLength();
       if (nmethods != 0L) {
-         size += methods.getObjectSize();
+         size += methods.getSize();
          for (int i = 0; i < nmethods; ++i) {
-            Method m = (Method) methods.getObjAt(i);
-            size += m.getObjectSize();
-            size += objectSize(m.getConstMethod());
+            Method m = methods.at(i);
+            size += m.getSize();
+            size += m.getConstMethod().getSize();
          }
       }
 
-      // MethodOrdering - an int array that records the original
-      // ordering of methods in the class file
-      size += arraySize(k.getMethodOrdering());
-
       return size;
    }
 }
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/StackTrace.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -31,7 +31,7 @@
 /** Traverses and prints the stack traces for all Java threads in the
  * remote VM */
 public class StackTrace extends Tool {
-    // in non-verbose mode pc, sp and methodOop are not printed
+    // in non-verbose mode pc, sp and Method* are not printed
     public StackTrace(boolean v, boolean concurrentLocks) {
         this.verbose = v;
         this.concurrentLocks = concurrentLocks;
@@ -89,7 +89,7 @@
                                     tty.print(", pc=" + pc);
                                 }
 
-                                tty.print(", methodOop=" + method.getHandle());
+                                tty.print(", Method*=" + method.getAddress());
                             }
 
                             if (vf.isCompiledFrame()) {
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ByteCodeRewriter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -73,7 +73,7 @@
           return (short) cpCacheIndex;
        } else if (fmt.indexOf("JJJJ") >= 0) {
           // change byte-ordering and go via secondary cache entry
-          return (short) cpCache.getMainEntryAt(bytes.swapInt(cpCacheIndex)).getConstantPoolIndex();
+           throw new InternalError("unimplemented");
        } else if (fmt.indexOf("JJ") >= 0) {
           // change byte-ordering and go via cache
           return (short) cpCache.getEntryAt((int) (0xFFFF & bytes.swapShort((short)cpCacheIndex))).getConstantPoolIndex();
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -28,6 +28,7 @@
 import java.util.*;
 import sun.jvm.hotspot.oops.*;
 import sun.jvm.hotspot.runtime.*;
+import sun.jvm.hotspot.utilities.*;
 
 public class ClassWriter implements /* imports */ ClassConstants
 {
@@ -42,10 +43,10 @@
     protected ConstantPool      cpool;
 
     // Map between class name to index of type CONSTANT_Class
-    protected Map               classToIndex = new HashMap();
+    protected Map<String, Short> classToIndex = new HashMap<String, Short>();
 
     // Map between any modified UTF-8 and it's constant pool index.
-    protected Map               utf8ToIndex = new HashMap();
+    protected Map<String, Short> utf8ToIndex = new HashMap<String, Short>();
 
     // constant pool index for attribute names.
 
@@ -61,12 +62,12 @@
     protected short  _signatureIndex;
 
     protected static int extractHighShortFromInt(int val) {
-        // must stay in sync with constantPoolOopDesc::name_and_type_at_put, method_at_put, etc.
+        // must stay in sync with ConstantPool::name_and_type_at_put, method_at_put, etc.
         return (val >> 16) & 0xFFFF;
     }
 
     protected static int extractLowShortFromInt(int val) {
-        // must stay in sync with constantPoolOopDesc::name_and_type_at_put, method_at_put, etc.
+        // must stay in sync with ConstantPool::name_and_type_at_put, method_at_put, etc.
         return val & 0xFFFF;
     }
 
@@ -107,8 +108,8 @@
     }
 
     protected void writeConstantPool() throws IOException {
-        final TypeArray tags = cpool.getTags();
-        final long len = tags.getLength();
+        final U1Array tags = cpool.getTags();
+        final long len = tags.length();
         dos.writeShort((short) len);
 
         if (DEBUG) debugMessage("constant pool length = " + len);
@@ -118,7 +119,7 @@
         // collect all modified UTF-8 Strings from Constant Pool
 
         for (ci = 1; ci < len; ci++) {
-            byte cpConstType = tags.getByteAt(ci);
+            int cpConstType = tags.at(ci);
             if(cpConstType == JVM_CONSTANT_Utf8) {
                 Symbol sym = cpool.getSymbolAt(ci);
                 utf8ToIndex.put(sym.asString(), new Short((short) ci));
@@ -182,9 +183,9 @@
         if (DEBUG) debugMessage("Signature index = " + _signatureIndex);
 
         for(ci = 1; ci < len; ci++) {
+            int cpConstType = tags.at(ci);
             // write cp_info
             // write constant type
-            byte cpConstType = tags.getByteAt(ci);
             switch(cpConstType) {
                 case JVM_CONSTANT_Utf8: {
                      dos.writeByte(cpConstType);
@@ -226,12 +227,11 @@
                      ci++;
                      break;
 
-                case JVM_CONSTANT_Class: {
-                     dos.writeByte(cpConstType);
-                     // Klass already resolved. ConstantPool constains klassOop.
-                     Klass refKls = (Klass) cpool.getObjAtRaw(ci);
-                     String klassName = refKls.getName().asString();
-
+                case JVM_CONSTANT_Class:
+                case JVM_CONSTANT_UnresolvedClass:
+                case JVM_CONSTANT_UnresolvedClassInError: {
+                     dos.writeByte(JVM_CONSTANT_Class);
+                     String klassName = cpool.getKlassNameAt(ci).asString();
                      Short s = (Short) utf8ToIndex.get(klassName);
                      classToIndex.put(klassName, new Short((short)ci));
                      dos.writeShort(s.shortValue());
@@ -239,40 +239,15 @@
                      break;
                 }
 
-                // case JVM_CONSTANT_ClassIndex:
-                case JVM_CONSTANT_UnresolvedClassInError:
-                case JVM_CONSTANT_UnresolvedClass: {
-                     dos.writeByte(JVM_CONSTANT_Class);
-                     String klassName = cpool.getSymbolAt(ci).asString();
-
-                     Short s = (Short) utf8ToIndex.get(klassName);
-                     classToIndex.put(klassName, new Short((short) ci));
-
-                     dos.writeShort(s.shortValue());
-                     if (DEBUG) debugMessage("CP[" + ci + "] = class " + s);
-                     break;
-                }
-
                 case JVM_CONSTANT_String: {
                      dos.writeByte(cpConstType);
-                     String str = OopUtilities.stringOopToString(cpool.getObjAtRaw(ci));
+                     String str = cpool.getUnresolvedStringAt(ci).asString();
                      Short s = (Short) utf8ToIndex.get(str);
                      dos.writeShort(s.shortValue());
                      if (DEBUG) debugMessage("CP[" + ci + "] = string " + s);
                      break;
                 }
 
-                // case JVM_CONSTANT_StringIndex:
-                case JVM_CONSTANT_UnresolvedString: {
-                     dos.writeByte(JVM_CONSTANT_String);
-                     String val = cpool.getSymbolAt(ci).asString();
-
-                     Short s = (Short) utf8ToIndex.get(val);
-                     dos.writeShort(s.shortValue());
-                     if (DEBUG) debugMessage("CP[" + ci + "] = string " + s);
-                     break;
-                }
-
                 // all external, internal method/field references
                 case JVM_CONSTANT_Fieldref:
                 case JVM_CONSTANT_Methodref:
@@ -363,15 +338,15 @@
         }
     }
     protected void writeInterfaces() throws IOException {
-        ObjArray interfaces = klass.getLocalInterfaces();
-        final int len = (int) interfaces.getLength();
+        KlassArray interfaces = klass.getLocalInterfaces();
+        final int len = interfaces.length();
 
         if (DEBUG) debugMessage("number of interfaces = " + len);
 
         // write interfaces count
         dos.writeShort((short) len);
         for (int i = 0; i < len; i++) {
-           Klass k = (Klass) interfaces.getObjAt(i);
+           Klass k = interfaces.getAt(i);
            Short index = (Short) classToIndex.get(k.getName().asString());
            dos.writeShort(index.shortValue());
            if (DEBUG) debugMessage("\t" + index);
@@ -379,7 +354,8 @@
     }
 
     protected void writeFields() throws IOException {
-        final int length = klass.getJavaFieldsCount();
+        U2Array fields = klass.getFields();
+        final int length = (int) fields.length();
 
         // write number of fields
         dos.writeShort((short) length);
@@ -447,13 +423,13 @@
     }
 
     protected void writeMethods() throws IOException {
-        ObjArray methods = klass.getMethods();
-        final int len = (int) methods.getLength();
+        MethodArray methods = klass.getMethods();
+        final int len = methods.length();
         // write number of methods
         dos.writeShort((short) len);
         if (DEBUG) debugMessage("number of methods = " + len);
         for (int m = 0; m < len; m++) {
-            writeMethod((Method) methods.getObjAt(m));
+            writeMethod(methods.at(m));
         }
     }
 
@@ -683,8 +659,8 @@
         if (genericSignature != null)
             classAttributeCount++;
 
-        TypeArray innerClasses = klass.getInnerClasses();
-        final int numInnerClasses = (int) (innerClasses.getLength() / 4);
+        U2Array innerClasses = klass.getInnerClasses();
+        final int numInnerClasses = (int) (innerClasses.length() / 4);
         if (numInnerClasses != 0)
             classAttributeCount++;
 
@@ -724,7 +700,7 @@
             if (DEBUG) debugMessage("class has " + numInnerClasses + " inner class entries");
 
             for (int index = 0; index < numInnerClasses * 4; index++) {
-                dos.writeShort(innerClasses.getShortAt(index));
+                dos.writeShort(innerClasses.at(index));
             }
         }
     }
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/soql/SOQL.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -126,7 +126,7 @@
       for (int i = 0; i < klasses.length; i++) {
          out.print(klasses[i].getName().asString().replace('/', '.'));
          out.print(" @");
-         out.println(klasses[i].getHandle());
+         out.println(klasses[i].getAddress());
       }
    }
 
@@ -150,7 +150,8 @@
             }
 
             // list immediate fields only
-            int numFields = klass.getJavaFieldsCount();
+            U2Array fields = klass.getFields();
+            int numFields = (int) fields.length();
             ConstantPool cp = klass.getConstants();
             out.println("fields");
             if (numFields != 0) {
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/CodeViewerPanel.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/CodeViewerPanel.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -66,7 +66,7 @@
 
         JPanel topPanel = new JPanel();
         topPanel.setLayout(new BorderLayout());
-        topPanel.add(new JLabel("Enter PC or methodOop/klassOop Address: "), BorderLayout.WEST);
+        topPanel.add(new JLabel("Enter PC or Method*/Klass* Address: "), BorderLayout.WEST);
         address = new HistoryComboBox();
         topPanel.add(address, BorderLayout.CENTER);
 
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Fri Sep 14 21:50:58 2012 -0700
@@ -313,7 +313,7 @@
          buf.append(' ');
       }
       buf.append('@');
-      buf.append(klass.getHandle().toString());
+      buf.append(klass.getAddress().toString());
       return buf.toString();
    }
 
@@ -322,7 +322,7 @@
    }
 
    protected String genKlassHref(InstanceKlass klass) {
-      return genBaseHref() + "klass=" + klass.getHandle();
+      return genBaseHref() + "klass=" + klass.getAddress();
    }
 
    protected String genKlassLink(InstanceKlass klass) {
@@ -403,12 +403,12 @@
       buf.append(genMethodNameAndSignature(method));
       buf.append(' ');
       buf.append('@');
-      buf.append(method.getHandle().toString());
+      buf.append(method.getAddress().toString());
       return buf.toString();
    }
 
    protected String genMethodHref(Method m) {
-      return genBaseHref() + "method=" + m.getHandle();
+      return genBaseHref() + "method=" + m.getAddress();
    }
 
    protected String genMethodLink(Method m) {
@@ -498,7 +498,7 @@
          buf.beginTag("tr");
          buf.cell(Integer.toString(index));
 
-         int ctag = (int) cpool.getTags().getByteAt((int) index);
+         int ctag = (int) cpool.getTags().at((int) index);
          switch (ctag) {
             case JVM_CONSTANT_Integer:
                buf.cell("JVM_CONSTANT_Integer");
@@ -526,7 +526,7 @@
 
             case JVM_CONSTANT_UnresolvedClass:
                buf.cell("JVM_CONSTANT_UnresolvedClass");
-               buf.cell(cpool.getSymbolAt(index).asString());
+               buf.cell(cpool.getKlassNameAt(index).asString());
                break;
 
             case JVM_CONSTANT_UnresolvedClassInError:
@@ -536,7 +536,7 @@
 
             case JVM_CONSTANT_Class:
                buf.cell("JVM_CONSTANT_Class");
-               Klass klass = (Klass) cpool.getObjAtRaw(index);
+               Klass klass = (Klass) cpool.getKlassAt(index);
                if (klass instanceof InstanceKlass) {
                   buf.cell(genKlassLink((InstanceKlass) klass));
                } else {
@@ -544,13 +544,6 @@
                }
                break;
 
-            case JVM_CONSTANT_UnresolvedString:
-               buf.cell("JVM_CONSTANT_UnresolvedString");
-               buf.cell("\"" +
-                 escapeHTMLSpecialChars(cpool.getSymbolAt(index).asString()) +
-                 "\"");
-               break;
-
             case JVM_CONSTANT_Utf8:
                buf.cell("JVM_CONSTANT_Utf8");
                buf.cell("\"" +
@@ -561,7 +554,7 @@
             case JVM_CONSTANT_String:
                buf.cell("JVM_CONSTANT_String");
                buf.cell("\"" +
-                 escapeHTMLSpecialChars(OopUtilities.stringOopToString(cpool.getObjAtRaw(index))) + "\"");
+                        escapeHTMLSpecialChars(cpool.getUnresolvedStringAt(index).asString()) + "\"");
                break;
 
             case JVM_CONSTANT_Fieldref:
@@ -637,7 +630,7 @@
    }
 
    protected String genConstantPoolHref(ConstantPool cpool) {
-      return genBaseHref() + "cpool=" + cpool.getHandle();
+      return genBaseHref() + "cpool=" + cpool.getAddress();
    }
 
    protected String genConstantPoolTitle(ConstantPool cpool) {
@@ -645,7 +638,7 @@
       buf.append("Constant Pool of [");
       buf.append(genKlassTitle((InstanceKlass) cpool.getPoolHolder()));
       buf.append("] @");
-      buf.append(cpool.getHandle().toString());
+      buf.append(cpool.getAddress().toString());
       return buf.toString();
    }
 
@@ -678,10 +671,10 @@
             for (int exp = 0; exp < exceptions.length; exp++) {
                short cpIndex = (short) exceptions[exp].getClassCPIndex();
                ConstantPool.CPSlot obj = cpool.getSlotAt(cpIndex);
-               if (obj.isMetaData()) {
+               if (obj.isUnresolved()) {
                  buf.li((obj.getSymbol()).asString().replace('/', '.'));
                } else {
-                 buf.li(genKlassLink((InstanceKlass)obj.getOop()));
+                 buf.li(genKlassLink((InstanceKlass)obj.getKlass()));
                }
             }
             buf.endTag("ul");
@@ -723,7 +716,7 @@
                              try {
                                  instrStr = escapeHTMLSpecialChars(instr.toString());
                              } catch (RuntimeException re) {
-                                 buf.append("exception during bytecode processing");
+                                 buf.append("exception while printing " + instr.getBytecodeName());
                                  buf.endTag("td");
                                  buf.endTag("tr");
                                  re.printStackTrace();
@@ -762,7 +755,7 @@
                                 BytecodeLoadConstant ldc = (BytecodeLoadConstant) instr;
                                 if (ldc.isKlassConstant()) {
                                    Object oop = ldc.getKlass();
-                                   if (oop instanceof Klass) {
+                                   if (oop instanceof InstanceKlass) {
                                       buf.append("<a href='");
                                       buf.append(genKlassHref((InstanceKlass) oop));
                                       buf.append("'>");
@@ -812,10 +805,10 @@
                   ConstantPool.CPSlot obj = cpIndex == 0? null : cpool.getSlotAt(cpIndex);
                   if (obj == null) {
                      buf.cell("Any");
-                  } else if (obj.isMetaData()) {
+                  } else if (obj.isUnresolved()) {
                      buf.cell(obj.getSymbol().asString().replace('/', '.'));
                   } else {
-                     buf.cell(genKlassLink((InstanceKlass)obj.getOop()));
+                    buf.cell(genKlassLink((InstanceKlass)obj.getKlass()));
                   }
                   buf.endTag("tr");
                }
@@ -843,7 +836,7 @@
    }
 
    // genHTML for a given address. Address may be a PC or
-   // methodOop or klassOop.
+   // Method* or Klass*.
 
    public String genHTMLForAddress(String addrStr) {
       return genHTML(parseAddress(addrStr));
@@ -878,9 +871,9 @@
       }
 
       // did not find nmethod.
-      // try methodOop, klassOop and constantPoolOop.
+      // try Method*, Klass* and ConstantPool*.
       try {
-         Oop obj = getOopAtAddress(pc);
+        Metadata obj = Metadata.instantiateWrapperFor(pc);
          if (obj != null) {
             if (obj instanceof Method) {
                return genHTML((Method) obj);
@@ -891,6 +884,7 @@
             }
          }
       } catch (Exception exp) {
+        exp.printStackTrace();
          // ignore
       }
 
@@ -1120,11 +1114,15 @@
                 Assert.that(klHandle != null, "scalar replaced object klass must be not NULL");
             }
             Oop obj = VM.getVM().getObjectHeap().newOop(klHandle);
-            if (obj instanceof InstanceKlass) {
-                InstanceKlass kls = (InstanceKlass) obj;
+            // Obj is a Java mirror
+            Klass klass = java_lang_Class.asKlass(obj);
+            if (klass instanceof InstanceKlass) {
+                InstanceKlass kls = (InstanceKlass) klass;
                 buf.append(" " + kls.getName().asString() + "={");
                 int flen = ov.fieldsSize();
-                int klen = kls.getJavaFieldsCount();
+
+                U2Array klfields = kls.getFields();
+                int klen = (int) klfields.length();
                 int findex = 0;
                 for (int index = 0; index < klen; index++) {
                     int accsFlags = kls.getFieldAccessFlags(index);
@@ -1140,11 +1138,11 @@
             } else {
                 buf.append(" ");
                 int flen = ov.fieldsSize();
-                if (obj instanceof TypeArrayKlass) {
-                    TypeArrayKlass kls = (TypeArrayKlass) obj;
+                if (klass instanceof TypeArrayKlass) {
+                    TypeArrayKlass kls = (TypeArrayKlass) klass;
                     buf.append(kls.getElementTypeName() + "[" + flen + "]");
-                } else if (obj instanceof ObjArrayKlass) {
-                    ObjArrayKlass kls = (ObjArrayKlass) obj;
+                } else if (klass instanceof ObjArrayKlass) {
+                    ObjArrayKlass kls = (ObjArrayKlass) klass;
                     Klass elobj = kls.getBottomKlass();
                     if (elobj instanceof InstanceKlass) {
                         buf.append(elobj.getName().asString());
@@ -1687,7 +1685,7 @@
       StringBuffer buf = new StringBuffer(genBaseHref());
       buf.append("jcore_multiple=");
       for (int k = 0; k < klasses.length; k++) {
-         buf.append(klasses[k].getHandle().toString());
+         buf.append(klasses[k].getAddress().toString());
          buf.append(',');
       }
       return buf.toString();
@@ -1743,13 +1741,13 @@
 
    protected String genHTMLListForMethods(InstanceKlass klass) {
       Formatter buf = new Formatter(genHTML);
-      ObjArray methods = klass.getMethods();
-      int numMethods = (int) methods.getLength();
+      MethodArray methods = klass.getMethods();
+      int numMethods = methods.length();
       if (numMethods != 0) {
          buf.h3("Methods");
          buf.beginTag("ul");
          for (int m = 0; m < numMethods; m++) {
-            Method mtd = (Method) methods.getObjAt(m);
+            Method mtd = methods.at(m);
             buf.li(genMethodLink(mtd) + ";");
          }
          buf.endTag("ul");
@@ -1760,13 +1758,13 @@
    protected String genHTMLListForInterfaces(InstanceKlass klass) {
       try {
          Formatter buf = new Formatter(genHTML);
-         ObjArray interfaces = klass.getLocalInterfaces();
-         int numInterfaces = (int) interfaces.getLength();
+         KlassArray interfaces = klass.getLocalInterfaces();
+         int numInterfaces = interfaces.length();
          if (numInterfaces != 0) {
             buf.h3("Interfaces");
             buf.beginTag("ul");
             for (int i = 0; i < numInterfaces; i++) {
-               InstanceKlass inf = (InstanceKlass) interfaces.getObjAt(i);
+               InstanceKlass inf = (InstanceKlass) interfaces.getAt(i);
                buf.li(genKlassLink(inf));
             }
             buf.endTag("ul");
@@ -1822,7 +1820,8 @@
 
    protected String genHTMLListForFields(InstanceKlass klass) {
       Formatter buf = new Formatter(genHTML);
-      int numFields = klass.getJavaFieldsCount();
+      U2Array fields = klass.getFields();
+      int numFields = klass.getAllFieldsCount();
       if (numFields != 0) {
          buf.h3("Fields");
          buf.beginList();
@@ -1857,7 +1856,7 @@
    }
 
    protected String genKlassHierarchyHref(InstanceKlass klass) {
-      return genBaseHref() + "hierarchy=" + klass.getHandle();
+      return genBaseHref() + "hierarchy=" + klass.getAddress();
    }
 
    protected String genKlassHierarchyTitle(InstanceKlass klass) {
@@ -1919,7 +1918,7 @@
    }
 
    protected String genDumpKlassHref(InstanceKlass klass) {
-      return genBaseHref() + "jcore=" + klass.getHandle();
+      return genBaseHref() + "jcore=" + klass.getAddress();
    }
 
    protected String genDumpKlassLink(InstanceKlass klass) {
@@ -1992,6 +1991,21 @@
       return getOopAtAddress(addr);
    }
 
+   protected Klass getKlassAtAddress(String address) {
+      sun.jvm.hotspot.debugger.Address addr = parseAddress(address);
+      return (Klass)Metadata.instantiateWrapperFor(addr);
+   }
+
+   protected Method getMethodAtAddress(String address) {
+      sun.jvm.hotspot.debugger.Address addr = parseAddress(address);
+      return (Method)Metadata.instantiateWrapperFor(addr);
+   }
+
+   protected ConstantPool getConstantPoolAtAddress(String address) {
+      sun.jvm.hotspot.debugger.Address addr = parseAddress(address);
+      return (ConstantPool) Metadata.instantiateWrapperFor(addr);
+   }
+
    private void dumpKlass(InstanceKlass kls) throws IOException {
       String klassName = kls.getName().asString();
       klassName = klassName.replace('/', File.separatorChar);
@@ -2082,18 +2096,18 @@
    public String genHTMLForHyperlink(String href) {
       if (href.startsWith("klass=")) {
          href = href.substring(href.indexOf('=') + 1);
-         Oop obj = getOopAtAddress(href);
+         Klass k = getKlassAtAddress(href);
          if (Assert.ASSERTS_ENABLED) {
-            Assert.that(obj instanceof InstanceKlass, "class= href with improper InstanceKlass!");
+            Assert.that(k instanceof InstanceKlass, "class= href with improper InstanceKlass!");
          }
-         return genHTML((InstanceKlass) obj);
+         return genHTML((InstanceKlass) k);
       } else if (href.startsWith("method=")) {
          href = href.substring(href.indexOf('=') + 1);
-         Oop obj = getOopAtAddress(href);
+         Method obj = getMethodAtAddress(href);
          if (Assert.ASSERTS_ENABLED) {
             Assert.that(obj instanceof Method, "method= href with improper Method!");
          }
-         return genHTML((Method) obj);
+         return genHTML(obj);
       } else if (href.startsWith("nmethod=")) {
          String addr = href.substring(href.indexOf('=') + 1);
          Object obj = VMObjectFactory.newObject(NMethod.class, parseAddress(addr));
@@ -2117,21 +2131,21 @@
          return genInterpreterCodeletLinksPage();
       } else if (href.startsWith("hierarchy=")) {
          href = href.substring(href.indexOf('=') + 1);
-         Oop obj = getOopAtAddress(href);
+         Klass obj = getKlassAtAddress(href);
          if (Assert.ASSERTS_ENABLED) {
             Assert.that(obj instanceof InstanceKlass, "class= href with improper InstanceKlass!");
          }
          return genHTMLForKlassHierarchy((InstanceKlass) obj);
       } else if (href.startsWith("cpool=")) {
          href = href.substring(href.indexOf('=') + 1);
-         Oop obj = getOopAtAddress(href);
+         ConstantPool obj = getConstantPoolAtAddress(href);
          if (Assert.ASSERTS_ENABLED) {
             Assert.that(obj instanceof ConstantPool, "cpool= href with improper ConstantPool!");
          }
-         return genHTML((ConstantPool) obj);
+         return genHTML(obj);
       } else if (href.startsWith("jcore=")) {
          href = href.substring(href.indexOf('=') + 1);
-         Oop obj = getOopAtAddress(href);
+         Klass obj = getKlassAtAddress(href);
          if (Assert.ASSERTS_ENABLED) {
             Assert.that(obj instanceof InstanceKlass, "jcore= href with improper InstanceKlass!");
          }
@@ -2142,7 +2156,7 @@
          buf.genHTMLPrologue();
          StringTokenizer st = new StringTokenizer(href, ",");
          while (st.hasMoreTokens()) {
-            Oop obj = getOopAtAddress(st.nextToken());
+            Klass obj = getKlassAtAddress(st.nextToken());
             if (Assert.ASSERTS_ENABLED) {
                Assert.that(obj instanceof InstanceKlass, "jcore_multiple= href with improper InstanceKlass!");
             }
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/tree/BadAddressTreeNodeAdapter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/tree/BadAddressTreeNodeAdapter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -27,36 +27,38 @@
 import java.io.*;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.runtime.VM;
 
 /** Simple wrapper for displaying bad addresses in the Inspector */
 
 public class BadAddressTreeNodeAdapter extends FieldTreeNodeAdapter {
-  private boolean usingAddress;
-  private Address addr;
-  private long    addrValue;
+  private String message;
+
+  private static String generateMessage(long addr, String kind) {
+    return "** BAD " + kind + " " + Long.toHexString(addr) + " **";
+  }
 
-  public BadAddressTreeNodeAdapter(Address addr, FieldIdentifier id) {
-    this(addr, id, false);
+  public BadAddressTreeNodeAdapter(Address addr, MetadataField field, boolean treeTableMode) {
+    super(field.getID(), treeTableMode);
+    message = generateMessage(addr.minus(null), "METADATA");
+  }
+
+  public BadAddressTreeNodeAdapter(Address addr, OopField field, boolean treeTableMode) {
+    super(field.getID(), treeTableMode);
+    message = generateMessage(addr.minus(null), "OOP");
+  }
+
+  public BadAddressTreeNodeAdapter(OopHandle addr, FieldIdentifier id, boolean treeTableMode) {
+    super(id, treeTableMode);
+    message = generateMessage(addr.minus(null), "OOP");
   }
 
   /** The address may be null (for address fields of structures which
       are null); the FieldIdentifier may also be null (for the root
       node). */
-  public BadAddressTreeNodeAdapter(Address addr, FieldIdentifier id, boolean treeTableMode) {
+  public BadAddressTreeNodeAdapter(long addr, FieldIdentifier id, boolean treeTableMode) {
     super(id, treeTableMode);
-    this.addr = addr;
-    usingAddress = true;
-  }
-
-  public BadAddressTreeNodeAdapter(long addr, FieldIdentifier id) {
-    this(addr, id, false);
-  }
-
-  /** He FieldIdentifier may be null (for the root node). */
-  public BadAddressTreeNodeAdapter(long addrValue, FieldIdentifier id, boolean treeTableMode) {
-    super(id, treeTableMode);
-    this.addrValue = addrValue;
-    usingAddress = false;
+    message = generateMessage(addr, "ADDRESS");
   }
 
   public int getChildCount() {
@@ -76,17 +78,6 @@
   }
 
   public String getValue() {
-    // FIXME: should have this better factored to not have to replicate this code
-    String addrString = null;
-    if (usingAddress) {
-      if (addr == null) {
-        addrString = "0x0";
-      } else {
-        addrString = addr.toString();
+    return message;
       }
-    } else {
-      addrString = "0x" + Long.toHexString(addrValue);
     }
-    return "** BAD ADDRESS " + addrString + " **";
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/tree/BadOopTreeNodeAdapter.java	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2002, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-package sun.jvm.hotspot.ui.tree;
-
-import java.io.*;
-import sun.jvm.hotspot.debugger.*;
-import sun.jvm.hotspot.oops.*;
-
-/** Simple wrapper for displaying bad oops in the Inspector */
-
-public class BadOopTreeNodeAdapter extends FieldTreeNodeAdapter {
-  private OopHandle oop;
-
-  public BadOopTreeNodeAdapter(OopHandle oop, FieldIdentifier id) {
-    this(oop, id, false);
-  }
-
-  /** The oop may be null (for oop fields of oops which are null); the
-      FieldIdentifier may also be null (for the root node). */
-  public BadOopTreeNodeAdapter(OopHandle oop, FieldIdentifier id, boolean treeTableMode) {
-    super(id, treeTableMode);
-    this.oop = oop;
-  }
-
-  public int getChildCount() {
-    return 0;
-  }
-
-  public SimpleTreeNode getChild(int index) {
-    throw new RuntimeException("Should not call this");
-  }
-
-  public boolean isLeaf() {
-    return true;
-  }
-
-  public int getIndexOfChild(SimpleTreeNode child) {
-    throw new RuntimeException("Should not call this");
-  }
-
-  public String getValue() {
-    return "** BAD OOP " + oop + " **";
-  }
-}
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/tree/CTypeTreeNodeAdapter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/tree/CTypeTreeNodeAdapter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -133,11 +133,11 @@
           Oop oop = VM.getVM().getObjectHeap().newOop(handle);
           return new OopTreeNodeAdapter(oop, cf, getTreeTableMode());
         } catch (AddressException e) {
-          return new BadOopTreeNodeAdapter(handle,
+          return new BadAddressTreeNodeAdapter(handle,
                                            new CTypeFieldIdentifier(type, f),
                                            getTreeTableMode());
         } catch (UnknownOopException e) {
-          return new BadOopTreeNodeAdapter(handle,
+          return new BadAddressTreeNodeAdapter(handle,
                                            new CTypeFieldIdentifier(type, f),
                                            getTreeTableMode());
         }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/tree/MetadataTreeNodeAdapter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,274 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.ui.tree;
+
+import java.io.*;
+import sun.jvm.hotspot.oops.*;
+import sun.jvm.hotspot.debugger.*;
+import sun.jvm.hotspot.runtime.*;
+
+/** An adapter class which allows oops to be displayed in a tree via
+    the SimpleTreeNode interface. FIXME: must attach this to some sort
+    of policy object which determines how to display names and whether
+    VM fields should be shown. (Must also fix oop visitation mechanism
+    in oops package.) */
+
+public class MetadataTreeNodeAdapter extends FieldTreeNodeAdapter {
+  private Metadata metadata;
+
+  /** The metadata may be null (for metadata fields of metadatas which are null); the
+      FieldIdentifier may also be null (for the root node).
+      treeTableMode defaults to false. */
+  public MetadataTreeNodeAdapter(Metadata metadata, FieldIdentifier id) {
+    this(metadata, id, false);
+  }
+
+  /** The metadata may be null (for metadata fields of metadatas which are null); the
+      FieldIdentifier may also be null (for the root node). */
+  public MetadataTreeNodeAdapter(Metadata metadata, FieldIdentifier id, boolean treeTableMode) {
+    super(id, treeTableMode);
+    this.metadata = metadata;
+  }
+
+  public Metadata getMetadata() {
+    return metadata;
+  }
+
+  public int getChildCount() {
+    if (metadata == null) {
+      return 0;
+    }
+
+    Counter c = new Counter();
+    metadata.iterate(c);
+    return c.getNumFields() + (VM.getVM().getRevPtrs() == null ? 0 : 1);
+  }
+
+  public SimpleTreeNode getChild(int index) {
+    if (metadata == null) {
+      return null;
+    }
+
+    Fetcher f = new Fetcher(index);
+    metadata.iterate(f);
+    return f.getChild();
+  }
+
+  public boolean isLeaf() {
+    return (metadata == null);
+  }
+
+  public int getIndexOfChild(SimpleTreeNode child) {
+    if (child instanceof RevPtrsTreeNodeAdapter) {
+      // assert(VM.getVM().getRevPtrs() != null, "Only created from revptrs");
+      return 0;
+    }
+    FieldIdentifier id = ((FieldTreeNodeAdapter) child).getID();
+    Finder f = new Finder(id);
+    metadata.iterate(f);
+    return f.getIndex() + (VM.getVM().getRevPtrs() == null ? 0 : 1);
+  }
+
+  public String getValue() {
+    if (metadata != null) {
+      // FIXME: choose style of printing depending on whether we're
+      // displaying VM fields? Want to make Java objects look like
+      // Java objects.
+      ByteArrayOutputStream bos = new ByteArrayOutputStream();
+      metadata.printValueOn(new PrintStream(bos));
+      return bos.toString();
+    }
+    return "null";
+  }
+
+  /** Should be applied to one metadata at a time, then have the number of
+      fields fetched. FIXME: want this to distinguish between VM and
+      non-VM fields. */
+  static class Counter extends DefaultMetadataVisitor {
+    private int numFields;
+
+    public int getNumFields() {
+      return numFields;
+    }
+
+    public void prologue() {
+      numFields = 0;
+    }
+
+    public void doMetadata(MetadataField field, boolean isVMField) { ++numFields; }
+    public void doOop(OopField field, boolean isVMField)         { ++numFields; }
+    public void doByte(ByteField field, boolean isVMField)       { ++numFields; }
+    public void doChar(CharField field, boolean isVMField)       { ++numFields; }
+    public void doBoolean(BooleanField field, boolean isVMField) { ++numFields; }
+    public void doShort(ShortField field, boolean isVMField)     { ++numFields; }
+    public void doInt(IntField field, boolean isVMField)         { ++numFields; }
+    public void doLong(LongField field, boolean isVMField)       { ++numFields; }
+    public void doFloat(FloatField field, boolean isVMField)     { ++numFields; }
+    public void doDouble(DoubleField field, boolean isVMField)   { ++numFields; }
+    public void doCInt(CIntField field, boolean isVMField)       { ++numFields; }
+  }
+
+  /** Creates a new SimpleTreeNode for the given field. FIXME: want
+      this to distinguish between VM and non-VM fields. */
+  class Fetcher extends DefaultMetadataVisitor {
+    private int index;
+    private int curField;
+    private SimpleTreeNode child;
+
+    public Fetcher(int index) {
+      this.index = index;
+    }
+
+    public SimpleTreeNode getChild() {
+      return child;
+    }
+
+    public void prologue() {
+      curField = 0;
+    }
+
+    public void doMetadata(MetadataField field, boolean isVMField) {
+      if (curField == index) {
+        try {
+          child = new MetadataTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+        } catch (AddressException e) {
+          child = new BadAddressTreeNodeAdapter(getObj().getAddress().getAddressAt(field.getOffset()), field, getTreeTableMode());
+        } catch (UnknownOopException e) {
+          child = new BadAddressTreeNodeAdapter(getObj().getAddress().getAddressAt(field.getOffset()), field, getTreeTableMode());
+        }
+      }
+      ++curField;
+    }
+
+    public void doOop(OopField field, boolean isVMField) {
+      if (curField == index) {
+        try {
+          child = new OopTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+        } catch (AddressException e) {
+          child = new BadAddressTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field, getTreeTableMode());
+        } catch (UnknownOopException e) {
+          child = new BadAddressTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field, getTreeTableMode());
+        }
+      }
+      ++curField;
+    }
+
+    public void doByte(ByteField field, boolean isVMField) {
+      if (curField == index) {
+        child = new LongTreeNodeAdapter(field.getValue(getObj()) & 0xFF, field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doChar(CharField field, boolean isVMField) {
+      if (curField == index) {
+        child = new CharTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doBoolean(BooleanField field, boolean isVMField) {
+      if (curField == index) {
+        child = new BooleanTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doShort(ShortField field, boolean isVMField) {
+      if (curField == index) {
+        child = new LongTreeNodeAdapter(field.getValue(getObj()) & 0xFFFF, field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doInt(IntField field, boolean isVMField) {
+      if (curField == index) {
+        child = new LongTreeNodeAdapter(field.getValue(getObj()) & 0xFFFFFFFF, field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doLong(LongField field, boolean isVMField) {
+      if (curField == index) {
+        child = new LongTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doFloat(FloatField field, boolean isVMField) {
+      if (curField == index) {
+        child = new FloatTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doDouble(DoubleField field, boolean isVMField) {
+      if (curField == index) {
+        child = new DoubleTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+
+    public void doCInt(CIntField field, boolean isVMField) {
+      if (curField == index) {
+        child = new LongTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+      }
+      ++curField;
+    }
+  }
+
+  /** Finds the index of the given FieldIdentifier. */
+  static class Finder extends DefaultMetadataVisitor {
+    private FieldIdentifier id;
+    private int curField;
+    private int index;
+
+    public Finder(FieldIdentifier id) {
+      this.id = id;
+    }
+
+    /** Returns -1 if not found */
+    public int getIndex() {
+      return index;
+    }
+
+    public void prologue() {
+      curField = 0;
+      index = -1;
+    }
+
+    public void doMetadata(MetadataField field, boolean isVMField) { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doOop(OopField field, boolean isVMField)         { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doByte(ByteField field, boolean isVMField)       { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doChar(CharField field, boolean isVMField)       { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doBoolean(BooleanField field, boolean isVMField) { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doShort(ShortField field, boolean isVMField)     { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doInt(IntField field, boolean isVMField)         { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doLong(LongField field, boolean isVMField)       { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doFloat(FloatField field, boolean isVMField)     { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doDouble(DoubleField field, boolean isVMField)   { if (field.getID().equals(id)) { index = curField; } ++curField; }
+    public void doCInt(CIntField field, boolean isVMField)       { if (field.getID().equals(id)) { index = curField; } ++curField; }
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/ui/tree/OopTreeNodeAdapter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -124,6 +124,7 @@
       numFields = 0;
     }
 
+    public void doMetadata(MetadataField field, boolean isVMField) { ++numFields; }
     public void doOop(OopField field, boolean isVMField)         { ++numFields; }
     public void doByte(ByteField field, boolean isVMField)       { ++numFields; }
     public void doChar(CharField field, boolean isVMField)       { ++numFields; }
@@ -155,14 +156,27 @@
       curField = 0;
     }
 
+    public void doMetadata(MetadataField field, boolean isVMField) {
+      if (curField == index) {
+        try {
+          child = new MetadataTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
+        } catch (AddressException e) {
+          child = new BadAddressTreeNodeAdapter(getObj().getHandle().getAddressAt(field.getOffset()), field, getTreeTableMode());
+        } catch (UnknownOopException e) {
+          child = new BadAddressTreeNodeAdapter(getObj().getHandle().getAddressAt(field.getOffset()), field, getTreeTableMode());
+        }
+      }
+      ++curField;
+    }
+
     public void doOop(OopField field, boolean isVMField) {
       if (curField == index) {
         try {
           child = new OopTreeNodeAdapter(field.getValue(getObj()), field.getID(), getTreeTableMode());
         } catch (AddressException e) {
-          child = new BadOopTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field.getID(), getTreeTableMode());
+          child = new BadAddressTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field, getTreeTableMode());
         } catch (UnknownOopException e) {
-          child = new BadOopTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field.getID(), getTreeTableMode());
+          child = new BadAddressTreeNodeAdapter(field.getValueAsOopHandle(getObj()), field, getTreeTableMode());
         }
       }
       ++curField;
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -217,14 +217,7 @@
             oop.iterate(new DefaultOopVisitor() {
                     public void doOop(OopField field, boolean isVMField) {
                         try {
-                            Oop ref = field.getValue(oop);
-                            if (ref instanceof TypeArray ||
-                                ref instanceof ObjArray  ||
-                                ref instanceof Instance) {
                                 writeReferenceField(oop, field);
-                            } else {
-                                writeInternalReferenceField(oop, field);
-                            }
                         } catch (IOException exp) {
                             throw new RuntimeException(exp);
                         }
@@ -299,11 +292,88 @@
         }
     }
 
-    // object field writers
-    protected void writeInternalReferenceField(Oop oop, OopField field)
-        throws IOException {
+    // write instance fields of given object
+    protected void writeObjectFields(final InstanceKlass oop) throws IOException {
+        try {
+            oop.iterateStaticFields(new DefaultOopVisitor() {
+                    public void doOop(OopField field, boolean isVMField) {
+                        try {
+                            writeReferenceField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
     }
 
+                    public void doByte(ByteField field, boolean isVMField) {
+                        try {
+                            writeByteField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doChar(CharField field, boolean isVMField) {
+                        try {
+                            writeCharField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doBoolean(BooleanField field, boolean vField) {
+                        try {
+                            writeBooleanField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doShort(ShortField field, boolean isVMField) {
+                        try {
+                            writeShortField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doInt(IntField field, boolean isVMField) {
+                        try {
+                            writeIntField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doLong(LongField field, boolean isVMField) {
+                        try {
+                            writeLongField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doFloat(FloatField field, boolean isVMField) {
+                        try {
+                            writeFloatField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+
+                    public void doDouble(DoubleField field, boolean vField) {
+                        try {
+                            writeDoubleField(null, field);
+                        } catch (IOException exp) {
+                            throw new RuntimeException(exp);
+                        }
+                    }
+                });
+        } catch (RuntimeException re) {
+            handleRuntimeException(re);
+        }
+    }
+
+    // object field writers
     protected void writeReferenceField(Oop oop, OopField field)
         throws IOException {
     }
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/ConstantTag.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -47,10 +47,11 @@
   private static final int JVM_CONSTANT_Invalid                 = 0;   // For bad value initialization
   private static final int JVM_CONSTANT_UnresolvedClass         = 100; // Temporary tag until actual use
   private static final int JVM_CONSTANT_ClassIndex              = 101; // Temporary tag while constructing constant pool
-  private static final int JVM_CONSTANT_UnresolvedString        = 102; // Temporary tag until actual use
-  private static final int JVM_CONSTANT_StringIndex             = 103; // Temporary tag while constructing constant pool
-  private static final int JVM_CONSTANT_UnresolvedClassInError  = 104; // Resolution failed
-  private static final int JVM_CONSTANT_Object                  = 105; // Required for BoundMethodHandle arguments.
+  private static final int JVM_CONSTANT_StringIndex             = 102; // Temporary tag while constructing constant pool
+  private static final int JVM_CONSTANT_UnresolvedClassInError  = 103; // Resolution failed
+  private static final int JVM_CONSTANT_MethodHandleInError     = 104; // Error tag due to resolution error
+  private static final int JVM_CONSTANT_MethodTypeInError       = 105; // Error tag due to resolution error
+  private static final int JVM_CONSTANT_Object                  = 106; // Required for BoundMethodHandle arguments.
 
   // JVM_CONSTANT_MethodHandle subtypes //FIXME: connect these to data structure
   private static int JVM_REF_getField                = 1;
@@ -93,7 +94,6 @@
   }
   public boolean isUnresolveKlassInError()  { return tag == JVM_CONSTANT_UnresolvedClassInError; }
   public boolean isKlassIndex()             { return tag == JVM_CONSTANT_ClassIndex; }
-  public boolean isUnresolvedString()       { return tag == JVM_CONSTANT_UnresolvedString; }
   public boolean isStringIndex()            { return tag == JVM_CONSTANT_StringIndex; }
 
   public boolean isObject()                 { return tag == JVM_CONSTANT_Object; }
@@ -117,8 +117,9 @@
     case JVM_CONSTANT_String :
     case JVM_CONSTANT_UnresolvedClass :
     case JVM_CONSTANT_UnresolvedClassInError :
+    case JVM_CONSTANT_MethodHandleInError :
+    case JVM_CONSTANT_MethodTypeInError :
     case JVM_CONSTANT_ClassIndex :
-    case JVM_CONSTANT_UnresolvedString :
     case JVM_CONSTANT_StringIndex :
     case JVM_CONSTANT_MethodHandle :
     case JVM_CONSTANT_MethodType :
@@ -128,4 +129,8 @@
       throw new InternalError("unexpected tag: " + tag);
     }
   }
+
+  public String toString() {
+    return "ConstantTag:" + Integer.toString(tag);
 }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/GenericArray.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,91 @@
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.oops.ArrayKlass;
+import sun.jvm.hotspot.oops.CIntField;
+import sun.jvm.hotspot.oops.Oop;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.runtime.VMObject;
+import sun.jvm.hotspot.types.AddressField;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+/**
+ * The base class for the mirrors of the Array<T> C++ classes.
+ */
+public abstract class GenericArray extends VMObject {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    // Array<int> is arbitrarily chosen to get the fields in Array<T>.
+    Type type = db.lookupType("Array<int>");
+    lengthField = new CIntField(type.getCIntegerField("_length"), 0);
+  }
+
+  private static long sizeOfArray;
+  private static CIntField lengthField;
+
+  private long dataFieldOffset;
+
+  public GenericArray(Address addr, long dataOffset) {
+    super(addr);
+    dataFieldOffset = dataOffset;
+  }
+
+  public int length() {
+    return (int)lengthField.getValue(this);
+  }
+
+  // for compatibility with TypeArray
+  public int getLength() {
+    return length();
+  }
+
+  /**
+   * Gets the element at the given index.
+   */
+  protected long getIntegerAt(int index) {
+    if (index < 0 || index >= length()) throw new ArrayIndexOutOfBoundsException(index + " " + length());
+
+    Type elemType = getElemType();
+    if (!getElemType().isCIntegerType()) throw new RuntimeException("elemType must be of CInteger type");
+
+    Address data = getAddress().addOffsetTo(dataFieldOffset);
+    long elemSize = elemType.getSize();
+
+    return data.getCIntegerAt(index * elemSize, elemSize, false);
+  }
+
+  protected Address getAddressAt(int index) {
+    if (index < 0 || index >= length()) throw new ArrayIndexOutOfBoundsException(index);
+
+    Type elemType = getElemType();
+    if (getElemType().isCIntegerType()) throw new RuntimeException("elemType must not be of CInteger type");
+
+    Address data = getAddress().addOffsetTo(dataFieldOffset);
+    long elemSize = elemType.getSize();
+
+    return data.getAddressAt(index * elemSize);
+  }
+
+  private long byteSizeof(int length) { return sizeOfArray + length * getElemType().getSize(); }
+
+  public long getSize() {
+    return VM.getVM().alignUp(byteSizeof(length()), VM.getVM().getBytesPerWord()) / VM.getVM().getBytesPerWord();
+  }
+
+  /**
+   * The element type of this array.
+   */
+  public abstract Type getElemType();
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapGXLWriter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -179,7 +179,7 @@
                 writeAttribute("object-size", "int",
                                Long.toString(sizeInBytes));
                 // write static fields of this class.
-                writeObjectFields(reflectedType);
+                writeObjectFields((InstanceKlass)reflectedType);
             }
         }
         out.println("</node>");
@@ -193,10 +193,10 @@
             if (isInstanceKlass) {
                 // write edges for directly implemented interfaces
                 InstanceKlass ik = (InstanceKlass) reflectedType;
-                ObjArray interfaces = ik.getLocalInterfaces();
-                final int len = (int) interfaces.getLength();
+                KlassArray interfaces = ik.getLocalInterfaces();
+                final int len = interfaces.length();
                 for (int i = 0; i < len; i++) {
-                    Klass k = (Klass) interfaces.getObjAt(i);
+                    Klass k = interfaces.getAt(i);
                     writeEdge(instance, k.getJavaMirror(), "implements");
                 }
 
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -721,7 +721,7 @@
 
         ClassData cd = (ClassData) classDataCache.get(klass);
         if (Assert.ASSERTS_ENABLED) {
-            Assert.that(cd != null, "can not get class data for " + klass.getName().asString() + klass.getHandle());
+            Assert.that(cd != null, "can not get class data for " + klass.getName().asString() + klass.getAddress());
         }
         List fields = cd.fields;
         int size = cd.instSize;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/IntArray.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,42 @@
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+public class IntArray extends GenericArray {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    elemType = db.lookupType("int");
+
+    Type type = db.lookupType("Array<int>");
+    dataFieldOffset = type.getAddressField("_data").getOffset();
+  }
+
+  private static long dataFieldOffset;
+  protected static Type elemType;
+
+  public IntArray(Address addr) {
+    super(addr, dataFieldOffset);
+  }
+
+  public int at(int i) {
+    return (int)getIntegerAt(i);
+  }
+
+  public Type getElemType() {
+    return elemType;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/KlassArray.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.oops.Metadata;
+import sun.jvm.hotspot.oops.Klass;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+public class KlassArray extends GenericArray {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    elemType = db.lookupType("Klass*");
+
+    Type type = db.lookupType("Array<Klass*>");
+    dataFieldOffset = type.getAddressField("_data").getOffset();
+  }
+
+  private static long dataFieldOffset;
+  protected static Type elemType;
+
+  public KlassArray(Address addr) {
+    super(addr, dataFieldOffset);
+  }
+
+  public Klass getAt(int i) {
+    return (Klass) Metadata.instantiateWrapperFor(getAddressAt(i));
+  }
+
+  public Type getElemType() {
+    return elemType;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/MethodArray.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.oops.Metadata;
+import sun.jvm.hotspot.oops.Method;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+public class MethodArray extends GenericArray {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    elemType = db.lookupType("Method*");
+
+    Type type = db.lookupType("Array<Method*>");
+    dataFieldOffset = type.getAddressField("_data").getOffset();
+  }
+
+  private static long dataFieldOffset;
+  protected static Type elemType;
+
+  public MethodArray(Address addr) {
+    super(addr, dataFieldOffset);
+  }
+
+  public Method at(int i) {
+    return (Method) Metadata.instantiateWrapperFor(getAddressAt(i));
+  }
+
+  public Type getElemType() {
+    return elemType;
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/ObjectReader.java	Fri Sep 14 21:50:58 2012 -0700
@@ -654,6 +654,14 @@
       return oopToObjMap.get(oop);
    }
 
+   protected void putIntoObjTable(Metadata oop, Object obj) {
+      oopToObjMap.put(oop, obj);
+   }
+
+   protected Object getFromObjTable(Metadata oop) {
+      return oopToObjMap.get(oop);
+   }
+
    protected class SignatureParser extends SignatureIterator {
       protected Vector tmp = new Vector(); // Vector<Class>
 
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/PointerFinder.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/PointerFinder.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -50,13 +50,8 @@
           }
         }
 
-        if (loc.gen == null) {
-          // Should be in perm gen
-          Generation permGen = genheap.permGen();
           if (Assert.ASSERTS_ENABLED) {
-            Assert.that(permGen.isIn(a), "should have been in ordinary or perm gens if it's in the heap");
-          }
-          loc.permGen = permGen;
+          Assert.that(loc.gen != null, "Should have found this in a generation");
         }
 
         if (VM.getVM().getUseTLAB()) {
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/PointerLocation.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/PointerLocation.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -47,7 +47,6 @@
 
   CollectedHeap heap;
   Generation gen;
-  Generation permGen;
 
   // If UseTLAB was enabled and the pointer was found in a
   // currently-active TLAB, these will be set
@@ -81,7 +80,7 @@
   }
 
   public boolean isInHeap() {
-    return (heap != null || (gen != null) || (permGen != null));
+    return (heap != null || (gen != null));
   }
 
   public boolean isInNewGen() {
@@ -92,21 +91,13 @@
     return ((gen != null) && (gen.level() == 1));
   }
 
-  public boolean isInPermGen() {
-    return (permGen != null);
-  }
-
   public boolean inOtherGen() {
-    return (!isInNewGen() && !isInOldGen() && !isInPermGen());
+    return (!isInNewGen() && !isInOldGen());
   }
 
   /** Only valid if isInHeap() */
   public Generation getGeneration() {
-    if (gen != null) {
       return gen;
-    } else {
-      return permGen;
-    }
   }
 
   /** This may be true if isInNewGen is also true */
@@ -216,8 +207,6 @@
           tty.print("In new generation ");
         } else if (isInOldGen()) {
           tty.print("In old generation ");
-        } else if (isInPermGen()) {
-          tty.print("In perm generation ");
         } else if (gen != null) {
           tty.print("In Generation " + getGeneration().level());
         } else {
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -112,20 +112,22 @@
     doJNIHandleBlock(handles.weakGlobalHandles(),
                      new RootVisitor("Weak global JNI handle root"));
 
-    // Do Java-level static fields in perm gen
-    heap.iteratePerm(new DefaultHeapVisitor() {
-        public boolean doObj(Oop obj) {
-          if (obj instanceof InstanceKlass) {
-            final InstanceKlass ik = (InstanceKlass) obj;
+    // Do Java-level static fields
+    SystemDictionary sysDict = VM.getVM().getSystemDictionary();
+    sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
+
+            public void visit(Klass k) {
+                if (k instanceof InstanceKlass) {
+                    final InstanceKlass ik = (InstanceKlass)k;
             ik.iterateStaticFields(
                new DefaultOopVisitor() {
                    public void doOop(OopField field, boolean isVMField) {
                      Oop next = field.getValue(getObj());
-                     LivenessPathElement lp = new LivenessPathElement(null,
-                             new NamedFieldIdentifier("Static field \"" +
+                                                   NamedFieldIdentifier nfi = new NamedFieldIdentifier("Static field \"" +
                                                 field.getID().getName() +
                                                 "\" in class \"" +
-                                                ik.getName().asString() + "\""));
+                                                                                                       ik.getName().asString() + "\"");
+                                                   LivenessPathElement lp = new LivenessPathElement(null, nfi);
                      rp.put(lp, next);
                      try {
                        markAndTraverse(next);
@@ -144,7 +146,6 @@
                    }
                  });
           }
-                  return false;
         }
       });
 
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,6 +27,8 @@
 import java.util.*;
 import sun.jvm.hotspot.debugger.*;
 import sun.jvm.hotspot.memory.*;
+import sun.jvm.hotspot.oops.Metadata;
+import sun.jvm.hotspot.oops.Klass;
 import sun.jvm.hotspot.runtime.*;
 import sun.jvm.hotspot.types.*;
 
@@ -38,7 +40,7 @@
     states than the ObjectHeap code. */
 
 public class RobustOopDeterminator {
-  private static OopField klassField;
+  private static AddressField klassField;
 
   static {
     VM.registerVMInitializedObserver(new Observer() {
@@ -51,10 +53,11 @@
   private static void initialize(TypeDataBase db) {
     Type type = db.lookupType("oopDesc");
 
-    if (VM.getVM().isCompressedOopsEnabled()) {
-      klassField = type.getNarrowOopField("_metadata._compressed_klass");
+    if (VM.getVM().isCompressedHeadersEnabled()) {
+      // klassField = type.getNarrowOopField("_metadata._compressed_klass");
+      throw new InternalError("unimplemented");
     } else {
-      klassField = type.getOopField("_metadata._klass");
+      klassField = type.getAddressField("_metadata._klass");
     }
   }
 
@@ -66,18 +69,10 @@
       return false;
     }
     try {
-      for (int i = 0; i < 4; ++i) {
-        OopHandle next = klassField.getValue(oop);
-        if (next == null) {
-          return false;
-        }
-        if (next.equals(oop)) {
+      // Try to instantiate the Klass
+      Metadata.instantiateWrapperFor(klassField.getValue(oop));
           return true;
         }
-        oop = next;
-      }
-      return false;
-    }
     catch (AddressException e) {
       return false;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/U1Array.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+public class U1Array extends GenericArray {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    elemType = db.lookupType("u1");
+
+    Type type = db.lookupType("Array<u1>");
+    dataFieldOffset = type.getAddressField("_data").getOffset();
+  }
+
+  private static long dataFieldOffset;
+  protected static Type elemType;
+
+  public U1Array(Address addr) {
+    super(addr, dataFieldOffset);
+  }
+
+  public byte at(int i) {
+    return (byte)getIntegerAt(i);
+  }
+
+  public Type getElemType() {
+    return elemType;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/U2Array.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.utilities;
+
+import java.util.Observable;
+import java.util.Observer;
+
+import sun.jvm.hotspot.debugger.Address;
+import sun.jvm.hotspot.runtime.VM;
+import sun.jvm.hotspot.types.Type;
+import sun.jvm.hotspot.types.TypeDataBase;
+import sun.jvm.hotspot.types.WrongTypeException;
+
+public class U2Array extends GenericArray {
+  static {
+    VM.registerVMInitializedObserver(new Observer() {
+      public void update(Observable o, Object data) {
+        initialize(VM.getVM().getTypeDataBase());
+      }
+    });
+  }
+
+  private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
+    elemType = db.lookupType("u2");
+    Type type = db.lookupType("Array<u2>");
+    dataFieldOffset = type.getAddressField("_data").getOffset();
+  }
+
+  private static long dataFieldOffset;
+  protected static Type elemType;
+
+  public U2Array(Address addr) {
+    super(addr, dataFieldOffset);
+  }
+
+  public short at(int i) {
+    return (short)getIntegerAt(i);
+  }
+
+  public Type getElemType() {
+    return elemType;
+  }
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactory.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactory.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -34,6 +34,7 @@
    public JSJavaField  newJSJavaField(Field f);
    public JSJavaThread newJSJavaThread(JavaThread jt);
    public JSJavaFrame  newJSJavaFrame(JavaVFrame vf);
+   public JSJavaMethod newJSJavaMethod(Method m);
    public JSList       newJSList(List l);
    public JSMap        newJSMap(Map m);
    public JSJavaHeap   newJSJavaHeap();
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFactoryImpl.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -42,8 +42,6 @@
              res = new JSJavaObjArray((ObjArray)oop, this);
          } else if (oop instanceof Instance) {
             res = newJavaInstance((Instance) oop);
-         } else if (oop instanceof Method) {
-            res = new JSJavaMethod((Method) oop, this);
          }
       }
       if (res != null) {
@@ -67,6 +65,14 @@
       return res;
    }
 
+   public JSJavaMethod newJSJavaMethod(Method method) {
+      JSJavaMethod res = new JSJavaMethod(method, this);
+      if (res != null) {
+         om.put(method, new SoftReference(res));
+      }
+      return res;
+   }
+
    public JSJavaField newJSJavaField(Field field) {
       if (field == null) return null;
       return new JSJavaField(field, this);
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFrame.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaFrame.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -119,8 +119,8 @@
         addField("thread", FIELD_THREAD);
     }
 
-    private JSJavaObject getMethod() {
-        return factory.newJSJavaObject(jvf.getMethod());
+    private JSJavaMethod getMethod() {
+        return factory.newJSJavaMethod(jvf.getMethod());
     }
 
     private int getBCI() {
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaInstanceKlass.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -286,6 +286,34 @@
        }
    }
 
+   private Object getFieldValue(Field fld, String name, InstanceKlass oop) {
+       FieldType fd = fld.getFieldType();
+       if (fd.isObject() || fd.isArray()) {
+         return factory.newJSJavaObject(((OopField)fld).getValue(oop));
+       } else if (fd.isByte()) {
+          return new Byte(((ByteField)fld).getValue(oop));
+       } else if (fd.isChar()) {
+          return new String(new char[] { ((CharField)fld).getValue(oop) });
+       } else if (fd.isDouble()) {
+          return new Double(((DoubleField)fld).getValue(oop));
+       } else if (fd.isFloat()) {
+          return new Float(((FloatField)fld).getValue(oop));
+       } else if (fd.isInt()) {
+          return new Integer(((IntField)fld).getValue(oop));
+       } else if (fd.isLong()) {
+          return new Long(((LongField)fld).getValue(oop));
+       } else if (fd.isShort()) {
+          return new Short(((ShortField)fld).getValue(oop));
+       } else if (fd.isBoolean()) {
+          return Boolean.valueOf(((BooleanField)fld).getValue(oop));
+       } else {
+          if (Assert.ASSERTS_ENABLED) {
+             Assert.that(false, "invalid field type for " + name);
+          }
+          return null;
+       }
+   }
+
    private Field findInstanceField(String name) {
       Field fld = (Field) instanceFields.get(name);
       if (fld != null) {
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaMethod.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaMethod.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -29,9 +29,9 @@
 import sun.jvm.hotspot.runtime.*;
 
 /**
- * Wraps a methodOop from the debuggee VM.
+ * Wraps a Method* from the debuggee VM.
  */
-public class JSJavaMethod extends JSJavaObject {
+public class JSJavaMethod extends JSMetadata {
    private static final int FIELD_NAME               = 0;
    private static final int FIELD_SIGNATURE          = 1;
    private static final int FIELD_HOLDER             = 2;
@@ -54,7 +54,7 @@
    }
 
    public final Method getMethod() {
-      return (Method) getOop();
+      return (Method) getMetadata();
    }
 
    public Object get(String name) {
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaScriptEngine.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSJavaScriptEngine.java	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -149,9 +149,9 @@
                 // treat it as address
                 VM vm = VM.getVM();
                 Address addr = vm.getDebugger().parseAddress(name);
-                Oop oop = vm.getObjectHeap().newOop(addr.addOffsetToAsOopHandle(0));
-                if (oop instanceof InstanceKlass) {
-                    ik = (InstanceKlass) oop;
+                Metadata metadata = Metadata.instantiateWrapperFor(addr.addOffsetTo(0));
+                if (metadata instanceof InstanceKlass) {
+                    ik = (InstanceKlass) metadata;
                 } else {
                     return Boolean.FALSE;
                 }
@@ -264,23 +264,28 @@
     */
     public Object mirror(Object[] args) {
         Object o = args[0];
-        if (o != null && o instanceof JSJavaObject) {
+        Object res = UNDEFINED;
+        if (o != null) {
+            if (o instanceof JSJavaObject) {
             Oop oop = ((JSJavaObject)o).getOop();
-            Object res = null;
             try {
-                if (oop instanceof InstanceKlass) {
-                    res = getObjectReader().readClass((InstanceKlass) oop);
-                } else {
                     res = getObjectReader().readObject(oop);
+                } catch (Exception e) {
+                    if (debug) e.printStackTrace(getErrorStream());
+                }
+            } else if (o instanceof JSMetadata) {
+                Metadata metadata = ((JSMetadata)o).getMetadata();
+                try {
+                    if (metadata instanceof InstanceKlass) {
+                        res = getObjectReader().readClass((InstanceKlass) metadata);
                 }
             } catch (Exception e) {
                 if (debug) e.printStackTrace(getErrorStream());
             }
-            return (res != null)? res : UNDEFINED;
-        } else {
-            return UNDEFINED;
         }
     }
+        return res;
+    }
 
     /**
        owner function gets owning thread of given JSJavaObjec, if any, else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/JSMetadata.java	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+package sun.jvm.hotspot.utilities.soql;
+
+import sun.jvm.hotspot.oops.Metadata;
+
+/** This is JavaScript wrapper for a metadata object in debuggee.*/
+
+public abstract class JSMetadata extends DefaultScriptObject {
+   public JSMetadata(Metadata metadata, JSJavaFactory factory) {
+       this.metadata = metadata;
+       this.factory = factory;
+   }
+
+   public final Metadata getMetadata() {
+       return metadata;
+   }
+
+   public boolean equals(Object o) {
+      if (o == null || !(o instanceof JSMetadata)) {
+         return false;
+      }
+
+      JSMetadata other = (JSMetadata) o;
+      return metadata.equals(other.metadata);
+   }
+
+   public int hashCode() {
+      return metadata.hashCode();
+   }
+
+   public String toString() {
+     return "Metadata " + metadata.getAddress().toString();
+   }
+
+   private final Metadata metadata;
+   protected final JSJavaFactory factory;
+}
--- a/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js	Thu Sep 13 13:15:14 2012 -0700
+++ b/agent/src/share/classes/sun/jvm/hotspot/utilities/soql/sa.js	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -234,7 +234,7 @@
       if (typeof(name) == "string") {
          var clazz = sapkg.utilities.SystemDictionaryHelper.findInstanceKlass(name);
          if (clazz) {
-             writeln(clazz.getName().asString() + " @" + clazz.getHandle().toString());
+             writeln(clazz.getName().asString() + " @" + clazz.getAddress().toString());
          } else {
              writeln("class not found: " + name);
          } 
@@ -1096,7 +1096,6 @@
 
 // gc
 vmType2Class["GenCollectedHeap"] = sapkg.memory.GenCollectedHeap;
-vmType2Class["CompactingPermGenGen"] = sapkg.memory.CompactingPermGenGen;
 vmType2Class["DefNewGeneration"] = sapkg.memory.DefNewGeneration;
 vmType2Class["TenuredGeneration"] = sapkg.memory.TenuredGeneration;
 
--- a/make/hotspot_version	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/hotspot_version	Fri Sep 14 21:50:58 2012 -0700
@@ -33,9 +33,9 @@
 # Don't put quotes (fail windows build).
 HOTSPOT_VM_COPYRIGHT=Copyright 2012
 
-HS_MAJOR_VER=24
+HS_MAJOR_VER=25
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=22
+HS_BUILD_NUMBER=01
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=8
--- a/make/solaris/makefiles/fastdebug.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/fastdebug.make	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -37,6 +37,8 @@
 OPT_CFLAGS/SLOWER = -xO2
 
 ifeq ($(COMPILER_REV_NUMERIC), 510)
+# Avoid apparent crash because of corrupted methodHandle in a tail call
+OPT_CFLAGS/simpleThresholdPolicy.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
 # CC 5.10 has bug XXXXX with -xO4
 OPT_CFLAGS/jvmtiClassFileReconstituter.o = $(OPT_CFLAGS/SLOWER)
 endif # COMPILER_REV_NUMERIC == 510
@@ -49,6 +51,8 @@
 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
 # dtrace cannot handle tail call optimization (6672627, 6693876)
 OPT_CFLAGS/jni.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
+# this hangs in iropt now (7113504)
+OPT_CFLAGS/compileBroker.o = $(OPT_CFLAGS/SLOWER)
 endif # COMPILER_NUMERIC_REV >= 509
 
 ifeq ($(COMPILER_REV_NUMERIC), 505)
--- a/make/solaris/makefiles/launcher.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/launcher.make	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2005, 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
@@ -43,7 +43,7 @@
 
 ifeq ($(LINK_INTO),AOUT)
   LAUNCHER.o                 = launcher.o $(JVM_OBJ_FILES)
-  LAUNCHER_MAPFILE           = mapfile_reorder
+  LAUNCHER_MAPFILE           = mapfile_extended
   LFLAGS_LAUNCHER$(LDNOMAP) += $(MAPFLAG:FILENAME=$(LAUNCHER_MAPFILE))
   LIBS_LAUNCHER             += $(LIBS)
 else
--- a/make/solaris/makefiles/mapfile-vers-COMPILER1	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/mapfile-vers-COMPILER1	Fri Sep 14 21:50:58 2012 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -29,9 +29,9 @@
 SUNWprivate_1.1 {
         global:
                 # Dtrace support
-                __1cIUniverseP_methodKlassObj_;
                 __1cJCodeCacheF_heap_;
                 __1cIUniverseO_collectedHeap_;
+                __1cGMethodG__vtbl_;
                 __1cHnmethodG__vtbl_;
                 __1cICodeBlobG__vtbl_;
                 __1cKBufferBlobG__vtbl_;
--- a/make/solaris/makefiles/mapfile-vers-COMPILER2	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/mapfile-vers-COMPILER2	Fri Sep 14 21:50:58 2012 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2003, 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
@@ -29,9 +29,9 @@
 SUNWprivate_1.1 {
         global:
                 # Dtrace support
-                __1cIUniverseP_methodKlassObj_;
                 __1cJCodeCacheF_heap_;
                 __1cIUniverseO_collectedHeap_;
+                __1cGMethodG__vtbl_;
                 __1cHnmethodG__vtbl_;
                 __1cICodeBlobG__vtbl_;
                 __1cKBufferBlobG__vtbl_;
--- a/make/solaris/makefiles/mapfile-vers-TIERED	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/mapfile-vers-TIERED	Fri Sep 14 21:50:58 2012 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# Copyright (c) 2006, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2006, 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
@@ -29,9 +29,9 @@
 SUNWprivate_1.1 {
         global:
                 # Dtrace support
-                __1cIUniverseP_methodKlassObj_;
                 __1cJCodeCacheF_heap_;
                 __1cIUniverseO_collectedHeap_;
+                __1cGMethodG__vtbl_;
                 __1cHnmethodG__vtbl_;
                 __1cICodeBlobG__vtbl_;
                 __1cKBufferBlobG__vtbl_;
--- a/make/solaris/makefiles/product.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/product.make	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1999, 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
@@ -43,6 +43,8 @@
 ifeq ($(COMPILER_REV_NUMERIC), 510)
 # CC 5.10 has bug XXXXX with -xO4
 OPT_CFLAGS/jvmtiClassFileReconstituter.o = $(OPT_CFLAGS/O2)
+# Avoid apparent crash because of corrupted methodHandle in a tail call
+OPT_CFLAGS/simpleThresholdPolicy.o = $(OPT_CFLAGS/DEFAULT) $(OPT_CCFLAGS/NO_TAIL_CALL_OPT)
 endif # COMPILER_REV_NUMERIC == 510
 
 ifeq ($(shell expr $(COMPILER_REV_NUMERIC) \>= 509), 1)
@@ -70,7 +72,6 @@
 # and mustn't be otherwise.
 MAPFILE_DTRACE = $(GAMMADIR)/make/solaris/makefiles/mapfile-vers-$(TYPE)
 
-REORDERFILE = $(GAMMADIR)/make/solaris/makefiles/reorder_$(TYPE)_$(BUILDARCH)
 endif
 
 # If we can create .debuginfo files, then the VM is stripped in vm.make
@@ -79,5 +80,4 @@
 
 G_SUFFIX =
 SYSDEFS += -DPRODUCT
-SYSDEFS += $(REORDER_FLAG)
 VERSION = optimized
--- a/make/solaris/makefiles/profiled.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/profiled.make	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -33,8 +33,6 @@
 
 PROF_AOUT_FLAGS += -pg
 
-SYSDEFS += $(REORDER_FLAG)
-
 # To do a profiled build of the product, such as for generating the
 # reordering file, set PROFILE_PRODUCT.  Otherwise the reordering file will
 # contain references to functions which are not defined in the PRODUCT build.
--- a/make/solaris/makefiles/reorder_COMPILER1_amd64	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5450 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-# Test Null
-text: .text%__cplus_fini_at_exit: CCrti.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cQAgentLibraryList2t6M_v_: arguments.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_AllocTable.o;
-text: .text%__1cFRInfo2t6M_v_: c1_AllocTable.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_AllocTable_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_AllocTable_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CacheLocals.o;
-text: .text%__1cFRInfo2t6M_v_: c1_CacheLocals.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CacheLocals_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_CacheLocals_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Canonicalizer.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Canonicalizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeGenerator.o;
-text: .text%__1cFRInfo2t6M_v_: c1_CodeGenerator.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeGenerator_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_CodeGenerator_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_CodeStubs_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_CodeStubs_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compilation.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Compilation.o;
-text: .text%__1cMelapsedTimer2t6M_v_: c1_Compilation.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compiler.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Compiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_FrameMap.o;
-text: .text%__1cFRInfo2t6M_v_: c1_FrameMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_FrameMap_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_FrameMap_x86.o;
-text: .text%__1cKc1_RegMask2t6M_v_: c1_FrameMap_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_GraphBuilder.o;
-text: .text%__1cFRInfo2t6M_v_: c1_GraphBuilder.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_IR.o;
-text: .text%__1cFRInfo2t6M_v_: c1_IR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Instruction.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Instruction.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_InstructionPrinter.o;
-text: .text%__1cFRInfo2t6M_v_: c1_InstructionPrinter.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Items.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Items.o;
-text: .text%__1cIHintItem2t6MpnJValueType_i_v_: c1_Items.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Items_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Items_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIR.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIR.o;
-text: .text%__1cLLIR_OprFactHillegal6F_pnLLIR_OprDesc__: c1_LIR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIRAssembler.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIRAssembler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIRAssembler_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIRAssembler_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIREmitter.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIREmitter.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIREmitter_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIREmitter_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIROptimizer.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIROptimizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Loops.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Loops.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_MacroAssembler_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_MacroAssembler_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Optimizer.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Optimizer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RInfo.o;
-text: .text%__1cFRInfo2t6M_v_: c1_RInfo.o;
-text: .text%__1cKc1_RegMask2t6M_v_: c1_RInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RInfo_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_RInfo_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RegAlloc.o;
-text: .text%__1cFRInfo2t6M_v_: c1_RegAlloc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_RegAlloc_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_RegAlloc_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Runtime1.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Runtime1.o;
-text: .text%__1cIiEntries2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Runtime1_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_Runtime1_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ScanBlocks.o;
-text: .text%__1cFRInfo2t6M_v_: c1_ScanBlocks.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueMap.o;
-text: .text%__1cFRInfo2t6M_v_: c1_ValueMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueSet.o;
-text: .text%__1cFRInfo2t6M_v_: c1_ValueSet.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_ValueStack.o;
-text: .text%__1cFRInfo2t6M_v_: c1_ValueStack.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeBlob.o;
-text: .text%__1cFRInfo2t6M_v_: codeBlob.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cMelapsedTimer2t6M_v_: compilationPolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cMelapsedTimer2t6M_v_: compileBroker.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compiledIC.o;
-text: .text%__1cFRInfo2t6M_v_: compiledIC.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: deoptimization.o;
-text: .text%__1cFRInfo2t6M_v_: deoptimization.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cMelapsedTimer2t6M_v_: fprofiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: frame.o;
-text: .text%__1cFRInfo2t6M_v_: frame.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: frame_x86.o;
-text: .text%__1cFRInfo2t6M_v_: frame_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cRAlwaysTrueClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_: generateOopMap.o;
-text: .text%__1cMelapsedTimer2t6M_v_: generateOopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter_x86.o;
-text: .text%__1cFRInfo2t6M_v_: interpreter_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: java.o;
-text: .text%__1cFRInfo2t6M_v_: java.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: jvmtiEnvBase.o;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cNGrowableArray4CpnMJvmtiEnvBase__2t6Mii_v_: jvmtiEnvBase.o;
-text: .text%__1cUGenericGrowableArray2t6Mii_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: jvmtiImpl.o;
-text: .text%__1cNGrowableArray4CpnPJvmtiRawMonitor__2t6Mii_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cJMemRegion2t6M_v_: jvmtiTagMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: klassVtable.o;
-text: .text%__1cFRInfo2t6M_v_: klassVtable.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cJTimeStamp2t6M_v_: management.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cJMarkSweepSMarkAndPushClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepRFollowRootClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepSFollowStackClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepUAdjustPointerClosure2t6Mi_v_: markSweep.o;
-text: .text%__1cJMarkSweepOIsAliveClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepQKeepAliveClosure2t6M_v_: markSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: memoryService.o;
-text: .text%__1cNGrowableArray4CpnKMemoryPool__2t6Mii_v_: memoryService.o;
-text: .text%__1cNGrowableArray4CpnNMemoryManager__2t6Mii_v_: memoryService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodOop.o;
-text: .text%__1cFRInfo2t6M_v_: methodOop.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: nativeInst_x86.o;
-text: .text%__1cFRInfo2t6M_v_: nativeInst_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: nmethod.o;
-text: .text%__1cFRInfo2t6M_v_: nmethod.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cQDoNothingClosure2t6M_v_: oopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: os_solaris.o;
-text: .text%__1cFRInfo2t6M_v_: os_solaris.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: os_solaris_x86.o;
-text: .text%__1cFRInfo2t6M_v_: os_solaris_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_: parGCAllocBuffer.o;
-text: .text%__1cRalign_object_size6Fi_i_: parGCAllocBuffer.o;
-text: .text%__1cHoopDescLheader_size6F_i_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
-text: .text%__1cMelapsedTimer2t6M_v_: psAdaptiveSizePolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cMelapsedTimer2t6M_v_: psMarkSweep.o;
-text: .text%__1cTPSAlwaysTrueClosure2t6M_v_: psMarkSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.o;
-text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_: psPromotionLAB.o;
-text: .text%__1cRalign_object_size6Fi_i_: psPromotionLAB.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cMelapsedTimer2t6M_v_: psScavenge.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cQRelocationHolder2t6M_v_: relocInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cJTimeStamp2t6M_v_: runtimeService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: safepoint.o;
-text: .text%__1cFRInfo2t6M_v_: safepoint.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: safepoint_solaris_x86.o;
-text: .text%__1cFRInfo2t6M_v_: safepoint_solaris_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedRuntime.o;
-text: .text%__1cFRInfo2t6M_v_: sharedRuntime.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
-text: .text%__1cRCardTableModRefBSbCpar_chunk_heapword_alignment6F_I_: tenuredGeneration.o;
-text: .text%__1cEMIN24CI_6FTA0_0_: tenuredGeneration.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vframeArray.o;
-text: .text%__1cFRInfo2t6M_v_: vframeArray.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cFRInfo2t6M_v_: vmStructs.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vtableStubs_x86.o;
-text: .text%__1cFRInfo2t6M_v_: vtableStubs_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIROptimizer_x86.o;
-text: .text%__1cFRInfo2t6M_v_: c1_LIROptimizer_x86.o;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cJArgumentsbSparse_java_tool_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cCosGgetenv6Fpkcpci_i_;
-text: .text%__1cJArgumentsWparse_each_vm_init_arg6FpknOJavaVMInitArgs_pnMSysClassPath_pi_i_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_ppkc5i_i_: arguments.o;
-text: .text%__1cJArgumentsMadd_property6Fpkc_i_;
-text: .text%__1cJArgumentsXPropertyList_unique_add6FppnOSystemProperty_pkcpc_v_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cJArgumentsbNparse_java_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsVfinalize_vm_init_args6FpnMSysClassPath_i_i_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
-text: .text%__1cJArgumentsRverify_percentage6FIpkc_i_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_: arguments.o;
-text: .text%__1cJArgumentsbOparse_java_compiler_environment_variable6F_v_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cSCommandLineFlagsExKis_default6FnPCommandLineFlag__i_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cCosXis_server_class_machine6F_i_;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cJTraceTime2t6MpkciipnMoutputStream__v_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosHSolarisRmpss_sanity_check6F_v_;
-text: .text%__1cCosHSolarisOset_mpss_range6FpcII_i_;
-text: .text%__1cCosPuncommit_memory6FpcI_i_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cOisT2_libthread6F_i_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cOresolve_symbol6Fpkc_pC_: os_solaris.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cCosHSolarisSset_signal_handler6Fiii_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cNdefaultStreamMhas_log_file6M_i_;
-text: .text%__1cRis_error_reported6F_i_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cRAllocateTLSOffset6F_v_: threadLS_solaris_x86.o;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cRcheck_basic_types6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cFMutex2t6Mipkci_v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cHMonitor2t6Mipkci_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cUcreate_shared_memory6FI_pc_: perfMemory_solaris.o;
-text: .text%__1cSmmap_create_shared6FI_pc_: perfMemory_solaris.o;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cNget_user_name6Fl_pc_: perfMemory_solaris.o;
-text: .text%__1cQget_user_tmp_dir6Fpkc_pc_: perfMemory_solaris.o;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cWget_sharedmem_filename6Fpkci_pc_: perfMemory_solaris.o;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cTis_directory_secure6Fpkc_i_: perfMemory_solaris.o;
-text: .text%lstat: perfMemory_solaris.o;
-text: .text%__1cPfilename_to_pid6Fpkc_l_: perfMemory_solaris.o;
-text: .text%__1cbAcreate_sharedmem_resources6Fpkc1I_i_: perfMemory_solaris.o;
-text: .text%__1cRmake_user_tmp_dir6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cKJavaThread2t6M_v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cFChunk2t6MI_v_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cNjni_functions6F_pknTJNINativeInterface___;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cGParker2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cWThreadLocalAllocBufferMinitial_size6F_I_;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cMFlatProfilerJis_active6F_i_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cFMutexbClock_without_safepoint_check6M_v_;
-text: .text%__1cFMutexGunlock6M_v_;
-text: .text%__1cGThreadWset_as_starting_thread6M_i_;
-text: .text%__1cCosScreate_main_thread6FpnGThread__i_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: thread.o;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cCosNcommit_memory6FpcI_i_;
-text: .text%__1cCosMguard_memory6FpcI_i_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_II_v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cFMutexElock6M_v_;
-text: .text%__1cFMutexElock6MpnGThread__v_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cMgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cPoldgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_v_;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cCosbCis_thread_cpu_time_supported6F_i_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cKvtune_init6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_iii_v_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii1i_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cLClassLoaderbCupdate_class_path_entry_list6Fpkc_v_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%stat: os_solaris.o;
-text: .text%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
-text: .text%__1cLClassLoaderSget_canonical_path6Fpc1i_i_;
-text: .text%JVM_RawMonitorCreate;
-text: .text%JVM_NativePath;
-text: .text%JVM_RawMonitorEnter;
-text: .text%__1cFMutexMjvm_raw_lock6M_v_;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cFMutexOjvm_raw_unlock6M_v_;
-text: .text%JVM_Open;
-text: .text%JVM_Lseek;
-text: .text%JVM_Close;
-text: .text%__1cDhpiFclose6Fi_i_: jvm.o;
-text: .text%__1cRClassPathZipEntry2t6Mppvpc_v_;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cICodeHeapHreserve6MIII_i_;
-text: .text%__1cLlog2_intptr6Fi_i_: heap.o;
-text: .text%__1cYalign_to_allocation_size6FI_I_: heap.o;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cNReservedSpaceKinitialize6MIIipc_v_;
-text: .text%__1cCosOreserve_memory6FIpc_1_;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cMVirtualSpaceJexpand_by6MI_i_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cCosNcommit_memory6FpcII_i_;
-text: .text%__1cSalign_to_page_size6FI_I_: heap.o;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MII_v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cMCodeHeapPool2t6MpnICodeHeap_pkci_v_;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cKMemoryPool2t6Mpkcn0AIPoolType_IIii_v_;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: thread.o;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cKBufferBlob2n6FII_pv_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MII_v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cKMemoryPoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cKCodeBuffer2t6MpCi_v_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cYVM_Version_StubGeneratorTgenerate_getPsrInfo6M_pC_: vm_version_x86.o;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cJAssemblerFpushl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGpushfd6M_v_;
-text: .text%__1cJAssemblerEpopl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerFpopfd6M_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerFcpuid6M_v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cRAbstractAssemblerHbind_to6MrnFLabel_i_v_;
-text: .text%__1cMDisplacementEbind6MrnFLabel_ipnRAbstractAssembler__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_22nHAddressLScaleFactor_irknQRelocationHolder__v_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cKVM_VersionWget_processor_features6F_v_;
-text: .text%__1cCosMsupports_sse6F_i_;
-text: .text%__1cVcheck_for_sse_support6F_v_: os_solaris_x86.o;
-text: .text%jio_snprintf;
-text: .text%jio_vsnprintf;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_x86.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cJAssemblerEcall6MpCnJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: relocInfo.o;
-text: .text%__1cKRelocationLunpack_data6M_v_: codeBlob.o;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cOMacroAssemblerJincrement6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerKget_thread6MpnMRegisterImpl__v_;
-text: .text%__1cSThreadLocalStorageTpd_getTlsAccessMode6F_n0AQpd_tlsAccessMode__;
-text: .text%__1cJAssemblerFpushl6Mi_v_;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cJAssemblerDjmp6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_x86.o;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEcall6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerGfstp_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6MnHAddress__v_;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_x86.o;
-text: .text%__1cJAssemblerDjmp6MpCnJrelocInfoJrelocType__v_;
-text: .text%__1cNStubGeneratorUgenerate_atomic_xchg6M_pC_: stubGenerator_x86.o;
-text: .text%__1cJAssemblerExchg6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerGpushad6M_v_;
-text: .text%__1cJAssemblerFpopad6M_v_;
-text: .text%__1cNStubGeneratorYgenerate_get_previous_fp6M_pC_: stubGenerator_x86.o;
-text: .text%__1cNStubGeneratorUgenerate_d2i_wrapper6MpC_1_: stubGenerator_x86.o;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cJAssemblerGfnsave6MnHAddress__v_;
-text: .text%__1cJAssemblerFfwait6M_v_;
-text: .text%__1cJAssemblerFfld_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfst_d6MnHAddress__v_;
-text: .text%__1cOMacroAssemblerPempty_FPU_stack6M_v_;
-text: .text%__1cJAssemblerFffree6Mi_v_;
-text: .text%__1cJAssemblerLemit_farith6Miii_v_;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cJAssemblerGfrstor6MnHAddress__v_;
-text: .text%__1cNStubGeneratorUcreate_control_words6M_v_: stubGenerator_x86.o;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cNcarSpace_init6F_v_;
-text: .text%__1cICarSpaceEinit6F_v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cLFileMapInfoKinitialize6M_i_;
-text: .text%__1cLFileMapInfoNfail_continue6MpkcE_v_;
-text: .text%__1cLFileMapInfoFclose6M_v_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cPMarkSweepPolicy2t6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__: collectorPolicy.o;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cPMarkSweepPolicyWinitialize_generations6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyVnumber_of_generations6M_i_: collectorPolicy.o;
-text: .text%__1cXPermanentGenerationSpec2t6MnHPermGenEName_IIIIII_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cQGenCollectedHeap2t6MpnPCollectorPolicy__v_;
-text: .text%__1cKSharedHeap2t6MpnPCollectorPolicy__v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cMSubTasksDone2t6Mi_v_;
-text: .text%__1cMSubTasksDoneFclear6M_v_;
-text: .text%__1cMSubTasksDoneFvalid6M_i_;
-text: .text%__1cQGenCollectedHeapKinitialize6M_i_;
-text: .text%__1cPCollectorPolicyLgenerations6M_ppnOGenerationSpec__: collectorPolicy.o;
-text: .text%__1cPCollectorPolicyUpermanent_generation6M_pnXPermanentGenerationSpec__: collectorPolicy.o;
-text: .text%__1cXPermanentGenerationSpecFalign6MI_v_;
-text: .text%__1cQGenCollectedHeapIallocate6MIpnXPermanentGenerationSpec_pIpipnNReservedSpace__pc_;
-text: .text%__1cOGenerationSpecRn_covered_regions6kM_i_: collectorPolicy.o;
-text: .text%__1cNReservedSpace2t6MIIipc_v_;
-text: .text%__1cPCollectorPolicyOcreate_rem_set6MnJMemRegion_i_pnJGenRemSet__;
-text: .text%__1cbCTwoGenerationCollectorPolicyQbarrier_set_name6M_nKBarrierSetEName__: collectorPolicy.o;
-text: .text%__1cLCardTableRS2t6MnJMemRegion_i_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cKSharedHeapPset_barrier_set6MpnKBarrierSet__v_;
-text: .text%__1cNReservedSpaceKfirst_part6MIii_0_;
-text: .text%__1cNReservedSpace2t6MpcI_v_;
-text: .text%__1cOGenerationSpecEinit6MnNReservedSpace_ipnJGenRemSet__pnKGeneration__;
-text: .text%__1cQDefNewGeneration2t6MnNReservedSpace_Iipkc_v_;
-text: .text%__1cKGeneration2t6MnNReservedSpace_Ii_v_;
-text: .text%__1cIageTable2t6Mi_v_;
-text: .text%__1cIageTableFclear6M_v_;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cWSequentialSubTasksDoneFclear6M_v_;
-text: .text%__1cSGenerationCounters2t6MpkciipnMVirtualSpace__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cOCSpaceCounters2t6MpkciIpnPContiguousSpace_pnSGenerationCounters__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cZContiguousSpaceUsedHelperLtake_sample6M_x_: cSpaceCounters.o;
-text: .text%__1cPContiguousSpaceEused6kM_I_: space.o;
-text: .text%__1cQDefNewGenerationYcompute_space_boundaries6MI_v_;
-text: .text%__1cQCompactibleSpaceKinitialize6MnJMemRegion_i_v_;
-text: .text%__1cFSpaceKinitialize6MnJMemRegion_i_v_;
-text: .text%__1cFSpaceKset_bottom6MpnIHeapWord__v_: space.o;
-text: .text%__1cJEdenSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cJEdenSpaceFclear6M_v_;
-text: .text%__1cPContiguousSpaceFclear6M_v_;
-text: .text%__1cFSpaceFclear6M_v_;
-text: .text%__1cFSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cQDefNewGenerationPupdate_counters6M_v_;
-text: .text%__1cSGenerationCountersKupdate_all6M_v_: generationCounters.o;
-text: .text%__1cNReservedSpaceJlast_part6MI_0_;
-text: .text%__1cRTenuredGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cOCardGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cWBlockOffsetSharedArray2t6MnJMemRegion_I_v_;
-text: .text%__1cWBlockOffsetSharedArrayGresize6MI_v_;
-text: .text%__1cNReservedSpaceSpage_align_size_up6FI_I_;
-text: .text%__1cLCardTableRSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cLCardTableRSKis_aligned6MpnIHeapWord__i_: cardTableRS.o;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cWOffsetTableContigSpace2t6MpnWBlockOffsetSharedArray_nJMemRegion__v_;
-text: .text%__1cQBlockOffsetArray2t6MpnWBlockOffsetSharedArray_nJMemRegion_i_v_;
-text: .text%__1cWOffsetTableContigSpaceKset_bottom6MpnIHeapWord__v_;
-text: .text%__1cQBlockOffsetArrayGresize6MI_v_: blockOffsetTable.o;
-text: .text%__1cWOffsetTableContigSpaceHset_end6MpnIHeapWord__v_;
-text: .text%__1cWOffsetTableContigSpaceFclear6M_v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cUGenericGrowableArrayEgrow6Mi_v_;
-text: .text%__1cXPermanentGenerationSpecEinit6MnNReservedSpace_IpnJGenRemSet__pnHPermGen__;
-text: .text%__1cRCompactingPermGen2t6MnNReservedSpace_1IpnJGenRemSet_pnXPermanentGenerationSpec__v_;
-text: .text%__1cUCompactingPermGenGen2t6MnNReservedSpace_1IipnJGenRemSet_pnPContiguousSpace_pnXPermanentGenerationSpec__v_;
-text: .text%__1cUCompactingPermGenGenbFinitialize_performance_counters6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationIcapacity6kM_I_;
-text: .text%__1cPCollectorPolicybFis_concurrent_mark_sweep_policy6M_i_: collectorPolicy.o;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cQGenCollectedHeapNtlab_capacity6kM_I_;
-text: .text%__1cQDefNewGenerationYsupports_tlab_allocation6kM_i_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationNtlab_capacity6kM_I_: defNewGeneration.o;
-text: .text%__1cKGenerationYsupports_tlab_allocation6kM_i_: tenuredGeneration.o;
-text: .text%__1cWThreadLocalAllocBufferImax_size6F_I_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: universe.o;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cRInvocationCounterMreinitialize6Fi_v_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cICodeHeapJexpand_by6MI_i_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cLCodeletMark2t6MrpnZInterpreterMacroAssembler_pkcinJBytecodesECode__v_: interpreter.o;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_: interpreter.o;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_: interpreter.o;
-text: .text%__1cSInterpreterCodeletKinitialize6MpkcinJBytecodesECode__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorTgenerate_error_exit6Mpkc_pC_;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cJAssemblerDnop6M_v_;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
-text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cOMacroAssemblerSload_unsigned_word6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cJAssemblerGmovzxw6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cJAssemblerGmovzxb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_base6MnITosState_ppCi_v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%__1cJAssemblerEincl6MpnMRegisterImpl__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cOMacroAssemblerOcall_VM_helper6MpnMRegisterImpl_pCii_v_;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_pCnJrelocInfoJrelocType__v_;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGmovsxb6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGmovsxw6MpnMRegisterImpl_2_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
-text: .text%__1cTAbstractInterpreterRTosState_as_index6FnITosState__i_;
-text: .text%__1cTAbstractInterpreterMreturn_entry6FnITosState_i_pC_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_continuation_for6MnITosState__pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_safept_entry_for6MnITosState_pC_2_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cZInterpreterMacroAssemblerRremove_activation6MnITosState_pnMRegisterImpl_iii_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cJAssemblerHcmpxchg6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cHAddress2t6MinJrelocInfoJrelocType__v_;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
-text: .text%__1cUInterpreterGeneratorXcheck_for_compiled_code6MrnFLabel__v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: interp_masm_x86.o;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MpC_v_;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cUInterpreterGeneratorbAgenerate_run_compiled_code6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerNsuper_call_VM6MpnMRegisterImpl_2pC22_v_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cLlog2_intptr6Fi_i_: interpreter_x86.o;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cJAssemblerGmovsxb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cOMacroAssemblerQload_signed_word6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cJAssemblerGmovsxw6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cOMacroAssemblerGsincos6Miii_v_;
-text: .text%__1cJAssemblerFfld_s6Mi_v_;
-text: .text%__1cJAssemblerEfabs6M_v_;
-text: .text%__1cOMacroAssemblerEfcmp6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerHfucomip6Mi_v_;
-text: .text%__1cOMacroAssemblerEfpop6M_v_;
-text: .text%__1cJAssemblerHfincstp6M_v_;
-text: .text%__1cJAssemblerEfsin6M_v_;
-text: .text%__1cJAssemblerEfcos6M_v_;
-text: .text%__1cJAssemblerFfsqrt6M_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cJAssemblerGmembar6M_v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MnITosState__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbEset_entry_points_for_all_bytes6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorQset_entry_points6MnJBytecodesECode__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorWset_short_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVset_vtos_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cJAssemblerEfldz6M_v_;
-text: .text%__1cJAssemblerEfld16M_v_;
-text: .text%__1cJAssemblerFfaddp6Mi_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cJAssemblerFbswap6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
-text: .text%__1cJAssemblerEmovb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cJAssemblerFfld_s6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorUset_wide_entry_point6MpnITemplate_rpC_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerZneeds_explicit_null_check6Fi_i_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cJAssemblerFpushl6MnHAddress__v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerGfadd_s6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerGf2ieee6M_v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerGfadd_d6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerGd2ieee6M_v_;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerHfsubr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cOMacroAssemblerElmul6Mii_v_;
-text: .text%__1cJAssemblerEmull6MnHAddress__v_;
-text: .text%__1cJAssemblerEmull6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGfmul_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfmul_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfld_x6MnHAddress__v_;
-text: .text%__1cJAssemblerFfmulp6Mi_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cJAssemblerHfdivr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfdivr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerGfdivrp6Mi_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cOMacroAssemblerFfremr6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerIsave_eax6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFfprem6M_v_;
-text: .text%__1cJAssemblerJfnstsw_ax6M_v_;
-text: .text%__1cJAssemblerEsahf6M_v_;
-text: .text%__1cOMacroAssemblerLrestore_eax6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEfxch6Mi_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cJAssemblerEfchs6M_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFshldl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_2i_v_;
-text: .text%__1cJAssemblerFshrdl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOMacroAssemblerLextend_sign6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGfild_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfild_d6MnHAddress__v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cOMacroAssemblerIlcmp2int6MpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
-text: .text%__1cOMacroAssemblerIfcmp2int6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cFj_not6FnNTemplateTableJCondition__nJAssemblerJCondition__: templateTable_x86.o;
-text: .text%__1cNTemplateTableGbranch6Fii_v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_v_;
-text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerHfistp_d6MnHAddress__v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNTemplateTableQvolatile_barrier6F_v_;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableOprepare_invoke6FpnMRegisterImpl_2inJBytecodesECode__v_;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_v_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorRset_unimplemented6Mi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cQGenCollectedHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQGenCollectedHeapIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cOMacroAssemblerJdecrement6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbCset_safepoints_for_all_bytes6M_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: klass.o;
-text: .text%__1cKSharedHeapWpermanent_mem_allocate6MI_pnIHeapWord__: genCollectedHeap.o;
-text: .text%__1cRCompactingPermGenMmem_allocate6MI_pnIHeapWord__;
-text: .text%__1cbCOneContigSpaceCardGenerationIallocate6MIii_pnIHeapWord__: compactingPermGenGen.o;
-text: .text%__1cWOffsetTableContigSpaceIallocate6MI_pnIHeapWord__: space.o;
-text: .text%__1cPContiguousSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cbBBlockOffsetArrayContigSpaceLalloc_block6MpnIHeapWord_2_v_: blockOffsetTable.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: klass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: klass.o;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__: cardTableModRefBS.o;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: klassKlass.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: objArrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: instanceKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cbBBlockOffsetArrayContigSpaceQalloc_block_work6MpnIHeapWord_2_v_;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: typeArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_: symbolTable.o;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: symbolKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: symbolKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: symbolKlass.o;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cOtypeArrayKlassMcreate_klass6FnJBasicType_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: typeArrayKlass.o;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cLlog2_intptr6Fi_i_: typeArrayKlass.o;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: cpCacheKlass.o;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlass.o;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlass.o;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: objArrayKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cLlog2_intptr6Fi_i_: objArrayKlassKlass.o;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: typeArrayKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: typeArrayKlass.o;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: oopFactory.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: oopFactory.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: oopFactory.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: dictionary.o;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: placeholders.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: loaderConstraints.o;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: systemDictionary.o;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cNget_next_hash6F_i_: synchronizer.o;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQPlaceholderTableJnew_entry6MipnNsymbolOopDesc_pnHoopDesc__pnQPlaceholderEntry__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cFVTuneQstart_class_load6F_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcI_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cPClassFileParserOparseClassFile6MnMsymbolHandle_nGHandle_2r1pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cIVerifierRshould_verify_for6FpnHoopDesc__i_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cIVerifierQrelax_verify_for6FpnHoopDesc__i_;
-text: .text%__1cVjava_lang_ClassLoaderRis_trusted_loader6FpnHoopDesc__i_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserOcheck_property6MipkcipnGThread__v_;
-text: .text%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: constantPoolKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: constantPoolKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: constantPoolKlass.o;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cPClassFileParserbFparse_constant_pool_class_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbJparse_constant_pool_methodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbGparse_constant_pool_string_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbHparse_constant_pool_integer_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cPClassFileParserbLparse_constant_pool_nameandtype_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescSklass_ref_index_at6Mi_i_;
-text: .text%__1cTconstantPoolOopDescbAname_and_type_ref_index_at6Mi_i_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cPClassFileParserQparse_interfaces6MnSconstantPoolHandle_nGHandle_2pnGThread__nOobjArrayHandle__;
-text: .text%__1cPClassFileParserMparse_fields6MnSconstantPoolHandle_ipnUFieldAllocationCount_pnOobjArrayHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cPclear_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cPClassFileParserNparse_methods6MnSconstantPoolHandle_ipnLAccessFlags_ppnPobjArrayOopDesc_66pnGThread__nOobjArrayHandle__;
-text: .text%__1cPClassFileParserMparse_method6MnSconstantPoolHandle_ipnLAccessFlags_pnPtypeArrayHandle_55pnGThread__nMmethodHandle__;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbDverify_legal_method_modifiers6MiinMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserWparse_linenumber_table6MIIpipnGThread__pC_;
-text: .text%__1cbFCompressedLineNumberWriteStream2t6Mi_v_;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cQCompressedStream2t6MpCi_v_;
-text: .text%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: methodOop.o;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cKoopFactoryPnew_constMethod6FiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: constMethodKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: constMethodKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: constMethodKlass.o;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: methodKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: methodKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: methodKlass.o;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: frame.o;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cXcopy_u2_with_conversion6FpH0i_v_: classFileParser.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: frame.o;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: frame.o;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNmethodOopDescMsort_methods6FpnPobjArrayOopDesc_222_v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cLklassVtablebKcompute_vtable_size_and_num_mirandas6Fri1pnMklassOopDesc_pnPobjArrayOopDesc_nLAccessFlags_pnHoopDesc_pnNsymbolOopDesc_5_v_;
-text: .text%__1cLklassVtableWneeds_new_vtable_entry6FpnNmethodOopDesc_pnMklassOopDesc_pnHoopDesc_pnNsymbolOopDesc_nLAccessFlags__i_;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassXallocate_instance_klass6MiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: symbolKlass.o;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserNfill_oop_maps6MnTinstanceKlassHandle_ii_v_;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__I_;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceKlass.o;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_: classLoader.o;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcI_pnLPackageInfo__: classLoader.o;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cFVTuneOend_class_load6F_v_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: dictionary.o;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cPClassFileParserbIparse_constant_pool_fieldref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbSparse_constant_pool_interfacemethodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_long_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_modifiers6MiipnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserWparse_field_attributes6MnSconstantPoolHandle_iHpHpi2pnPtypeArrayHandle_pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cJchar2type6Fc_nJBasicType__: fieldType.o;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: frame.o;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: frame.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: frame.o;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: frame.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: frame.o;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cLklassVtableKis_miranda6FpnNmethodOopDesc_pnPobjArrayOopDesc_pnMklassOopDesc__i_;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cKSharedHeapYpermanent_object_iterate6MpnNObjectClosure__v_: genCollectedHeap.o;
-text: .text%__1cHPermGenOobject_iterate6MpnNObjectClosure__v_: permGen.o;
-text: .text%__1cRCompactingPermGenGas_gen6kM_pnKGeneration__: permGen.o;
-text: .text%__1cbCOneContigSpaceCardGenerationOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceTobject_iterate_from6MnJWaterMark_pnNObjectClosure__v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: klassKlass.o;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: instanceKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: instanceKlass.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: klassKlass.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: arrayKlassKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: objArrayKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodKlass.o;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: instanceKlass.o;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceRefKlass.o;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceRefKlass.o;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
-text: .text%__1cPClassFileParserbFparse_constant_pool_float_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: frame.o;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: frame.o;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlass.o;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cPClassFileParserbGparse_constant_pool_double_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cVverificationType_init6F_v_;
-text: .text%__1cQVerificationTypeKinitialize6F_v_;
-text: .text%__1cOcompiler1_init6F_v_;
-text: .text%__1cKSharedInfoKset_stack06Fi_v_;
-text: .text%__1cKSharedInfoLset_regName6F_v_;
-text: .text%__1cIRegAllocYinit_register_allocation6F_v_;
-text: .text%__1cIFrameMapEinit6F_v_;
-text: .text%__1cKc1_RegMaskKinit_masks6Fi_v_;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_FrameMap_x86.o;
-text: .text%__1cNc1_AllocTableLinit_tables6F_v_;
-text: .text%__1cIFrameMapOfirst_register6F_pnMRegisterImpl__;
-text: .text%__1cIFrameMapLcpu_reg2rnr6FpnMRegisterImpl__i_;
-text: .text%__1cIFrameMapLcpu_rnr2reg6Fi_pnMRegisterImpl__;
-text: .text%__1cIRuntime1Kinitialize6F_v_;
-text: .text%__1cKCodeBufferRinsts_memory_size6Fi_i_;
-text: .text%__1cKCodeBufferQlocs_memory_size6Fi_i_;
-text: .text%__1cIRuntime1Ninitialize_pd6F_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cKCodeBuffer2t6MiiiiiipnKBufferBlob_pnJrelocInfo_pnORelocateBuffer_ipnLOopRecorder_pkcii_v_;
-text: .text%__1cKCodeBufferQalloc_relocation6MI_v_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cJAssemblerEsubl6MnHAddress_i_v_;
-text: .text%__1cTsave_live_registers6FpnOMacroAssembler_i_pnGOopMap__: c1_Runtime1_x86.o;
-text: .text%__1cJAssemblerGfldenv6MnHAddress__v_;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cGOopMapQset_callee_saved6MnHOptoRegEName_ii2_v_;
-text: .text%__1cGOopMapHset_xxx6MnHOptoRegEName_nLOopMapValueJoop_types_ii2_v_;
-text: .text%__1cGOopMapbEmap_compiler_reg_to_oopmap_reg6MnHOptoRegEName_ii_nFVMRegEName__;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: oopMap.o;
-text: .text%__1cIFrameMapRfpu_stack_regname6Fi_nHOptoRegEName__;
-text: .text%__1cKRelocationJpack_data6M_i_: codeBlob.o;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MiipnGOopMap__v_;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEdecl6MnHAddress__v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cSDeoptimizationBlob2n6FII_pv_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cICodeBlob2t6MpkcpnKCodeBuffer_iiipnJOopMapSet_i_v_;
-text: .text%__1cKCodeBufferPcopy_relocation6MpnICodeBlob__v_;
-text: .text%__1cNRelocIteratorMcreate_index6FpnKCodeBuffer_pnJrelocInfo_4_4_;
-text: .text%__1cKCodeBufferJcopy_code6MpnICodeBlob__v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cICodeBlobWfix_relocation_at_move6Mi_v_;
-text: .text%__1cNRelocIteratorKinitialize6MipnICodeBlob_pC3_v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: relocInfo.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBlob.o;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cOCallRelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cOCallRelocationFvalue6M_pC_: codeBlob.o;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
-text: .text%__1cKNativeCallLdestination6kM_pC_;
-text: .text%__1cOCallRelocationPset_destination6MpCi_v_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCi_v_;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: relocInfo.o;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cIRuntime1Rgenerate_blob_for6Fn0AGStubID__v_;
-text: .text%__1cIRuntime1Pnew_code_buffer6F_pnKCodeBuffer__;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cNStubAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cIRuntime1Rgenerate_code_for6Fn0AGStubID_pnNStubAssembler_pi_pnJOopMapSet__;
-text: .text%__1cIRuntime1Iname_for6Fn0AGStubID__pkc_;
-text: .text%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
-text: .text%__1cLRuntimeStub2n6FII_pv_;
-text: .text%__1cLRuntimeStub2t6MpkcpnKCodeBuffer_iipnJOopMapSet_i_v_;
-text: .text%__1cJStubFrame2t6MpnNStubAssembler_pkci_v_;
-text: .text%__1cNStubAssemblerIset_info6Mpkci_v_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC2_i_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pCi_i_;
-text: .text%__1cJStubFrame2T6M_v_;
-text: .text%__1cIRuntime1Ygenerate_exception_throw6FpnNStubAssembler_pCpnMRegisterImpl__pnJOopMapSet__;
-text: .text%__1cOMacroAssemblerLtlab_refill6MrnFLabel_22_v_;
-text: .text%__1cLlog2_intptr6Fi_i_: assembler_x86.o;
-text: .text%__1cOMacroAssemblerNeden_allocate6MpnMRegisterImpl_2i2rnFLabel__v_;
-text: .text%__1cOMacroAssemblerLverify_tlab6M_v_;
-text: .text%__1cLlog2_intptr6Fi_i_: c1_Runtime1_x86.o;
-text: .text%__1cOMacroAssemblerNtlab_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
-text: .text%__1cRC1_MacroAssemblerRinitialize_object6MpnMRegisterImpl_22i22_v_;
-text: .text%__1cRC1_MacroAssemblerRinitialize_header6MpnMRegisterImpl_22_v_;
-text: .text%__1cRC1_MacroAssemblerPinitialize_body6MpnMRegisterImpl_2i2_v_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC22_i_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC222_i_;
-text: .text%__1cIRuntime1Iblob_for6Fn0AGStubID__pnICodeBlob__;
-text: .text%__1cJStubFrame2t6MpnNStubAssembler_pkcipnMRegisterImpl_6_v_;
-text: .text%__1cJStubFrame2t6MpnNStubAssembler_pkcipnMRegisterImpl__v_;
-text: .text%__1cIiEntries2t6Miiii_v_;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cIRuntime1Rgenerate_patching6FpnNStubAssembler_pC_pnJOopMapSet__;
-text: .text%__1cWrestore_live_registers6FpnOMacroAssembler__v_: c1_Runtime1_x86.o;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNSafepointBlob2n6FII_pv_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cJAssemblerFfldcw6MnHAddress__v_;
-text: .text%__1cJAssemblerGfnstcw6MnHAddress__v_;
-text: .text%__1cJAssemblerHfcomp_d6MnHAddress__v_;
-text: .text%__1cIiEntriesIset_base6MpC_v_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOracleRparse_from_string6Fpkc_v_;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cHcc_file6F_pkc_: compilerOracle.o;
-text: .text%__1cXonStackReplacement_init6F_v_;
-text: .text%__1cSOnStackReplacementKinitialize6F_v_;
-text: .text%__1cUGenericGrowableArrayPraw_at_put_grow6MipknEGrET_3_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cSuniverse_post_init6F_v_;
-text: .text%__1cIUniverseWreinitialize_vtable_of6FpnFKlass_pnGThread__v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlass.o;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: objArrayKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlass.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: typeArrayKlass.o;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceRefKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceRefKlass.o;
-text: .text%__1cIUniverseUreinitialize_itables6F_v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cbBinitialize_itable_for_klass6FpnMklassOopDesc__v_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__v_;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6FnTinstanceKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlass.o;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: instanceKlass.o;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapVunsafe_max_tlab_alloc6kM_I_;
-text: .text%__1cQDefNewGenerationVunsafe_max_tlab_alloc6kM_I_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cPContiguousSpaceEfree6kM_I_: space.o;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cWThreadLocalAllocBufferFreset6M_v_;
-text: .text%__1cQGenCollectedHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapMmem_allocate6MIii_pnIHeapWord__;
-text: .text%__1cbCTwoGenerationCollectorPolicyRmem_allocate_work6MIii_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapEheap6F_p0_;
-text: .text%__1cQDefNewGenerationPshould_allocate6MIii_i_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationMpar_allocate6MIii_pnIHeapWord__: defNewGeneration.o;
-text: .text%__1cJEdenSpaceMpar_allocate6MI_pnIHeapWord__;
-text: .text%__1cPContiguousSpaceRpar_allocate_impl6MIkpnIHeapWord__2_: space.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: collectedHeap.o;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQGenCollectedHeapVlarge_typearray_limit6M_I_;
-text: .text%__1cbCTwoGenerationCollectorPolicyYis_two_generation_policy6M_i_: collectorPolicy.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyVlarge_typearray_limit6M_I_;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: typeArrayKlass.o;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_ipnGThread__pnHoopDesc__;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassLverify_code6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cIRewriterScompute_index_maps6FnSconstantPoolHandle_rpnIintArray_rpnIintStack__v_;
-text: .text%__1cIintArray2t6Mki1_v_: rewriter.o;
-text: .text%__1cIRewriterXnew_constant_pool_cache6FrnIintArray_pnGThread__nXconstantPoolCacheHandle__;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: cpCacheKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: cpCacheKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: cpCacheKlass.o;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cWConstantPoolCacheEntryRset_initial_state6Mi_v_;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
-text: .text%__1cIRuntime1Mientries_for6FnMmethodHandle__pnIiEntries__;
-text: .text%__1cNmethodOopDescLis_accessor6kM_i_;
-text: .text%__1cNmethodOopDescMintrinsic_id6kM_n0ALIntrinsicId__;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
-text: .text%__1cNSharedRuntimeUlookup_function_DD_D6FrpFpnHJNIEnv__pnH_jclass_dd_dpkc_v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cMoutputStreamMdo_vsnprintf6FpcIpkcpvirI_3_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc__v_: nativeLookup.o;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc_ii_v_: nativeLookup.o;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cMNativeLookupMlookup_style6FnMmethodHandle_pcpkciiripnGThread__pC_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cVlookup_special_native6Fpc_pC_: nativeLookup.o;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cQGenCollectedHeapIcapacity6kM_I_;
-text: .text%__1cQDefNewGenerationIcapacity6kM_I_;
-text: .text%__1cQGenCollectedHeapEused6kM_I_;
-text: .text%__1cQDefNewGenerationEused6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationEused6kM_I_;
-text: .text%__1cQGenCollectedHeapPpost_initialize6M_v_;
-text: .text%__1cQGenCollectedHeapTref_processing_init6M_v_;
-text: .text%__1cKSharedHeapTref_processing_init6M_v_;
-text: .text%__1cKGenerationSref_processor_init6M_v_;
-text: .text%__1cKGenerationYrefs_discovery_is_atomic6kM_i_: compactingPermGenGen.o;
-text: .text%__1cKGenerationUrefs_discovery_is_mt6kM_i_: compactingPermGenGen.o;
-text: .text%__1cSReferenceProcessor2t6MnJMemRegion_iii_v_;
-text: .text%__1cKGenerationYrefs_discovery_is_atomic6kM_i_: defNewGeneration.o;
-text: .text%__1cKGenerationUrefs_discovery_is_mt6kM_i_: defNewGeneration.o;
-text: .text%__1cKGenerationYrefs_discovery_is_atomic6kM_i_: tenuredGeneration.o;
-text: .text%__1cKGenerationUrefs_discovery_is_mt6kM_i_: tenuredGeneration.o;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cQGenCollectedHeapEkind6M_nNCollectedHeapEName__: genCollectedHeap.o;
-text: .text%__1cNMemoryServicebBadd_gen_collected_heap_info6FpnQGenCollectedHeap__v_;
-text: .text%__1cPMarkSweepPolicyUis_mark_sweep_policy6M_i_: collectorPolicy.o;
-text: .text%__1cNMemoryManagerXget_copy_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerWget_msc_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryServicebAadd_generation_memory_pool6FpnKGeneration_pnNMemoryManager_4_v_;
-text: .text%__1cQDefNewGenerationEkind6M_nKGenerationEName__: defNewGeneration.o;
-text: .text%__1cNMemoryServiceJadd_space6FpnPContiguousSpace_pkciIi_pnKMemoryPool__;
-text: .text%__1cTContiguousSpacePool2t6MpnPContiguousSpace_pkcnKMemoryPoolIPoolType_Ii_v_;
-text: .text%__1cNMemoryServiceTadd_survivor_spaces6FpnQDefNewGeneration_pkciIi_pnKMemoryPool__;
-text: .text%__1cbBSurvivorContiguousSpacePool2t6MpnQDefNewGeneration_pkcnKMemoryPoolIPoolType_Ii_v_;
-text: .text%__1cRTenuredGenerationEkind6M_nKGenerationEName__: tenuredGeneration.o;
-text: .text%__1cNMemoryServiceHadd_gen6FpnKGeneration_pkcii_pnKMemoryPool__;
-text: .text%__1cOGenerationPool2t6MpnKGeneration_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cKGenerationMmax_capacity6kM_I_;
-text: .text%__1cNMemoryServicebGadd_compact_perm_gen_memory_pool6FpnUCompactingPermGenGen_pnNMemoryManager__v_;
-text: .text%__1cQGenCollectedHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_: stubGenerator_x86.o;
-text: .text%__1cNStubGeneratorTgenerate_verify_oop6M_pC_: stubGenerator_x86.o;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cHThreadsDadd6FpnKJavaThread_i_v_;
-text: .text%__1cNThreadServiceKadd_thread6FpnKJavaThread_i_v_;
-text: .text%__1cGThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cGThreadVis_jvmti_agent_thread6kM_i_: thread.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: thread.o;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cUGenericGrowableArrayUclear_and_deallocate6M_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cCosNcreate_thread6FpnGThread_n0AKThreadType_I_i_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cHMonitorEwait6Mil_i_;
-text: .text%_start: os_solaris.o;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cVscale_to_lwp_priority6Fiii_i_: os_solaris.o;
-text: .text%__1cIVMThreadMis_VM_thread6kM_i_: vmThread.o;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cHMonitorGnotify6M_i_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cQVMOperationQdDueueLqueue_empty6Mi_i_;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cRCompilationPolicyNcanBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
-text: .text%__1cRruntime_type_from6FpnJJavaValue__nJBasicType__: javaCalls.o;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__i_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pi_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cKJavaThreadPcook_last_frame6MnFframe__1_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_at_put6MipnMklassOopDesc__v_: constantPoolOop.o;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
-text: .text%__1cMLinkResolverbElinktime_resolve_static_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_nMmethodHandle_pnGThread__v_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2ipnGThread__v_;
-text: .text%__1cSInterpreterRuntimeLcache_entry6FpnKJavaThread__pnWConstantPoolCacheEntry__: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryLis_resolved6kMnJBytecodesECode__i_: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: cpCacheOop.o;
-text: .text%__1cNmethodOopDescPis_final_method6kM_i_;
-text: .text%__1cWConstantPoolCacheEntryIas_flags6MnITosState_iiiii_i_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: interpreterRuntime.o;
-text: .text%__1cNGrowableArray4CX_Efind6kMkX_i_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cPregister_native6FnLKlassHandle_nMsymbolHandle_1pCpnGThread__i_: jni.o;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_ipnGThread__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_iipnGThread__v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryLis_resolved6kMnJBytecodesECode__i_: cpCacheOop.o;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_: cpCacheOop.o;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_: symbolKlass.o;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringMbasic_create6FpnQtypeArrayOopDesc_ipnGThread__nGHandle__;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
-text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_virtual_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cNFingerprinterJdo_object6Mii_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorDbox6Mii_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_: methodKlass.o;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
-text: .text%__1cLRegisterMapFclear6Mpi_v_;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
-text: .text%__1cFframeUis_interpreted_frame6kM_i_;
-text: .text%__1cSvframeStreamCommonbBfill_from_interpreter_frame6M_v_;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cSvframeStreamCommonbHskip_method_invoke_and_aux_frames6M_v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cFframeGsender6kMpnLRegisterMap_pnICodeBlob__0_;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cNSharedRuntimeDf2i6Ff_i_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesLmake_global6FnGHandle_i_pnI_jobject__;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cKutf8_write6FpCH_0_: utf8.o;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNFingerprinterGdo_int6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEmove6Mii_v_;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_: typeArrayKlass.o;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: codeBlob.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: codeBlob.o;
-text: .text%__1cFframeOis_first_frame6kM_i_;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
-text: .text%JVM_StartThread;
-text: .text%__1cQjava_lang_ThreadMis_stillborn6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cQjava_lang_ThreadJis_daemon6FpnHoopDesc__i_;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceRefKlass.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cNFingerprinterHdo_long6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_: interpreterRuntime.o;
-text: .text%JVM_MonitorWait;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cSObjectSynchronizerHinflate6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNObjectMonitorEwait6MxipnGThread__v_;
-text: .text%__1cGThreadOis_interrupted6Fp0i_i_;
-text: .text%__1cCosOis_interrupted6FpnGThread_i_i_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cCosHSolarisFEventEpark6M_v_: objectMonitor_solaris.o;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cNget_method_id6FpnHJNIEnv__pnH_jclass_pkc5ipnGThread__pnK_jmethodID__: jni.o;
-text: .text%__1cPjava_lang_ClassMis_primitive6FpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cMjniIdSupportNto_jmethod_id6FpnNmethodOopDesc__pnK_jmethodID__;
-text: .text%__1cMjniIdPrivateGid_for6FnTinstanceKlassHandle_i_i_: jniId.o;
-text: .text%__1cIjniIdMapGcreate6FnTinstanceKlassHandle__p0_;
-text: .text%__1cIjniIdMapRcompute_index_cnt6FnTinstanceKlassHandle__i_;
-text: .text%__1cIjniIdMap2t6MpnMklassOopDesc_i_v_;
-text: .text%__1cLjniIdBucket2t6MpnIjniIdMap_p0_v_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cMjniIdSupportNto_method_oop6FpnK_jmethodID__pnNmethodOopDesc__;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cbAjni_check_async_exceptions6FpnKJavaThread__v_: jni.o;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%JVM_InitProperties;
-text: .text%__1cMset_property6FnGHandle_pkc2pnGThread__v_: jvm.o;
-text: .text%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: sharedHeap.o;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cJFieldTypeYis_valid_array_signature6FpnNsymbolOopDesc__i_;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%JVM_IsArrayClass;
-text: .text%JVM_GetComponentType;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%JVM_GetClassLoader;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cOJavaAssertionsHenabled6Fpkci_i_;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__: javaAssertions.o;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cKSharedHeapPis_in_permanent6kMpkv_i_: genCollectedHeap.o;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
-text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%JVM_GetCallerClass;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cNFingerprinterHdo_bool6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRuntime.o;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cXjava_lang_reflect_FieldThas_signature_field6F_i_;
-text: .text%__1cXjava_lang_reflect_FieldVhas_annotations_field6F_i_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverWresolve_interface_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cMLinkResolverbHlinktime_resolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2pnGThread__v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_IHashCode;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceRefKlass.o;
-text: .text%__1cNobjArrayKlassPoop_is_objArray6kM_i_: objArrayKlass.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlass.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: arrayKlass.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: arrayKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: arrayKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: arrayKlass.o;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_IsInterface;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cNinstanceKlassQmethod_index_for6kMpnNmethodOopDesc_pnGThread__i_;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cPSignatureStream2t6MnMsymbolHandle_i_v_;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorThas_signature_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorVhas_annotations_field6F_i_;
-text: .text%__1cNmethodOopDescLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cNmethodOopDescVparameter_annotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Clone;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: jvm.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: jvm.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: jvm.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: jvm.o;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%JVM_GetClassName;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%JVM_GetClassModifiers;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cNFingerprinterIdo_array6Mii_v_: dump.o;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionGinvoke6FnTinstanceKlassHandle_nMmethodHandle_nGHandle_inOobjArrayHandle_nJBasicType_4ipnGThread__pnHoopDesc__;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%JVM_MaxMemory;
-text: .text%__1cQGenCollectedHeapMmax_capacity6kM_I_;
-text: .text%__1cQDefNewGenerationMmax_capacity6kM_I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cMalloc_object6FpnH_jclass_pnGThread__pnPinstanceOopDesc__: jni.o;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cJGC_lockerNlock_critical6FpnKJavaThread__v_: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_FindLibraryEntry;
-text: .text%jni_GetJavaVM;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%jni_SetIntField: jni.o;
-text: .text%jni_SetLongField: jni.o;
-text: .text%JVM_FindSignal;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cJAssemblerFfst_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6Mi_v_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: objArrayKlass.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: objArrayKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: objArrayKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: objArrayKlass.o;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_x_;
-text: .text%__1cQSimpleCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cQSimpleCompPolicyRcompilation_level6MnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerTcompile_method_base6FnMmethodHandle_ii1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cHMonitorKnotify_all6M_i_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cURecompilationMonitorbGstart_recompilation_monitor_task6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cICompiler2t6M_v_;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
-text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cICompilerOneeds_adapters6M_i_: c1_Compiler.o;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cOCompilerThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cCosFsleep6FpnGThread_xi_i_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cVcheck_pending_signals6Fi_i_: os_solaris.o;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cICompilerKinitialize6M_v_;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_: lowMemoryDetector.o;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cUGenericGrowableArrayNraw_appendAll6Mpk0_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_I_: thread.o;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
-text: .text%__1cNgetTimeMillis6F_x_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cRLowMemoryDetectorUhas_pending_requests6F_i_;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinMsymbolHandle_4_i_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_pkcnGHandle_6_6_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cIUniverseWis_out_of_memory_error6FnGHandle__i_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cKExceptionsG_throw6FpnGThread_pkcinGHandle__v_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinGHandle__i_;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: exceptions.o;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cNSharedRuntimebOraw_exception_handler_for_return_address6FpC_1_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cKJavaThreadNreguard_stack6MpC_i_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cNCompileBrokerYcheck_compilation_result6FnMmethodHandle_iippnHnmethod__i_;
-text: .text%__1cNCompileBrokerXcompilation_is_in_queue6FnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerTis_not_compile_only6FnMmethodHandle__i_;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cNCompileBrokerTis_compile_blocking6FnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerTcreate_compile_task6FpnMCompileQdDueue_inMmethodHandle_i3ipkcii_pnLCompileTask__;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cLCompileTaskKinitialize6MinMmethodHandle_i1ipkcii_v_;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerTwait_for_completion6FpnLCompileTask__pnHnmethod__;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cNCompileBrokerOcheck_break_at6FnMmethodHandle_iii_i_;
-text: .text%__1cOCompilerOraclePshould_break_at6FnMmethodHandle__i_;
-text: .text%__1cFciEnv2t6MpnHJNIEnv__iii_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cUGenericGrowableArray2t6MpnFArena_iipnEGrET__v_;
-text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cPciObjectFactoryLis_found_at6MipnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: klassKlass.o;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodKlass.o;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cFciEnvIis_in_vm6F_i_;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: klassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassUoop_is_instanceKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassUoop_is_instanceKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassVoop_is_typeArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassUoop_is_objArrayKlass6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
-text: .text%__1cIciObjectGequals6Mp0_i_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlass.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: instanceKlass.o;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cIciObjectUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cRciArrayKlassKlassUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodKlass.o;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
-text: .text%__1cICompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cLCompilation2t6MpnQAbstractCompiler_pnFciEnv_pnIciMethod_ipnRC1_MacroAssembler__v_;
-text: .text%__1cTExceptionRangeTable2t6Mi_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cLCompilationOcompile_method6M_v_;
-text: .text%__1cLCompilationKinitialize6M_v_;
-text: .text%__1cLCompilationEcode6kM_pnKCodeBuffer__;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cLCompilationTdebug_info_recorder6kM_pnYDebugInformationRecorder__;
-text: .text%__1cLCompilationbBis_optimized_library_method6kM_i_;
-text: .text%__1cLCompilationTcompile_java_method6MpnLCodeOffsets__i_;
-text: .text%__1cLCompilationTinitialize_oop_maps6M_v_;
-text: .text%__1cIciMethodMall_oop_maps6M_pnKciLocalMap__;
-text: .text%__1cSciGenerateLocalMap2t6MpnFArena_nMmethodHandle__v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cSciGenerateLocalMapWfind_jsr_return_points6MnMmethodHandle__v_;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__v_;
-text: .text%__1cRRawBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: ciOopMap.o;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapOset_bbmark_bit6Mi_v_;
-text: .text%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
-text: .text%__1cSciGenerateLocalMapRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cSciGenerateLocalMapUbytecode_is_gc_point6FnJBytecodesECode_ii_i_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cSciGenerateLocalMapOreport_results6kM_i_: ciOopMap.o;
-text: .text%__1cOGenerateOopMapNreport_result6M_v_;
-text: .text%__1cSciGenerateLocalMapUfill_stackmap_prolog6Mi_v_;
-text: .text%__1cSciGenerateLocalMapZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cKciLocalMap2t6MpnFArena_iii_v_;
-text: .text%__1cKciLocalMapRset_bci_for_index6Mii_v_;
-text: .text%__1cSciGenerateLocalMapUfill_stackmap_epilog6M_v_: ciOopMap.o;
-text: .text%__1cSciGenerateLocalMapOfill_init_vars6MpnNGrowableArray4Ci___v_;
-text: .text%__1cKciLocalMapSset_nof_initialize6Mi_v_;
-text: .text%__1cLCompilationJbuild_hir6M_v_;
-text: .text%__1cCIR2t6MpnLCompilation_pnIciMethod_i_v_;
-text: .text%__1cJValueTypeKinitialize6F_v_;
-text: .text%__1cMciNullObjectEmake6F_p0_;
-text: .text%__1cMGraphBuilderKinitialize6F_v_;
-text: .text%__1cHIRScope2t6MpnLCompilation_p0ipnIciMethod_ii_v_;
-text: .text%__1cOLocalSlotArray2t6MkikpnJLocalSlot__v_: c1_IR.o;
-text: .text%__1cGBitMap2t6MI_v_;
-text: .text%__1cGBitMapGresize6MI_v_;
-text: .text%__1cNWordSizeArray2t6Mki1_v_: c1_IR.o;
-text: .text%__1cJXHandlers2t6MpnIciMethod__v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cIciMethodVhas_balanced_monitors6M_i_;
-text: .text%__1cHIRScopeLbuild_graph6MpnLCompilation_i_pnKBlockBegin__;
-text: .text%__1cQBlockListBuilder2t6MpnHIRScope_ii_v_;
-text: .text%__1cPBlockBeginArray2t6MkikpnKBlockBegin__v_: c1_GraphBuilder.o;
-text: .text%__1cQBlockListBuilderLset_leaders6M_v_;
-text: .text%__1cQciBytecodeStream2t6MpnIciMethod__v_;
-text: .text%__1cQciBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cQBlockListBuilderMnew_block_at6MinKBlockBeginEFlag__p1_;
-text: .text%__1cQBlockListBuilderUset_xhandler_entries6M_v_;
-text: .text%__1cKValueStack2t6MpnHIRScope_ii_v_;
-text: .text%__1cKValueArray2t6MkikpnLInstruction__v_: c1_ValueStack.o;
-text: .text%__1cJLocalSlot2t6M_v_;
-text: .text%__1cJLocalSlotIfor_type6MpnJValueType_ii_pnFLocal__: c1_IR.o;
-text: .text%__1cKObjectTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cMGraphBuilder2t6MpnLCompilation_pnHIRScope_pnJBlockList_pnKBlockBegin__v_;
-text: .text%__1cMGraphBuilderPpush_root_scope6MpnHIRScope_pnJBlockList_pnKBlockBegin__v_;
-text: .text%__1cMGraphBuilderJScopeData2t6Mp1i_v_;
-text: .text%__1cMGraphBuilderJScopeDataJset_scope6MpnHIRScope__v_;
-text: .text%__1cMGraphBuilderUpush_exception_scope6M_v_;
-text: .text%__1cOExceptionScope2t6M_v_;
-text: .text%__1cOExceptionScopeEinit6M_v_;
-text: .text%__1cIValueMap2t6M_v_;
-text: .text%__1cMGraphBuilderJScopeDataQadd_to_work_list6MpnKBlockBegin__v_;
-text: .text%__1cNResourceArrayGexpand6MIiri_v_;
-text: .text%__1cMGraphBuilderSiterate_all_blocks6Mi_v_;
-text: .text%__1cMGraphBuilderJScopeDataVremove_from_work_list6M_pnKBlockBegin__;
-text: .text%__1cMGraphBuilderJScopeDataSis_work_list_empty6kM_i_;
-text: .text%__1cMGraphBuilderOconnect_to_end6MpnKBlockBegin__pnIBlockEnd__;
-text: .text%__1cIValueMapIkill_all6M_v_;
-text: .text%__1cIValueMapRnumber_of_buckets6kM_i_;
-text: .text%__1cIValueMapJbucket_at6Mi_pnGBucket__;
-text: .text%__1cGBucketIkill_all6M_v_;
-text: .text%__1cKValueStackEcopy6M_p0_;
-text: .text%__1cGValuesIpush_all6Mpk0_v_: c1_ValueStack.o;
-text: .text%__1cMGraphBuilderbBiterate_bytecodes_for_block6Mi_pnIBlockEnd__;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderJScopeDataIblock_at6Mi_pnKBlockBegin__;
-text: .text%__1cMGraphBuilderKload_local6MpnJValueType_i_v_;
-text: .text%__1cJLocalSlotIfor_type6MpnJValueType_ii_pnFLocal__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderGappend6MpnLInstruction__2_;
-text: .text%__1cMGraphBuilderLappend_base6MpnLInstruction__2_;
-text: .text%__1cJLoadLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerMdo_LoadLocal6MpnJLoadLocal__v_;
-text: .text%__1cIValueMapEfind6MpnLInstruction__2_;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionLas_UnsafeOp6M_pnIUnsafeOp__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionNas_StateSplit6M_pnKStateSplit__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cKValueStackLclear_store6Mi_v_;
-text: .text%__1cKValueStackEpush6MpnJValueType_pnLInstruction__v_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderMaccess_field6MnJBytecodesECode__v_;
-text: .text%__1cQciBytecodeStreamJget_field6kM_pnHciField__;
-text: .text%__1cQciBytecodeStreamPget_field_index6kM_i_;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cFciEnvSget_klass_by_index6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cFciEnvXget_klass_by_index_impl6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cMas_ValueType6FnJBasicType__pnJValueType__;
-text: .text%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cMGraphBuilderKlock_stack6M_pnKValueStack__;
-text: .text%__1cKValueStackKcopy_locks6M_p0_;
-text: .text%__1cJLoadFieldFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cLAccessFieldOas_AccessField6M_p0_: c1_Instruction.o;
-text: .text%__1cJLoadFieldEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cJLoadFieldEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cIValueMapNlookup_bucket6Mi_pnGBucket__;
-text: .text%__1cGBucketEfind6MpnLInstruction_i_2_;
-text: .text%__1cGBucketGappend6MpnLInstruction_i_v_;
-text: .text%__1cLInstructionNas_StateSplit6M_pnKStateSplit__: c1_Instruction.o;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_Instruction.o;
-text: .text%__1cLAccessFieldIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cOExceptionScopeEcopy6M_p0_;
-text: .text%__1cOExceptionScopeGlength6kM_i_;
-text: .text%__1cHIntTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cMGraphBuilderLstore_local6MpnJValueType_i_v_;
-text: .text%__1cKValueStackDpop6MpnJValueType__pnLInstruction__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderLstore_local6MpnKValueStack_pnLInstruction_pnJValueType_ii_v_;
-text: .text%__1cJValueTypeNas_ObjectType6M_pnKObjectType__: c1_ValueType.o;
-text: .text%__1cKStoreLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerNdo_StoreLocal6MpnKStoreLocal__v_;
-text: .text%__1cKValueStackLstore_local6MpnKStoreLocal_i_v_;
-text: .text%__1cKValueStackQpin_stack_locals6Mi_v_;
-text: .text%__1cKValueStackNpin_stack_all6MnLInstructionJPinReason__v_;
-text: .text%__1cHIntTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cMGraphBuilderHif_zero6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cIConstantFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerLdo_Constant6MpnIConstant__v_;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_Instruction.o;
-text: .text%__1cLInstructionLas_UnsafeOp6M_pnIUnsafeOp__: c1_Instruction.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_Instruction.o;
-text: .text%__1cIConstantEhash6kM_i_;
-text: .text%__1cHIntTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
-text: .text%__1cLIntConstantOas_IntConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIConstantEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cIConstantIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderHif_node6MpnLInstruction_n0BJCondition_2pnKValueStack__v_;
-text: .text%__1cCIf2t6MpnLInstruction_n0BJCondition_i2pnKBlockBegin_5pnKValueStack_i_v_: c1_GraphBuilder.o;
-text: .text%__1cCIfFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerFdo_If6MpnCIf__v_;
-text: .text%__1cJValueTypeLis_constant6kM_i_: c1_ValueType.o;
-text: .text%__1cLInstructionMas_CompareOp6M_pnJCompareOp__: c1_Instruction.o;
-text: .text%__1cLInstructionNas_InstanceOf6M_pnKInstanceOf__: c1_Instruction.o;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_UnsafeOp6M_pnIUnsafeOp__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionEhash6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionIcan_trap6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionIas_Throw6M_pnFThrow__: c1_Canonicalizer.o;
-text: .text%__1cKBlockBeginItry_join6MpnKValueStack__i_;
-text: .text%__1cKValueStack2t6Mp0_v_;
-text: .text%__1cKValueStackEinit6Mp0_v_;
-text: .text%__1cMGraphBuilderNmethod_return6MpnLInstruction__v_;
-text: .text%__1cGReturnFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerJdo_Return6MpnGReturn__v_;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cGReturnJas_Return6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cKValueStackbAeliminate_all_scope_stores6Mi_v_;
-text: .text%__1cKValueStackQeliminate_stores6Mi_v_;
-text: .text%__1cKValueStackMcaller_state6kM_p0_;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__: ciTypeArrayKlass.o;
-text: .text%__1cFciEnvZcheck_klass_accessibility6MpnHciKlass_pnMklassOopDesc__i_;
-text: .text%__1cIciObjectMis_obj_array6M_i_: ciInstanceKlass.o;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cKObjectTypeNas_ObjectType6M_p0_: c1_ValueType.o;
-text: .text%__1cJValueTypeOas_AddressType6M_pnLAddressType__: c1_ValueType.o;
-text: .text%__1cKObjectTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cMGraphBuilderHif_same6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cJValueTypeOas_IntConstant6M_pnLIntConstant__: c1_ValueType.o;
-text: .text%__1cKStoreFieldFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cLAccessFieldOas_AccessField6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLAccessFieldIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cIValueMapKkill_field6MpnHciField__v_;
-text: .text%__1cGBucketKkill_field6MpnHciField__v_;
-text: .text%__1cKValueStackQpin_stack_fields6MpnHciField__v_;
-text: .text%__1cKValueStackVis_same_across_scopes6Mp0_i_;
-text: .text%__1cMGraphBuilderNarithmetic_op6MpnJValueType_nJBytecodesECode_pnKValueStack__v_;
-text: .text%__1cJValueTypeEmeet6kMp0_1_;
-text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMArithmeticOpIcan_trap6kM_i_;
-text: .text%__1cMArithmeticOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cNCanonicalizerGdo_Op26MpnDOp2__v_;
-text: .text%__1cLIntConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerTmove_const_to_right6MpnDOp2__v_;
-text: .text%__1cMArithmeticOpOis_commutative6kM_i_;
-text: .text%__1cMArithmeticOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cMArithmeticOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderJincrement6M_v_;
-text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cMGraphBuilderMload_indexed6MnJBasicType__v_;
-text: .text%__1cLLoadIndexedFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cLLoadIndexedEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cLLoadIndexedEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cLAccessArrayIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cIConstantIis_equal6kMpnLInstruction__i_;
-text: .text%__1cIConstantLas_Constant6M_p0_: c1_Instruction.o;
-text: .text%__1cEGotoFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerHdo_Goto6MpnEGoto__v_;
-text: .text%__1cHIRScopeMheader_block6MpnKBlockBegin_n0BEFlag__2_;
-text: .text%__1cCIRIoptimize6M_v_;
-text: .text%__1cJOptimizer2t6MpnCIR__v_;
-text: .text%__1cJOptimizerbHeliminate_conditional_expressions6M_v_;
-text: .text%__1cCIRQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cKBlockBeginQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cJboolArray2t6Mki1_v_: c1_Instruction.o;
-text: .text%__1cKBlockBeginQiterate_preorder6MrnJboolArray_pnMBlockClosure__v_;
-text: .text%__1cNCE_EliminatorIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_IR.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_Canonicalizer.o;
-text: .text%__1cCIfFas_If6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cHIntTypeKas_IntType6M_p0_: c1_ValueType.o;
-text: .text%__1cNCE_EliminatorRsimple_value_copy6MpnLInstruction__2_: c1_Optimizer.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_GraphBuilder.o;
-text: .text%__1cJLoadLocalMas_LoadLocal6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_GraphBuilder.o;
-text: .text%__1cJOptimizerQeliminate_blocks6M_v_;
-text: .text%__1cUGenericGrowableArray2t6MiipnEGrET_i_v_;
-text: .text%__1cSPredecessorCounterIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cLBlockMergerIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cLBlockMergerJtry_merge6MpnKBlockBegin__i_: c1_Optimizer.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_IR.o;
-text: .text%__1cEGotoHas_Goto6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_Canonicalizer.o;
-text: .text%__1cJOptimizerVeliminate_null_checks6M_v_;
-text: .text%__1cGBitMapFclear6M_v_;
-text: .text%__1cGBitMapUclear_range_of_words6MII_v_: bitMap.o;
-text: .text%__1cNValueSetArray2t6MkikpnIValueSet__v_: c1_Optimizer.o;
-text: .text%__1cTNullCheckEliminatorHiterate6MpnKBlockBegin__v_;
-text: .text%__1cTNullCheckEliminatorLiterate_all6M_v_;
-text: .text%__1cTNullCheckEliminatorLiterate_one6MpnKBlockBegin__v_;
-text: .text%__1cJLocalSlotIfor_type6MpnJValueType_ii_pnFLocal__: c1_Optimizer.o;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cKBlockBeginFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorNdo_BlockBegin6MpnKBlockBegin__v_;
-text: .text%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_IR.o;
-text: .text%__1cEBaseFvisit6MpnSInstructionVisitor__v_: c1_IR.o;
-text: .text%__1cQNullCheckVisitorHdo_Base6MpnEBase__v_;
-text: .text%__1cTNullCheckEliminatorPmerge_state_for6MpnKBlockBegin_pnKValueStack_pnIValueSet__i_;
-text: .text%__1cPBlockBeginArrayIindex_of6kMkpnKBlockBegin__i_: c1_Optimizer.o;
-text: .text%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_Canonicalizer.o;
-text: .text%__1cQNullCheckVisitorHdo_Goto6MpnEGoto__v_;
-text: .text%__1cLInstructionMas_NullCheck6M_pnJNullCheck__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionMas_NullCheck6M_pnJNullCheck__: c1_Instruction.o;
-text: .text%__1cKStoreLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cTNullCheckEliminatorIdo_value6FppnLInstruction__v_;
-text: .text%__1cFLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cFLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorIdo_Local6MpnFLocal__v_;
-text: .text%__1cLAccessFieldPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cLAccessLocalPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorMdo_LoadLocal6MpnJLoadLocal__v_;
-text: .text%__1cTNullCheckEliminatorQhandle_LoadLocal6MpnJLoadLocal__v_;
-text: .text%__1cQNullCheckVisitorMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cTNullCheckEliminatorShandle_AccessField6MpnLAccessField__v_;
-text: .text%__1cQNullCheckVisitorNdo_StoreLocal6MpnKStoreLocal__v_;
-text: .text%__1cTNullCheckEliminatorRhandle_StoreLocal6MpnKStoreLocal__v_;
-text: .text%__1cCIfPinput_values_do6MpFppnLInstruction__v_v_: c1_Canonicalizer.o;
-text: .text%__1cIConstantPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorLdo_Constant6MpnIConstant__v_;
-text: .text%__1cQNullCheckVisitorFdo_If6MpnCIf__v_;
-text: .text%__1cDOp2Pinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cNAccessIndexedPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cTNullCheckEliminatorShandle_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cGBitMapbCset_intersection_with_result6M0_i_;
-text: .text%__1cKStoreFieldPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cGReturnPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorJdo_Return6MpnGReturn__v_;
-text: .text%__1cJboolArray2t6Mki1_v_: c1_Optimizer.o;
-text: .text%__1cCIRTcompute_locals_size6M_v_;
-text: .text%__1cHIRScopePallocate_locals6MipnMWordSizeList__i_;
-text: .text%__1cHIRScopeGlocals6M_pnJLocalList__;
-text: .text%__1cJLocalSlotOcollect_locals6MpnJLocalList__v_;
-text: .text%__1cHIRScopePargument_locals6M_pnJLocalList__;
-text: .text%__1cJLocalSlotXcollect_argument_locals6MpnJLocalList__v_;
-text: .text%__1cCIRTallocate_local_name6M_i_;
-text: .text%__1cMWordSizeListEgrow6Mki1_v_: c1_IR.o;
-text: .text%__1cCIRSnotice_used_offset6Mi_v_;
-text: .text%__1cCIRNcompute_loops6M_v_;
-text: .text%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: methodOop.o;
-text: .text%__1cKLoopFinder2t6MpnCIR_i_v_;
-text: .text%__1cSBlockLoopInfoArray2t6MkikpnNBlockLoopInfo__v_: c1_Loops.o;
-text: .text%__1cKLoopFinderNcompute_loops6Mi_pnILoopList__;
-text: .text%__1cJboolArray2t6Mki1_v_: c1_Loops.o;
-text: .text%__1cKLoopFinderScompute_dominators6MpnJboolArray__v_;
-text: .text%__1cGBitMapGat_put6MIi_v_;
-text: .text%__1cRCreateInfoClosureIblock_do6MpnKBlockBegin__v_: c1_Loops.o;
-text: .text%__1cNBlockLoopInfo2t6MpnKBlockBegin_i_v_;
-text: .text%__1cPSetPredsClosureIblock_do6MpnKBlockBegin__v_: c1_Loops.o;
-text: .text%__1cKLoopFinderSdominator_walk_sux6MpnKBlockBegin_pnJboolArray__v_;
-text: .text%__1cGBitMapQset_intersection6M0_v_;
-text: .text%__1cGBitMapHis_same6M0_i_;
-text: .text%__1cKLoopFinderOfind_backedges6MpnJboolArray__pnILoopList__;
-text: .text%__1cELoop2t6MpnKBlockBegin_2_v_: c1_Loops.o;
-text: .text%__1cKLoopFinderSgather_loop_blocks6MpnILoopList__v_;
-text: .text%__1cPBlockBeginArrayIindex_of6kMkpnKBlockBegin__i_: c1_Loops.o;
-text: .text%__1cKLoopFinderKfind_loops6MpnILoopList_i_2_;
-text: .text%__1cKScanBlocks2t6MpnJBlockList__v_;
-text: .text%__1cIintStack2t6M_v_: c1_ScanBlocks.o;
-text: .text%__1cKScanBlocksEscan6MpnKScanResult_i_v_;
-text: .text%__1cKScanBlocksKscan_block6MpnKBlockBegin_pnKScanResult_i_v_;
-text: .text%__1cLIllegalTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionOas_AccessLocal6M_pnLAccessLocal__: c1_Instruction.o;
-text: .text%__1cLAccessLocalOas_AccessLocal6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionNas_StoreLocal6M_pnKStoreLocal__: c1_GraphBuilder.o;
-text: .text%__1cKStoreLocalNas_StoreLocal6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cKScanBlocksRaccumulate_access6MinIValueTag_i_v_;
-text: .text%__1cKScanBlocksPincrement_count6MnIValueTag_ii_v_;
-text: .text%__1cKScanBlocksJget_array6MnIValueTag__pnIintStack__;
-text: .text%__1cIintStackEgrow6Mki1_v_: c1_ScanBlocks.o;
-text: .text%__1cKScanBlocksLupdate_type6MinIValueTag__v_;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_Canonicalizer.o;
-text: .text%__1cJ_LoopListIpush_all6Mpk0_v_: c1_Loops.o;
-text: .text%__1cKLoopFinderbEcompute_loop_exits_and_entries6MpnILoopList__v_;
-text: .text%__1cKLoopFinderRfind_loop_entries6MpnKBlockBegin_pnELoop__v_;
-text: .text%__1cKLoopFinderPfind_loop_exits6MpnKBlockBegin_pnELoop__v_;
-text: .text%__1cKLoopFinderbDcompute_single_precision_flag6MpnILoopList__v_;
-text: .text%__1cKLoopFinderNinsert_blocks6MpnILoopList__v_;
-text: .text%__1cIintArray2t6Mki1_v_: c1_Loops.o;
-text: .text%__1cJBlockListPiterate_forward6MpnMBlockClosure__v_;
-text: .text%__1cGTaggerIblock_do6MpnKBlockBegin__v_: c1_Loops.o;
-text: .text%__1cNPairCollectorIblock_do6MpnKBlockBegin__v_: c1_Loops.o;
-text: .text%__1cNResourceArrayEsort6MIpGpkv2_i_v_;
-text: .text%__1cRsort_by_block_ids6FppnJBlockPair_2_i_: c1_Loops.o;
-text: .text%__1cKLoopFinderUinsert_caching_block6MpnILoopList_pnKBlockBegin_4_4_;
-text: .text%__1cLInstructionQas_CachingChange6M_pnNCachingChange__: c1_GraphBuilder.o;
-text: .text%__1cKStateSplitFscope6kM_pnHIRScope__;
-text: .text%__1cKLoopFinderJnew_block6MpnHIRScope_i_pnKBlockBegin__;
-text: .text%__1cIBlockEndOsubstitute_sux6MpnKBlockBegin_2_v_;
-text: .text%__1cILoopListMupdate_loops6MpnKBlockBegin_22_v_;
-text: .text%__1cELoopSupdate_loop_blocks6MpnKBlockBegin_22_v_;
-text: .text%__1cCIRMcompute_code6M_v_;
-text: .text%__1cJboolArray2t6Mki1_v_: c1_IR.o;
-text: .text%__1cCIRWiterate_and_set_weight6kMrnJboolArray_pnKBlockBegin_pnJBlockList_i_v_;
-text: .text%__1cKBlockBeginKset_weight6Mi_v_;
-text: .text%__1cLInstructionIas_Throw6M_pnFThrow__: c1_IR.o;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_IR.o;
-text: .text%__1cLInstructionIas_Throw6M_pnFThrow__: c1_GraphBuilder.o;
-text: .text%__1cDcmp6FppnKBlockBegin_2_i_: c1_IR.o;
-text: .text%__1cUSuxAndWeightAdjusterIblock_do6MpnKBlockBegin__v_: c1_IR.o;
-text: .text%__1cJBlockListJblocks_do6MpFpnKBlockBegin__v_v_;
-text: .text%__1cQUseCountComputerRcompute_use_count6FpnKBlockBegin__v_: c1_IR.o;
-text: .text%__1cQUseCountComputerXbasic_compute_use_count6FpnKBlockBegin__v_: c1_IR.o;
-text: .text%__1cQUseCountComputerQupdate_use_count6FppnLInstruction__v_: c1_IR.o;
-text: .text%__1cFLocalIas_Local6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cKStateSplitPstate_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cKValueStackJvalues_do6MpFppnLInstruction__v_v_;
-text: .text%__1cQUseCountComputerPupdated_pinning6FpnKBlockBegin__i_: c1_IR.o;
-text: .text%__1cNCachingChangePinput_values_do6MpFppnLInstruction__v_v_: c1_Loops.o;
-text: .text%__1cLInstructionLas_BlockEnd6M_pnIBlockEnd__: c1_Loops.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_IR.o;
-text: .text%__1cLCompilationIemit_lir6M_v_;
-text: .text%__1cIFrameMap2t6Mi_v_;
-text: .text%__1cIFrameMapLFpuStackSim2t6M_v_;
-text: .text%__1cLCompilationNinit_framemap6MpnIFrameMap__v_;
-text: .text%__1cIFrameMapbCset_local_name_to_offset_map6MpnMWordSizeList__v_;
-text: .text%__1cLLIR_Emitter2t6MpnLCompilation__v_;
-text: .text%__1cIValueGenOinit_value_gen6F_v_;
-text: .text%__1cIRegAlloc2t6M_v_;
-text: .text%__1cNc1_AllocTable2t6Mi_v_;
-text: .text%__1cIRegAllocFclear6M_v_;
-text: .text%__1cNCodeGenerator2t6MpnIValueGen_pnRValueGenInvariant__v_;
-text: .text%__1cNCodeGeneratorIblock_do6MpnKBlockBegin__v_;
-text: .text%__1cLLIR_EmitterMmust_bailout6kM_i_;
-text: .text%__1cNCodeGeneratorPblock_do_prolog6MpnKBlockBegin__v_;
-text: .text%__1cIValueGenLstart_block6MpnKBlockBegin__v_;
-text: .text%__1cLLIR_EmitterLstart_block6MpnKBlockBegin__v_;
-text: .text%__1cILIR_List2t6MpnLCompilation__v_;
-text: .text%__1cIValueGenQbind_block_entry6MpnKBlockBegin__v_;
-text: .text%__1cLLIR_EmitterQbind_block_entry6MpnKBlockBegin__v_;
-text: .text%__1cIValueGenMblock_prolog6MpnKBlockBegin__v_;
-text: .text%__1cIValueGenHdo_root6MpnLInstruction__v_;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_GraphBuilder.o;
-text: .text%__1cIValueGenNdo_BlockBegin6MpnKBlockBegin__v_;
-text: .text%__1cQDelayedSpillMark2T6M_v_: c1_CodeGenerator.o;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_IR.o;
-text: .text%__1cIValueGenHdo_Base6MpnEBase__v_;
-text: .text%__1cIValueGenNreceiverRInfo6F_nFRInfo__;
-text: .text%__1cIValueGenMicKlassRInfo6F_nFRInfo__;
-text: .text%__1cLCompilationNget_init_vars6M_pnIintStack__;
-text: .text%__1cLLIR_EmitterJstd_entry6MpnHIRScope_pnIintStack_nFRInfo_5_v_;
-text: .text%__1cILIR_ListWunverified_entry_point6MnFRInfo_1_v_: c1_LIREmitter.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_LIREmitter.o;
-text: .text%__1cLLIR_EmitterGmethod6kM_pnIciMethod__;
-text: .text%__1cMCodeEmitInfo2t6MpnLLIR_Emitter_ipnIintStack_pnKValueStack_pnOExceptionScope_pnPRInfoCollection__v_;
-text: .text%__1cLCompilationVvalue_stack2lir_stack6MpnKValueStack__pnNGrowableArray4CpnLLIR_OprDesc____;
-text: .text%__1cIValueGenMblock_epilog6MpnKBlockBegin__v_;
-text: .text%__1cNCodeGeneratorPblock_do_epilog6MpnKBlockBegin__v_;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Canonicalizer.o;
-text: .text%__1cIValueGenHdo_Goto6MpnEGoto__v_;
-text: .text%__1cIValueGenNset_no_result6MpnLInstruction__v_;
-text: .text%__1cIValueGenLmove_to_phi6MpnKValueStack_i_i_;
-text: .text%__1cIValueGenWgoto_default_successor6MpnIBlockEnd_pnMCodeEmitInfo__v_;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Instruction.o;
-text: .text%__1cIValueGenMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cLAccessFieldKlock_stack6kM_pnKValueStack__: c1_Instruction.o;
-text: .text%__1cIValueGenEwalk6MpnLInstruction__v_;
-text: .text%__1cIValueGenMdo_LoadLocal6MpnJLoadLocal__v_;
-text: .text%__1cIValueGenJload_item6MpnEItem__v_;
-text: .text%__1cEItemGupdate6M_v_;
-text: .text%__1cIValueGenQset_maynot_spill6MpnEItem__v_;
-text: .text%__1cIValueGenSfpu_fanout_handled6MpnEItem__i_;
-text: .text%__1cEItemEtype6kM_pnJValueType__: c1_Items.o;
-text: .text%__1cIValueGenPlock_free_rinfo6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cIRegAllocMhas_free_reg6kMpnJValueType__i_;
-text: .text%__1cIRegAllocMhas_free_reg6kMnIValueTag__i_;
-text: .text%__1cNc1_AllocTableMhas_one_free6kM_i_;
-text: .text%__1cIRegAllocNget_lock_temp6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cIRegAllocMget_free_reg6MpnJValueType__nFRInfo__;
-text: .text%__1cIRegAllocMget_free_reg6MnIValueTag__nFRInfo__;
-text: .text%__1cNc1_AllocTableIget_free6M_i_;
-text: .text%__1cNc1_AllocTablePget_free_helper6Mi_i_;
-text: .text%__1cIRegAllocIlock_reg6MpnLInstruction_nFRInfo_i_v_;
-text: .text%__1cJRInfo2RegFdo_it6M_v_: c1_RegAlloc.o;
-text: .text%__1cHLockRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOset_locked_cpu6MipnLInstruction_i_v_;
-text: .text%__1cNc1_AllocTableKset_locked6Mi_v_;
-text: .text%__1cLCompilationIitem2lir6MpknEItem__pnLLIR_OprDesc__;
-text: .text%__1cLCompilationKitem2stack6MpknEItem__i_;
-text: .text%__1cJValueTypeNas_DoubleType6M_pnKDoubleType__: c1_ValueType.o;
-text: .text%__1cMas_BasicType6FpnJValueType__nJBasicType__;
-text: .text%__1cJValueTypeMas_ArrayType6M_pnJArrayType__: c1_ValueType.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_Compilation.o;
-text: .text%__1cLLIR_EmitterEmove6MpnLLIR_OprDesc_nFRInfo__v_;
-text: .text%__1cILIR_ListEmove6MpnLLIR_OprDesc_2pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenJitem_free6MpnEItem__v_;
-text: .text%__1cIRegAllocPincr_spill_lock6MnFRInfo__v_;
-text: .text%__1cQChangeSpillCountGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIValueGenFrfree6MpnEItem__v_;
-text: .text%__1cIRegAllocPdecr_spill_lock6MnFRInfo__v_;
-text: .text%__1cIRegAllocIfree_reg6MnFRInfo__v_;
-text: .text%__1cHFreeRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocMset_free_cpu6Mi_v_;
-text: .text%__1cNc1_AllocTableIset_free6Mi_v_;
-text: .text%__1cIValueGenWrlock_result_with_hint6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cIValueGenFrlock6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cIRegAllocMget_lock_reg6MpnLInstruction_pnJValueType__nFRInfo__;
-text: .text%__1cLLIR_EmitterKfield_load6MnFRInfo_pnHciField_pnLLIR_OprDesc_iiipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListMload_mem_reg6MnFRInfo_i1nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_LIR.o;
-text: .text%__1cIRegAllocHset_reg6MnFRInfo_ipnLInstruction__v_;
-text: .text%__1cGSetRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocLset_cpu_reg6MiipnLInstruction__v_;
-text: .text%__1cIValueGenNdo_StoreLocal6MpnKStoreLocal__v_;
-text: .text%__1cEItemRhandle_float_kind6M_v_;
-text: .text%__1cEItemNset_from_item6Mpk0_v_: c1_Items.o;
-text: .text%__1cIValueGenXcan_inline_any_constant6kM_i_;
-text: .text%__1cIValueGenSmust_copy_register6MpnEItem__i_;
-text: .text%__1cIValueGenUcheck_float_register6MpnEItem__v_;
-text: .text%__1cIRegAllocLis_free_reg6kMnFRInfo__i_;
-text: .text%__1cJIsFreeRegGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cNc1_AllocTableHis_free6kMi_i_;
-text: .text%__1cLLIR_EmitterJopr2local6MipnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListQreg2single_stack6MnFRInfo_inJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenFdo_If6MpnCIf__v_;
-text: .text%__1cIHintItemNset_from_item6MpknEItem__v_;
-text: .text%__1cIHintItemEtype6kM_pnJValueType__: c1_Items.o;
-text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_ValueType.o;
-text: .text%__1cIValueGenLdo_Constant6MpnIConstant__v_;
-text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_Canonicalizer.o;
-text: .text%__1cIValueGenOdont_load_item6MpnEItem__v_;
-text: .text%__1cIValueGenWdont_load_item_nocheck6MpnEItem__v_;
-text: .text%__1cLLIR_OprFactKvalue_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cLLIR_EmitterFif_op6MinLInstructionJCondition_pnLLIR_OprDesc_4pnKBlockBegin_66pnMCodeEmitInfo__v_;
-text: .text%__1cJLIR_ConstEtype6kM_nJBasicType__: c1_CacheLocals.o;
-text: .text%__1cJLIR_ConstLas_constant6M_p0_: c1_CacheLocals.o;
-text: .text%__1cLLIR_EmitterIlir_cond6MnLInstructionJCondition__nMLIR_OpBranchNLIR_Condition__;
-text: .text%__1cILIR_ListDcmp6MnMLIR_OpBranchNLIR_Condition_pnLLIR_OprDesc_4pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListGbranch6MnMLIR_OpBranchNLIR_Condition_pnKBlockBegin__v_;
-text: .text%__1cMLIR_OpBranch2t6Mn0ANLIR_Condition_pnKBlockBegin_pnMCodeEmitInfo__v_;
-text: .text%__1cEItemEtype6kM_pnJValueType__: c1_CodeGenerator.o;
-text: .text%__1cJArrayTypeMas_ArrayType6M_p0_: c1_ValueType.o;
-text: .text%__1cLLIR_EmitterHopr2int6MpnLLIR_OprDesc__i_;
-text: .text%__1cILIR_ListJint2stack6Mii_v_: c1_LIREmitter.o;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Loops.o;
-text: .text%__1cNCachingChangeFvisit6MpnSInstructionVisitor__v_: c1_Loops.o;
-text: .text%__1cIValueGenQdo_CachingChange6MpnNCachingChange__v_;
-text: .text%__1cIValueGenPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cIValueGenTdo_ArithmeticOp_Int6MpnMArithmeticOp__v_;
-text: .text%__1cIValueGenOload_item_hint6MpnEItem_pk1_v_;
-text: .text%__1cEItemRget_jint_constant6kM_i_;
-text: .text%__1cLLIR_EmitterRarithmetic_op_int6MnJBytecodesECode_pnLLIR_OprDesc_44nFRInfo__v_;
-text: .text%__1cLLIR_EmitterNarithmetic_op6MnJBytecodesECode_pnLLIR_OprDesc_44inFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterYstrength_reduce_multiply6MpnLLIR_OprDesc_i22_i_;
-text: .text%__1cILIR_ListHreg2reg6MnFRInfo_1nJBasicType__v_: c1_LIREmitter_x86.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_LIREmitter_x86.o;
-text: .text%__1cLlog2_intptr6Fi_i_: c1_LIREmitter_x86.o;
-text: .text%__1cILIR_ListKshift_left6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cILIR_ListDsub6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter_x86.o;
-text: .text%__1cIValueGenWcan_inline_as_constant6MpnEItem__i_;
-text: .text%__1cIRegAllocPget_register_rc6kMnFRInfo__i_;
-text: .text%__1cLGetRefCountGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cILIR_ListHreg2reg6MnFRInfo_1nJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListDadd6MpnLLIR_OprDesc_22_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cJValueTypeLas_LongType6M_pnILongType__: c1_ValueType.o;
-text: .text%__1cLAccessArrayKlock_stack6kM_pnKValueStack__: c1_Instruction.o;
-text: .text%__1cMCodeEmitInfoVfill_expression_stack6M_v_;
-text: .text%__1cLLIR_EmitterRarray_range_check6MpnLLIR_OprDesc_2pnMCodeEmitInfo_4_v_;
-text: .text%__1cORangeCheckStub2t6MpnMCodeEmitInfo_nFRInfo_ii_v_;
-text: .text%__1cMCodeEmitInfo2t6Mp0i_v_;
-text: .text%__1cLLIR_EmitterLcmp_reg_mem6MnMLIR_OpBranchNLIR_Condition_nFRInfo_3inJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListLcmp_reg_mem6MnMLIR_OpBranchNLIR_Condition_nFRInfo_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListGbranch6MnMLIR_OpBranchNLIR_Condition_pnICodeStub__v_;
-text: .text%__1cMLIR_OpBranch2t6Mn0ANLIR_Condition_pnICodeStub_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterMindexed_load6MnFRInfo_nJBasicType_pnLLIR_OprDesc_4pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterNarray_address6MpnLLIR_OprDesc_2inJBasicType__pnLLIR_Address__;
-text: .text%__1cLLIR_AddressFscale6FnJBasicType__n0AFScale__;
-text: .text%__1cILIR_ListEmove6MpnLLIR_Address_pnLLIR_OprDesc_pnMCodeEmitInfo__v_: c1_LIREmitter_x86.o;
-text: .text%__1cIRegAllocNoops_in_spill6kM_pnIintStack__;
-text: .text%__1cIRegAllocRoops_in_registers6kM_pnPRInfoCollection__;
-text: .text%__1cIValueGenbDsafepoint_poll_needs_register6F_i_;
-text: .text%__1cILIR_ListJsafepoint6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
-text: .text%__1cLLIR_EmitterHgoto_op6MpnKBlockBegin_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListEjump6MpnKBlockBegin_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cIValueGenOscratch1_RInfo6kM_nFRInfo__;
-text: .text%__1cIValueGenUprefer_alu_registers6kM_i_;
-text: .text%__1cLLIR_EmitterLfield_store6MpnHciField_pnLLIR_OprDesc_i4iipnMCodeEmitInfo_nFRInfo__v_;
-text: .text%__1cILIR_ListNstore_mem_reg6MnFRInfo_1inJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cIValueGenJdo_Return6MpnGReturn__v_;
-text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_ValueType.o;
-text: .text%__1cIValueGenTresult_register_for6FpnJValueType_i_nFRInfo__;
-text: .text%__1cIValueGenMreturn1RInfo6F_nFRInfo__;
-text: .text%__1cIValueGenPload_item_force6MpnEItem_nFRInfo__v_;
-text: .text%__1cIValueGenPlock_spill_temp6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cIRegAllocJlock_temp6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cLLIR_EmitterJreturn_op6MpnLLIR_OprDesc__v_;
-text: .text%__1cNCodeGeneratorXclear_instruction_items6FpnKBlockBegin__v_;
-text: .text%__1cQLIR_LocalCaching2t6MpnCIR__v_;
-text: .text%__1cQLIR_LocalCachingQpreferred_locals6MpknIciMethod__pnMLocalMapping__;
-text: .text%__1cMLocalMappingQinit_cached_regs6M_v_;
-text: .text%__1cPRegisterManager2t6M_v_;
-text: .text%__1cMLocalMappingNget_cache_reg6kMi_nFRInfo__;
-text: .text%__1cQLIR_LocalCachingVcompute_cached_locals6M_v_;
-text: .text%__1cQLIR_LocalCachingMcache_locals6M_v_;
-text: .text%__1cLInstructionQas_CachingChange6M_pnNCachingChange__: c1_IR.o;
-text: .text%__1cLInstructionQas_CachingChange6M_pnNCachingChange__: c1_Canonicalizer.o;
-text: .text%__1cNCachingChangeQas_CachingChange6M_p0_: c1_Loops.o;
-text: .text%__1cRBlockListScanInfo2t6MpnJBlockList__v_: c1_CacheLocals.o;
-text: .text%__1cOLIR_OprRefList2t6M_v_: c1_CacheLocals.o;
-text: .text%__1cRBlockListScanInfoItraverse6MpnKBlockBegin_pnKLIR_OpList__v_: c1_CacheLocals.o;
-text: .text%__1cLLIR_OpLabelFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cHLIR_Op1Fvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cPRegisterManagerElock6MnFRInfo__v_;
-text: .text%__1cHLIR_Op2Fvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cMLIR_OpBranchFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cORangeCheckStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cQLIR_OpVisitStateGappend6MnFRInfo__v_: c1_CodeStubs_x86.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_CodeStubs_x86.o;
-text: .text%__1cNc1_AllocTableFmerge6Mp0_v_;
-text: .text%__1cGLIR_OpFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQLIR_LocalCachingXcache_locals_for_blocks6MpnJBlockList_pnPRegisterManager_i_pnMLocalMapping__;
-text: .text%__1cLInstructionNas_StateSplit6M_pnKStateSplit__: c1_Loops.o;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_Loops.o;
-text: .text%__1cLInstructionOas_AccessLocal6M_pnLAccessLocal__: c1_Loops.o;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_IR.o;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_IR.o;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_IR.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_IR.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_IR.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_IR.o;
-text: .text%__1cKScanBlocksQmost_used_locals6M_pnKALocalList__;
-text: .text%__1cKScanBlocksMint_count_at6kMi_i_;
-text: .text%__1cKScanBlocksIcount_at6kMnIValueTag_i_i_;
-text: .text%__1cKScanBlocksJget_array6kMnIValueTag__pknIintStack__;
-text: .text%__1cKScanBlocksNlong_count_at6kMi_i_;
-text: .text%__1cKScanBlocksMobj_count_at6kMi_i_;
-text: .text%__1cKScanBlocksLis_obj_only6kMi_i_;
-text: .text%__1cKScanBlocksLis_int_only6kMi_i_;
-text: .text%__1cGALocalUsort_by_access_count6Fpp02_i_: c1_ScanBlocks.o;
-text: .text%__1cQLIR_LocalCachingPcompute_caching6MpnKALocalList_pnPRegisterManager__pnMLocalMapping__;
-text: .text%__1cPRegisterManagerMnum_free_cpu6M_i_;
-text: .text%__1cMLocalMappingNget_cache_reg6kMinIValueTag__nFRInfo__;
-text: .text%__1cPRegisterManagerMhas_free_reg6MnIValueTag__i_;
-text: .text%__1cPRegisterManagerNlock_free_reg6MnIValueTag__nFRInfo__;
-text: .text%__1cQLIR_LocalCachingQadd_at_all_names6FpnPRInfoCollection_inFRInfo_pnMWordSizeList__v_;
-text: .text%__1cIintStackEgrow6Mki1_v_: c1_CacheLocals.o;
-text: .text%__1cMLocalMappingFmerge6Mp0_v_;
-text: .text%__1cGALocalNsort_by_index6Fpp02_i_: c1_CacheLocals.o;
-text: .text%__1cSLocalMappingSetterIblock_do6MpnKBlockBegin__v_;
-text: .text%__1cMLocalMappingEjoin6Mp0_v_;
-text: .text%__1cPRegisterManagerLis_free_reg6MnFRInfo__i_;
-text: .text%__1cQLIR_LocalCachingYinsert_transition_blocks6M_v_;
-text: .text%__1cPBlockTransitionIblock_do6MpnKBlockBegin__v_: c1_CacheLocals.o;
-text: .text%__1cGLIR_OpLas_OpBranch6M_pnMLIR_OpBranch__: c1_LIR.o;
-text: .text%__1cMLocalMappingPemit_transition6FpnILIR_List_p03pnCIR__v_;
-text: .text%__1cCIRThighest_used_offset6kM_i_;
-text: .text%__1cILIR_ListQreg2single_stack6MnFRInfo_inJBasicType__v_: c1_CacheLocals.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_CacheLocals.o;
-text: .text%__1cILIR_ListQsingle_stack2reg6MinFRInfo_nJBasicType__v_;
-text: .text%__1cLInstructionQas_CachingChange6M_pnNCachingChange__: c1_Instruction.o;
-text: .text%__1cLCompilationbBemit_code_prolog_non_native6MpnIFrameMap__v_;
-text: .text%__1cHIRScopeJmax_stack6kM_i_;
-text: .text%__1cNLIR_Optimizer2t6MpnCIR__v_;
-text: .text%__1cRLIR_PeepholeState2t6M_v_;
-text: .text%__1cRLIR_PeepholeStateKinitialize6MpnMLocalMapping__v_;
-text: .text%__1cRLIR_PeepholeStateMclear_values6M_v_;
-text: .text%__1cOLIR_OprRefList2t6M_v_: c1_LIROptimizer.o;
-text: .text%__1cNLIR_OptimizerIoptimize6M_v_;
-text: .text%__1cNLIR_OptimizerIoptimize6MpnJBlockList__v_;
-text: .text%__1cNLIR_OptimizerIoptimize6MpnKBlockBegin__v_;
-text: .text%__1cNLIR_OptimizerMblock_prolog6M_v_;
-text: .text%__1cNLIR_OptimizerKprocess_op6M_v_;
-text: .text%__1cGLIR_OpGas_Op16M_pnHLIR_Op1__: c1_LIR.o;
-text: .text%__1cLLIR_OpLabelKas_OpLabel6M_p0_: c1_LIR.o;
-text: .text%__1cRLIR_PeepholeStateVfinish_forward_branch6MpnFLabel__v_;
-text: .text%__1cJLabelListIindex_of6kMkpnFLabel__i_: c1_LIROptimizer.o;
-text: .text%__1cRLIR_PeepholeStateYset_disable_optimization6Mi_v_;
-text: .text%__1cLLIR_OpLabelJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerMemit_opLabel6MpnLLIR_OpLabel__v_;
-text: .text%__1cNLIR_OptimizerFvisit6M_v_: c1_LIROptimizer_x86.o;
-text: .text%__1cHLIR_Op0Jemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerIemit_op06MpnHLIR_Op0__v_;
-text: .text%__1cHLIR_Op2Jemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerIemit_op26MpnHLIR_Op2__v_;
-text: .text%__1cNLIR_OptimizerKhandle_opr6MpnLLIR_OprDesc_nQLIR_OpVisitStateHOprMode__2_;
-text: .text%__1cNLIR_OptimizerJis_cached6MpnLLIR_OprDesc__i_;
-text: .text%__1cNLIR_OptimizerUrecord_opr_reference6MpnLLIR_OprDesc__v_;
-text: .text%__1cRLIR_PeepholeStateUrecord_opr_reference6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateLdefining_op6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateJreg2index6MpnLLIR_OprDesc__i_;
-text: .text%__1cIintStackEgrow6Mki1_v_: c1_LIROptimizer.o;
-text: .text%__1cNLIR_OptimizerMblock_epilog6M_v_;
-text: .text%__1cRLIR_PeepholeStateRis_safe_to_delete6kMi_i_;
-text: .text%__1cHLIR_Op1Gas_Op16M_p0_: c1_LIR.o;
-text: .text%__1cHLIR_Op1Jemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerIemit_op16MpnHLIR_Op1__v_;
-text: .text%__1cNLIR_OptimizerMprocess_move6MpnHLIR_Op1__v_;
-text: .text%__1cMLocalMappingNget_cache_reg6kMpnLLIR_OprDesc__2_;
-text: .text%__1cRLIR_PeepholeStateTmark_safe_to_delete6Mi_v_;
-text: .text%__1cNLIR_OptimizerRreplace_stack_opr6MpnLLIR_OprDesc__2_;
-text: .text%__1cNLIR_OptimizerNoptimize_move6MpnHLIR_Op1_rpnLLIR_OprDesc_5_i_;
-text: .text%__1cRLIR_PeepholeStatebFequivalent_register_or_constant6MpnLLIR_OprDesc__2_;
-text: .text%__1cRLIR_PeepholeStateOequivalent_opr6MpnLLIR_OprDesc__2_;
-text: .text%__1cNLIR_OptimizerKmaybe_opto6MpnLLIR_OprDesc_2_2_: c1_LIROptimizer_x86.o;
-text: .text%__1cNLIR_OptimizerMis_cache_reg6MpnLLIR_OprDesc__i_;
-text: .text%__1cMLocalMappingMis_cache_reg6kMpnLLIR_OprDesc__i_;
-text: .text%__1cMLocalMappingMis_cache_reg6kMnFRInfo__i_;
-text: .text%__1cRLIR_PeepholeStateSequivalent_address6MpnLLIR_OprDesc__2_;
-text: .text%__1cNLIR_OptimizerRresult_substitute6M_v_;
-text: .text%__1cNLIR_OptimizerRnext_op_with_code6MnILIR_Code__pnGLIR_Op__;
-text: .text%__1cNLIR_OptimizerFop_at6Mi_pnGLIR_Op__;
-text: .text%__1cRLIR_PeepholeStateMkill_operand6MpnLLIR_OprDesc_i_v_;
-text: .text%__1cRLIR_PeepholeStateQkill_equivalents6MpnLLIR_OprDesc__v_;
-text: .text%__1cRLIR_PeepholeStateNkill_register6Mi_v_;
-text: .text%__1cRLIR_PeepholeStateSrecord_defining_op6MpnLLIR_OprDesc_i_v_;
-text: .text%__1cRLIR_PeepholeStatePset_defining_op6Mii_v_;
-text: .text%__1cRLIR_PeepholeStateHdo_move6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cLLIR_OprListEgrow6MkikpnLLIR_OprDesc__v_: c1_LIROptimizer.o;
-text: .text%__1cLLIR_AddressKas_address6M_p0_: c1_LIR.o;
-text: .text%__1cRLIR_PeepholeStateTequivalent_register6MpnLLIR_OprDesc__2_;
-text: .text%__1cKLIR_OprPtrLas_constant6M_pnJLIR_Const__: c1_LIR.o;
-text: .text%__1cNLIR_OptimizerKallow_opto6M_i_;
-text: .text%__1cNLIR_OptimizerLrecord_opto6MpnLLIR_OprDesc_2_2_;
-text: .text%__1cLLIR_AddressEtype6kM_nJBasicType__: c1_LIR.o;
-text: .text%__1cRLIR_PeepholeStateNincrement_ref6Mi_v_;
-text: .text%__1cKLIR_OprPtrKas_address6M_pnLLIR_Address__: c1_CacheLocals.o;
-text: .text%__1cMLIR_OpBranchLas_OpBranch6M_p0_: c1_LIR.o;
-text: .text%__1cMLIR_OpBranchJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cNLIR_OptimizerQopr_live_on_exit6MpnLLIR_OprDesc__i_;
-text: .text%__1cNResourceArrayJremove_at6MIi_v_;
-text: .text%__1cRLIR_PeepholeStateLstack2index6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStatePkill_stack_slot6Mi_v_;
-text: .text%__1cRLIR_PeepholeStatebCequivalent_register_or_stack6MpnLLIR_OprDesc__2_;
-text: .text%__1cNLIR_OptimizerKmaybe_opto6MpnLLIR_OprDesc_2_2_: c1_LIROptimizer.o;
-text: .text%__1cNLIR_OptimizerLhandle_info6MpnMCodeEmitInfo__v_;
-text: .text%__1cMCodeEmitInfoRset_local_mapping6MpnMLocalMapping__v_;
-text: .text%__1cNLIR_OptimizerUrecord_register_oops6MpnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_OptimizerOemit_code_stub6MpnICodeStub__v_;
-text: .text%__1cLCompilationOemit_code_body6MpnLCodeOffsets__i_;
-text: .text%__1cNLIR_Assembler2t6MpnLCompilation_pnLCodeOffsets__v_;
-text: .text%__1cNConstantTable2t6M_v_;
-text: .text%__1cNLIR_AssemblerJemit_code6MpnJBlockList__v_;
-text: .text%__1cQCollectConstantsIblock_do6MpnKBlockBegin__v_: c1_LIRAssembler.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_IR.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Instruction.o;
-text: .text%__1cJValueTypeNas_DoubleType6M_pnKDoubleType__: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Loops.o;
-text: .text%__1cNLIR_AssemblerOemit_constants6M_v_;
-text: .text%__1cNConstantTableMemit_entries6MpnOMacroAssembler_i_v_;
-text: .text%__1cLLIR_CodeGenIblock_do6MpnKBlockBegin__v_;
-text: .text%__1cNLIR_AssemblerPcheck_codespace6M_v_;
-text: .text%__1cNLIR_AssemblerMemit_opLabel6MpnLLIR_OpLabel__v_;
-text: .text%__1cNLIR_AssemblerIemit_op06MpnHLIR_Op0__v_;
-text: .text%__1cNLIR_AssemblerIemit_op26MpnHLIR_Op2__v_;
-text: .text%__1cNLIR_AssemblerMneeds_icache6kMpnIciMethod__i_;
-text: .text%__1cFRInfoLas_register6kM_pnMRegisterImpl__;
-text: .text%__1cNLIR_AssemblerMcheck_icache6MpnMRegisterImpl_2_i_;
-text: .text%__1cRC1_MacroAssemblerSinline_cache_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cRC1_MacroAssemblerOverified_entry6M_v_;
-text: .text%__1cNLIR_AssemblerLbuild_frame6M_v_;
-text: .text%__1cNLIR_AssemblerbBinitial_frame_size_in_bytes6M_i_;
-text: .text%__1cIFrameMapJframesize6kM_i_;
-text: .text%__1cRC1_MacroAssemblerLbuild_frame6Mi_v_;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: c1_Compiler.o;
-text: .text%__1cNLIR_AssemblerVsetup_locals_at_entry6M_v_;
-text: .text%__1cIFrameMapYsignature_type_array_for6FpknIciMethod__pnNBasicTypeList__;
-text: .text%__1cIFrameMapScalling_convention6FpknIciMethod_pnIintArray__pnRCallingConvention__;
-text: .text%__1cIFrameMapScalling_convention6FirknOBasicTypeArray_pnIintArray__pnRCallingConvention__;
-text: .text%__1cIintArray2t6Mki1_v_: c1_FrameMap_x86.o;
-text: .text%__1cIFrameMapRname_for_argument6Fi_i_;
-text: .text%__1cIFrameMapSfp_offset_for_name6kMiii_i_;
-text: .text%__1cIFrameMapPnum_local_names6kM_i_;
-text: .text%__1cIFrameMapNlocal_to_slot6kMii_i_;
-text: .text%__1cIFrameMapSfp_offset_for_slot6kMi_i_;
-text: .text%__1cQArgumentLocation2t6Mci_v_: c1_FrameMap_x86.o;
-text: .text%__1cQArgumentLocationSset_stack_location6Mi_v_;
-text: .text%__1cIFrameMapQaddress_for_name6kMiii_nHAddress__;
-text: .text%__1cIFrameMapQmake_new_address6kMi_nHAddress__;
-text: .text%__1cNLIR_AssemblerIemit_op16MpnHLIR_Op1__v_;
-text: .text%__1cNLIR_AssemblerHmove_op6MpnLLIR_OprDesc_2nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerHmem2reg6MpnLLIR_Address_nFRInfo_nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerKas_Address6MpnLLIR_Address__nHAddress__;
-text: .text%__1cNLIR_AssemblerHcomp_op6MnMLIR_OpBranchNLIR_Condition_pnLLIR_OprDesc_4nJBasicType__v_;
-text: .text%__1cNLIR_AssemblerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cNLIR_AssemblerJreg2stack6MnFRInfo_inJBasicType__v_;
-text: .text%__1cNLIR_AssemblerLconst2stack6MpnJLIR_Const_i_v_;
-text: .text%__1cNLIR_AssemblerJstack2reg6MpnLLIR_OprDesc_2nJBasicType__v_;
-text: .text%__1cNLIR_AssemblerHreg2reg6MnFRInfo_1_v_;
-text: .text%__1cNLIR_AssemblerJmove_regs6MpnMRegisterImpl_2_v_;
-text: .text%__1cNLIR_AssemblerIshift_op6MnILIR_Code_nFRInfo_i2_v_;
-text: .text%__1cNLIR_AssemblerIarith_op6MnILIR_Code_pnLLIR_OprDesc_33pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerbIadd_debug_info_for_null_check_here6MpnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerLcode_offset6kM_i_;
-text: .text%__1cNLIR_AssemblerbDadd_debug_info_for_null_check6MipnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerOemit_code_stub6MpnICodeStub__v_;
-text: .text%__1cVImplicitNullCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerCpc6kM_pC_;
-text: .text%__1cICodeStubLset_code_pc6MpC_v_: c1_CodeStubs_x86.o;
-text: .text%__1cICodeStubMis_call_stub6kM_i_: c1_CodeStubs_x86.o;
-text: .text%__1cNCodeStubArrayIindex_of6kMkpnICodeStub__i_: c1_LIRAssembler.o;
-text: .text%__1cORangeCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOsafepoint_poll6MnFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerZadd_debug_info_for_branch6MpnMCodeEmitInfo__v_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cMCodeEmitInfoRrecord_debug_info6MpnYDebugInformationRecorder_ii_v_;
-text: .text%__1cMCodeEmitInfoHoop_map6M_pnGOopMap__;
-text: .text%__1cMCodeEmitInfoScompute_debug_info6M_v_;
-text: .text%__1cMCodeEmitInfoOcreate_oop_map6M_pnGOopMap__;
-text: .text%__1cIFrameMapRoop_map_arg_count6M_i_;
-text: .text%__1cMCodeEmitInfoTrecord_spilled_oops6kMpnIFrameMap_pnGOopMap__v_;
-text: .text%__1cKciLocalMapNindex_for_bci6kMi_i_;
-text: .text%__1cSciLocalMapIteratorJfind_next6M_v_: c1_LIREmitter.o;
-text: .text%__1cJLocalSlotIfor_type6MpnJValueType_ii_pnFLocal__: c1_LIREmitter.o;
-text: .text%__1cMCodeEmitInfoNget_cache_reg6kMinIValueTag__nFRInfo__;
-text: .text%__1cIFrameMapTsingle_word_regname6kMi_nHOptoRegEName__;
-text: .text%__1cIFrameMapMfp2sp_offset6kMi_i_;
-text: .text%__1cGOopMapHset_oop6MnHOptoRegEName_ii_v_;
-text: .text%__1cMCodeEmitInfoVlir_stack2value_stack6MpnNGrowableArray4CpnLLIR_OprDesc____pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cMCodeEmitInfobCcompute_debug_info_for_scope6MpnHIRScope_ipnNGrowableArray4CpnKScopeValue___inGValues_i_pnQIRScopeDebugInfo__;
-text: .text%__1cMCodeEmitInfobCscope_value_for_local_offset6MinILocationEType_ppnKScopeValue__4_;
-text: .text%__1cMCodeEmitInfobEget_cache_reg_for_local_offset6kMi_nFRInfo__;
-text: .text%__1cMLocalMappingbEget_cache_reg_for_local_offset6kMi_nFRInfo__;
-text: .text%__1cMCodeEmitInfoZlocation_for_local_offset6MinILocationEType__1_;
-text: .text%__1cIFrameMapZlocation_for_local_offset6kMinILocationEType_p1_i_;
-text: .text%__1cIFrameMapWlocation_for_fp_offset6kMinILocationEType_p1_i_;
-text: .text%__1cILocationVlegal_offset_in_bytes6Fi_i_;
-text: .text%__1cMCodeEmitInfoYscope_value_for_register6MnFRInfo_ppnKScopeValue_4nILocationEType__v_;
-text: .text%__1cGOopMapJdeep_copy6M_p0_;
-text: .text%__1cGOopMap2t6Mn0ANDeepCopyToken_p0_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap__v_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: oopMap.o;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MiipnGOopMap__v_;
-text: .text%__1cYDebugInformationRecorderLcheck_phase6Mn0AFPhase__v_;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MiipnGOopMap__v_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfoRec.o;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfo.o;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: location.o;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__i_;
-text: .text%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cLCompilationbEadd_exception_handlers_for_pco6MiipnOExceptionScope__v_;
-text: .text%__1cNExceptionInfo2t6MiipnOExceptionScope__v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNLIR_AssemblerHreg2mem6MnFRInfo_pnLLIR_Address_nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_OprDescGis_oop6kM_i_;
-text: .text%__1cNLIR_AssemblerJreturn_op6MnFRInfo_i_v_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cRC1_MacroAssemblerLmethod_exit6Mi_v_;
-text: .text%__1cLCompilationQemit_code_epilog6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerUemit_slow_case_stubs6M_v_;
-text: .text%__1cNLIR_AssemblerKemit_stubs6MpnMCodeStubList__v_;
-text: .text%__1cVImplicitNullCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cNLIR_AssemblerNadd_call_info6MipnMCodeEmitInfo__v_;
-text: .text%__1cOdummy_location6FnIValueTag__pnKScopeValue__: c1_LIREmitter.o;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cORangeCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerWemit_exception_handler6M_i_;
-text: .text%__1cRC1_MacroAssemblerRexception_handler6Mii_v_;
-text: .text%__1cNLIR_AssemblerPemit_call_stubs6M_v_;
-text: .text%__1cNLIR_AssemblerbCmaybe_adjust_stack_alignment6MpnIciMethod__v_;
-text: .text%__1cKreal_index6FpnIFrameMap_i_i_: c1_LIRAssembler_x86.o;
-text: .text%__1cLCompilationbEgenerate_exception_range_table6M_v_;
-text: .text%__1cOExceptionScopeGequals6kMp0_i_;
-text: .text%__1cLCompilationbBadd_exception_range_entries6MiipnOExceptionScope_ip2pi_v_;
-text: .text%__1cTExceptionRangeTablebCcompute_modified_at_call_pco6Fii_i_;
-text: .text%__1cOExceptionScopeMcaller_scope6kM_p0_;
-text: .text%__1cLLIR_EmitterKframe_size6M_i_;
-text: .text%__1cNLIR_Assembler2T6M_v_;
-text: .text%__1cLCompilationMinstall_code6MpnLCodeOffsets_i_v_;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler_ii_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cFciEnvbUsystem_dictionary_modification_counter_changed6M_i_;
-text: .text%__1cHnmethodLnew_nmethod6FnMmethodHandle_iiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__p0_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethod2n6FIi_pv_;
-text: .text%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__v_;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: codeBlob.o;
-text: .text%__1cLPcDescCache2t6M_v_;
-text: .text%__1cHnmFlagsFclear6M_v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cICodeBlobJcopy_oops6MppnI_jobject_i_v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cHnmethodKcopy_pc_at6MipnGPcDesc__v_;
-text: .text%__1cHnmethodSresolve_JNIHandles6M_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: nmethod.o;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cHnmethodKis_nmethod6kM_i_: nmethod.o;
-text: .text%__1cHnmethodUnumber_of_dependents6kM_i_: nmethod.o;
-text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cTExceptionRangeTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: nmethod.o;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
-text: .text%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_;
-text: .text%__1cLCompilation2T6M_v_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cTExceptionRangeTable2T6M_v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cHnmethodJcode_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodOexception_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodJstub_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodQscopes_data_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodPscopes_pcs_size6kM_i_: nmethod.o;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_v_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: reflection.o;
-text: .text%__1cNArgumentCountDset6MinJBasicType__v_: reflection.o;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: reflection.o;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: reflection.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cUGenericGrowableArrayGgrow646Mi_v_;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cLInstructionMas_CompareOp6M_pnJCompareOp__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionNas_InstanceOf6M_pnKInstanceOf__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderMnew_instance6Mi_v_;
-text: .text%__1cQciBytecodeStreamJget_klass6kM_pnHciKlass__;
-text: .text%__1cQciBytecodeStreamPget_klass_index6kM_i_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciInstanceKlass.o;
-text: .text%__1cMGraphBuilderMappend_split6MpnKStateSplit__pnLInstruction__;
-text: .text%__1cLNewInstanceFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cLInstructionEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_Instruction.o;
-text: .text%__1cKValueStackMclear_locals6M_v_;
-text: .text%__1cKValueStackMclear_stores6M_v_;
-text: .text%__1cKValueStackZpin_stack_for_state_split6M_v_;
-text: .text%__1cLNewInstanceIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderIstack_op6MnJBytecodesECode__v_;
-text: .text%__1cMGraphBuilderGinvoke6MnJBytecodesECode__v_;
-text: .text%__1cQciBytecodeStreamKget_method6kM_pnIciMethod__;
-text: .text%__1cQciBytecodeStreamQget_method_index6kM_i_;
-text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cIciObjectMis_classless6kM_i_: ciMethod.o;
-text: .text%__1cQciBytecodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cQciBytecodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cKValueStackNpop_arguments6Mi_pnGValues__;
-text: .text%__1cGInvoke2t6MnJBytecodesECode_pnJValueType_pnLInstruction_pnGValues_iiii_v_;
-text: .text%__1cGInvokeFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cGInvokeJas_Invoke6M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionMas_LoadLocal6M_pnJLoadLocal__: c1_Instruction.o;
-text: .text%__1cGInvokeIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderIthrow_op6M_v_;
-text: .text%__1cFThrowFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerIdo_Throw6MpnFThrow__v_;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_Instruction.o;
-text: .text%__1cFThrowIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_Instruction.o;
-text: .text%__1cFThrowIas_Throw6M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_Instruction.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_Instruction.o;
-text: .text%__1cKStateSplitPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cTNullCheckEliminatorShandle_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cGInvokePinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cTNullCheckEliminatorNhandle_Invoke6MpnGInvoke__v_;
-text: .text%__1cFThrowPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorIdo_Throw6MpnFThrow__v_;
-text: .text%__1cPBlockBeginArrayIindex_of6kMkpnKBlockBegin__i_: c1_IR.o;
-text: .text%__1cLInstructionGnegate6Fn0AJCondition__1_;
-text: .text%__1cFThrowPstate_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cFRInfoIoverlaps6kMk0_i_;
-text: .text%__1cIValueGenOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cIValueGenVspill_values_on_stack6MpnKValueStack_nFRInfo_i_v_;
-text: .text%__1cIRegAllocNlock_register6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cHHideReg2t6MpnIValueGen_pnJValueType__v_;
-text: .text%__1cHHideReg2T6M_v_;
-text: .text%__1cLLIR_EmitterMnew_instance6MnFRInfo_pnPciInstanceKlass_1111pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterZjobject2reg_with_patching6MnFRInfo_pnIciObject_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListNoop2reg_patch6MpnI_jobject_nFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cPNewInstanceStub2t6MnFRInfo_pnLLIR_OprDesc_pnPciInstanceKlass_pnMCodeEmitInfo_nIRuntime1GStubID__v_;
-text: .text%__1cIValueGenJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cIValueGenWinvoke_visit_arguments6MpnGInvoke_pnRCallingConvention__pnJItemArray__;
-text: .text%__1cIValueGenNis_free_rinfo6MnFRInfo__i_;
-text: .text%__1cGInvokeRsize_of_arguments6kM_i_;
-text: .text%__1cLLIR_EmitterVstore_stack_parameter6MpnLLIR_OprDesc_i_v_;
-text: .text%__1cILIR_ListFstore6MpnLLIR_OprDesc_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cHHideReg2t6MpnIValueGen_nFRInfo_i_v_;
-text: .text%__1cIValueGenVinvoke_load_arguments6MpnGInvoke_pnJItemArray_pnRCallingConvention__v_;
-text: .text%__1cIValueGenPinvoke_do_spill6MpnGInvoke_nFRInfo__v_;
-text: .text%__1cIValueGenXis_caller_save_register6FnFRInfo__i_;
-text: .text%__1cIValueGenLspill_value6MpnLInstruction__v_;
-text: .text%__1cIValueGenKspill_item6MpnEItem__v_;
-text: .text%__1cIValueGenQround_spill_item6MpnEItem_i_v_;
-text: .text%__1cIRegAllocOget_lock_spill6MpnLInstruction_i_i_;
-text: .text%__1cIValueGenJraw_rfree6MpnEItem__v_;
-text: .text%__1cLLIR_EmitterFspill6MipnLLIR_OprDesc__v_;
-text: .text%__1cIFrameMapKspill_name6kMi_i_;
-text: .text%__1cIValueGenQinvoke_do_result6MpnGInvoke_ipnEItem__v_;
-text: .text%__1cIVoidTypeLas_VoidType6M_p0_: c1_ValueType.o;
-text: .text%__1cLCompilationXlir_opr_for_instruction6MpnLInstruction__pnLLIR_OprDesc__;
-text: .text%__1cLLIR_EmitterHcall_op6MnJBytecodesECode_pknOBasicTypeArray_pnMCodeEmitInfo_iiinFRInfo_pnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListKnull_check6MnFRInfo_pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListQcall_opt_virtual6MnFRInfo_pnLLIR_OprDesc_pCpnMCodeEmitInfo_pnOStaticCallStub__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenIdo_Throw6MpnFThrow__v_;
-text: .text%__1cLNewInstanceKexact_type6kM_pnGciType__;
-text: .text%__1cOExceptionScopeLcould_catch6kMpnPciInstanceKlass_i_i_;
-text: .text%__1cIValueGenRexceptionOopRInfo6F_nFRInfo__;
-text: .text%__1cIValueGenFsfree6MpnEItem__v_;
-text: .text%__1cIRegAllocKfree_spill6MipnJValueType__v_;
-text: .text%__1cIRegAllocNis_free_spill6kMipnJValueType__i_;
-text: .text%__1cLNewInstanceOas_NewInstance6M_p0_: c1_Instruction.o;
-text: .text%__1cIValueGenQexceptionPcRInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListPthrow_exception6MnFRInfo_1pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_CodeGenerator.o;
-text: .text%__1cPNewInstanceStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cOLIR_OpJavaCallFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQLIR_OpVisitStateGappend6MnFRInfo__v_: c1_LIR.o;
-text: .text%__1cOStaticCallStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cIFrameMapWcaller_save_cpu_reg_at6Fi_pnLLIR_OprDesc__;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_Instruction.o;
-text: .text%__1cIVoidTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_Instruction.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_Instruction.o;
-text: .text%__1cRLIR_PeepholeStateHdo_call6M_v_;
-text: .text%__1cOLIR_OpJavaCallJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerJemit_call6MpnOLIR_OpJavaCall__v_;
-text: .text%__1cNLIR_AssemblerJconst2reg6MpnJLIR_Const_nFRInfo_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cMPatchingStubQalign_patch_site6MpnOMacroAssembler__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_pnI_jobject__v_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_: relocInfo.o;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cOoop_RelocationJpack_data6M_i_;
-text: .text%__1cNLIR_AssemblerPpatching_epilog6MpnMPatchingStub_nHLIR_Op1NLIR_PatchCode_pnMRegisterImpl_pnMCodeEmitInfo__v_;
-text: .text%__1cMPatchingStubHinstall6MpnOMacroAssembler_nHLIR_Op1NLIR_PatchCode_pnMRegisterImpl_pnMCodeEmitInfo__v_: c1_LIRAssembler.o;
-text: .text%__1cNLIR_AssemblerUappend_patching_stub6MpnMPatchingStub__v_;
-text: .text%__1cPNewInstanceStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerJemit_call6MpnOLIR_OpJavaCall__v_;
-text: .text%__1cNLIR_AssemblerKalign_call6MnILIR_Code__v_;
-text: .text%__1cICodeStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cOStaticCallStubLset_code_pc6MpC_v_: c1_CodeStubs_x86.o;
-text: .text%__1cOStaticCallStubMis_call_stub6kM_i_: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerEcall6MpCnJrelocInfoJrelocType_pnMCodeEmitInfo__v_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKRelocationJpack_data6M_i_: relocInfo.o;
-text: .text%__1cMCodeEmitInfoSappend_scope_value6MpnLLIR_OprDesc_pnNGrowableArray4CpnKScopeValue____v_;
-text: .text%__1cMCodeEmitInfoRopr2location_type6MpnLLIR_OprDesc__nILocationEType__;
-text: .text%__1cMCodeEmitInfoRlocation_for_name6MinILocationEType_ii_1_;
-text: .text%__1cIFrameMapRlocation_for_name6kMinILocationEType_p1ii_i_;
-text: .text%__1cNLIR_AssemblerIthrow_op6MnFRInfo_1pnMCodeEmitInfo_i_v_;
-text: .text%__1cMCodeEmitInfoQadd_register_oop6MnFRInfo__v_;
-text: .text%__1cIintArrayIindex_of6kMki_i_: c1_LIREmitter.o;
-text: .text%__1cMCodeEmitInfoYadd_registers_to_oop_map6MpnGOopMap__v_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cMPatchingStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
-text: .text%__1cRNativeGeneralJumpUinsert_unconditional6FpC1_v_;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
-text: .text%__1cJrelocInfobDchange_reloc_info_for_address6FpnNRelocIterator_pCn0AJrelocType_4_v_;
-text: .text%__1cJrelocInfoIset_type6Mn0AJrelocType__v_;
-text: .text%__1cPNewInstanceStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cOStaticCallStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cWstatic_stub_RelocationJpack_data6M_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cYinternal_word_RelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nmethod.o;
-text: .text%__1cOoop_RelocationHoops_do6MpFppnHoopDesc__v_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cRresolve_and_patch6FppnHoopDesc__v_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cNFingerprinterIdo_float6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRuntime.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cNFingerprinterJdo_double6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRuntime.o;
-text: .text%__1cXNativeSignatureIteratorLpass_double6M_v_: interpreterRuntime.o;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%JVM_Read;
-text: .text%__1cDhpiEread6FipvI_I_: jvm.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_char6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cMLinkResolverbNlinktime_resolve_virtual_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cIciMethodXfind_monomorphic_target6MpnHciKlass_22_p0_;
-text: .text%__1cDCHAManalyze_call6FnLKlassHandle_11nMsymbolHandle_2_pnJCHAResult__;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cJCHAResult2t6MnLKlassHandle_nMsymbolHandle_2pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___n0E_i_v_;
-text: .text%__1cJCHAResultOis_monomorphic6kM_i_;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
-text: .text%__1cIciMethodJwill_link6MpnHciKlass_2nJBytecodesECode__i_;
-text: .text%__1cMGraphBuilderKtry_inline6MpnIciMethod_i_i_;
-text: .text%__1cMGraphBuilderUclear_inline_bailout6M_v_;
-text: .text%__1cIciMethodOshould_exclude6M_i_;
-text: .text%__1cIciMethodPcan_be_compiled6M_i_;
-text: .text%__1cMGraphBuilderVtry_inline_intrinsics6MpnIciMethod__i_;
-text: .text%__1cMGraphBuilderPtry_inline_full6MpnIciMethod_i_i_;
-text: .text%__1cIciMethodIhas_jsrs6kM_i_;
-text: .text%__1cMGraphBuilderWrecursive_inline_level6kMpnIciMethod__i_;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cJNullCheckFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cJNullCheckIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cKObjectTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cKValueStackEpush6MpnJValueType_pnLInstruction__v_: c1_ValueStack.o;
-text: .text%__1cMGraphBuilderKpush_scope6MpnIciMethod_pnKBlockBegin_i_v_;
-text: .text%__1cKValueStackKpush_scope6MpnHIRScope__p0_;
-text: .text%__1cOExceptionScopeKpush_scope6M_p0_;
-text: .text%__1cOExceptionScope2t6Mp0_v_;
-text: .text%__1cHIRScopeXcompute_lock_stack_size6M_v_;
-text: .text%__1cMGraphBuilderJScopeDataRcaller_stack_size6kM_i_;
-text: .text%__1cMGraphBuilderJScopeDataLnum_returns6M_i_;
-text: .text%__1cMGraphBuilderJScopeDataXset_inline_cleanup_info6MpnKBlockBegin_pnLInstruction_pnKValueStack__v_;
-text: .text%__1cMGraphBuilderJScopeDataQincr_num_returns6M_v_;
-text: .text%__1cKValueStackJpop_scope6Mii_p0_;
-text: .text%__1cMGraphBuilderJpop_scope6M_v_;
-text: .text%__1cMGraphBuilderTpop_exception_scope6M_v_;
-text: .text%__1cOExceptionScopeJpop_scope6M_p0_;
-text: .text%__1cLCompilationVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cMGraphBuilderOinline_bailout6Mpkc_v_;
-text: .text%__1cLInstructionEprev6MpnKBlockBegin__p0_;
-text: .text%__1cKBlockBeginUresolve_substitution6M_v_;
-text: .text%__1cKBlockBeginPblock_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cZresolve_substituted_value6FppnLInstruction__v_: c1_Instruction.o;
-text: .text%__1cLInstructionFsubst6M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionPother_values_do6MpFpp0_v_v_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionPstate_values_do6MpFpp0_v_v_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionPstate_values_do6MpFpp0_v_v_: c1_Instruction.o;
-text: .text%__1cIConstantPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cIBlockEndPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cHIntTypeEsize6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cJNullCheckPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cTNullCheckEliminatorQhandle_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cLInstructionOas_AccessLocal6M_pnLAccessLocal__: c1_GraphBuilder.o;
-text: .text%__1cHIRScopeNtop_scope_bci6kM_i_;
-text: .text%__1cQUseCountComputerPclear_use_count6FpnKBlockBegin__v_: c1_IR.o;
-text: .text%__1cIValueGenMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cJNullCheckKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterKnull_check6MpnLLIR_OprDesc_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListDsub6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenQlock_spill_rinfo6MpnLInstruction_nFRInfo__v_;
-text: .text%__1cQIRScopeDebugInfoRrecord_debug_info6MpnYDebugInformationRecorder__v_: c1_LIREmitter.o;
-text: .text%__1cIRuntime1Yresolve_opt_virtual_call6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cFframeZsender_for_compiled_frame6kMpnLRegisterMap_pnICodeBlob_i_0_;
-text: .text%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cHnmethodJis_zombie6kM_i_: nmethod.o;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cHnmethodQis_native_method6kM_i_: nmethod.o;
-text: .text%__1cHnmethodKpc_desc_at6MpCi_pnGPcDesc__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cLPcDescCacheKpc_desc_at6kMpnHnmethod_pCi_pnGPcDesc__;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cSvframeStreamCommonYfill_from_compiled_frame6MpnHnmethod_i_v_;
-text: .text%__1cUCompressedReadStreamMraw_read_int6FrpC_i_: vframe.o;
-text: .text%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKCompiledICZcompute_monomorphic_entry6FnMmethodHandle_nLKlassHandle_iirnOCompiledICInfo_pnGThread__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cXvirtual_call_RelocationIparse_ic6FrpnICodeBlob_rpC5rppnHoopDesc_pi_nNRelocIterator__;
-text: .text%__1cKCompiledICIis_clean6kM_i_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
-text: .text%__1cRInlineCacheBufferIcontains6FpC_i_;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cNRelocIteratorEnext6M_i_: compiledIC.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: compiledIC.o;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cNnmethodLocker2T6M_v_;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cXjvm_define_class_common6FpnHJNIEnv__pkcpnI_jobject_pkWi53pnGThread__pnH_jclass__: jvm.o;
-text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cPClassFileParserZskip_over_field_signature6MpciIpnGThread__1_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cQput_after_lookup6FnMsymbolHandle_0ppnLNameSigHash__i_;
-text: .text%__1cEhash6Fpkc1_I_;
-text: .text%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
-text: .text%__1cPDictionaryEntrybAcontains_protection_domain6kMpnHoopDesc__i_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%__1cUverify_byte_codes_fn6F_pv_: verifier.o;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%JVM_GetClassNameUTF;
-text: .text%JVM_ReleaseUTF;
-text: .text%JVM_FindClassFromClass;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%JVM_IsConstructorIx;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cQSystemDictionaryVadd_loader_constraint6FnMsymbolHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableJadd_entry6MnMsymbolHandle_pnMklassOopDesc_nGHandle_34pnGThread__i_;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cKReflectionKnew_method6FnMmethodHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: reflection.o;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodThas_signature_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodVhas_annotations_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodbChas_annotation_default_field6F_i_;
-text: .text%__1cNmethodOopDescSannotation_default6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%jni_DetachCurrentThread;
-text: .text%__1cKJavaThreadEexit6Mi_v_;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cWThreadLocalAllocBufferFclear6M_v_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cNThreadServiceNremove_thread6FpnKJavaThread_i_v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cGParker2T6M_v_;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointState2T6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%jni_DestroyJavaVM;
-text: .text%jni_AttachCurrentThread;
-text: .text%attach_current_thread: jni.o;
-text: .text%__1cCosWcreate_attached_thread6FpnGThread__i_;
-text: .text%__1cKJavaThreadSallocate_threadObj6MnGHandle_pcipnGThread__v_;
-text: .text%__1cHThreadsKdestroy_vm6F_i_;
-text: .text%__1cKJavaThreadVinvoke_shutdown_hooks6M_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cMPeriodicTaskLis_enrolled6kM_i_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cFVTuneEexit6F_v_;
-text: .text%__1cIVMThreadXwait_for_vm_thread_exit6F_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cTAbstractInterpreterRnotice_safepoints6F_v_;
-text: .text%__1cKcopy_table6FppC1i_v_: interpreter.o;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
-text: .text%__1cUThreadSafepointStateMroll_forward6Mn0AMsuspend_type_pnHnmethod_i_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cJdo_method6FpnNmethodOopDesc__v_: recompilationMonitor.o;
-text: .text%__1cONMethodSweeperFsweep6F_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cURecompilationMonitorbFstop_recompilation_monitor_task6F_v_;
-text: .text%__1cIVMThreadHdestroy6F_v_;
-text: .text%__SLIP.DELETER__A: vmThread.o;
-text: .text%__1cSThreadLocalStorageRpd_invalidate_all6F_v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cVverificationType_exit6F_v_;
-text: .text%__1cQVerificationTypeIfinalize6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cUdelete_shared_memory6FpcI_v_: perfMemory_solaris.o;
-text: .text%__1cLremove_file6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__SLIP.FINAL__A: c1_Items.o;
-# Test Exit
-text: .text%__1cPSignatureStreamHis_done6kM_i_;
-text: .text%JVM_Halt;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationNdoit_prologue6M_i_: vm_operations.o;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__: vm_operations.o;
-text: .text%__1cMVM_OperationSis_cheap_allocated6kM_i_: vm_operations.o;
-text: .text%__1cQVMOperationQdDueueDadd6MpnMVM_Operation__i_;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cHVM_ExitEname6kM_pkc_: vm_operations.o;
-text: .text%__1cJEventMark2t6MpkcE_v_: vmThread.o;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: vmThread.o;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-# Test Hello
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_I_: jvm.o;
-# Test Sleep
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%JVM_Sleep;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosOunguard_memory6FpcI_i_;
-# Test IntToString
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cJChunkPoolMfree_all_but6MI_v_: allocation.o;
-# Test LoadToolkit
-text: .text%JVM_GetClassContext;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: jvm.o;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cMGraphBuilderNload_constant6M_v_;
-text: .text%__1cQciBytecodeStreamMget_constant6kM_nKciConstant__;
-text: .text%__1cQciBytecodeStreamSget_constant_index6kM_i_;
-text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cLInstructionMas_LoadLocal6M_pnJLoadLocal__: c1_Canonicalizer.o;
-text: .text%__1cTsort_by_start_block6FppnELoop_2_i_: c1_Loops.o;
-text: .text%__1cILIR_ListLcall_static6MpnLLIR_OprDesc_pCpnMCodeEmitInfo_pnOStaticCallStub__v_: c1_LIREmitter.o;
-text: .text%__1cLLIR_EmitterLcmp_mem_int6MnMLIR_OpBranchNLIR_Condition_nFRInfo_iipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListLcmp_mem_int6MnMLIR_OpBranchNLIR_Condition_nFRInfo_iipnMCodeEmitInfo__v_;
-text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_Canonicalizer.o;
-text: .text%__1cILIR_ListHint2reg6MinFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cKValueStackEpush6MpnJValueType_pnLInstruction__v_: c1_Optimizer.o;
-text: .text%__1cEIfOpPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cEIfOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorHdo_IfOp6MpnEIfOp__v_;
-text: .text%__1cIValueGenHdo_IfOp6MpnEIfOp__v_;
-text: .text%__1cLLIR_EmitterLifop_phase16MnLInstructionJCondition_pnLLIR_OprDesc_4_v_;
-text: .text%__1cLLIR_EmitterLifop_phase26MnFRInfo_pnLLIR_OprDesc_3nLInstructionJCondition__v_;
-text: .text%__1cILIR_ListGbranch6MnMLIR_OpBranchNLIR_Condition_pnFLabel__v_;
-text: .text%__1cRLIR_PeepholeStateUstart_forward_branch6MpnFLabel__v_;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%__1cMGraphBuilderLinstance_of6Mi_v_;
-text: .text%__1cKInstanceOfFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cJTypeCheckIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderOdirect_compare6MpnHciKlass__i_;
-text: .text%__1cKInstanceOfNas_InstanceOf6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderKcheck_cast6Mi_v_;
-text: .text%__1cJCheckCastFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cJValueTypeKas_IntType6M_pnHIntType__: c1_ValueType.o;
-text: .text%__1cJTypeCheckPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cQNullCheckVisitorMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cIValueGenNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_CodeGenerator_x86.o;
-text: .text%__1cLLIR_EmitterNinstanceof_op6MpnLLIR_OprDesc_2pnHciKlass_nFRInfo_5ipnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListKinstanceof6MpnLLIR_OprDesc_2pnHciKlass_22ipnMCodeEmitInfo__v_;
-text: .text%__1cPLIR_OpTypeCheck2t6MnILIR_Code_pnLLIR_OprDesc_3pnHciKlass_33ipnMCodeEmitInfo_7pnICodeStub__v_;
-text: .text%__1cIValueGenMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cILIR_ListJcheckcast6MpnLLIR_OprDesc_2pnHciKlass_22ipnMCodeEmitInfo_6pnICodeStub__v_;
-text: .text%__1cILIR_ListJsafepoint6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator_x86.o;
-text: .text%__1cPLIR_OpTypeCheckFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cTSimpleExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cPLIR_OpTypeCheckJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
-text: .text%__1cLLIR_OprDescIsize_for6FnJBasicType__n0AHOprSize__: c1_LIROptimizer.o;
-text: .text%__1cIintArrayIindex_of6kMki_i_: c1_LIROptimizer.o;
-text: .text%__1cNLIR_AssemblerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
-text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_pnI_jobject__v_;
-text: .text%__1cTSimpleExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cTSimpleExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cJLoadFieldIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
-text: .text%__1cJLoadFieldMas_LoadField6M_p0_: c1_Instruction.o;
-text: .text%__1cDPhiPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cDPhiFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorGdo_Phi6MpnDPhi__v_;
-text: .text%__1cLInstructionIas_Local6M_pnFLocal__: c1_GraphBuilder.o;
-text: .text%__1cDPhiGas_Phi6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cIValueGenScompute_phi_arrays6MpnKValueStack_pnGValues_pnIintStack_i_pnLInstruction__;
-text: .text%__1cLLIR_EmitterTset_fpu_stack_empty6M_v_;
-text: .text%__1cIRegAllocKlock_spill6MpnLInstruction_ii_v_;
-text: .text%__1cIRegAllocRextend_spill_area6Mi_v_;
-text: .text%__1cRclear_state_items6FppnLInstruction__v_: c1_CodeGenerator.o;
-text: .text%__1cNLIR_AssemblerTset_fpu_stack_empty6M_v_;
-text: .text%__1cIFrameMapLFpuStackSimFclear6M_v_;
-text: .text%jni_GetEnv;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cVcreate_gc_point_array6FpnFArena_i_pnNGrowableArray4Ci___;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: c1_IR.o;
-text: .text%__1cMGraphBuilderQhandle_exception6Mi_v_;
-text: .text%__1cOExceptionScopeFclear6M_v_;
-text: .text%__1cMGraphBuilderJScopeDataJxhandlers6kM_pnJXHandlers__;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cMGraphBuilderHif_null6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cOObjectConstantRas_ObjectConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cMas_ValueType6FnKciConstant__pnJValueType__;
-text: .text%__1cLInstructionGmirror6Fn0AJCondition__1_;
-text: .text%__1cHis_true6FxnLInstructionJCondition_x_i_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerNset_canonical6MpnLInstruction__v_;
-text: .text%__1cKBlockBeginVadd_exception_handler6Mp0_v_;
-text: .text%__1cPBlockBeginArrayIindex_of6kMkpnKBlockBegin__i_: c1_Instruction.o;
-text: .text%__1cOExceptionScopeLadd_handler6MpnIXHandler__v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
-text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_ValueType.o;
-text: .text%__1cNClassConstantQas_ClassConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cOExceptionScopeKhandler_at6kMi_pnIXHandler__;
-text: .text%__1cLInstructionMas_LoadLocal6M_pnJLoadLocal__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderIlogic_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHLogicOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cHLogicOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cHLogicOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cLInstructionIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderHconvert6MnJBytecodesECode_nJBasicType_3_v_;
-text: .text%__1cHConvertFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_Convert6MpnHConvert__v_;
-text: .text%__1cHConvertEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHConvertEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderNstore_indexed6MnJBasicType__v_;
-text: .text%__1cIValueMapKkill_array6MpnJValueType__v_;
-text: .text%__1cGBucketKkill_array6MpnJValueType__v_;
-text: .text%__1cLInstructionOas_LoadIndexed6M_pnLLoadIndexed__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionOas_LoadIndexed6M_pnLLoadIndexed__: c1_Instruction.o;
-text: .text%__1cKValueStackRpin_stack_indexed6MpnJValueType__v_;
-text: .text%__1cMStoreIndexedFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cLAccessArrayIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLAccessFieldPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cLInstructionPother_values_do6MpFpp0_v_v_: c1_Instruction.o;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstance.o;
-text: .text%__1cMStoreIndexedPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cHConvertPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cQNullCheckVisitorKdo_Convert6MpnHConvert__v_;
-text: .text%__1cQNullCheckVisitorPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cTNullCheckEliminatorThandle_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cMciNullObjectMis_classless6kM_i_: ciNullObject.o;
-text: .text%__1cJValueTypeQas_ClassConstant6M_pnNClassConstant__: c1_ValueType.o;
-text: .text%__1cOObjectConstantIencoding6kM_pnI_jobject__;
-text: .text%__1cIValueGenbBrlock_byte_result_with_hint6MpnLInstruction_pknEItem__nFRInfo__;
-text: .text%__1cNc1_AllocTableThas_one_free_masked6kMnKc1_RegMask__i_;
-text: .text%__1cIRegAllocMget_lock_reg6MpnLInstruction_nKc1_RegMask__nFRInfo__;
-text: .text%__1cIRegAllocMget_free_reg6MnKc1_RegMask__nFRInfo__;
-text: .text%__1cNc1_AllocTablePget_free_masked6MnKc1_RegMask__i_;
-text: .text%__1cNClassConstantIencoding6kM_pnI_jobject__;
-text: .text%__1cLLIR_EmitterLopr2jobject6MpnLLIR_OprDesc__pnI_jobject__;
-text: .text%__1cILIR_ListHoop2reg6MpnI_jobject_nFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenMrelease_item6MpnEItem__v_;
-text: .text%__1cIValueGenPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cIValueGenKdo_Convert6MpnHConvert__v_;
-text: .text%__1cIValueGenKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cLLIR_EmitterIlogic_op6MnJBytecodesECode_nFRInfo_pnLLIR_OprDesc_5_v_;
-text: .text%__1cILIR_ListLlogical_and6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
-text: .text%__1cLLIR_EmitterKconvert_op6MnJBytecodesECode_pnLLIR_OprDesc_nFRInfo_i_v_;
-text: .text%__1cILIR_ListHconvert6MnJBytecodesECode_pnLLIR_OprDesc_4i_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenKmust_round6MpnLInstruction_pknEItem__i_;
-text: .text%__1cLAccessArrayKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterNindexed_store6MnJBasicType_pnLLIR_OprDesc_33nFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterXlo_word_offset_in_bytes6kM_i_;
-text: .text%__1cLLIR_EmitterXhi_word_offset_in_bytes6kM_i_;
-text: .text%__1cILIR_ListLstore_array6MnFRInfo_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenXexception_handler_start6MpnHIRScope_ipnKValueStack__v_;
-text: .text%__1cLLIR_EmitterNhandler_entry6M_v_;
-text: .text%__1cLLIR_OprFactQdummy_value_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cLInstructionKexact_type6kM_pnGciType__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionNdeclared_type6kM_pnGciType__: c1_GraphBuilder.o;
-text: .text%__1cILIR_ListKnull_check6MnFRInfo_pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
-text: .text%__1cNLIR_OpConvertJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_pnI_jobject__v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_pnI_jobject__v_;
-text: .text%__1cNLIR_AssemblerIlogic_op6MnILIR_Code_pnLLIR_OprDesc_33_v_;
-text: .text%__1cNLIR_AssemblerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cNLIR_AssemblerNarray_move_op6MpnLLIR_OprDesc_2nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerJreg2array6MnFRInfo_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerPas_ArrayAddress6MpnLLIR_Address_nJBasicType__nHAddress__;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%__1cTExceptionRangeTableJadd_entry6Miiiiii_v_;
-text: .text%__1cTExceptionRangeEntry2t6Miiiiii_v_;
-text: .text%__1cTExceptionRangeTableJadd_entry6MnTExceptionRangeEntry__v_;
-text: .text%__1cOExceptionScopeCid6kM_i_;
-text: .text%__1cTExceptionRangeTableTentry_index_for_pco6kMi_i_;
-text: .text%__1cTExceptionRangeTableIentry_at6kMi_pnTExceptionRangeEntry__;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%JVM_GetLastErrorString;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%JVM_DisableCompiler;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Available;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cLInstructionMas_LoadField6M_pnJLoadField__: c1_Instruction.o;
-text: .text%__1cHLogicOpOis_commutative6kM_i_;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
-text: .text%__1cUGenericGrowableArrayMraw_contains6kMpknEGrET__i_;
-text: .text%__1cLArrayLengthFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLArrayLengthEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLArrayLengthEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderOnew_type_array6M_v_;
-text: .text%__1cMNewTypeArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cINewArrayIcan_trap6kM_i_: c1_Instruction.o;
-text: .text%__1cJIntrinsicFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cJIntrinsicMas_Intrinsic6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cJIntrinsicIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLAccessArrayPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cTNullCheckEliminatorShandle_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cINewArrayPinput_values_do6MpFppnLInstruction__v_v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cTNullCheckEliminatorPhandle_NewArray6MpnINewArray__v_;
-text: .text%__1cJIntrinsicPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cJLoopArrayIindex_of6kMkpnELoop__i_: c1_Loops.o;
-text: .text%__1cINewArrayLas_NewArray6M_p0_: c1_Instruction.o;
-text: .text%__1cILIR_ListOcall_icvirtual6MnFRInfo_pnLLIR_OprDesc_pCpnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListNstore_mem_int6MinFRInfo_inJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cIValueGenOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLLIR_EmitterMarray_length6MnFRInfo_pnLLIR_OprDesc_pnMCodeEmitInfo__v_;
-text: .text%__1cLlog2_intptr6Fi_i_: c1_LIREmitter.o;
-text: .text%__1cIValueGenPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cLLIR_EmitterOnew_type_array6MnFRInfo_nJBasicType_pnLLIR_OprDesc_11111pnMCodeEmitInfo__v_;
-text: .text%__1cQNewTypeArrayStub2t6MnFRInfo_11pnMCodeEmitInfo__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cILIR_ListHoop2reg6MpnI_jobject_nFRInfo__v_: c1_LIREmitter_x86.o;
-text: .text%__1cILIR_ListOallocate_array6MnFRInfo_11111nJBasicType_1pnICodeStub__v_;
-text: .text%__1cIValueGenMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cIValueGenMdo_ArrayCopy6MpnJIntrinsic__v_;
-text: .text%__1cIValueGenQarraycopy_helper6MpnJIntrinsic_pippnMciArrayKlass__v_;
-text: .text%__1cJLoadFieldKexact_type6kM_pnGciType__;
-text: .text%__1cJLoadFieldNdeclared_type6kM_pnGciType__;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cOas_array_klass6FpnGciType__pnMciArrayKlass__: c1_CodeGenerator.o;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cMNewTypeArrayKexact_type6kM_pnGciType__;
-text: .text%__1cLInstructionNdeclared_type6kM_pnGciType__: c1_Instruction.o;
-text: .text%__1cRpositive_constant6FpnLInstruction__i_: c1_CodeGenerator.o;
-text: .text%__1cLArrayLengthOas_ArrayLength6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cQis_constant_zero6FpnLInstruction__i_: c1_CodeGenerator.o;
-text: .text%__1cILIR_ListJarraycopy6MpnLLIR_OprDesc_22222pnMciArrayKlass_ipnMCodeEmitInfo__v_: c1_CodeGenerator_x86.o;
-text: .text%__1cLLIR_EmitterNwrite_barrier6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cILIR_ListUunsigned_shift_right6MnFRInfo_i1_v_: c1_LIREmitter_x86.o;
-text: .text%__1cILIR_ListUunsigned_shift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cQLIR_OpAllocArrayFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQNewTypeArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cPLIR_OpArrayCopyFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQLIR_OpAllocArrayJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerQemit_alloc_array6MpnQLIR_OpAllocArray__v_;
-text: .text%__1cPLIR_OpArrayCopyJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
-text: .text%__1cNLIR_AssemblerHic_call6MpCpnMCodeEmitInfo__v_;
-text: .text%__1cJAssemblerEcall6MpCrknQRelocationHolder__v_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_i_;
-text: .text%__1cNLIR_AssemblerJconst2mem6MpnJLIR_Const_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerQemit_alloc_array6MpnQLIR_OpAllocArray__v_;
-text: .text%__1cNLIR_AssemblerSarray_element_size6kMnJBasicType__nHAddressLScaleFactor__;
-text: .text%__1cRC1_MacroAssemblerOallocate_array6MpnMRegisterImpl_222inHAddressLScaleFactor_2rnFLabel__v_;
-text: .text%__1cRC1_MacroAssemblerMtry_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
-text: .text%__1cQNewTypeArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
-text: .text%__1cMciArrayKlassMelement_type6M_pnGciType__;
-text: .text%__1cNArrayCopyStub2t6MpnMCodeEmitInfo_pnOStaticCallStub__v_;
-text: .text%__1cFRInfoMset_word_reg6MkpnMRegisterImpl__v_;
-text: .text%__1cNArrayCopyStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOpush_parameter6MpnMRegisterImpl_i_v_;
-text: .text%__1cQNewTypeArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNArrayCopyStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cIRuntime1Uresolve_virtual_call6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: compiledICHolderKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: compiledICHolderKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: compiledICHolderKlass.o;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlass.o;
-text: .text%JVM_NewArray;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cNobjArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMkpnNmethodOopDesc_i_pnHnmethod__;
-text: .text%__1cQSimpleCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cICompilerMsupports_osr6M_i_: c1_Compiler.o;
-text: .text%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cMGraphBuilderQnew_object_array6M_v_;
-text: .text%__1cONewObjectArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cMGraphBuilderIshift_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHShiftOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cHShiftOpEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHShiftOpEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cLLoadIndexedOas_LoadIndexed6M_p0_: c1_Instruction.o;
-text: .text%__1cMArithmeticOpIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
-text: .text%__1cDOp2Gas_Op26M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionMas_LoadField6M_pnJLoadField__: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cDOp2Pinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cHciKlassMaccess_flags6M_i_;
-text: .text%__1cILIR_ListPallocate_object6MnFRInfo_111ii1pnICodeStub__v_;
-text: .text%__1cLLIR_EmitterOmembar_release6M_v_;
-text: .text%__1cLLIR_EmitterGmembar6M_v_;
-text: .text%__1cIValueGenRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cLLIR_EmitterQnew_object_array6MnFRInfo_pnHciKlass_pnLLIR_OprDesc_11111pnMCodeEmitInfo_7_v_;
-text: .text%__1cSNewObjectArrayStub2t6MnFRInfo_11pnMCodeEmitInfo__v_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cLLIR_EmitterOmembar_acquire6M_v_;
-text: .text%__1cIValueGenKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cIValueGenPshiftCountRInfo6F_nFRInfo__;
-text: .text%__1cLLIR_EmitterIshift_op6MnJBytecodesECode_nFRInfo_pnLLIR_OprDesc_53_v_;
-text: .text%__1cILIR_ListKshift_left6MnFRInfo_i1_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListKlogical_or6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
-text: .text%__1cOLIR_OpAllocObjFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cSNewObjectArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cOLIR_OpAllocObjJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerOemit_alloc_obj6MpnOLIR_OpAllocObj__v_;
-text: .text%__1cNLIR_AssemblerOemit_alloc_obj6MpnOLIR_OpAllocObj__v_;
-text: .text%__1cRC1_MacroAssemblerPallocate_object6MpnMRegisterImpl_22ii2rnFLabel__v_;
-text: .text%__1cNLIR_AssemblerOmembar_release6M_v_;
-text: .text%__1cNLIR_AssemblerGmembar6M_v_;
-text: .text%__1cSNewObjectArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOmembar_acquire6M_v_;
-text: .text%__1cEBaseHas_Base6M_p0_: c1_IR.o;
-text: .text%__1cNLIR_AssemblerOemit_osr_entry6MpnHIRScope_ipnFLabel_i_v_;
-text: .text%__1cSNewObjectArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cUGenericGrowableArrayLraw_at_grow6MipknEGrET__pv_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%jni_CallStaticBooleanMethodV: jni.o;
-text: .text%JVM_GetStackTraceDepth;
-text: .text%__1cTjava_lang_ThrowableVget_stack_trace_depth6FpnHoopDesc_pnGThread__i_;
-text: .text%__1cTjava_lang_ThrowableJbacktrace6FpnHoopDesc__2_;
-text: .text%JVM_GetStackTraceElement;
-text: .text%__1cTjava_lang_ThrowableXget_stack_trace_element6FpnHoopDesc_ipnGThread__2_;
-text: .text%__1cbBjava_lang_StackTraceElementGcreate6FnMmethodHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cbBjava_lang_StackTraceElementNset_className6FpnHoopDesc_2_v_;
-text: .text%__1cbBjava_lang_StackTraceElementOset_methodName6FpnHoopDesc_2_v_;
-text: .text%__1cbBjava_lang_StackTraceElementMset_fileName6FpnHoopDesc_2_v_;
-text: .text%__1cNmethodOopDescUline_number_from_bci6kMi_i_;
-text: .text%__1cbECompressedLineNumberReadStream2t6MpC_v_;
-text: .text%__1cbECompressedLineNumberReadStreamJread_pair6M_i_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: methodOop.o;
-text: .text%__1cbBjava_lang_StackTraceElementOset_lineNumber6FpnHoopDesc_i_v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: typeArrayKlass.o;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciObjectFactory.o;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cNObjectMonitorREntryQdDueue_insert6MpnMObjectWaiter_i_v_;
-text: .text%__1cNObjectMonitorbAEntryQdDueue_SelectSuccessor6M_pnMObjectWaiter__;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_: objectMonitor_solaris.o;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%JVM_EnableCompiler;
-text: .text%__1cCosHSolarisFEventEpark6Mx_i_: objectMonitor_solaris.o;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cTAbstractInterpreterRignore_safepoints6F_v_;
-text: .text%__1cGThreadQunboost_priority6Fp0_v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-# Test LoadFrame
-text: .text%__1cNObjectMonitorGenter26MpnGThread__v_;
-text: .text%__1cICompilerPsupports_native6M_i_: c1_Compiler.o;
-text: .text%__1cLCompilationVcompile_native_method6MpnLCodeOffsets__i_;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cLCompilationUemit_code_for_native6MpCpnLCodeOffsets__v_;
-text: .text%__1cLCompilationXemit_code_prolog_native6MpnIFrameMap__v_;
-text: .text%__1cNLIR_AssemblerRemit_method_entry6MpnLLIR_Emitter_pnHIRScope__v_;
-text: .text%__1cOMacroAssemblerHfat_nop6M_v_;
-text: .text%__1cNLIR_AssemblerQemit_native_call6MpCpnMCodeEmitInfo__v_;
-text: .text%__1cMCodeEmitInfobGcreate_oop_map_for_own_signature6M_pnGOopMap__;
-text: .text%__1cNLIR_AssemblerXemit_native_method_exit6MpnMCodeEmitInfo__v_;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: reflection.o;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: reflection.o;
-text: .text%jni_CallObjectMethodV: jni.o;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cbCTwoGenerationCollectorPolicybMshould_try_older_generation_allocation6kMI_i_;
-text: .text%__1cQGenCollectedHeapSattempt_allocation6MIiii_pnIHeapWord__;
-text: .text%__1cQDefNewGenerationIallocate6MIii_pnIHeapWord__: defNewGeneration.o;
-text: .text%__1cKGenerationInext_gen6kM_p0_;
-text: .text%__1cKGenerationYallocation_limit_reached6MpnFSpace_pnIHeapWord_I_4_: tenuredGeneration.o;
-text: .text%__1cQDefNewGenerationTallocate_from_space6MI_pnIHeapWord__;
-text: .text%__1cPVM_GC_OperationNdoit_prologue6M_i_;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
-text: .text%__1cPVM_GC_OperationQgc_count_changed6kM_i_;
-text: .text%__1cbAVM_GenCollectForAllocationEname6kM_pkc_: vm_operations.o;
-text: .text%__1cbAVM_GenCollectForAllocationEdoit6M_v_;
-text: .text%__1cNJvmtiGCMarker2t6Mi_v_;
-text: .text%__1cQGenCollectedHeapZsatisfy_failed_allocation6MIiipi_pnIHeapWord__;
-text: .text%__1cbCTwoGenerationCollectorPolicyZsatisfy_failed_allocation6MIiipi_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapNdo_collection6MiiIiiipi_v_;
-text: .text%__1cXTraceMemoryManagerStats2t6Mi_v_;
-text: .text%__1cNMemoryServiceIgc_begin6Fi_v_;
-text: .text%__1cPGCMemoryManagerIgc_begin6M_v_;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cKGCStatInfoMset_gc_usage6MinLMemoryUsage_i_v_;
-text: .text%__1cTContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cTContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cbBSurvivorContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cbBSurvivorContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cOGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOGenerationPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cQGenCollectedHeapLgc_prologue6Mi_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cWThreadLocalAllocBufferVaccumulate_statistics6MIi_v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cQGenCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_v_;
-text: .text%__1cQGenCollectedHeapSgeneration_iterate6Mpn0AKGenClosure_i_v_;
-text: .text%__1cbCGenEnsureParseabilityClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cKGenerationTensure_parseability6M_v_: defNewGeneration.o;
-text: .text%__1cKGenerationTensure_parseability6M_v_: tenuredGeneration.o;
-text: .text%__1cKGenerationTensure_parseability6M_v_: compactingPermGenGen.o;
-text: .text%__1cSAllocationProfilerViterate_since_last_gc6F_v_;
-text: .text%__1cUGenGCPrologueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cQDefNewGenerationLgc_prologue6Mi_v_: defNewGeneration.o;
-text: .text%__1cRTenuredGenerationLgc_prologue6Mi_v_;
-text: .text%__1cKGenerationLgc_prologue6Mi_v_: compactingPermGenGen.o;
-text: .text%__1cKGenerationOshould_collect6MiIii_i_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationKshort_name6kM_pkc_: defNewGeneration.o;
-text: .text%__1cKGenerationIcounters6M_pnRCollectorCounters__: defNewGeneration.o;
-text: .text%__1cQGenCollectedHeapKsave_marks6M_v_;
-text: .text%__1cQDefNewGenerationKsave_marks6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationKsave_marks6M_v_;
-text: .text%__1cQDefNewGenerationHcollect6MiiIii_v_;
-text: .text%__1cQDefNewGenerationbAcollection_attempt_is_safe6M_i_;
-text: .text%__1cRTenuredGenerationZpromotion_attempt_is_safe6kMIi_i_;
-text: .text%__1cKGenerationYmax_contiguous_available6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationUcontiguous_available6kM_I_;
-text: .text%__1cQDefNewGenerationbIinit_assuming_no_promotion_failure6M_v_;
-text: .text%__1cQDefNewGenerationOIsAliveClosure2t6MpnKGeneration__v_;
-text: .text%__1cSScanWeakRefClosure2t6MpnQDefNewGeneration__v_;
-text: .text%__1cLCardTableRSbGprepare_for_younger_refs_iterate6Mi_v_;
-text: .text%__1cULRUCurrentHeapPolicy2t6M_v_;
-text: .text%__1cPCollectorPolicyPis_train_policy6M_i_: collectorPolicy.o;
-text: .text%__1cPFastScanClosure2t6MpnQDefNewGeneration_i_v_;
-text: .text%__1cQDefNewGenerationbCFastEvacuateFollowersClosure2t6MpnQGenCollectedHeap_ip0pnPFastScanClosure_6_v_;
-text: .text%__1cQGenCollectedHeapUprocess_strong_roots6Miiin0ATClassScanningOption_pnQOopsInGenClosure_3_v_;
-text: .text%__1cKSharedHeapbAchange_strong_roots_parity6M_v_;
-text: .text%__1cMSubTasksDonePis_task_claimed6Mi_i_;
-text: .text%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cPFastScanClosureGdo_oop6MppnHoopDesc__v_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationWcopy_to_survivor_space6MpnHoopDesc_p2_2_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNchunk_oops_do6FpnKOopClosure_pnFChunk_pc_I_: handles.o;
-text: .text%__1cQStackFrameStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cFframeQoops_do_internal6MpnKOopClosure_pnLRegisterMap_i_v_;
-text: .text%__1cFframeToops_interpreted_do6MpnKOopClosure_pknLRegisterMap_i_v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cRInterpreterOopMapIis_empty6M_i_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cTOopMapForCacheEntryOreport_results6kM_i_: oopMapCache.o;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: frame.o;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: oopMapCache.o;
-text: .text%__1cFframebDoops_interpreted_arguments_do6MnMsymbolHandle_ipnKOopClosure__v_;
-text: .text%__1cRArgumentOopFinderDset6MinJBasicType__v_: frame.o;
-text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_: dictionary.o;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUCompactingPermGenGenUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cKGenerationbDyounger_refs_in_space_iterate6MpnFSpace_pnQOopsInGenClosure__v_;
-text: .text%__1cLCardTableRSbDyounger_refs_in_space_iterate6MpnFSpace_pnQOopsInGenClosure__v_;
-text: .text%__1cPContiguousSpaceLnew_dcto_cl6MpnKOopClosure_nRCardTableModRefBSOPrecisionStyle_pnIHeapWord__pnVDirtyCardToOopClosure__;
-text: .text%__1cPContiguousSpaceZused_region_at_save_marks6kM_nJMemRegion__: space.o;
-text: .text%__1cRCardTableModRefBSWnon_clean_card_iterate6MpnFSpace_nJMemRegion_pnVDirtyCardToOopClosure_pnQMemRegionClosure_i_v_;
-text: .text%__1cRCardTableModRefBSbBnon_clean_card_iterate_work6MnJMemRegion_pnQMemRegionClosure_i_v_;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cYClearNoncleanCardWrapperMdo_MemRegion6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cYClearNoncleanCardWrapperKclear_card6MpW_i_: cardTableRS.o;
-text: .text%__1cVDirtyCardToOopClosureMdo_MemRegion6MnJMemRegion__v_;
-text: .text%__1cWOffsetTableContigSpaceLblock_start6kMpkv_pnIHeapWord__: space.o;
-text: .text%__1cbBBlockOffsetArrayContigSpaceSblock_start_unsafe6kMpkv_pnIHeapWord__;
-text: .text%__1cPContiguousSpaceKblock_size6kMpknIHeapWord__I_;
-text: .text%__1cUContiguousSpaceDCTOCOget_actual_top6MpnIHeapWord_2_2_;
-text: .text%__1cPContiguousSpaceRtoContiguousSpace6M_p0_: space.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlass.o;
-text: .text%__1cPFiltering_DCTOCPwalk_mem_region6MnJMemRegion_pnIHeapWord_3_v_;
-text: .text%__1cUContiguousSpaceDCTOCXwalk_mem_region_with_cl6MnJMemRegion_pnIHeapWord_3pnQFilteringClosure__v_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: methodKlass.o;
-text: .text%__1cLmethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: instanceKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure__v_;
-text: .text%__1cLklassVtablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cQFilteringClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cLklassItablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cKklassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cKOopClosureXshould_remember_klasses6kM_ki_: space.o;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: cpCacheKlass.o;
-text: .text%__1cWconstantPoolCacheKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cWConstantPoolCacheEntryLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cParrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cNinstanceKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cNobjArrayKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: methodKlass.o;
-text: .text%__1cLmethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: constantPoolKlass.o;
-text: .text%__1cRconstantPoolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constMethodKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constMethodKlass.o;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: symbolKlass.o;
-text: .text%__1cLsymbolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: symbolKlass.o;
-text: .text%__1cLsymbolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: constantPoolKlass.o;
-text: .text%__1cRconstantPoolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: cpCacheKlass.o;
-text: .text%__1cWconstantPoolCacheKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cWConstantPoolCacheEntryNoop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: instanceKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassVtableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassItableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cKklassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cKOopClosureIdo_oop_v6MppnHoopDesc__v_: space.o;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: klassKlass.o;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: klassKlass.o;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_: arrayKlassKlass.o;
-text: .text%__1cLCardTableRSUyounger_refs_iterate6MpnKGeneration_pnQOopsInGenClosure__v_;
-text: .text%__1cMSubTasksDoneTall_tasks_completed6M_v_;
-text: .text%__1cQDefNewGenerationbCFastEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cQGenCollectedHeapbCoop_since_save_marks_iterate6MipnPFastScanClosure_2_v_;
-text: .text%__1cQDefNewGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cPContiguousSpacebFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cFKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_: typeArrayKlass.o;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cXjava_lang_ref_ReferenceNreferent_addr6FpnHoopDesc__p2_;
-text: .text%__1cSReferenceProcessorSdiscover_reference6MpnHoopDesc_nNReferenceType__i_;
-text: .text%__1cXjava_lang_ref_ReferenceJnext_addr6FpnHoopDesc__p2_;
-text: .text%__1cXjava_lang_ref_ReferencePdiscovered_addr6FpnHoopDesc__p2_;
-text: .text%__1cSReferenceProcessorTget_discovered_list6MnNReferenceType__ppnHoopDesc__;
-text: .text%__1cKGenerationHpromote6MpnHoopDesc_Ip2_2_;
-text: .text%__1cbCOneContigSpaceCardGenerationIallocate6MIii_pnIHeapWord__: tenuredGeneration.o;
-text: .text%__1cbCOneContigSpaceCardGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cQGenCollectedHeapbAno_allocs_since_save_marks6Mi_i_;
-text: .text%__1cQDefNewGenerationbAno_allocs_since_save_marks6M_i_;
-text: .text%__1cbCOneContigSpaceCardGenerationbAno_allocs_since_save_marks6M_i_;
-text: .text%__1cQDefNewGenerationUFastKeepAliveClosure2t6Mp0pnSScanWeakRefClosure__v_;
-text: .text%__1cQDefNewGenerationQKeepAliveClosure2t6MpnSScanWeakRefClosure__v_;
-text: .text%__1cbDReferenceProcessorInitializerIis_clean6kM_v_: concurrentMarkSweepGeneration.o;
-text: .text%__1cSReferenceProcessorbDprocess_discovered_references6M_v_;
-text: .text%__1cSReferenceProcessorbAprocess_discovered_reflist6MppnHoopDesc_pnPReferencePolicy_i_v_;
-text: .text%__1cSReferenceProcessorOprocess_phase16MppnHoopDesc_pnPReferencePolicy_pnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__v_;
-text: .text%__1cQDefNewGenerationOIsAliveClosureLdo_object_b6MpnHoopDesc__i_;
-text: .text%__1cULRUCurrentHeapPolicyWshould_clear_reference6MpnHoopDesc__i_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cXjava_lang_ref_ReferenceIset_next6FpnHoopDesc_2_v_;
-text: .text%__1cQDefNewGenerationUFastKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cSReferenceProcessorOprocess_phase26MppnHoopDesc_pnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorOprocess_phase36MppnHoopDesc_ipnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__v_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cQDefNewGenerationLswap_spaces6M_v_;
-text: .text%__1cIageTablebAcompute_tenuring_threshold6MI_i_;
-text: .text%__1cKGenerationWupdate_time_of_last_gc6Mx_v_: defNewGeneration.o;
-text: .text%__1cSReferenceProcessorbDenqueue_discovered_references6M_i_;
-text: .text%__1cXjava_lang_ref_ReferenceRpending_list_addr6F_ppnHoopDesc__;
-text: .text%__1cSReferenceProcessorbBenqueue_discovered_reflists6MppnHoopDesc__v_;
-text: .text%__1cSReferenceProcessorbAenqueue_discovered_reflist6MpnHoopDesc_p2_v_;
-text: .text%__1cQGenCollectedHeapPupdate_gc_stats6Mii_v_: genCollectedHeap.o;
-text: .text%__1cKGenerationPupdate_gc_stats6Mii_v_: defNewGeneration.o;
-text: .text%__1cRTenuredGenerationPupdate_gc_stats6Mii_v_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cKGenerationPupdate_gc_stats6Mii_v_: compactingPermGenGen.o;
-text: .text%__1cRTenuredGenerationOshould_collect6MiIii_i_;
-text: .text%__1cKGenerationPshould_allocate6MIii_i_: tenuredGeneration.o;
-text: .text%__1cbCOneContigSpaceCardGenerationEfree6kM_I_;
-text: .text%__1cQDefNewGenerationQcompute_new_size6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cQGenCollectedHeapLgc_epilogue6Mi_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cUGenGCEpilogueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cQDefNewGenerationLgc_epilogue6Mi_v_;
-text: .text%__1cRTenuredGenerationLgc_epilogue6Mi_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationLgc_epilogue6Mi_v_;
-text: .text%__1cRTenuredGenerationPupdate_counters6M_v_;
-text: .text%__1cUCompactingPermGenGenPupdate_counters6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cNMemoryServiceGgc_end6Fi_v_;
-text: .text%__1cPGCMemoryManagerGgc_end6M_v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%jni_GetIntArrayRegion: jni.o;
-text: .text%jni_SetIntArrayRegion: jni.o;
-text: .text%jni_PushLocalFrame: jni.o;
-text: .text%jni_PopLocalFrame: jni.o;
-text: .text%__1cMGraphBuilderJnegate_op6MpnJValueType__v_;
-text: .text%__1cINegateOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cMLinkResolverbPlinktime_resolve_interface_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cPciInstanceKlassLimplementor6M_p0_;
-text: .text%__1cINegateOpPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cIValueGenJspill_one6MpnJValueType__v_;
-text: .text%__1cIRegAllocbBget_smallest_value_to_spill6kMpnJValueType__pnLInstruction__;
-text: .text%__1cLLIR_EmitterRarray_store_check6MpnLLIR_OprDesc_2nFRInfo_33pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListLstore_check6MpnLLIR_OprDesc_2222pnMCodeEmitInfo__v_;
-text: .text%__1cPLIR_OpTypeCheck2t6MnILIR_Code_pnLLIR_OprDesc_3333pnMCodeEmitInfo__v_;
-text: .text%__1cXArrayStoreExceptionStub2t6MpnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListLshift_right6MnFRInfo_i1_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListLshift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cIValueGenLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cLLIR_EmitterGnegate6MnFRInfo_pnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListGnegate6MnFRInfo_1_v_: c1_LIREmitter.o;
-text: .text%__1cXArrayStoreExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cXArrayStoreExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerEleal6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cNLIR_AssemblerGnegate6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cNCodeStubArrayIindex_of6kMkpnICodeStub__i_: c1_LIRAssembler_x86.o;
-text: .text%__1cXArrayStoreExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cIRuntime1Tresolve_static_call6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cSCompiledStaticCallIis_clean6kM_i_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cIRuntime1Thandle_wrong_method6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cFframeRis_compiled_frame6kMpi_i_;
-text: .text%__1cHnmethodOis_java_method6kM_i_: nmethod.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: sharedRuntime.o;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cNRelocIteratorEnext6M_i_: sharedRuntime.o;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cIRuntime1Jarraycopy6FpnHoopDesc_i2ii_i_;
-text: .text%__1cMGraphBuilderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_CallIntMethodV: jni.o;
-text: .text%Unsafe_GetObject;
-text: .text%jni_CallBooleanMethod: jni.o;
-text: .text%jni_CallVoidMethodV: jni.o;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%JVM_IsInterrupted;
-# Test LoadJFrame
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cJFloatTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cJFloatTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_ValueType.o;
-text: .text%__1cIValueGenTdo_ArithmeticOp_FPU6MpnMArithmeticOp__v_;
-text: .text%__1cHLockRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOset_locked_fpu6MipnLInstruction_i_v_;
-text: .text%__1cIValueGenNis_32bit_mode6M_i_;
-text: .text%__1cLGetRefCountIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cJFloatTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cHFreeRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocMset_free_fpu6Mi_v_;
-text: .text%__1cQChangeSpillCountIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cLLIR_EmitterRarithmetic_op_fpu6MnJBytecodesECode_pnLLIR_OprDesc_44i_v_;
-text: .text%__1cILIR_ListDmul6MpnLLIR_OprDesc_22_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenKround_item6MpnEItem__v_;
-text: .text%__1cLLIR_EmitterFround6MipnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListKround32bit6MnFRInfo_i_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenOspill_register6MnFRInfo__v_;
-text: .text%__1cIRegAllocTget_value_for_rinfo6kMnFRInfo__pnLInstruction__;
-text: .text%__1cLGetValueForGdo_cpu6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIValueGenKdivInRInfo6F_nFRInfo__;
-text: .text%__1cIValueGenLremOutRInfo6F_nFRInfo__;
-text: .text%__1cMArithmeticOpKlock_stack6kM_pnKValueStack__: c1_Instruction.o;
-text: .text%__1cLLIR_EmitterParithmetic_idiv6MnJBytecodesECode_pnLLIR_OprDesc_44nFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListEirem6MnFRInfo_111pnMCodeEmitInfo__v_;
-text: .text%__1cHLIR_Op3Fvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cHLIR_Op3Jemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerIemit_op36MpnHLIR_Op3__v_;
-text: .text%__1cNLIR_AssemblerIfpu_push6MnFRInfo__v_;
-text: .text%__1cIFrameMapLFpuStackSimEpush6Mi_v_;
-text: .text%__1cNLIR_AssemblerKfpu_on_tos6MnFRInfo__v_;
-text: .text%__1cIFrameMapLFpuStackSimPoffset_from_tos6kMi_i_;
-text: .text%__1cIintArrayIindex_of6kMki_i_: c1_FrameMap_x86.o;
-text: .text%__1cNLIR_AssemblerHfpu_pop6MnFRInfo__v_;
-text: .text%__1cIFrameMapLFpuStackSimDpop6Mi_i_;
-text: .text%__1cNLIR_AssemblerKround32_op6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cJAssemblerGfist_s6MnHAddress__v_;
-text: .text%__1cNLIR_AssemblerJreset_FPU6M_v_;
-text: .text%__1cNLIR_AssemblerIemit_op36MpnHLIR_Op3__v_;
-text: .text%__1cNLIR_AssemblerParithmetic_idiv6MnILIR_Code_pnLLIR_OprDesc_333pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerXadd_debug_info_for_div06MipnMCodeEmitInfo__v_;
-text: .text%__1cNDivByZeroStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNDivByZeroStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cLInstructionOas_ArrayLength6M_pnLArrayLength__: c1_GraphBuilder.o;
-text: .text%__1cLInstructionKas_ShiftOp6M_pnHShiftOp__: c1_Instruction.o;
-text: .text%__1cILIR_ListLlogical_xor6MnFRInfo_pnLLIR_OprDesc_1_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListUunsigned_shift_right6MnFRInfo_i1_v_: c1_LIREmitter.o;
-text: .text%__1cIRuntime1Ohandle_ic_miss6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKCompiledICOis_megamorphic6kM_i_;
-text: .text%__1cLVtableStubsOis_entry_point6FpC_i_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cLVtableStubsLcreate_stub6FiipnNmethodOopDesc__pC_;
-text: .text%__1cLVtableStubsGlookup6Fiii_pnKVtableStub__;
-text: .text%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
-text: .text%__1cKVtableStubSpd_code_size_limit6Fi_i_;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cLVtableStubsFenter6FiiipnKVtableStub__v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_GetIntVolatile;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: generateOopMap.o;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: c1_GraphBuilder.o;
-text: .text%__1cLInstructionKas_ShiftOp6M_pnHShiftOp__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderMtable_switch6M_v_;
-text: .text%__1cLTableSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_GraphBuilder.o;
-text: .text%__1cGSwitchPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cIValueGenOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cIValueGenVsetup_phis_for_switch6MpnEItem_pnKValueStack__v_;
-text: .text%__1cLLIR_EmitterOtableswitch_op6MpnLLIR_OprDesc_ipnKBlockBegin__v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-# Test JHello
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%JVM_Socket;
-text: .text%Unsafe_PageSize;
-text: .text%__1cNFingerprinterHdo_byte6M_v_: dump.o;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRuntime.o;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: unsafe.o;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cSUnsafe_DefineClass6FpnHJNIEnv__pnI_jstring_pnL_jbyteArray_iipnI_jobject_7_pnH_jclass__: unsafe.o;
-text: .text%JVM_DefineClass;
-text: .text%__1cPClassFileParserXverify_unqualified_name6MpcIi_i_;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cIciObjectIis_klass6M_i_: ciInstance.o;
-text: .text%__1cQInstanceConstantIencoding6kM_pnI_jobject__;
-text: .text%__1cLInstructionOas_ArrayLength6M_pnLArrayLength__: c1_Instruction.o;
-text: .text%__1cILIR_ListQunwind_exception6MnFRInfo_1pnMCodeEmitInfo__v_: c1_CodeGenerator.o;
-text: .text%__1cIRuntime1Tprimitive_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cRComputeEntryStackHdo_char6M_v_: generateOopMap.o;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cbDinitializeDirectBufferSupport6FpnHJNIEnv___i_: jni.o;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cJlookupOne6FpnHJNIEnv__pkcpnGThread__pnH_jclass__: jni.o;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cRComputeEntryStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cSInterpreterRuntimeWslow_signature_handler6FpnKJavaThread_pnNmethodOopDesc_pi5_pC_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_x86.o;
-text: .text%__1cUSlowSignatureHandlerLpass_object6M_v_: interpreterRT_x86.o;
-text: .text%__1cXNativeSignatureIteratorIdo_array6Mii_v_: interpreterRT_x86.o;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_x86.o;
-text: .text%__1cUSlowSignatureHandlerIpass_int6M_v_: interpreterRT_x86.o;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_x86.o;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%jni_GetCharArrayRegion: jni.o;
-text: .text%jni_SetFloatField: jni.o;
-text: .text%jni_NewFloatArray: jni.o;
-text: .text%jni_SetFloatArrayRegion: jni.o;
-# SwingSet
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
-text: .text%__1cMStoreIndexedPother_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cKValueStackElock6MpnHIRScope_pnLInstruction__i_;
-text: .text%__1cKValueStackGunlock6M_i_;
-text: .text%__1cLLIR_EmitterVmonitorenter_at_entry6MnFRInfo_pnMCodeEmitInfo__v_;
-text: .text%__1cLLIR_EmitterNmonitor_enter6MnFRInfo_111ipnMCodeEmitInfo_3_v_;
-text: .text%__1cQMonitorEnterStub2t6MnFRInfo_1pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListbAload_stack_address_monitor6MinFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListLlock_object6MnFRInfo_111pnICodeStub_pnMCodeEmitInfo__v_;
-text: .text%__1cIValueGenNsyncTempRInfo6F_nFRInfo__;
-text: .text%__1cLLIR_EmitterQreturn_op_prolog6Mi_v_;
-text: .text%__1cLLIR_EmitterMmonitor_exit6MnFRInfo_11i_v_;
-text: .text%__1cILIR_ListNunlock_object6MnFRInfo_11pnICodeStub__v_;
-text: .text%__1cKLIR_OpLockFvisit6MpnQLIR_OpVisitState__v_;
-text: .text%__1cQMonitorEnterStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cRMonitorAccessStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cKLIR_OpLockJemit_code6MpnVLIR_AbstractAssembler__v_;
-text: .text%__1cNLIR_OptimizerJemit_lock6MpnKLIR_OpLock__v_;
-text: .text%__1cNLIR_AssemblerPmonitor_address6MinFRInfo__v_;
-text: .text%__1cIFrameMapbEaddress_for_monitor_lock_index6kMi_nHAddress__;
-text: .text%__1cIFrameMapbAfp_offset_for_monitor_lock6kMi_i_;
-text: .text%__1cNLIR_AssemblerJemit_lock6MpnKLIR_OpLock__v_;
-text: .text%__1cRC1_MacroAssemblerLlock_object6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cQMonitorEnterStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cIFrameMapWmonitor_object_regname6kMi_nHOptoRegEName__;
-text: .text%__1cIFrameMapbCfp_offset_for_monitor_object6kMi_i_;
-text: .text%__1cMCodeEmitInfobHlocation_for_monitor_object_index6Mi_nILocation__;
-text: .text%__1cIFrameMapbHlocation_for_monitor_object_index6kMipnILocation__i_;
-text: .text%__1cMCodeEmitInfobFlocation_for_monitor_lock_index6Mi_nILocation__;
-text: .text%__1cIFrameMapbFlocation_for_monitor_lock_index6kMipnILocation__i_;
-text: .text%__1cMMonitorValue2t6MpnKScopeValue_nILocation__v_;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cRC1_MacroAssemblerNunlock_object6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cPMonitorExitStubMis_call_stub6kM_i_: c1_CodeStubs_x86.o;
-text: .text%__1cQMonitorEnterStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerRload_receiver_reg6MpnMRegisterImpl__v_;
-text: .text%__1cNLIR_AssemblerLmonitorexit6MnFRInfo_1pnMRegisterImpl_i3_v_;
-text: .text%__1cPMonitorExitStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%jni_NewIntArray: jni.o;
-text: .text%__1cNCollectedHeapYlarge_typearray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cRTenuredGenerationKshort_name6kM_pkc_: tenuredGeneration.o;
-text: .text%__1cKGenerationIcounters6M_pnRCollectorCounters__: tenuredGeneration.o;
-text: .text%__1cRTenuredGenerationHcollect6MiiIii_v_;
-text: .text%__1cRTenuredGenerationbJretire_alloc_buffers_before_full_gc6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationHcollect6MiiIii_v_;
-text: .text%__1cMGenMarkSweepTinvoke_at_safepoint6FipnSReferenceProcessor_i_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cQGenCollectedHeapRsave_used_regions6Mii_v_;
-text: .text%__1cKGenerationQsave_used_region6M_v_: tenuredGeneration.o;
-text: .text%__1cbCOneContigSpaceCardGenerationLused_region6kM_nJMemRegion__;
-text: .text%__1cPContiguousSpaceLused_region6kM_nJMemRegion__: space.o;
-text: .text%__1cKGenerationQsave_used_region6M_v_: defNewGeneration.o;
-text: .text%__1cKGenerationLused_region6kM_nJMemRegion__: defNewGeneration.o;
-text: .text%__1cKGenerationQsave_used_region6M_v_: compactingPermGenGen.o;
-text: .text%__1cMGenMarkSweepPallocate_stacks6F_v_;
-text: .text%__1cQGenCollectedHeapOgather_scratch6MpnKGeneration_I_pnMScratchBlock__;
-text: .text%__1cQDefNewGenerationScontribute_scratch6MrpnMScratchBlock_pnKGeneration_I_v_;
-text: .text%__1cKGenerationScontribute_scratch6MrpnMScratchBlock_p0I_v_: tenuredGeneration.o;
-text: .text%__1cRsort_scratch_list6FrpnMScratchBlock__v_: genCollectedHeap.o;
-text: .text%__1cVremoveSmallestScratch6FppnMScratchBlock__1_: genCollectedHeap.o;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase16Firii_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: genMarkSweep.o;
-text: .text%__1cJMarkSweepRFollowRootClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cJMarkSweepLfollow_root6FppnHoopDesc__v_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cJMarkSweepO_mark_and_push6FppnHoopDesc__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIjniIdMapHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__v_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_: markSweep.o;
-text: .text%__1cJMarkSweepQKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cQSystemDictionaryMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cKDictionaryMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cKBufferBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cKBufferBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cNSingletonBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cNSingletonBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cLRuntimeStubIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cLRuntimeStubbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cHnmethodIis_alive6kM_i_: nmethod.o;
-text: .text%__1cHnmethodbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_: nmethod.o;
-text: .text%__1cHnmethodbHfollow_root_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_ppnHoopDesc_iri_v_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cVcompiledICHolderKlassSoop_being_unloaded6MpnRBoolObjectClosure_pnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cQGenCollectedHeapWprepare_for_compaction6M_v_;
-text: .text%__1cKGenerationWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: tenuredGeneration.o;
-text: .text%__1cPContiguousSpaceWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cWOffsetTableContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cMTenuredSpaceSallowed_dead_ratio6kM_i_;
-text: .text%__1cQCompactibleSpaceHforward6MpnHoopDesc_IpnMCompactPoint_pnIHeapWord__6_;
-text: .text%__1cWOffsetTableContigSpacePcross_threshold6MpnIHeapWord_2_2_;
-text: .text%__1cQCompactibleSpaceQinsert_deadspace6MrIpnIHeapWord_I_i_;
-text: .text%__1cQCompactibleSpaceVnext_compaction_space6kM_p0_: space.o;
-text: .text%__1cQDefNewGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: defNewGeneration.o;
-text: .text%__1cQCompactibleSpaceSallowed_dead_ratio6kM_i_: space.o;
-text: .text%__1cbCOneContigSpaceCardGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: compactingPermGenGen.o;
-text: .text%__1cPContigPermSpaceSallowed_dead_ratio6kM_i_;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase36Fi_v_;
-text: .text%__1cUCompactingPermGenGenTpre_adjust_pointers6M_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cQGenCollectedHeapSprocess_weak_roots6MpnKOopClosure_2_v_;
-text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cYGenAdjustPointersClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationPadjust_pointers6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationNspace_iterate6MpnMSpaceClosure_i_v_;
-text: .text%__1cVAdjustPointersClosureIdo_space6MpnFSpace__v_: generation.o;
-text: .text%__1cQCompactibleSpacePadjust_pointers6M_v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQDefNewGenerationNspace_iterate6MpnMSpaceClosure_i_v_;
-text: .text%__1cUCompactingPermGenGenPadjust_pointers6M_v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cUCompactingPermGenGenHcompact6M_v_;
-text: .text%__1cQCompactibleSpaceHcompact6M_v_;
-text: .text%__1cPContiguousSpaceWreset_after_compaction6M_v_: space.o;
-text: .text%__1cRGenCompactClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationHcompact6M_v_;
-text: .text%__1cUCompactingPermGenGenMpost_compact6M_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cMGenMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cLCardTableRSSclear_into_younger6MpnKGeneration_i_v_;
-text: .text%__1cLCardTableRSFclear6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cICodeBlobTfix_oop_relocations6M_v_;
-text: .text%__1cICodeBlobTfix_oop_relocations6MpC1_v_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: codeBlob.o;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: relocInfo.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: onStackReplacement.o;
-text: .text%__1cQGenCollectedHeapWupdate_time_of_last_gc6Mx_v_: genMarkSweep.o;
-text: .text%__1cKGenerationWupdate_time_of_last_gc6Mx_v_: tenuredGeneration.o;
-text: .text%__1cKGenerationWupdate_time_of_last_gc6Mx_v_: compactingPermGenGen.o;
-text: .text%__1cbCOneContigSpaceCardGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cRTenuredGenerationQcompute_new_size6M_v_;
-text: .text%__1cKGenerationEspec6M_pnOGenerationSpec__;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cLVtableStubsScreate_itable_stub6Fii_pnKVtableStub__;
-text: .text%__1cLLIR_EmitterDnop6M_v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnI_jobject__v_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cLklassVtableTis_miranda_entry_at6Mi_i_;
-text: .text%__1cRPrivilegedElementHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJCodeCacheIcontains6Fpv_i_;
-text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cJOopMapSetHoops_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cJOopMapSetGall_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure_pFppnHoopDesc_9E_v9B9B_v_;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpCi_pnGOopMap__;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMii_pnGOopMap__;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cFframeVoopmapreg_to_location6kMnFVMRegEName_pknLRegisterMap__ppnHoopDesc__;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: defNewGeneration.o;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: nmethod.o;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%jni_DeleteWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesTdestroy_weak_global6FpnI_jobject__v_;
-text: .text%__1cILIR_ListJoop2stack6MpnI_jobject_i_v_: c1_LIREmitter.o;
-text: .text%__1cNObjectMonitorREntryQdDueue_unlink6MpnMObjectWaiter__v_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cTGeneratePairingInfoRpossible_gc_point6MpnOBytecodeStream__i_: ciMethod.o;
-text: .text%__1cTGeneratePairingInfoOreport_results6kM_i_: ciMethod.o;
-text: .text%__1cMGraphBuilderMmonitorenter6MpnLInstruction__v_;
-text: .text%__1cMMonitorEnterFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cNAccessMonitorIcan_trap6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderLmonitorexit6MpnLInstruction__v_;
-text: .text%__1cLMonitorExitFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cILongTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
-text: .text%__1cILongTypeEsize6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cNAccessMonitorPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cTNullCheckEliminatorUhandle_AccessMonitor6MpnNAccessMonitor__v_;
-text: .text%__1cQNullCheckVisitorOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cIValueGenPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cNc1_AllocTableMhas_two_free6kM_i_;
-text: .text%__1cMLongConstantPas_LongConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cFRInfoLas_rinfo_lo6kM_0_;
-text: .text%__1cLLIR_EmitterJopr2intLo6MpnLLIR_OprDesc__i_;
-text: .text%__1cFRInfoLas_rinfo_hi6kM_0_;
-text: .text%__1cLLIR_EmitterJopr2intHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cIValueGenOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cNAccessMonitorQas_AccessMonitor6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cJAssemblerFpushl6MpnI_jobject__v_;
-text: .text%__1cNLIR_AssemblerNas_Address_hi6MpnLLIR_Address__nHAddress__;
-text: .text%__1cFRInfoOas_register_hi6kM_pnMRegisterImpl__;
-text: .text%__1cNLIR_AssemblerNas_Address_lo6MpnLLIR_Address__nHAddress__;
-text: .text%__1cFRInfoOas_register_lo6kM_pnMRegisterImpl__;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cIValueGenQdo_currentThread6MpnJIntrinsic__v_;
-text: .text%__1cILIR_ListKget_thread6MnFRInfo__v_: c1_CodeGenerator_x86.o;
-text: .text%__1cNLIR_AssemblerKget_thread6MpnLLIR_OprDesc__v_;
-text: .text%__1cIValueGenSload_item_patching6MpnHIRScope_ipnEItem_pnKValueStack_pnOExceptionScope__v_;
-text: .text%__1cEItemUget_jobject_constant6kM_pnIciObject__;
-text: .text%__1cJValueTypeTas_InstanceConstant6M_pnQInstanceConstant__: c1_ValueType.o;
-text: .text%__1cIintArrayIindex_of6kMki_i_: c1_CodeGenerator.o;
-text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cGciTypeNis_subtype_of6Mp0_i_;
-text: .text%__1cIValueGenOload_byte_item6MpnEItem__v_;
-text: .text%__1cIValueGenPlock_free_rinfo6MpnLInstruction_nKc1_RegMask__nFRInfo__;
-text: .text%__1cIRegAllocNget_lock_temp6MpnLInstruction_nKc1_RegMask__nFRInfo__;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cIFrameMapNis_byte_rinfo6FnFRInfo__i_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cQinstanceRefKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cNCanonicalizerMset_constant6Mi_v_: c1_Canonicalizer.o;
-text: .text%__1cJTypeCheckPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cNLIR_AssemblerMcheck_icache6M_i_;
-text: .text%__1cRC1_MacroAssemblerTfast_ObjectHashCode6MpnMRegisterImpl_2_v_;
-text: .text%__1cNLIR_AssemblerZjobject2reg_with_patching6MpnMRegisterImpl_pnMCodeEmitInfo__v_;
-text: .text%__1cHLogicOpIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
-text: .text%__1cLAccessFieldKlock_stack6kM_pnKValueStack__: c1_GraphBuilder.o;
-text: .text%__1cIRuntime1Mnew_instance6FpnKJavaThread_pnMklassOopDesc__v_;
-text: .text%__1cQGenCollectedHeapXhandle_failed_promotion6MpnKGeneration_pnHoopDesc_Ip4_4_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cbCOneContigSpaceCardGenerationTexpand_and_allocate6MIiii_pnIHeapWord__;
-text: .text%__1cbCOneContigSpaceCardGenerationGexpand6MII_v_;
-text: .text%__1cNGCMutexLocker2t6MpnFMutex__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationHgrow_by6MI_i_;
-text: .text%__1cPContiguousSpaceNmangle_region6MnJMemRegion__v_;
-text: .text%__1cJMarkSweepRFollowRootClosureLdo_nmethods6kM_ki_: markSweep.o;
-text: .text%__1cQCompactibleSpaceUinitialize_threshold6M_pnIHeapWord__: space.o;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: markSweep.o;
-text: .text%__1cRAlwaysTrueClosureLdo_object_b6MpnHoopDesc__i_: genCollectedHeap.o;
-text: .text%__1cLCardTableRSTinvalidate_or_clear6MpnKGeneration_ii_v_;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cLCardTableRSKinvalidate6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cRCardTableModRefBSKinvalidate6MnJMemRegion__v_;
-text: .text%__1cIRuntime1Onew_type_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cJFloatTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
-text: .text%__1cNFloatConstantQas_FloatConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cILIR_ListNstore_mem_oop6MpnI_jobject_nFRInfo_inJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNConstantTableMappend_float6Mf_v_;
-text: .text%__1cRAbstractAssemblerGa_long6Mi_v_;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cDCHARprocess_interface6FnTinstanceKlassHandle_pnNGrowableArray4nLKlassHandle___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
-text: .text%__1cINewArrayPother_values_do6MpFppnLInstruction__v_v_;
-text: .text%__1cLLIR_EmitterQfield_store_byte6MpnLLIR_OprDesc_i2nFRInfo_ipnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerIshift_op6MnILIR_Code_nFRInfo_222_v_;
-text: .text%__1cIRuntime1Mmonitorenter6FpnKJavaThread_pnHoopDesc_pnPBasicObjectLock__v_;
-text: .text%__1cIRuntime1Lmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
-text: .text%__1cHnmethodVis_dependent_on_entry6MpnMklassOopDesc_2pnNmethodOopDesc__i_;
-text: .text%__1cNVM_DeoptimizeEname6kM_pkc_: vm_operations.o;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cFframeVshould_be_deoptimized6kM_i_;
-text: .text%__1cICodeBlobOis_java_method6kM_i_: codeBlob.o;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cHnmethodNis_osr_method6kM_i_: nmethod.o;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cTinc_decompile_count6FpnHnmethod__v_: nmethod.o;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_: vm_operations.o;
-text: .text%__1cHThreadsLnmethods_do6F_v_;
-text: .text%__1cKJavaThreadLnmethods_do6M_v_;
-text: .text%__1cGThreadLnmethods_do6M_v_;
-text: .text%__1cFframeLnmethods_do6M_v_;
-text: .text%__1cFframeVnmethods_code_blob_do6M_v_;
-text: .text%__1cILIR_ListEidiv6MnFRInfo_i11pnMCodeEmitInfo__v_;
-text: .text%__1cLlog2_intptr6Fi_i_: c1_LIRAssembler_x86.o;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cHnmethodPis_locked_by_vm6kM_i_: nmethod.o;
-text: .text%__1cHnmethodLis_unloaded6kM_i_: nmethod.o;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cILongTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cILongTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%JVM_HoldsLock;
-text: .text%__1cSObjectSynchronizerZcurrent_thread_holds_lock6FpnKJavaThread_nGHandle__i_;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cLLoadIndexedIis_equal6kMpnLInstruction__i_: c1_Instruction.o;
-text: .text%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-text: .text%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeIpass_int6M_v_: oopMapCache.o;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: vmThread.o;
-text: .text%__1cMLocalMappingDadd6MinFRInfo__v_;
-text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cLLIR_EmitterQfield_store_long6MpnLLIR_OprDesc_i2ipnMCodeEmitInfo__v_;
-text: .text%__1cKScanBlocksMis_long_only6kMi_i_;
-text: .text%__1cRLIR_PeepholeStateLreg2indexLo6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateLreg2indexHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cNSharedRuntimeDf2l6Ff_x_;
-text: .text%__1cIValueGenLdo_getClass6MpnJIntrinsic__v_;
-text: .text%__1cLLIR_EmitterIgetClass6MnFRInfo_1pnMCodeEmitInfo__v_;
-text: .text%__1cMGraphBuilderKcompare_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cJCompareOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerMdo_CompareOp6MpnJCompareOp__v_;
-text: .text%__1cJCompareOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cJCompareOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cJCompareOpMas_CompareOp6M_p0_: c1_Instruction.o;
-text: .text%__1cCIf2t6MpnLInstruction_n0BJCondition_i2pnKBlockBegin_5pnKValueStack_i_v_: c1_Canonicalizer.o;
-text: .text%__1cGSetRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocLset_fpu_reg6MiipnLInstruction__v_;
-text: .text%__1cJIsFreeRegIdo_float6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cILIR_ListJfloat2reg6MfnFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListMbranch_float6MnMLIR_OpBranchNLIR_Condition_pnFLabel_4_v_;
-text: .text%__1cIValueGenNreturnF0RInfo6F_nFRInfo__;
-text: .text%__1cLLIR_EmitterOset_fpu_result6MnFRInfo__v_;
-text: .text%__1cILIR_ListIpush_fpu6MnFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cNConstantTableZaddress_of_float_constant6Mf_pC_;
-text: .text%__1cNLIR_AssemblerOfpu_two_on_tos6MnFRInfo_1i_v_;
-text: .text%__1cIFrameMapLFpuStackSimEswap6M_v_;
-text: .text%__1cIFrameMapLFpuStackSimRexchange_with_tos6Mi_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cQPlaceholderEntryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: nmethod.o;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cUCompressedReadStreamMraw_read_int6FrpC_i_: nmethod.o;
-text: .text%__1cFframebAoops_compiled_arguments_do6MnMsymbolHandle_ipknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cbCOneContigSpaceCardGenerationGshrink6MI_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationJshrink_by6MI_v_;
-text: .text%__1cMVirtualSpaceJshrink_by6MI_v_;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: oopMapCache.o;
-text: .text%__1cRComputeEntryStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cKDoubleTypeDtag6kM_nIValueTag__: c1_ValueType.o;
-text: .text%__1cKDoubleTypeDtag6kM_nIValueTag__: c1_Canonicalizer.o;
-text: .text%__1cODoubleConstantRas_DoubleConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_ValueType.o;
-text: .text%__1cODoubleConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeEsize6kM_i_: c1_ValueType.o;
-text: .text%__1cHLockRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocRset_locked_double6MipnLInstruction_i_v_;
-text: .text%__1cKDoubleTypeNas_DoubleType6M_p0_: c1_ValueType.o;
-text: .text%__1cIFrameMapUare_adjacent_indeces6kMii_i_;
-text: .text%__1cQChangeSpillCountJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocZchange_double_spill_count6Mii_v_;
-text: .text%__1cILIR_ListKdouble2reg6MdnFRInfo__v_: c1_LIREmitter.o;
-text: .text%__1cHFreeRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocPset_free_double6Mi_v_;
-text: .text%__1cILIR_ListDrem6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cLGetRefCountJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocNget_double_rc6kMi_i_;
-text: .text%__1cLLIR_EmitterUcheck_double_address6Mi_v_;
-text: .text%__1cILIR_ListQreg2double_stack6MnFRInfo_inJBasicType__v_: c1_LIREmitter.o;
-text: .text%__1cRLIR_PeepholeStateNstack2indexHi6MpnLLIR_OprDesc__i_;
-text: .text%__1cRLIR_PeepholeStateNstack2indexLo6MpnLLIR_OprDesc__i_;
-text: .text%__1cKDoubleTypeNas_DoubleType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNConstantTableNappend_double6Md_v_;
-text: .text%__1cNConstantTablebAaddress_of_double_constant6Md_pC_;
-text: .text%__1cQGenCollectedHeapHcollect6MnHGCCauseFCause_i_v_;
-text: .text%__1cQGenCollectedHeapOcollect_locked6MnHGCCauseFCause_i_v_;
-text: .text%__1cRVM_GenCollectFullEname6kM_pkc_: vm_operations.o;
-text: .text%__1cRVM_GenCollectFullEdoit6M_v_;
-text: .text%__1cQGenCollectedHeapYmust_clear_all_soft_refs6M_i_;
-text: .text%__1cQGenCollectedHeapSdo_full_collection6Miipi_v_;
-text: .text%__1cKGenerationbHfull_collects_younger_generations6kM_i_: defNewGeneration.o;
-text: .text%__1cKDoubleTypeEsize6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cIValueMapNresize_bucket6MpnGBucket__v_;
-text: .text%__1cNFloatConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cJNullCheckMas_NullCheck6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLLIR_EmitterIopr2long6MpnLLIR_OprDesc__x_;
-text: .text%__1cILIR_ListKlong2stack6Mxi_v_: c1_LIREmitter.o;
-text: .text%__1cIValueGenNreturnD0RInfo6F_nFRInfo__;
-text: .text%__1cJIsFreeRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOis_free_double6kMi_i_;
-text: .text%__1cGSetRegJdo_double6Mi_v_: c1_RegAlloc.o;
-text: .text%__1cIRegAllocOset_double_reg6MiipnLInstruction__v_;
-text: .text%__1cLLIR_EmitterNcopy_fpu_item6MnFRInfo_pnLLIR_OprDesc__v_;
-text: .text%__1cILIR_ListHdup_fpu6MnFRInfo_1_v_: c1_LIREmitter.o;
-text: .text%__1cILIR_ListDdiv6MpnLLIR_OprDesc_22pnMCodeEmitInfo__v_: c1_LIREmitter.o;
-text: .text%__1cJAssemblerFfsubp6Mi_v_;
-text: .text%__1cNLIR_AssemblerHdup_fpu6MnFRInfo_1_v_;
-text: .text%__1cIFrameMapLFpuStackSimLmove_on_tos6Mi_i_;
-text: .text%__1cJAssemblerGfdiv_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfdivp6Mi_v_;
-text: .text%__1cIValueGenMreturn2RInfo6F_nFRInfo__;
-text: .text%__1cJValueTypeQas_FloatConstant6M_pnNFloatConstant__: c1_Canonicalizer.o;
-text: .text%__1cIRuntime1Qnew_object_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cIValueGenLdivOutRInfo6F_nFRInfo__;
-text: .text%__1cILIR_ListEidiv6MnFRInfo_111pnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListVvolatile_load_mem_reg6MnFRInfo_i1nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cEItemSget_jlong_constant6kM_x_;
-text: .text%__1cNLIR_AssemblerQvolatile_move_op6MpnLLIR_OprDesc_2nJBasicType_nHLIR_Op1NLIR_PatchCode_pnMCodeEmitInfo__v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlass.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: objArrayKlass.o;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cONewObjectArrayKexact_type6kM_pnGciType__;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cIRuntime1Noop_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMLongConstantLis_constant6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cIValueGenUdo_ArithmeticOp_Long6MpnMArithmeticOp__v_;
-text: .text%__1cLLIR_EmitterSarithmetic_op_long6MnJBytecodesECode_pnLLIR_OprDesc_44pnMCodeEmitInfo__v_;
-text: .text%__1cFKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cLArrayLengthIis_equal6kMpnLInstruction__i_: c1_GraphBuilder.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cTunsafe_intrinsic_id6FpnNsymbolOopDesc_1_nNmethodOopDescLIntrinsicId__;
-text: .text%__1cMGraphBuilderVappend_unsafe_put_raw6MpnIciMethod_nJBasicType__i_;
-text: .text%__1cMUnsafePutRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cNCanonicalizerOdo_UnsafeRawOp6MpnLUnsafeRawOp__v_;
-text: .text%__1cFmatch6FpnLUnsafeRawOp_ppnLInstruction_4pi_i_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionPas_ArithmeticOp6M_pnMArithmeticOp__: c1_Instruction.o;
-text: .text%__1cIUnsafeOpLas_UnsafeOp6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderVappend_unsafe_get_raw6MpnIciMethod_nJBasicType__i_;
-text: .text%__1cMUnsafeGetRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cMGraphBuilderNlookup_switch6M_v_;
-text: .text%__1cIintArray2t6Mki1_v_: c1_GraphBuilder.o;
-text: .text%__1cMLookupSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cMUnsafePutRawPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cTNullCheckEliminatorPhandle_UnsafeOp6MpnIUnsafeOp__v_;
-text: .text%__1cLUnsafeRawOpPinput_values_do6MpFppnLInstruction__v_v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cQNullCheckVisitorPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cIValueGenPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cLLIR_EmitterOput_raw_unsafe6MpnLLIR_OprDesc_2i2nJBasicType__v_;
-text: .text%__1cLLIR_EmitterMlong2address6MpnLLIR_OprDesc__nFRInfo__;
-text: .text%__1cILIR_ListNstore_mem_reg6MnFRInfo_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cIValueGenPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cLLIR_EmitterOget_raw_unsafe6MnFRInfo_pnLLIR_OprDesc_3inJBasicType__v_;
-text: .text%__1cILIR_ListMload_mem_reg6MpnLLIR_Address_nFRInfo_nJBasicType_pnMCodeEmitInfo_nHLIR_Op1NLIR_PatchCode__v_;
-text: .text%__1cIValueGenPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cUcreate_lookup_ranges6FpnMLookupSwitch__pnQLookupRangeArray__: c1_CodeGenerator_x86.o;
-text: .text%__1cLLIR_EmitterVlookupswitch_range_op6MpnLLIR_OprDesc_iipnKBlockBegin__v_;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cKJavaThreadUin_stack_yellow_zone6MpC_i_: os_solaris_x86.o;
-text: .text%__1cICodeBlobRis_at_poll_return6MpC_i_;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__pC_;
-text: .text%__1cbCCompiledCodeSafepointHandlerbDhandle_polling_page_exception6M_pC_;
-text: .text%__1cFframebDsender_for_raw_compiled_frame6kMpnLRegisterMap__0_;
-text: .text%__1cNSafepointBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_;
-text: .text%__1cUThreadSafepointStateYcaller_must_gc_arguments6kM_i_;
-text: .text%__1cbCCompiledCodeSafepointHandlerYcaller_must_gc_arguments6kM_i_: safepoint.o;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSvframeStreamCommonbFfill_in_compiled_inlined_sender6M_i_;
-text: .text%__1cJFloatTypeEsize6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cIValueGenNrelease_roots6MpnKValueStack__v_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cHciKlassNis_subtype_of6Mp0_i_;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cOObjectConstantLis_constant6kM_i_: c1_ValueType.o;
-text: .text%__1cILIR_ListLstore_array6MipnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerLconst2array6MpnJLIR_Const_pnLLIR_Address_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cQInstanceConstantLis_constant6kM_i_: c1_ValueType.o;
--- a/make/solaris/makefiles/reorder_COMPILER1_i486	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2800 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-# Test Null
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cQAgentLibraryList2t6M_v_: arguments.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compilation.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIR.o;
-text: .text%__1cLLIR_OprFactHillegal6F_pnLLIR_OprDesc__: c1_LIR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIRAssembler_x86.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_: generateOopMap.o;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: java.o;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cJTimeStamp2t6M_v_: management.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cQRelocationHolder2t6M_v_: relocInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_: arguments.o;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cFChunk2t6MI_v_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_II_v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cPoldgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%JVM_RawMonitorCreate;
-text: .text%JVM_NativePath;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%JVM_Open;
-text: .text%JVM_Lseek;
-text: .text%JVM_Close;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MII_v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cKBufferBlob2n6FII_pv_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MII_v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cYVM_Version_StubGeneratorTgenerate_getPsrInfo6M_pC_: vm_version_x86.o;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cKVM_VersionWget_processor_features6F_v_;
-text: .text%jio_snprintf;
-text: .text%jio_vsnprintf;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerKget_thread6MpnMRegisterImpl__v_;
-text: .text%__1cSThreadLocalStorageTpd_getTlsAccessMode6F_n0AQpd_tlsAccessMode__;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerGfstp_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6MnHAddress__v_;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cJAssemblerGfnsave6MnHAddress__v_;
-text: .text%__1cJAssemblerFfwait6M_v_;
-text: .text%__1cJAssemblerFfld_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfst_d6MnHAddress__v_;
-text: .text%__1cOMacroAssemblerPempty_FPU_stack6M_v_;
-text: .text%__1cJAssemblerFffree6Mi_v_;
-text: .text%__1cJAssemblerLemit_farith6Miii_v_;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cJAssemblerGfrstor6MnHAddress__v_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cLFileMapInfoNfail_continue6MpkcE_v_;
-text: .text%__1cLFileMapInfoFclose6M_v_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cPMarkSweepPolicy2t6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cPMarkSweepPolicyWinitialize_generations6M_v_;
-text: .text%__1cXPermanentGenerationSpec2t6MnHPermGenEName_IIIIII_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cKSharedHeap2t6MpnPCollectorPolicy__v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cMSubTasksDone2t6Mi_v_;
-text: .text%__1cMSubTasksDoneFclear6M_v_;
-text: .text%__1cQGenCollectedHeapKinitialize6M_i_;
-text: .text%__1cXPermanentGenerationSpecFalign6MI_v_;
-text: .text%__1cQGenCollectedHeapIallocate6MIpnXPermanentGenerationSpec_pIpipnNReservedSpace__pc_;
-text: .text%__1cPCollectorPolicyOcreate_rem_set6MnJMemRegion_i_pnJGenRemSet__;
-text: .text%__1cLCardTableRS2t6MnJMemRegion_i_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cKSharedHeapPset_barrier_set6MpnKBarrierSet__v_;
-text: .text%__1cOGenerationSpecEinit6MnNReservedSpace_ipnJGenRemSet__pnKGeneration__;
-text: .text%__1cQDefNewGeneration2t6MnNReservedSpace_Iipkc_v_;
-text: .text%__1cKGeneration2t6MnNReservedSpace_Ii_v_;
-text: .text%__1cIageTableFclear6M_v_;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cWSequentialSubTasksDoneFclear6M_v_;
-text: .text%__1cSGenerationCounters2t6MpkciipnMVirtualSpace__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cOCSpaceCounters2t6MpkciIpnPContiguousSpace_pnSGenerationCounters__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cZContiguousSpaceUsedHelperLtake_sample6M_x_: cSpaceCounters.o;
-text: .text%__1cJEdenSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cFSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cQDefNewGenerationPupdate_counters6M_v_;
-text: .text%__1cSGenerationCountersKupdate_all6M_v_: generationCounters.o;
-text: .text%__1cRTenuredGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cOCardGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cWBlockOffsetSharedArray2t6MnJMemRegion_I_v_;
-text: .text%__1cWBlockOffsetSharedArrayGresize6MI_v_;
-text: .text%__1cNReservedSpaceSpage_align_size_up6FI_I_;
-text: .text%__1cLCardTableRSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cWOffsetTableContigSpace2t6MpnWBlockOffsetSharedArray_nJMemRegion__v_;
-text: .text%__1cWOffsetTableContigSpaceKset_bottom6MpnIHeapWord__v_;
-text: .text%__1cQBlockOffsetArrayGresize6MI_v_: blockOffsetTable.o;
-text: .text%__1cWOffsetTableContigSpaceHset_end6MpnIHeapWord__v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cXPermanentGenerationSpecEinit6MnNReservedSpace_IpnJGenRemSet__pnHPermGen__;
-text: .text%__1cRCompactingPermGen2t6MnNReservedSpace_1IpnJGenRemSet_pnXPermanentGenerationSpec__v_;
-text: .text%__1cUCompactingPermGenGen2t6MnNReservedSpace_1IipnJGenRemSet_pnPContiguousSpace_pnXPermanentGenerationSpec__v_;
-text: .text%__1cUCompactingPermGenGenbFinitialize_performance_counters6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationIcapacity6kM_I_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cQDefNewGenerationNtlab_capacity6kM_I_: defNewGeneration.o;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%__1cJAssemblerEincl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cJAssemblerFfld_s6Mi_v_;
-text: .text%__1cJAssemblerEfabs6M_v_;
-text: .text%__1cOMacroAssemblerEfcmp6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerHfucomip6Mi_v_;
-text: .text%__1cOMacroAssemblerEfpop6M_v_;
-text: .text%__1cJAssemblerHfincstp6M_v_;
-text: .text%__1cJAssemblerEfsin6M_v_;
-text: .text%__1cJAssemblerEfcos6M_v_;
-text: .text%__1cJAssemblerFfsqrt6M_v_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cJAssemblerEfldz6M_v_;
-text: .text%__1cJAssemblerEfld16M_v_;
-text: .text%__1cJAssemblerFfaddp6Mi_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEmovb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cJAssemblerFfld_s6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cJAssemblerFpushl6MnHAddress__v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerGfadd_s6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerGf2ieee6M_v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cJAssemblerGfadd_d6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerGd2ieee6M_v_;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerHfsubr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cOMacroAssemblerElmul6Mii_v_;
-text: .text%__1cJAssemblerEmull6MnHAddress__v_;
-text: .text%__1cJAssemblerEmull6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGfmul_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfmul_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfld_x6MnHAddress__v_;
-text: .text%__1cJAssemblerFfmulp6Mi_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cJAssemblerHfdivr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfdivr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerGfdivrp6Mi_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cOMacroAssemblerFfremr6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFfprem6M_v_;
-text: .text%__1cJAssemblerJfnstsw_ax6M_v_;
-text: .text%__1cJAssemblerEsahf6M_v_;
-text: .text%__1cJAssemblerEfxch6Mi_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cJAssemblerEfchs6M_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFshldl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cJAssemblerFshrdl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOMacroAssemblerLextend_sign6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGfild_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfild_d6MnHAddress__v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cOMacroAssemblerIlcmp2int6MpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cJAssemblerHfistp_d6MnHAddress__v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cQGenCollectedHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQGenCollectedHeapIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cRCompactingPermGenMmem_allocate6MI_pnIHeapWord__;
-text: .text%__1cWOffsetTableContigSpaceIallocate6MI_pnIHeapWord__: space.o;
-text: .text%__1cPContiguousSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cbBBlockOffsetArrayContigSpaceLalloc_block6MpnIHeapWord_2_v_: blockOffsetTable.o;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cbBBlockOffsetArrayContigSpaceQalloc_block_work6MpnIHeapWord_2_v_;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_: symbolTable.o;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: oopFactory.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcI_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__I_;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_: classLoader.o;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcI_pnLPackageInfo__: classLoader.o;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: dictionary.o;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cJchar2type6Fc_nJBasicType__: fieldType.o;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cRCompactingPermGenGas_gen6kM_pnKGeneration__: permGen.o;
-text: .text%__1cbCOneContigSpaceCardGenerationOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceTobject_iterate_from6MnJWaterMark_pnNObjectClosure__v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cIRuntime1Ninitialize_pd6F_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cJAssemblerEsubl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerGfldenv6MnHAddress__v_;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cJAssemblerEdecl6MnHAddress__v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cSDeoptimizationBlob2n6FII_pv_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cKNativeCallLdestination6kM_pC_;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cIRuntime1Iname_for6Fn0AGStubID__pkc_;
-text: .text%__1cLRuntimeStub2n6FII_pv_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC2_i_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pCi_i_;
-text: .text%__1cJStubFrame2T6M_v_;
-text: .text%__1cOMacroAssemblerLtlab_refill6MrnFLabel_22_v_;
-text: .text%__1cOMacroAssemblerNeden_allocate6MpnMRegisterImpl_2i2rnFLabel__v_;
-text: .text%__1cOMacroAssemblerLverify_tlab6M_v_;
-text: .text%__1cOMacroAssemblerNtlab_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
-text: .text%__1cRC1_MacroAssemblerRinitialize_object6MpnMRegisterImpl_22i22_v_;
-text: .text%__1cRC1_MacroAssemblerPinitialize_body6MpnMRegisterImpl_2i2_v_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC22_i_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC222_i_;
-text: .text%__1cIRuntime1Iblob_for6Fn0AGStubID__pnICodeBlob__;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cIRuntime1Rgenerate_patching6FpnNStubAssembler_pC_pnJOopMapSet__;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNSafepointBlob2n6FII_pv_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cJAssemblerFfldcw6MnHAddress__v_;
-text: .text%__1cJAssemblerGfnstcw6MnHAddress__v_;
-text: .text%__1cJAssemblerHfcomp_d6MnHAddress__v_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cQDefNewGenerationVunsafe_max_tlab_alloc6kM_I_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cQGenCollectedHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cQGenCollectedHeapEheap6F_p0_;
-text: .text%__1cJEdenSpaceMpar_allocate6MI_pnIHeapWord__;
-text: .text%__1cPContiguousSpaceRpar_allocate_impl6MIkpnIHeapWord__2_: space.o;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQGenCollectedHeapVlarge_typearray_limit6M_I_;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cQGenCollectedHeapIcapacity6kM_I_;
-text: .text%__1cQDefNewGenerationIcapacity6kM_I_;
-text: .text%__1cQGenCollectedHeapEused6kM_I_;
-text: .text%__1cQDefNewGenerationEused6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationEused6kM_I_;
-text: .text%__1cQGenCollectedHeapPpost_initialize6M_v_;
-text: .text%__1cQGenCollectedHeapTref_processing_init6M_v_;
-text: .text%__1cKSharedHeapTref_processing_init6M_v_;
-text: .text%__1cKGenerationSref_processor_init6M_v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryServicebBadd_gen_collected_heap_info6FpnQGenCollectedHeap__v_;
-text: .text%__1cNMemoryManagerXget_copy_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerWget_msc_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryServicebAadd_generation_memory_pool6FpnKGeneration_pnNMemoryManager_4_v_;
-text: .text%__1cQDefNewGenerationEkind6M_nKGenerationEName__: defNewGeneration.o;
-text: .text%__1cRTenuredGenerationEkind6M_nKGenerationEName__: tenuredGeneration.o;
-text: .text%__1cKGenerationMmax_capacity6kM_I_;
-text: .text%__1cNMemoryServicebGadd_compact_perm_gen_memory_pool6FpnUCompactingPermGenGen_pnNMemoryManager__v_;
-text: .text%__1cQGenCollectedHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pi_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: cpCacheOop.o;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cNFingerprinterJdo_object6Mii_v_: dump.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorDbox6Mii_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cNSharedRuntimeDf2i6Ff_i_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNFingerprinterGdo_int6M_v_: dump.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEmove6Mii_v_;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%JVM_IsThreadAlive;
-text: .text%JVM_StartThread;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cNFingerprinterHdo_long6M_v_: dump.o;
-text: .text%JVM_MonitorWait;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%JVM_InitProperties;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%JVM_IsArrayClass;
-text: .text%JVM_GetComponentType;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%JVM_GetClassLoader;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__: javaAssertions.o;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%JVM_GetCallerClass;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cNFingerprinterHdo_bool6M_v_: dump.o;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_IHashCode;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: arrayKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: arrayKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: arrayKlass.o;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%JVM_IsInterface;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Clone;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%JVM_GetClassName;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%JVM_GetClassModifiers;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cNFingerprinterIdo_array6Mii_v_: dump.o;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%JVM_MaxMemory;
-text: .text%__1cQGenCollectedHeapMmax_capacity6kM_I_;
-text: .text%__1cQDefNewGenerationMmax_capacity6kM_I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_FindLibraryEntry;
-text: .text%jni_GetJavaVM;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%jni_SetIntField: jni.o;
-text: .text%jni_SetLongField: jni.o;
-text: .text%JVM_FindSignal;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cJAssemblerFfst_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6Mi_v_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cQSimpleCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cICompiler2t6M_v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cICompilerKinitialize6M_v_;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_I_: thread.o;
-text: .text%__1cNgetTimeMillis6F_x_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cICompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cLCompilationOcompile_method6M_v_;
-text: .text%__1cLCompilationKinitialize6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cLCompilationTdebug_info_recorder6kM_pnYDebugInformationRecorder__;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapNreport_result6M_v_;
-text: .text%__1cLCompilationJbuild_hir6M_v_;
-text: .text%__1cCIR2t6MpnLCompilation_pnIciMethod_i_v_;
-text: .text%__1cMciNullObjectEmake6F_p0_;
-text: .text%__1cMGraphBuilderKinitialize6F_v_;
-text: .text%__1cJXHandlers2t6MpnIciMethod__v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cHIRScopeLbuild_graph6MpnLCompilation_i_pnKBlockBegin__;
-text: .text%__1cQBlockListBuilderLset_leaders6M_v_;
-text: .text%__1cMGraphBuilderPpush_root_scope6MpnHIRScope_pnJBlockList_pnKBlockBegin__v_;
-text: .text%__1cMGraphBuilderJScopeDataJset_scope6MpnHIRScope__v_;
-text: .text%__1cIValueMap2t6M_v_;
-text: .text%__1cMGraphBuilderJScopeDataQadd_to_work_list6MpnKBlockBegin__v_;
-text: .text%__1cNResourceArrayGexpand6MIiri_v_;
-text: .text%__1cMGraphBuilderJScopeDataVremove_from_work_list6M_pnKBlockBegin__;
-text: .text%__1cIValueMapIkill_all6M_v_;
-text: .text%__1cGValuesIpush_all6Mpk0_v_: c1_ValueStack.o;
-text: .text%__1cMGraphBuilderbBiterate_bytecodes_for_block6Mi_pnIBlockEnd__;
-text: .text%__1cMGraphBuilderJScopeDataIblock_at6Mi_pnKBlockBegin__;
-text: .text%__1cMGraphBuilderKload_local6MpnJValueType_i_v_;
-text: .text%__1cMGraphBuilderGappend6MpnLInstruction__2_;
-text: .text%__1cKValueStackEpush6MpnJValueType_pnLInstruction__v_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderMaccess_field6MnJBytecodesECode__v_;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cMas_ValueType6FnJBasicType__pnJValueType__;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadFieldFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cJLoadFieldEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cJLoadFieldEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderLstore_local6MpnJValueType_i_v_;
-text: .text%__1cKValueStackDpop6MpnJValueType__pnLInstruction__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderHif_zero6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cIConstantFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerLdo_Constant6MpnIConstant__v_;
-text: .text%__1cIConstantEhash6kM_i_;
-text: .text%__1cLIntConstantOas_IntConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIConstantEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderHif_node6MpnLInstruction_n0BJCondition_2pnKValueStack__v_;
-text: .text%__1cCIfFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerFdo_If6MpnCIf__v_;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_UnsafeOp6M_pnIUnsafeOp__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionEhash6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionIas_Throw6M_pnFThrow__: c1_Canonicalizer.o;
-text: .text%__1cMGraphBuilderNmethod_return6MpnLInstruction__v_;
-text: .text%__1cGReturnFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerJdo_Return6MpnGReturn__v_;
-text: .text%__1cGReturnJas_Return6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cMGraphBuilderHif_same6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cNCanonicalizerNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cIValueMapKkill_field6MpnHciField__v_;
-text: .text%__1cMGraphBuilderNarithmetic_op6MpnJValueType_nJBytecodesECode_pnKValueStack__v_;
-text: .text%__1cJValueTypeEmeet6kMp0_1_;
-text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMArithmeticOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cNCanonicalizerGdo_Op26MpnDOp2__v_;
-text: .text%__1cNCanonicalizerTmove_const_to_right6MpnDOp2__v_;
-text: .text%__1cMArithmeticOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cMArithmeticOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderJincrement6M_v_;
-text: .text%__1cMGraphBuilderMload_indexed6MnJBasicType__v_;
-text: .text%__1cLLoadIndexedFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cLLoadIndexedEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cLLoadIndexedEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cIConstantLas_Constant6M_p0_: c1_Instruction.o;
-text: .text%__1cEGotoFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerHdo_Goto6MpnEGoto__v_;
-text: .text%__1cCIRIoptimize6M_v_;
-text: .text%__1cJOptimizer2t6MpnCIR__v_;
-text: .text%__1cJOptimizerbHeliminate_conditional_expressions6M_v_;
-text: .text%__1cCIRQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cKBlockBeginQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cKBlockBeginQiterate_preorder6MrnJboolArray_pnMBlockClosure__v_;
-text: .text%__1cNCE_EliminatorIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_Canonicalizer.o;
-text: .text%__1cCIfFas_If6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cJOptimizerQeliminate_blocks6M_v_;
-text: .text%__1cLBlockMergerIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cEGotoHas_Goto6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_Canonicalizer.o;
-text: .text%__1cJOptimizerVeliminate_null_checks6M_v_;
-text: .text%__1cTNullCheckEliminatorHiterate6MpnKBlockBegin__v_;
-text: .text%__1cTNullCheckEliminatorLiterate_all6M_v_;
-text: .text%__1cTNullCheckEliminatorLiterate_one6MpnKBlockBegin__v_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cQNullCheckVisitorNdo_BlockBegin6MpnKBlockBegin__v_;
-text: .text%__1cQNullCheckVisitorHdo_Base6MpnEBase__v_;
-text: .text%__1cQNullCheckVisitorHdo_Goto6MpnEGoto__v_;
-text: .text%__1cFLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorIdo_Local6MpnFLocal__v_;
-text: .text%__1cQNullCheckVisitorMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cTNullCheckEliminatorShandle_AccessField6MpnLAccessField__v_;
-text: .text%__1cQNullCheckVisitorLdo_Constant6MpnIConstant__v_;
-text: .text%__1cQNullCheckVisitorFdo_If6MpnCIf__v_;
-text: .text%__1cQNullCheckVisitorPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cQNullCheckVisitorOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cTNullCheckEliminatorShandle_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cQNullCheckVisitorNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cQNullCheckVisitorJdo_Return6MpnGReturn__v_;
-text: .text%__1cGBitMapQset_intersection6M0_v_;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_Canonicalizer.o;
-text: .text%__1cJBlockListPiterate_forward6MpnMBlockClosure__v_;
-text: .text%__1cNResourceArrayEsort6MIpGpkv2_i_v_;
-text: .text%__1cKStateSplitFscope6kM_pnHIRScope__;
-text: .text%__1cIBlockEndOsubstitute_sux6MpnKBlockBegin_2_v_;
-text: .text%__1cCIRMcompute_code6M_v_;
-text: .text%__1cJBlockListJblocks_do6MpFpnKBlockBegin__v_v_;
-text: .text%__1cFLocalIas_Local6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLCompilationIemit_lir6M_v_;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Canonicalizer.o;
-text: .text%__1cMas_BasicType6FpnJValueType__nJBasicType__;
-text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_Canonicalizer.o;
-text: .text%__1cLLIR_OprFactKvalue_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cJArrayTypeMas_ArrayType6M_p0_: c1_ValueType.o;
-text: .text%__1cILIR_ListKshift_left6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cLLIR_AddressFscale6FnJBasicType__n0AFScale__;
-text: .text%__1cORangeCheckStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cGLIR_OpLas_OpBranch6M_pnMLIR_OpBranch__: c1_LIR.o;
-text: .text%__1cHIRScopeJmax_stack6kM_i_;
-text: .text%__1cGLIR_OpGas_Op16M_pnHLIR_Op1__: c1_LIR.o;
-text: .text%__1cLLIR_OpLabelKas_OpLabel6M_p0_: c1_LIR.o;
-text: .text%__1cHLIR_Op1Gas_Op16M_p0_: c1_LIR.o;
-text: .text%__1cMLIR_OpBranchLas_OpBranch6M_p0_: c1_LIR.o;
-text: .text%__1cNResourceArrayJremove_at6MIi_v_;
-text: .text%__1cNLIR_AssemblerJemit_code6MpnJBlockList__v_;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeNas_DoubleType6M_pnKDoubleType__: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_Canonicalizer.o;
-text: .text%__1cNLIR_AssemblerPcheck_codespace6M_v_;
-text: .text%__1cNLIR_AssemblerMemit_opLabel6MpnLLIR_OpLabel__v_;
-text: .text%__1cNLIR_AssemblerIemit_op06MpnHLIR_Op0__v_;
-text: .text%__1cNLIR_AssemblerIemit_op26MpnHLIR_Op2__v_;
-text: .text%__1cRC1_MacroAssemblerSinline_cache_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cRC1_MacroAssemblerOverified_entry6M_v_;
-text: .text%__1cNLIR_AssemblerLbuild_frame6M_v_;
-text: .text%__1cNLIR_AssemblerbBinitial_frame_size_in_bytes6M_i_;
-text: .text%__1cRC1_MacroAssemblerLbuild_frame6Mi_v_;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cIFrameMapQmake_new_address6kMi_nHAddress__;
-text: .text%__1cNLIR_AssemblerIemit_op16MpnHLIR_Op1__v_;
-text: .text%__1cNLIR_AssemblerKas_Address6MpnLLIR_Address__nHAddress__;
-text: .text%__1cNLIR_AssemblerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cNLIR_AssemblerJstack2reg6MpnLLIR_OprDesc_2nJBasicType__v_;
-text: .text%__1cNLIR_AssemblerJmove_regs6MpnMRegisterImpl_2_v_;
-text: .text%__1cNLIR_AssemblerbIadd_debug_info_for_null_check_here6MpnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerLcode_offset6kM_i_;
-text: .text%__1cNLIR_AssemblerbDadd_debug_info_for_null_check6MipnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerOemit_code_stub6MpnICodeStub__v_;
-text: .text%__1cVImplicitNullCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerCpc6kM_pC_;
-text: .text%__1cNCodeStubArrayIindex_of6kMkpnICodeStub__i_: c1_LIRAssembler.o;
-text: .text%__1cORangeCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerZadd_debug_info_for_branch6MpnMCodeEmitInfo__v_;
-text: .text%__1cGOopMapJdeep_copy6M_p0_;
-text: .text%__1cGOopMap2t6Mn0ANDeepCopyToken_p0_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap__v_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cLCompilationQemit_code_epilog6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerUemit_slow_case_stubs6M_v_;
-text: .text%__1cNLIR_AssemblerKemit_stubs6MpnMCodeStubList__v_;
-text: .text%__1cVImplicitNullCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cNLIR_AssemblerNadd_call_info6MipnMCodeEmitInfo__v_;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cORangeCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_Assembler2T6M_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethod2n6FIi_pv_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cLCompilation2T6M_v_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cMGraphBuilderMnew_instance6Mi_v_;
-text: .text%__1cQciBytecodeStreamPget_klass_index6kM_i_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cMGraphBuilderMappend_split6MpnKStateSplit__pnLInstruction__;
-text: .text%__1cLNewInstanceFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cKValueStackMclear_locals6M_v_;
-text: .text%__1cMGraphBuilderIstack_op6MnJBytecodesECode__v_;
-text: .text%__1cMGraphBuilderGinvoke6MnJBytecodesECode__v_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cQciBytecodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cQciBytecodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cKValueStackNpop_arguments6Mi_pnGValues__;
-text: .text%__1cGInvokeFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cGInvokeJas_Invoke6M_p0_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerIdo_Throw6MpnFThrow__v_;
-text: .text%__1cQNullCheckVisitorOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cTNullCheckEliminatorShandle_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cQNullCheckVisitorJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cTNullCheckEliminatorNhandle_Invoke6MpnGInvoke__v_;
-text: .text%__1cQNullCheckVisitorIdo_Throw6MpnFThrow__v_;
-text: .text%__1cLInstructionGnegate6Fn0AJCondition__1_;
-text: .text%__1cIVoidTypeLas_VoidType6M_p0_: c1_ValueType.o;
-text: .text%__1cLNewInstanceKexact_type6kM_pnGciType__;
-text: .text%__1cLNewInstanceOas_NewInstance6M_p0_: c1_Instruction.o;
-text: .text%__1cPNewInstanceStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cMPatchingStubQalign_patch_site6MpnOMacroAssembler__v_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNLIR_AssemblerUappend_patching_stub6MpnMPatchingStub__v_;
-text: .text%__1cPNewInstanceStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerJemit_call6MpnOLIR_OpJavaCall__v_;
-text: .text%__1cNLIR_AssemblerKalign_call6MnILIR_Code__v_;
-text: .text%__1cICodeStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cMPatchingStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
-text: .text%__1cRNativeGeneralJumpUinsert_unconditional6FpC1_v_;
-text: .text%__1cJrelocInfobDchange_reloc_info_for_address6FpnNRelocIterator_pCn0AJrelocType_4_v_;
-text: .text%__1cJrelocInfoIset_type6Mn0AJrelocType__v_;
-text: .text%__1cPNewInstanceStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cNFingerprinterIdo_float6M_v_: dump.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cNFingerprinterJdo_double6M_v_: dump.o;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%JVM_Read;
-text: .text%__1cDhpiEread6FipvI_I_: jvm.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_char6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cMGraphBuilderUclear_inline_bailout6M_v_;
-text: .text%__1cMGraphBuilderWrecursive_inline_level6kMpnIciMethod__i_;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cNCanonicalizerMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cMGraphBuilderJScopeDataLnum_returns6M_i_;
-text: .text%__1cMGraphBuilderJScopeDataXset_inline_cleanup_info6MpnKBlockBegin_pnLInstruction_pnKValueStack__v_;
-text: .text%__1cMGraphBuilderJScopeDataQincr_num_returns6M_v_;
-text: .text%__1cMGraphBuilderJpop_scope6M_v_;
-text: .text%__1cLCompilationVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cMGraphBuilderOinline_bailout6Mpkc_v_;
-text: .text%__1cLInstructionEprev6MpnKBlockBegin__p0_;
-text: .text%__1cQNullCheckVisitorMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cTNullCheckEliminatorQhandle_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%JVM_GetClassNameUTF;
-text: .text%JVM_ReleaseUTF;
-text: .text%JVM_FindClassFromClass;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%JVM_IsConstructorIx;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%jni_DetachCurrentThread;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%jni_DestroyJavaVM;
-text: .text%jni_AttachCurrentThread;
-text: .text%__1cKJavaThreadVinvoke_shutdown_hooks6M_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cIVMThreadXwait_for_vm_thread_exit6F_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cIVMThreadHdestroy6F_v_;
-text: .text%__SLIP.DELETER__A: vmThread.o;
-text: .text%__1cSThreadLocalStorageRpd_invalidate_all6F_v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%JVM_Halt;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_I_: jvm.o;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%JVM_Sleep;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cJChunkPoolMfree_all_but6MI_v_: allocation.o;
-text: .text%JVM_GetClassContext;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cMGraphBuilderNload_constant6M_v_;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_Canonicalizer.o;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cEIfOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorHdo_IfOp6MpnEIfOp__v_;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%__1cMGraphBuilderLinstance_of6Mi_v_;
-text: .text%__1cKInstanceOfFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cKInstanceOfNas_InstanceOf6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderKcheck_cast6Mi_v_;
-text: .text%__1cNCanonicalizerMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cQNullCheckVisitorNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cQNullCheckVisitorMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cTSimpleExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
-text: .text%__1cTSimpleExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cTSimpleExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cJLoadFieldMas_LoadField6M_p0_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorGdo_Phi6MpnDPhi__v_;
-text: .text%jni_GetEnv;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: c1_IR.o;
-text: .text%__1cMGraphBuilderJScopeDataJxhandlers6kM_pnJXHandlers__;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cMGraphBuilderHif_null6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cOObjectConstantRas_ObjectConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cMas_ValueType6FnKciConstant__pnJValueType__;
-text: .text%__1cLInstructionGmirror6Fn0AJCondition__1_;
-text: .text%__1cNCanonicalizerNset_canonical6MpnLInstruction__v_;
-text: .text%__1cKBlockBeginVadd_exception_handler6Mp0_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cNClassConstantQas_ClassConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cMGraphBuilderIlogic_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHLogicOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cHLogicOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cHLogicOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderHconvert6MnJBytecodesECode_nJBasicType_3_v_;
-text: .text%__1cHConvertFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_Convert6MpnHConvert__v_;
-text: .text%__1cHConvertEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHConvertEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderNstore_indexed6MnJBasicType__v_;
-text: .text%__1cIValueMapKkill_array6MpnJValueType__v_;
-text: .text%__1cNCanonicalizerPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cQNullCheckVisitorKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cQNullCheckVisitorKdo_Convert6MpnHConvert__v_;
-text: .text%__1cQNullCheckVisitorPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cTNullCheckEliminatorThandle_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cLLIR_OprFactQdummy_value_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_pnI_jobject__v_;
-text: .text%__1cNLIR_AssemblerIlogic_op6MnILIR_Code_pnLLIR_OprDesc_33_v_;
-text: .text%__1cNLIR_AssemblerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%JVM_GetLastErrorString;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%JVM_DisableCompiler;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Available;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cLArrayLengthFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLArrayLengthEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLArrayLengthEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderOnew_type_array6M_v_;
-text: .text%__1cMNewTypeArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cNCanonicalizerMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cQNullCheckVisitorOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cTNullCheckEliminatorShandle_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cQNullCheckVisitorPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cTNullCheckEliminatorPhandle_NewArray6MpnINewArray__v_;
-text: .text%__1cQNullCheckVisitorMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cJLoadFieldKexact_type6kM_pnGciType__;
-text: .text%__1cJLoadFieldNdeclared_type6kM_pnGciType__;
-text: .text%__1cMNewTypeArrayKexact_type6kM_pnGciType__;
-text: .text%__1cLArrayLengthOas_ArrayLength6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cILIR_ListUunsigned_shift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cQNewTypeArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNLIR_AssemblerQemit_alloc_array6MpnQLIR_OpAllocArray__v_;
-text: .text%__1cNLIR_AssemblerSarray_element_size6kMnJBasicType__nHAddressLScaleFactor__;
-text: .text%__1cRC1_MacroAssemblerOallocate_array6MpnMRegisterImpl_222inHAddressLScaleFactor_2rnFLabel__v_;
-text: .text%__1cRC1_MacroAssemblerMtry_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
-text: .text%__1cQNewTypeArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
-text: .text%__1cMciArrayKlassMelement_type6M_pnGciType__;
-text: .text%__1cNArrayCopyStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cQNewTypeArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNArrayCopyStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%JVM_NewArray;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cMGraphBuilderQnew_object_array6M_v_;
-text: .text%__1cONewObjectArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cMGraphBuilderIshift_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHShiftOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cHShiftOpEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHShiftOpEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cLLoadIndexedOas_LoadIndexed6M_p0_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cQNullCheckVisitorKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cHciKlassMaccess_flags6M_i_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cSNewObjectArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOemit_alloc_obj6MpnOLIR_OpAllocObj__v_;
-text: .text%__1cRC1_MacroAssemblerPallocate_object6MpnMRegisterImpl_22ii2rnFLabel__v_;
-text: .text%__1cNLIR_AssemblerOmembar_release6M_v_;
-text: .text%__1cNLIR_AssemblerGmembar6M_v_;
-text: .text%__1cSNewObjectArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerOmembar_acquire6M_v_;
-text: .text%__1cSNewObjectArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%jni_CallStaticBooleanMethodV: jni.o;
-text: .text%JVM_GetStackTraceDepth;
-text: .text%__1cTjava_lang_ThrowableVget_stack_trace_depth6FpnHoopDesc_pnGThread__i_;
-text: .text%__1cTjava_lang_ThrowableJbacktrace6FpnHoopDesc__2_;
-text: .text%JVM_GetStackTraceElement;
-text: .text%__1cTjava_lang_ThrowableXget_stack_trace_element6FpnHoopDesc_ipnGThread__2_;
-text: .text%__1cbBjava_lang_StackTraceElementGcreate6FnMmethodHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cbBjava_lang_StackTraceElementOset_methodName6FpnHoopDesc_2_v_;
-text: .text%__1cbBjava_lang_StackTraceElementMset_fileName6FpnHoopDesc_2_v_;
-text: .text%__1cNmethodOopDescUline_number_from_bci6kMi_i_;
-text: .text%__1cbECompressedLineNumberReadStream2t6MpC_v_;
-text: .text%__1cbBjava_lang_StackTraceElementOset_lineNumber6FpnHoopDesc_i_v_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%JVM_EnableCompiler;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cOMacroAssemblerHfat_nop6M_v_;
-text: .text%jni_CallObjectMethodV: jni.o;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cKGenerationInext_gen6kM_p0_;
-text: .text%__1cQDefNewGenerationTallocate_from_space6MI_pnIHeapWord__;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cbAVM_GenCollectForAllocationEdoit6M_v_;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cTContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cTContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cbBSurvivorContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cbBSurvivorContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cOGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOGenerationPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cSAllocationProfilerViterate_since_last_gc6F_v_;
-text: .text%__1cUGenGCPrologueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cQDefNewGenerationKshort_name6kM_pkc_: defNewGeneration.o;
-text: .text%__1cQGenCollectedHeapKsave_marks6M_v_;
-text: .text%__1cQDefNewGenerationKsave_marks6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationKsave_marks6M_v_;
-text: .text%__1cKGenerationYmax_contiguous_available6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationUcontiguous_available6kM_I_;
-text: .text%__1cQDefNewGenerationbIinit_assuming_no_promotion_failure6M_v_;
-text: .text%__1cQDefNewGenerationOIsAliveClosure2t6MpnKGeneration__v_;
-text: .text%__1cSScanWeakRefClosure2t6MpnQDefNewGeneration__v_;
-text: .text%__1cULRUCurrentHeapPolicy2t6M_v_;
-text: .text%__1cQDefNewGenerationbCFastEvacuateFollowersClosure2t6MpnQGenCollectedHeap_ip0pnPFastScanClosure_6_v_;
-text: .text%__1cKSharedHeapbAchange_strong_roots_parity6M_v_;
-text: .text%__1cPFastScanClosureGdo_oop6MppnHoopDesc__v_: defNewGeneration.o;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_: dictionary.o;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUCompactingPermGenGenUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cKGenerationbDyounger_refs_in_space_iterate6MpnFSpace_pnQOopsInGenClosure__v_;
-text: .text%__1cLCardTableRSbDyounger_refs_in_space_iterate6MpnFSpace_pnQOopsInGenClosure__v_;
-text: .text%__1cPContiguousSpaceLnew_dcto_cl6MpnKOopClosure_nRCardTableModRefBSOPrecisionStyle_pnIHeapWord__pnVDirtyCardToOopClosure__;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cYClearNoncleanCardWrapperMdo_MemRegion6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cVDirtyCardToOopClosureMdo_MemRegion6MnJMemRegion__v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceSblock_start_unsafe6kMpkv_pnIHeapWord__;
-text: .text%__1cPContiguousSpaceKblock_size6kMpknIHeapWord__I_;
-text: .text%__1cUContiguousSpaceDCTOCOget_actual_top6MpnIHeapWord_2_2_;
-text: .text%__1cPFiltering_DCTOCPwalk_mem_region6MnJMemRegion_pnIHeapWord_3_v_;
-text: .text%__1cUContiguousSpaceDCTOCXwalk_mem_region_with_cl6MnJMemRegion_pnIHeapWord_3pnQFilteringClosure__v_;
-text: .text%__1cLmethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cSinstanceKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure__v_;
-text: .text%__1cLklassVtablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cQFilteringClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cLklassItablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cKklassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cWConstantPoolCacheEntryLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cSobjArrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cParrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cNinstanceKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cNobjArrayKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cOtypeArrayKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cQconstMethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cLmethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cQconstMethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cRconstantPoolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLsymbolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLsymbolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cRconstantPoolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cWconstantPoolCacheKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cWConstantPoolCacheEntryNoop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cOtypeArrayKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cSinstanceKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassVtableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassItableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cKklassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cLCardTableRSUyounger_refs_iterate6MpnKGeneration_pnQOopsInGenClosure__v_;
-text: .text%__1cMSubTasksDoneTall_tasks_completed6M_v_;
-text: .text%__1cQDefNewGenerationbCFastEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cQGenCollectedHeapbCoop_since_save_marks_iterate6MipnPFastScanClosure_2_v_;
-text: .text%__1cQDefNewGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cPContiguousSpacebFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cbCOneContigSpaceCardGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cQDefNewGenerationUFastKeepAliveClosure2t6Mp0pnSScanWeakRefClosure__v_;
-text: .text%__1cQDefNewGenerationQKeepAliveClosure2t6MpnSScanWeakRefClosure__v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cQDefNewGenerationUFastKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cQDefNewGenerationLswap_spaces6M_v_;
-text: .text%__1cIageTablebAcompute_tenuring_threshold6MI_i_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationEfree6kM_I_;
-text: .text%__1cQDefNewGenerationQcompute_new_size6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cUGenGCEpilogueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cRTenuredGenerationPupdate_counters6M_v_;
-text: .text%__1cUCompactingPermGenGenPupdate_counters6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%jni_GetIntArrayRegion: jni.o;
-text: .text%jni_SetIntArrayRegion: jni.o;
-text: .text%jni_PushLocalFrame: jni.o;
-text: .text%jni_PopLocalFrame: jni.o;
-text: .text%__1cMGraphBuilderJnegate_op6MpnJValueType__v_;
-text: .text%__1cINegateOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cQNullCheckVisitorLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cILIR_ListLstore_check6MpnLLIR_OprDesc_2222pnMCodeEmitInfo__v_;
-text: .text%__1cXArrayStoreExceptionStub2t6MpnMCodeEmitInfo__v_;
-text: .text%__1cILIR_ListLshift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cXArrayStoreExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cXArrayStoreExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerEleal6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cNLIR_AssemblerGnegate6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cXArrayStoreExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cIRuntime1Jarraycopy6FpnHoopDesc_i2ii_i_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_CallIntMethodV: jni.o;
-text: .text%Unsafe_GetObject;
-text: .text%jni_CallBooleanMethod: jni.o;
-text: .text%jni_CallVoidMethodV: jni.o;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cJAssemblerGfist_s6MnHAddress__v_;
-text: .text%__1cNLIR_AssemblerJreset_FPU6M_v_;
-text: .text%__1cNLIR_AssemblerIemit_op36MpnHLIR_Op3__v_;
-text: .text%__1cNLIR_AssemblerParithmetic_idiv6MnILIR_Code_pnLLIR_OprDesc_333pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerXadd_debug_info_for_div06MipnMCodeEmitInfo__v_;
-text: .text%__1cNDivByZeroStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cNDivByZeroStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_GetIntVolatile;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cMGraphBuilderMtable_switch6M_v_;
-text: .text%__1cLTableSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cQNullCheckVisitorOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%JVM_Socket;
-text: .text%Unsafe_PageSize;
-text: .text%__1cNFingerprinterHdo_byte6M_v_: dump.o;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%Unsafe_DefineClass1;
-text: .text%JVM_DefineClass;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cIRuntime1Tprimitive_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cRComputeEntryStackHdo_char6M_v_: generateOopMap.o;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cRComputeEntryStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cSInterpreterRuntimeWslow_signature_handler6FpnKJavaThread_pnNmethodOopDesc_pi5_pC_;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%jni_GetCharArrayRegion: jni.o;
-text: .text%jni_SetFloatField: jni.o;
-text: .text%jni_NewFloatArray: jni.o;
-text: .text%jni_SetFloatArrayRegion: jni.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cKValueStackGunlock6M_i_;
-text: .text%__1cQMonitorEnterStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_x86.o;
-text: .text%__1cNLIR_AssemblerJemit_lock6MpnKLIR_OpLock__v_;
-text: .text%__1cQMonitorEnterStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_x86.o;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cRC1_MacroAssemblerNunlock_object6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cQMonitorEnterStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cPMonitorExitStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%jni_NewIntArray: jni.o;
-text: .text%__1cNCollectedHeapYlarge_typearray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cSobjArrayKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cRTenuredGenerationKshort_name6kM_pkc_: tenuredGeneration.o;
-text: .text%__1cRTenuredGenerationbJretire_alloc_buffers_before_full_gc6M_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationLused_region6kM_nJMemRegion__;
-text: .text%__1cMGenMarkSweepPallocate_stacks6F_v_;
-text: .text%__1cQGenCollectedHeapOgather_scratch6MpnKGeneration_I_pnMScratchBlock__;
-text: .text%__1cQDefNewGenerationScontribute_scratch6MrpnMScratchBlock_pnKGeneration_I_v_;
-text: .text%__1cJMarkSweepRFollowRootClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepQKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cQGenCollectedHeapWprepare_for_compaction6M_v_;
-text: .text%__1cKGenerationWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cPContiguousSpaceWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cWOffsetTableContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cQCompactibleSpaceHforward6MpnHoopDesc_IpnMCompactPoint_pnIHeapWord__6_;
-text: .text%__1cWOffsetTableContigSpacePcross_threshold6MpnIHeapWord_2_2_;
-text: .text%__1cQDefNewGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: defNewGeneration.o;
-text: .text%__1cbCOneContigSpaceCardGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: compactingPermGenGen.o;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase36Fi_v_;
-text: .text%__1cUCompactingPermGenGenTpre_adjust_pointers6M_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cYGenAdjustPointersClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationPadjust_pointers6M_v_;
-text: .text%__1cVAdjustPointersClosureIdo_space6MpnFSpace__v_: generation.o;
-text: .text%__1cQCompactibleSpacePadjust_pointers6M_v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cUCompactingPermGenGenPadjust_pointers6M_v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMGenMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cUCompactingPermGenGenHcompact6M_v_;
-text: .text%__1cQCompactibleSpaceHcompact6M_v_;
-text: .text%__1cRGenCompactClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationHcompact6M_v_;
-text: .text%__1cUCompactingPermGenGenMpost_compact6M_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cMGenMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cLCardTableRSFclear6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cQGenCollectedHeapWupdate_time_of_last_gc6Mx_v_: genMarkSweep.o;
-text: .text%__1cbCOneContigSpaceCardGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cRTenuredGenerationQcompute_new_size6M_v_;
-text: .text%__1cKGenerationEspec6M_pnOGenerationSpec__;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cRPrivilegedElementHoops_do6MpnKOopClosure__v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%jni_DeleteWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesTdestroy_weak_global6FpnI_jobject__v_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cNCanonicalizerPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cLMonitorExitFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cQNullCheckVisitorPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cTNullCheckEliminatorUhandle_AccessMonitor6MpnNAccessMonitor__v_;
-text: .text%__1cQNullCheckVisitorOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cMLongConstantPas_LongConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNAccessMonitorQas_AccessMonitor6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cNLIR_AssemblerNas_Address_hi6MpnLLIR_Address__nHAddress__;
-text: .text%__1cNLIR_AssemblerNas_Address_lo6MpnLLIR_Address__nHAddress__;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cNLIR_AssemblerKget_thread6MpnLLIR_OprDesc__v_;
-text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%Unsafe_AllocateInstance;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cQinstanceRefKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cNCanonicalizerMset_constant6Mi_v_: c1_Canonicalizer.o;
-text: .text%__1cNLIR_AssemblerMcheck_icache6M_i_;
-text: .text%__1cNLIR_AssemblerZjobject2reg_with_patching6MpnMRegisterImpl_pnMCodeEmitInfo__v_;
-text: .text%__1cIRuntime1Mnew_instance6FpnKJavaThread_pnMklassOopDesc__v_;
-text: .text%__1cPContiguousSpaceNmangle_region6MnJMemRegion__v_;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cIRuntime1Onew_type_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cNFloatConstantQas_FloatConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cRAbstractAssemblerGa_long6Mi_v_;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cIRuntime1Mmonitorenter6FpnKJavaThread_pnHoopDesc_pnPBasicObjectLock__v_;
-text: .text%__1cIRuntime1Lmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%JVM_HoldsLock;
-text: .text%__1cTMaskFillerForNativeIpass_int6M_v_: oopMapCache.o;
-text: .text%__1cNSharedRuntimeDf2l6Ff_x_;
-text: .text%__1cMGraphBuilderKcompare_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cNCanonicalizerMdo_CompareOp6MpnJCompareOp__v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cQPlaceholderEntryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cbCOneContigSpaceCardGenerationGshrink6MI_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationJshrink_by6MI_v_;
-text: .text%__1cMVirtualSpaceJshrink_by6MI_v_;
-text: .text%__1cRComputeEntryStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cODoubleConstantRas_DoubleConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeNas_DoubleType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cQGenCollectedHeapHcollect6MnHGCCauseFCause_i_v_;
-text: .text%__1cQGenCollectedHeapOcollect_locked6MnHGCCauseFCause_i_v_;
-text: .text%__1cRVM_GenCollectFullEdoit6M_v_;
-text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cJAssemblerFfsubp6Mi_v_;
-text: .text%__1cJAssemblerGfdiv_d6MnHAddress__v_;
-text: .text%__1cJAssemblerFfdivp6Mi_v_;
-text: .text%__1cJValueTypeQas_FloatConstant6M_pnNFloatConstant__: c1_Canonicalizer.o;
-text: .text%__1cIRuntime1Qnew_object_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cONewObjectArrayKexact_type6kM_pnGciType__;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cIRuntime1Noop_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cVcompiledICHolderKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cMUnsafePutRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cNCanonicalizerOdo_UnsafeRawOp6MpnLUnsafeRawOp__v_;
-text: .text%__1cIUnsafeOpLas_UnsafeOp6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMUnsafeGetRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cMGraphBuilderNlookup_switch6M_v_;
-text: .text%__1cMLookupSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cQNullCheckVisitorPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cQNullCheckVisitorPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cQNullCheckVisitorPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
--- a/make/solaris/makefiles/reorder_COMPILER1_sparc	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2356 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-# Test Null
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_Compilation.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: c1_LIR.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: java.o;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cCosUatomic_add_bootstrap6Fipoi_i_;
-text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cPoldgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cCosYatomic_cmpxchg_bootstrap6Fipoii_i_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%bootstrap_flush_windows;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%JVM_RawMonitorCreate;
-text: .text%JVM_NativePath;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%JVM_Open;
-text: .text%JVM_Lseek;
-text: .text%JVM_Close;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%jio_snprintf;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
-text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cOMacroAssemblerPstop_subroutine6M_v_;
-text: .text%__1cVRegistersForDebuggingOsave_registers6FpnOMacroAssembler__v_: assembler_sparc.o;
-text: .text%__1cVRegistersForDebuggingRrestore_registers6FpnOMacroAssembler_pnMRegisterImpl__v_: assembler_sparc.o;
-text: .text%__1cNStubGeneratorbNgenerate_flush_callers_register_windows6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerNflush_windows6M_v_;
-text: .text%__1cNStubGeneratorUgenerate_atomic_xchg6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorTgenerate_atomic_add6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbCgenerate_atomic_cmpxchg_long6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cRClassPathZipEntryEname6M_pkc_: classLoader.o;
-text: .text%__1cPMarkSweepPolicy2t6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cPMarkSweepPolicyWinitialize_generations6M_v_;
-text: .text%__1cXPermanentGenerationSpec2t6MnHPermGenEName_IIIIII_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cCosbDatomic_cmpxchg_long_bootstrap6Fxpoxx_x_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cKSharedHeap2t6MpnPCollectorPolicy__v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cMSubTasksDone2t6Mi_v_;
-text: .text%__1cQGenCollectedHeapKinitialize6M_i_;
-text: .text%__1cXPermanentGenerationSpecFalign6MI_v_;
-text: .text%__1cCosZattempt_reserve_memory_at6FIpc_1_;
-text: .text%__1cPCollectorPolicyOcreate_rem_set6MnJMemRegion_i_pnJGenRemSet__;
-text: .text%__1cLCardTableRS2t6MnJMemRegion_i_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cKSharedHeapPset_barrier_set6MpnKBarrierSet__v_;
-text: .text%__1cOGenerationSpecEinit6MnNReservedSpace_ipnJGenRemSet__pnKGeneration__;
-text: .text%__1cQDefNewGeneration2t6MnNReservedSpace_Iipkc_v_;
-text: .text%__1cKGeneration2t6MnNReservedSpace_Ii_v_;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cWSequentialSubTasksDoneFclear6M_v_;
-text: .text%__1cSGenerationCounters2t6MpkciipnMVirtualSpace__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cOCSpaceCounters2t6MpkciIpnPContiguousSpace_pnSGenerationCounters__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cZContiguousSpaceUsedHelperLtake_sample6M_x_: cSpaceCounters.o;
-text: .text%__1cJEdenSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cFSpaceHset_end6MpnIHeapWord__v_: space.o;
-text: .text%__1cQDefNewGenerationPupdate_counters6M_v_;
-text: .text%__1cSGenerationCountersKupdate_all6M_v_: generationCounters.o;
-text: .text%__1cRTenuredGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cOCardGeneration2t6MnNReservedSpace_IipnJGenRemSet__v_;
-text: .text%__1cWBlockOffsetSharedArray2t6MnJMemRegion_I_v_;
-text: .text%__1cNReservedSpaceSpage_align_size_up6FI_I_;
-text: .text%__1cLCardTableRSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cWOffsetTableContigSpace2t6MpnWBlockOffsetSharedArray_nJMemRegion__v_;
-text: .text%__1cWOffsetTableContigSpaceKset_bottom6MpnIHeapWord__v_;
-text: .text%__1cQBlockOffsetArrayGresize6MI_v_: blockOffsetTable.o;
-text: .text%__1cWOffsetTableContigSpaceHset_end6MpnIHeapWord__v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cXPermanentGenerationSpecEinit6MnNReservedSpace_IpnJGenRemSet__pnHPermGen__;
-text: .text%__1cRCompactingPermGen2t6MnNReservedSpace_1IpnJGenRemSet_pnXPermanentGenerationSpec__v_;
-text: .text%__1cUCompactingPermGenGen2t6MnNReservedSpace_1IipnJGenRemSet_pnPContiguousSpace_pnXPermanentGenerationSpec__v_;
-text: .text%__1cNReservedSpaceHrelease6M_v_;
-text: .text%__1cUCompactingPermGenGenbFinitialize_performance_counters6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationIcapacity6kM_I_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cQDefNewGenerationNtlab_capacity6kM_I_: defNewGeneration.o;
-text: .text%__1cUCompactingPermGenGenPinitialize_oops6F_v_;
-text: .text%__1cQSystemDictionaryVset_shared_dictionary6FpnPHashtableBucket_ii_v_;
-text: .text%__1cKDictionary2t6MipnPHashtableBucket_i_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6FpnPHashtableBucket_ii_v_;
-text: .text%__1cUCompactingPermGenGenOserialize_oops6FpnTSerializeOopClosure__v_;
-text: .text%__1cLReadClosureGdo_tag6Mi_v_: restore.o;
-text: .text%__1cLReadClosureGdo_int6Mpi_v_: restore.o;
-text: .text%__1cQGenCollectedHeapEheap6F_p0_;
-text: .text%__1cRCompactingPermGenGas_gen6kM_pnKGeneration__: permGen.o;
-text: .text%__1cWBlockOffsetSharedArrayJserialize6MpnTSerializeOopClosure_pnIHeapWord_4_v_;
-text: .text%__1cLReadClosureJdo_region6MpCI_v_: restore.o;
-text: .text%__1cWOffsetTableContigSpacebKserialize_block_offset_array_offsets6MpnTSerializeOopClosure__v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceJserialize6MpnTSerializeOopClosure__v_;
-text: .text%__1cLReadClosureGdo_ptr6MppnIHeapWord__v_: restore.o;
-text: .text%__1cLReadClosureGdo_ptr6Mppv_v_: restore.o;
-text: .text%__1cLReadClosureJdo_size_t6MpI_v_: restore.o;
-text: .text%__1cLReadClosureGdo_oop6MppnHoopDesc__v_: restore.o;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cLFileMapInfoFclose6M_v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
-text: .text%__1cOMacroAssemblerbBcheck_and_forward_exception6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cQRelocationHolderEplus6kMi_0_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerbIcompute_extra_locals_size_in_bytes6MpnMRegisterImpl_22_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cUInterpreterGeneratorVrestore_native_result6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_icc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_22222_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cOMacroAssemblerFlushr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_2222_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MnITosState_pnMRegisterImpl_3_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cQGenCollectedHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cQGenCollectedHeapIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cQDefNewGenerationIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_normal6MnITosState__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cIUniversebCinit_self_patching_vtbl_list6Fppvi_v_;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRCompactingPermGenMmem_allocate6MI_pnIHeapWord__;
-text: .text%__1cWOffsetTableContigSpaceIallocate6MI_pnIHeapWord__: space.o;
-text: .text%__1cbBBlockOffsetArrayContigSpaceLalloc_block6MpnIHeapWord_2_v_: blockOffsetTable.o;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cKDictionaryRfind_shared_class6MiInMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cPContiguousSpaceTobject_iterate_from6MnJWaterMark_pnNObjectClosure__v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cMRegisterImplEname6kM_pkc_;
-text: .text%__1cRFloatRegisterImplEname6kM_pkc_;
-text: .text%__1cIRuntime1Ninitialize_pd6F_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cOMacroAssemblerNsave_frame_c16Mi_v_;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC2_i_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pCi_i_;
-text: .text%__1cOMacroAssemblerPget_vm_result_26MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerLtlab_refill6MrnFLabel_22_v_;
-text: .text%__1cOMacroAssemblerNeden_allocate6MpnMRegisterImpl_2i22rnFLabel__v_;
-text: .text%__1cOMacroAssemblerNtlab_allocate6MpnMRegisterImpl_2i2rnFLabel__v_;
-text: .text%__1cRC1_MacroAssemblerRinitialize_object6MpnMRegisterImpl_22i22_v_;
-text: .text%__1cRC1_MacroAssemblerPinitialize_body6MpnMRegisterImpl_2_v_;
-text: .text%__1cNStubAssemblerHcall_RT6MpnMRegisterImpl_2pC22_i_;
-text: .text%__1cIRuntime1Iblob_for6Fn0AGStubID__pnICodeBlob__;
-text: .text%__1cIRuntime1Rgenerate_patching6FpnNStubAssembler_pC_pnJOopMapSet__;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQGenCollectedHeapVlarge_typearray_limit6M_I_;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cQDefNewGenerationVunsafe_max_tlab_alloc6kM_I_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cQGenCollectedHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cJEdenSpaceMpar_allocate6MI_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%__1cQGenCollectedHeapIcapacity6kM_I_;
-text: .text%__1cQDefNewGenerationIcapacity6kM_I_;
-text: .text%__1cQGenCollectedHeapEused6kM_I_;
-text: .text%__1cQDefNewGenerationEused6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationEused6kM_I_;
-text: .text%__1cQGenCollectedHeapPpost_initialize6M_v_;
-text: .text%__1cQGenCollectedHeapTref_processing_init6M_v_;
-text: .text%__1cKSharedHeapTref_processing_init6M_v_;
-text: .text%__1cKGenerationSref_processor_init6M_v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryServicebBadd_gen_collected_heap_info6FpnQGenCollectedHeap__v_;
-text: .text%__1cNMemoryManagerXget_copy_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cNMemoryManagerWget_msc_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cQDefNewGenerationEkind6M_nKGenerationEName__: defNewGeneration.o;
-text: .text%__1cRTenuredGenerationEkind6M_nKGenerationEName__: tenuredGeneration.o;
-text: .text%__1cKGenerationMmax_capacity6kM_I_;
-text: .text%__1cQGenCollectedHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%JVM_IsThreadAlive;
-text: .text%JVM_StartThread;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
-text: .text%JVM_MonitorWait;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%jio_vsnprintf;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%JVM_InitProperties;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%JVM_IsArrayClass;
-text: .text%JVM_GetComponentType;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%JVM_GetClassLoader;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%JVM_GetCallerClass;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%JVM_IsInterface;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Clone;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%JVM_GetClassName;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%JVM_GetClassModifiers;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%JVM_MaxMemory;
-text: .text%__1cQGenCollectedHeapMmax_capacity6kM_I_;
-text: .text%__1cQDefNewGenerationMmax_capacity6kM_I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cQSimpleCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_FindLibraryEntry;
-text: .text%jni_GetJavaVM;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%jni_SetIntField: jni.o;
-text: .text%jni_SetLongField: jni.o;
-text: .text%JVM_FindSignal;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cICompiler2t6M_v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cICompilerKinitialize6M_v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cICompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cLCompilationOcompile_method6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapNreport_result6M_v_;
-text: .text%__1cLCompilationJbuild_hir6M_v_;
-text: .text%__1cCIR2t6MpnLCompilation_pnIciMethod_i_v_;
-text: .text%__1cMciNullObjectEmake6F_p0_;
-text: .text%__1cMGraphBuilderKinitialize6F_v_;
-text: .text%__1cJXHandlers2t6MpnIciMethod__v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cLCompilationTdebug_info_recorder6kM_pnYDebugInformationRecorder__;
-text: .text%__1cHIRScopeLbuild_graph6MpnLCompilation_i_pnKBlockBegin__;
-text: .text%__1cQBlockListBuilderLset_leaders6M_v_;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cMas_ValueType6FnJBasicType__pnJValueType__;
-text: .text%__1cIValueMap2t6M_v_;
-text: .text%__1cNResourceArrayGexpand6MIiri_v_;
-text: .text%__1cIValueMapIkill_all6M_v_;
-text: .text%__1cMGraphBuilderbBiterate_bytecodes_for_block6Mi_pnIBlockEnd__;
-text: .text%__1cMGraphBuilderJScopeDataIblock_at6Mi_pnKBlockBegin__;
-text: .text%__1cMGraphBuilderKload_local6MpnJValueType_i_v_;
-text: .text%__1cKValueStackEpush6MpnJValueType_pnLInstruction__v_: c1_GraphBuilder.o;
-text: .text%__1cKValueStackDpop6MpnJValueType__pnLInstruction__: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderHif_node6MpnLInstruction_n0BJCondition_2pnKValueStack__v_;
-text: .text%__1cCIfFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cNCanonicalizerFdo_If6MpnCIf__v_;
-text: .text%__1cLInstructionOas_AccessField6M_pnLAccessField__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_UnsafeOp6M_pnIUnsafeOp__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionMas_Intrinsic6M_pnJIntrinsic__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionEhash6kM_i_: c1_Canonicalizer.o;
-text: .text%__1cKStateSplitNas_StateSplit6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIBlockEndLas_BlockEnd6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionJas_Return6M_pnGReturn__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionIas_Throw6M_pnFThrow__: c1_Canonicalizer.o;
-text: .text%__1cMGraphBuilderJScopeDataQadd_to_work_list6MpnKBlockBegin__v_;
-text: .text%__1cMGraphBuilderLinstance_of6Mi_v_;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cKInstanceOfFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cKValueStackMclear_locals6M_v_;
-text: .text%__1cIConstantFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerLdo_Constant6MpnIConstant__v_;
-text: .text%__1cIConstantEhash6kM_i_;
-text: .text%__1cLIntConstantOas_IntConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cIConstantEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cKInstanceOfNas_InstanceOf6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderNmethod_return6MpnLInstruction__v_;
-text: .text%__1cGReturnFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerJdo_Return6MpnGReturn__v_;
-text: .text%__1cGReturnJas_Return6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderKcheck_cast6Mi_v_;
-text: .text%__1cNCanonicalizerMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cMGraphBuilderMaccess_field6MnJBytecodesECode__v_;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadFieldFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cJLoadFieldEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cJLoadFieldEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cMGraphBuilderIstack_op6MnJBytecodesECode__v_;
-text: .text%__1cMGraphBuilderNarithmetic_op6MpnJValueType_nJBytecodesECode_pnKValueStack__v_;
-text: .text%__1cJValueTypeEmeet6kMp0_1_;
-text: .text%__1cMArithmeticOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cNCanonicalizerGdo_Op26MpnDOp2__v_;
-text: .text%__1cMArithmeticOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cMArithmeticOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMGraphBuilderJincrement6M_v_;
-text: .text%__1cMGraphBuilderMload_indexed6MnJBasicType__v_;
-text: .text%__1cLArrayLengthFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cLArrayLengthEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cLArrayLengthEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cLLoadIndexedFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cLLoadIndexedEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cLLoadIndexedEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cIConstantLas_Constant6M_p0_: c1_Instruction.o;
-text: .text%__1cCIRIoptimize6M_v_;
-text: .text%__1cJOptimizer2t6MpnCIR__v_;
-text: .text%__1cJOptimizerbHeliminate_conditional_expressions6M_v_;
-text: .text%__1cCIRQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cKBlockBeginQiterate_preorder6MpnMBlockClosure__v_;
-text: .text%__1cNCE_EliminatorIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cLInstructionFas_If6M_pnCIf__: c1_Canonicalizer.o;
-text: .text%__1cKBlockBeginQiterate_preorder6MrnJboolArray_pnMBlockClosure__v_;
-text: .text%__1cCIfFas_If6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cJOptimizerQeliminate_blocks6M_v_;
-text: .text%__1cLBlockMergerIblock_do6MpnKBlockBegin__v_: c1_Optimizer.o;
-text: .text%__1cEGotoHas_Goto6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cLInstructionHas_Goto6M_pnEGoto__: c1_Canonicalizer.o;
-text: .text%__1cJOptimizerVeliminate_null_checks6M_v_;
-text: .text%__1cTNullCheckEliminatorLiterate_one6MpnKBlockBegin__v_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cQNullCheckVisitorNdo_BlockBegin6MpnKBlockBegin__v_;
-text: .text%__1cQNullCheckVisitorHdo_Base6MpnEBase__v_;
-text: .text%__1cEGotoFvisit6MpnSInstructionVisitor__v_: c1_Canonicalizer.o;
-text: .text%__1cQNullCheckVisitorHdo_Goto6MpnEGoto__v_;
-text: .text%__1cFLocalFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cQNullCheckVisitorIdo_Local6MpnFLocal__v_;
-text: .text%__1cQNullCheckVisitorFdo_If6MpnCIf__v_;
-text: .text%__1cQNullCheckVisitorLdo_Constant6MpnIConstant__v_;
-text: .text%__1cQNullCheckVisitorJdo_Return6MpnGReturn__v_;
-text: .text%__1cQNullCheckVisitorNdo_InstanceOf6MpnKInstanceOf__v_;
-text: .text%__1cQNullCheckVisitorMdo_CheckCast6MpnJCheckCast__v_;
-text: .text%__1cQNullCheckVisitorMdo_LoadField6MpnJLoadField__v_;
-text: .text%__1cTNullCheckEliminatorShandle_AccessField6MpnLAccessField__v_;
-text: .text%__1cQNullCheckVisitorPdo_ArithmeticOp6MpnMArithmeticOp__v_;
-text: .text%__1cQNullCheckVisitorOdo_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cTNullCheckEliminatorShandle_ArrayLength6MpnLArrayLength__v_;
-text: .text%__1cQNullCheckVisitorOdo_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cTNullCheckEliminatorShandle_LoadIndexed6MpnLLoadIndexed__v_;
-text: .text%__1cGBitMapQset_intersection6M0_v_;
-text: .text%__1cMArithmeticOpPas_ArithmeticOp6M_p0_: c1_Instruction.o;
-text: .text%__1cLInstructionJas_Invoke6M_pnGInvoke__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionLas_NewArray6M_pnINewArray__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionOas_NewInstance6M_pnLNewInstance__: c1_Canonicalizer.o;
-text: .text%__1cLInstructionQas_AccessMonitor6M_pnNAccessMonitor__: c1_Canonicalizer.o;
-text: .text%__1cJBlockListPiterate_forward6MpnMBlockClosure__v_;
-text: .text%__1cNResourceArrayEsort6MIpGpkv2_i_v_;
-text: .text%__1cKStateSplitFscope6kM_pnHIRScope__;
-text: .text%__1cIBlockEndOsubstitute_sux6MpnKBlockBegin_2_v_;
-text: .text%__1cCIRMcompute_code6M_v_;
-text: .text%__1cLInstructionGnegate6Fn0AJCondition__1_;
-text: .text%__1cJBlockListJblocks_do6MpFpnKBlockBegin__v_v_;
-text: .text%__1cFLocalIas_Local6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cLCompilationIemit_lir6M_v_;
-text: .text%__1cLInstructionGas_Phi6M_pnDPhi__: c1_Canonicalizer.o;
-text: .text%__1cMas_BasicType6FpnJValueType__nJBasicType__;
-text: .text%__1cJValueTypeRas_ObjectConstant6M_pnOObjectConstant__: c1_Canonicalizer.o;
-text: .text%__1cLLIR_OprFactKvalue_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cJArrayTypeMas_ArrayType6M_p0_: c1_ValueType.o;
-text: .text%__1cILIR_ListKshift_left6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cJValueTypeLas_VoidType6M_pnIVoidType__: c1_Canonicalizer.o;
-text: .text%__1cORangeCheckStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cTSimpleExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cGLIR_OpLas_OpBranch6M_pnMLIR_OpBranch__: c1_LIR.o;
-text: .text%__1cMLIR_OpBranchLas_OpBranch6M_p0_: c1_LIR.o;
-text: .text%__1cNResourceArrayJremove_at6MIi_v_;
-text: .text%__1cHIRScopeJmax_stack6kM_i_;
-text: .text%__1cGLIR_OpGas_Op16M_pnHLIR_Op1__: c1_LIR.o;
-text: .text%__1cLLIR_OpLabelKas_OpLabel6M_p0_: c1_LIR.o;
-text: .text%__1cHLIR_Op1Gas_Op16M_p0_: c1_LIR.o;
-text: .text%__1cLLIR_OpDelayKas_OpDelay6M_p0_: c1_LIR.o;
-text: .text%__1cNLIR_AssemblerJemit_code6MpnJBlockList__v_;
-text: .text%__1cLInstructionLas_Constant6M_pnIConstant__: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeNas_DoubleType6M_pnKDoubleType__: c1_Canonicalizer.o;
-text: .text%__1cJValueTypeMas_FloatType6M_pnJFloatType__: c1_Canonicalizer.o;
-text: .text%__1cNLIR_AssemblerMemit_opLabel6MpnLLIR_OpLabel__v_;
-text: .text%__1cNLIR_AssemblerIemit_op06MpnHLIR_Op0__v_;
-text: .text%__1cNLIR_AssemblerIemit_op26MpnHLIR_Op2__v_;
-text: .text%__1cRC1_MacroAssemblerSinline_cache_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cRC1_MacroAssemblerOverified_entry6M_v_;
-text: .text%__1cNLIR_AssemblerbBinitial_frame_size_in_bytes6M_i_;
-text: .text%__1cRC1_MacroAssemblerLbuild_frame6Mi_v_;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cNLIR_AssemblerNemit_opBranch6MpnMLIR_OpBranch__v_;
-text: .text%__1cNLIR_AssemblerKemit_delay6MpnLLIR_OpDelay__v_;
-text: .text%__1cNLIR_AssemblerLcode_offset6kM_i_;
-text: .text%__1cNLIR_AssemblerQemit_opTypeCheck6MpnPLIR_OpTypeCheck__v_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNLIR_AssemblerEload6MpnMRegisterImpl_i2nJBasicType_pnMCodeEmitInfo__i_;
-text: .text%__1cNLIR_AssemblerIemit_op16MpnHLIR_Op1__v_;
-text: .text%__1cNLIR_AssemblerOemit_code_stub6MpnICodeStub__v_;
-text: .text%__1cTSimpleExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerbDadd_debug_info_for_null_check6MipnMCodeEmitInfo__v_;
-text: .text%__1cVImplicitNullCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cORangeCheckStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerZadd_debug_info_for_branch6MpnMCodeEmitInfo__v_;
-text: .text%__1cGOopMapJdeep_copy6M_p0_;
-text: .text%__1cGOopMap2t6Mn0ANDeepCopyToken_p0_v_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cLCompilationQemit_code_epilog6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerUemit_slow_case_stubs6M_v_;
-text: .text%__1cTSimpleExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerNadd_call_info6MipnMCodeEmitInfo__v_;
-text: .text%__1cVImplicitNullCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cORangeCheckStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNLIR_AssemblerKemit_stubs6MpnMCodeStubList__v_;
-text: .text%__1cNLIR_Assembler2T6M_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cLCompilation2T6M_v_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMGraphBuilderHif_zero6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cMGraphBuilderMnew_instance6Mi_v_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cLNewInstanceFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cMGraphBuilderGinvoke6MnJBytecodesECode__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cQciBytecodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cKValueStackNpop_arguments6Mi_pnGValues__;
-text: .text%__1cGInvokeFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cGInvokeJas_Invoke6M_p0_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerIdo_Throw6MpnFThrow__v_;
-text: .text%__1cQNullCheckVisitorOdo_NewInstance6MpnLNewInstance__v_;
-text: .text%__1cQNullCheckVisitorJdo_Invoke6MpnGInvoke__v_;
-text: .text%__1cTNullCheckEliminatorNhandle_Invoke6MpnGInvoke__v_;
-text: .text%__1cQNullCheckVisitorIdo_Throw6MpnFThrow__v_;
-text: .text%__1cIVoidTypeLas_VoidType6M_p0_: c1_ValueType.o;
-text: .text%__1cLNewInstanceKexact_type6kM_pnGciType__;
-text: .text%__1cLNewInstanceOas_NewInstance6M_p0_: c1_Instruction.o;
-text: .text%__1cPNewInstanceStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerZjobject2reg_with_patching6MpnMRegisterImpl_pnMCodeEmitInfo__v_;
-text: .text%__1cMPatchingStubQalign_patch_site6MpnOMacroAssembler__v_;
-text: .text%__1cPNewInstanceStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerJemit_call6MpnOLIR_OpJavaCall__v_;
-text: .text%__1cNLIR_AssemblerKalign_call6MnILIR_Code__v_;
-text: .text%__1cICodeStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMPatchingStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
-text: .text%__1cRNativeGeneralJumpUinsert_unconditional6FpC1_v_;
-text: .text%__1cJrelocInfobDchange_reloc_info_for_address6FpnNRelocIterator_pCn0AJrelocType_4_v_;
-text: .text%__1cPNewInstanceStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cQComputeCallStackHdo_char6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cNCanonicalizerMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cMGraphBuilderJScopeDataLnum_returns6M_i_;
-text: .text%__1cNCanonicalizerHdo_Goto6MpnEGoto__v_;
-text: .text%__1cMGraphBuilderJScopeDataQincr_num_returns6M_v_;
-text: .text%__1cGValuesIpush_all6Mpk0_v_: c1_ValueStack.o;
-text: .text%__1cLCompilationVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cLInstructionEprev6MpnKBlockBegin__p0_;
-text: .text%__1cQNullCheckVisitorMdo_NullCheck6MpnJNullCheck__v_;
-text: .text%__1cIFrameMapQmake_new_address6kMi_nHAddress__;
-text: .text%__1cNLIR_AssemblerFstore6MpnMRegisterImpl_2inJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerJstack2reg6MpnLLIR_OprDesc_2nJBasicType__v_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRT_sparc.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cEIfOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorHdo_IfOp6MpnEIfOp__v_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cNCanonicalizerNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cIValueMapKkill_field6MpnHciField__v_;
-text: .text%__1cMGraphBuilderHif_null6MpnJValueType_nLInstructionJCondition__v_;
-text: .text%__1cOObjectConstantRas_ObjectConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cHConvertFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_Convert6MpnHConvert__v_;
-text: .text%__1cHConvertEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHConvertEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cMGraphBuilderOnew_type_array6M_v_;
-text: .text%__1cMNewTypeArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cNClassConstantQas_ClassConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cHIntTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cMGraphBuilderIlogic_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHLogicOpFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cHLogicOpEhash6kM_i_: c1_Instruction.o;
-text: .text%__1cHLogicOpEname6kM_pkc_: c1_Instruction.o;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cQNullCheckVisitorNdo_StoreField6MpnKStoreField__v_;
-text: .text%__1cQNullCheckVisitorKdo_Convert6MpnHConvert__v_;
-text: .text%__1cQNullCheckVisitorPdo_NewTypeArray6MpnMNewTypeArray__v_;
-text: .text%__1cJLoadFieldMas_LoadField6M_p0_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorKdo_LogicOp6MpnHLogicOp__v_;
-text: .text%__1cQNullCheckVisitorGdo_Phi6MpnDPhi__v_;
-text: .text%__1cHConvertKas_Convert6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cHciKlassMaccess_flags6M_i_;
-text: .text%__1cLLIR_OprFactQdummy_value_type6FpnJValueType__pnLLIR_OprDesc__;
-text: .text%__1cILIR_ListUunsigned_shift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cJValueTypeNas_ObjectType6M_pnKObjectType__: c1_Canonicalizer.o;
-text: .text%__1cQNewTypeArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerOemit_opConvert6MpnNLIR_OpConvert__v_;
-text: .text%__1cNLIR_AssemblerQemit_alloc_array6MpnQLIR_OpAllocArray__v_;
-text: .text%__1cRC1_MacroAssemblerOallocate_array6MpnMRegisterImpl_2222ii2rnFLabel__v_;
-text: .text%__1cQNewTypeArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerOemit_alloc_obj6MpnOLIR_OpAllocObj__v_;
-text: .text%__1cRC1_MacroAssemblerPallocate_object6MpnMRegisterImpl_222ii2rnFLabel__v_;
-text: .text%__1cNLIR_AssemblerOmembar_release6M_v_;
-text: .text%__1cNLIR_AssemblerGmembar6M_v_;
-text: .text%__1cNLIR_AssemblerOmembar_acquire6M_v_;
-text: .text%__1cNLIR_AssemblerCpc6kM_pC_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNLIR_AssemblerIlogic_op6MnILIR_Code_pnLLIR_OprDesc_33_v_;
-text: .text%__1cQNewTypeArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cLRegisterMapIpd_clear6M_v_;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cRNativeMovConstRegIset_data6Mi_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cMGraphBuilderNload_constant6M_v_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%JVM_Read;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%JVM_GetClassNameUTF;
-text: .text%JVM_ReleaseUTF;
-text: .text%JVM_FindClassFromClass;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%JVM_IsConstructorIx;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%jni_DetachCurrentThread;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%jni_DestroyJavaVM;
-text: .text%jni_AttachCurrentThread;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cKJavaThreadVinvoke_shutdown_hooks6M_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cIVMThreadXwait_for_vm_thread_exit6F_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cIVMThreadHdestroy6F_v_;
-text: .text%__SLIP.DELETER__A: vmThread.o;
-text: .text%__1cSThreadLocalStorageRpd_invalidate_all6F_v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%JVM_Halt;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%JVM_Write;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%JVM_Sleep;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%JVM_GetClassContext;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackHdo_char6M_v_: generateOopMap.o;
-text: .text%__1cMGraphBuilderNstore_indexed6MnJBasicType__v_;
-text: .text%__1cIValueMapKkill_array6MpnJValueType__v_;
-text: .text%__1cNCanonicalizerPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cQNullCheckVisitorPdo_StoreIndexed6MpnMStoreIndexed__v_;
-text: .text%__1cKValueStackGunlock6M_i_;
-text: .text%__1cQMonitorEnterStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerJemit_lock6MpnKLIR_OpLock__v_;
-text: .text%__1cRC1_MacroAssemblerLlock_object6MpnMRegisterImpl_222rnFLabel__v_;
-text: .text%__1cQMonitorEnterStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cRC1_MacroAssemblerNunlock_object6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cQMonitorEnterStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cPMonitorExitStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cMGraphBuilderIshift_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cHShiftOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cHShiftOpEhash6kM_i_: c1_GraphBuilder.o;
-text: .text%__1cHShiftOpEname6kM_pkc_: c1_GraphBuilder.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cNCanonicalizerMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cMas_ValueType6FnKciConstant__pnJValueType__;
-text: .text%__1cQNullCheckVisitorMdo_Intrinsic6MpnJIntrinsic__v_;
-text: .text%__1cQNullCheckVisitorKdo_ShiftOp6MpnHShiftOp__v_;
-text: .text%__1cILIR_ListLshift_right6MpnLLIR_OprDesc_222_v_;
-text: .text%__1cMNewTypeArrayKexact_type6kM_pnGciType__;
-text: .text%__1cNLIR_AssemblerOemit_arraycopy6MpnPLIR_OpArrayCopy__v_;
-text: .text%__1cMciArrayKlassMelement_type6M_pnGciType__;
-text: .text%__1cNArrayCopyStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNArrayCopyStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%jni_GetEnv;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: c1_IR.o;
-text: .text%__1cLInstructionGmirror6Fn0AJCondition__1_;
-text: .text%__1cKBlockBeginVadd_exception_handler6Mp0_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%JVM_GetLastErrorString;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%JVM_DisableCompiler;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%JVM_Available;
-text: .text%__1cLArrayLengthOas_ArrayLength6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cJLoadFieldKexact_type6kM_pnGciType__;
-text: .text%__1cJLoadFieldNdeclared_type6kM_pnGciType__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%JVM_NewArray;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cMGraphBuilderQnew_object_array6M_v_;
-text: .text%__1cONewObjectArrayFvisit6MpnSInstructionVisitor__v_: c1_Instruction.o;
-text: .text%__1cNCanonicalizerRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cLLoadIndexedOas_LoadIndexed6M_p0_: c1_Instruction.o;
-text: .text%__1cQNullCheckVisitorRdo_NewObjectArray6MpnONewObjectArray__v_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cSNewObjectArrayStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cSNewObjectArrayStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cSNewObjectArrayStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cMGraphBuilderMtable_switch6M_v_;
-text: .text%__1cLTableSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cQNullCheckVisitorOdo_TableSwitch6MpnLTableSwitch__v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cJValueTypeQas_ClassConstant6M_pnNClassConstant__: c1_Canonicalizer.o;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cQInstanceConstantTas_InstanceConstant6M_p0_: c1_ValueType.o;
-text: .text%__1cIRuntime1Tprimitive_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%jni_CallStaticBooleanMethodV: jni.o;
-text: .text%JVM_GetStackTraceDepth;
-text: .text%__1cTjava_lang_ThrowableVget_stack_trace_depth6FpnHoopDesc_pnGThread__i_;
-text: .text%JVM_GetStackTraceElement;
-text: .text%__1cTjava_lang_ThrowableXget_stack_trace_element6FpnHoopDesc_ipnGThread__2_;
-text: .text%__1cbBjava_lang_StackTraceElementGcreate6FnMmethodHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cNmethodOopDescUline_number_from_bci6kMi_i_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%JVM_EnableCompiler;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cRNativeMovConstRegEdata6kM_i_;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%jni_CallObjectMethodV: jni.o;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%jni_GetIntArrayRegion: jni.o;
-text: .text%jni_SetIntArrayRegion: jni.o;
-text: .text%jni_PushLocalFrame: jni.o;
-text: .text%jni_PopLocalFrame: jni.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cINegateOpFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cQNullCheckVisitorLdo_NegateOp6MpnINegateOp__v_;
-text: .text%__1cILIR_ListLstore_check6MpnLLIR_OprDesc_2222pnMCodeEmitInfo__v_;
-text: .text%__1cXArrayStoreExceptionStub2t6MpnMCodeEmitInfo__v_;
-text: .text%__1cXArrayStoreExceptionStubFvisit6MpnQLIR_OpVisitState__v_: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerbIadd_debug_info_for_null_check_here6MpnMCodeEmitInfo__v_;
-text: .text%__1cXArrayStoreExceptionStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNLIR_AssemblerGnegate6MpnLLIR_OprDesc_2_v_;
-text: .text%__1cXArrayStoreExceptionStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cIRuntime1Jarraycopy6FpnHoopDesc_i2ii_i_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%jni_CallIntMethodV: jni.o;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%Unsafe_GetObject;
-text: .text%jni_CallBooleanMethod: jni.o;
-text: .text%jni_CallVoidMethodV: jni.o;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cNLIR_AssemblerIemit_op36MpnHLIR_Op3__v_;
-text: .text%__1cNLIR_AssemblerbCadd_debug_info_for_div0_here6MpnMCodeEmitInfo__v_;
-text: .text%__1cNDivByZeroStubEinfo6kM_pnMCodeEmitInfo__: c1_CodeStubs_sparc.o;
-text: .text%__1cNDivByZeroStubJemit_code6MpnNLIR_Assembler__v_;
-text: .text%__1cIFrameMapLnr2floatreg6Fi_pnRFloatRegisterImpl__;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_GetIntVolatile;
-text: .text%JVM_Yield;
-text: .text%__1cNSharedRuntimeElmul6Fxx_x_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%JVM_Socket;
-text: .text%Unsafe_PageSize;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%__1cRComputeEntryStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%Unsafe_DefineClass1;
-text: .text%JVM_DefineClass;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%jni_GetLongField: jni.o;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cSInterpreterRuntimeWslow_signature_handler6FpnKJavaThread_pnNmethodOopDesc_pi5_pC_;
-text: .text%__1cUSlowSignatureHandlerLpass_object6M_v_: interpreterRT_sparc.o;
-text: .text%__1cUSlowSignatureHandlerNadd_signature6Mi_v_: interpreterRT_sparc.o;
-text: .text%__1cXNativeSignatureIteratorIdo_array6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cUSlowSignatureHandlerIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%jni_GetCharArrayRegion: jni.o;
-text: .text%jni_SetFloatField: jni.o;
-text: .text%jni_NewFloatArray: jni.o;
-text: .text%jni_SetFloatArrayRegion: jni.o;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%jni_NewIntArray: jni.o;
-text: .text%__1cKGenerationInext_gen6kM_p0_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cbAVM_GenCollectForAllocationEdoit6M_v_;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cTContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cTContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cbBSurvivorContiguousSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cbBSurvivorContiguousSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cOGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOGenerationPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cSAllocationProfilerViterate_since_last_gc6F_v_;
-text: .text%__1cUGenGCPrologueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cQDefNewGenerationKshort_name6kM_pkc_: defNewGeneration.o;
-text: .text%__1cQDefNewGenerationKsave_marks6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationKsave_marks6M_v_;
-text: .text%__1cKGenerationYmax_contiguous_available6kM_I_;
-text: .text%__1cbCOneContigSpaceCardGenerationUcontiguous_available6kM_I_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
-text: .text%__1cIageTableFclear6M_v_;
-text: .text%__1cULRUCurrentHeapPolicy2t6M_v_;
-text: .text%__1cKSharedHeapbAchange_strong_roots_parity6M_v_;
-text: .text%__1cPFastScanClosureGdo_oop6MppnHoopDesc__v_: defNewGeneration.o;
-text: .text%__1cPContiguousSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUCompactingPermGenGenUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cbCOneContigSpaceCardGenerationUyounger_refs_iterate6MpnQOopsInGenClosure__v_;
-text: .text%__1cLCardTableRSbDyounger_refs_in_space_iterate6MpnFSpace_pnQOopsInGenClosure__v_;
-text: .text%__1cPContiguousSpaceLnew_dcto_cl6MpnKOopClosure_nRCardTableModRefBSOPrecisionStyle_pnIHeapWord__pnVDirtyCardToOopClosure__;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cYClearNoncleanCardWrapperMdo_MemRegion6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cVDirtyCardToOopClosureMdo_MemRegion6MnJMemRegion__v_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceSblock_start_unsafe6kMpkv_pnIHeapWord__;
-text: .text%__1cPContiguousSpaceKblock_size6kMpknIHeapWord__I_;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cUContiguousSpaceDCTOCOget_actual_top6MpnIHeapWord_2_2_;
-text: .text%__1cPFiltering_DCTOCPwalk_mem_region6MnJMemRegion_pnIHeapWord_3_v_;
-text: .text%__1cUContiguousSpaceDCTOCXwalk_mem_region_with_cl6MnJMemRegion_pnIHeapWord_3pnQFilteringClosure__v_;
-text: .text%__1cQconstMethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLmethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cQFilteringClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cSinstanceKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure__v_;
-text: .text%__1cLklassVtablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLklassItablePoop_oop_iterate6MpnKOopClosure__v_;
-text: .text%__1cKklassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cWconstantPoolCacheKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cWConstantPoolCacheEntryNoop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cOtypeArrayKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cQconstMethodKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cLmethodKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cRconstantPoolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cLsymbolKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cWconstantPoolCacheKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cWConstantPoolCacheEntryLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cRconstantPoolKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cSobjArrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cParrayKlassKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cOtypeArrayKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cSobjArrayKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassPoop_oop_iterate6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cSinstanceKlassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cNinstanceKlassViterate_static_fields6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassVtableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cLklassItableRoop_oop_iterate_m6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cKklassKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure_nJMemRegion__v_;
-text: .text%__1cNinstanceKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cNobjArrayKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cLCardTableRSUyounger_refs_iterate6MpnKGeneration_pnQOopsInGenClosure__v_;
-text: .text%__1cMSubTasksDoneTall_tasks_completed6M_v_;
-text: .text%__1cQGenCollectedHeapbCoop_since_save_marks_iterate6MipnPFastScanClosure_2_v_;
-text: .text%__1cQDefNewGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cPContiguousSpacebFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cNinstanceKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cNobjArrayKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnPFastScanClosure__i_;
-text: .text%__1cbCOneContigSpaceCardGenerationbFoop_since_save_marks_iterate_nv6MpnPFastScanClosure__v_;
-text: .text%__1cQDefNewGenerationQKeepAliveClosure2t6MpnSScanWeakRefClosure__v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cQDefNewGenerationUFastKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cQDefNewGenerationbCFastEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cIageTablebAcompute_tenuring_threshold6MI_i_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationEfree6kM_I_;
-text: .text%__1cQDefNewGenerationQcompute_new_size6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cUGenGCEpilogueClosureNdo_generation6MpnKGeneration__v_: genCollectedHeap.o;
-text: .text%__1cRTenuredGenerationPupdate_counters6M_v_;
-text: .text%__1cUCompactingPermGenGenPupdate_counters6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cNCanonicalizerPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cLMonitorExitFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cQNullCheckVisitorPdo_MonitorEnter6MpnMMonitorEnter__v_;
-text: .text%__1cQNullCheckVisitorOdo_MonitorExit6MpnLMonitorExit__v_;
-text: .text%__1cMLongConstantPas_LongConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNAccessMonitorQas_AccessMonitor6M_p0_: c1_GraphBuilder.o;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cIRuntime1Mmonitorenter6FpnKJavaThread_pnHoopDesc_pnPBasicObjectLock__v_;
-text: .text%__1cIRuntime1Lmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%Unsafe_AllocateInstance;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cNCanonicalizerMset_constant6Mi_v_: c1_Canonicalizer.o;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cQinstanceRefKlassSoop_oop_iterate_nv6MpnHoopDesc_pnQFilteringClosure__i_;
-text: .text%__1cQinstanceRefKlassUoop_oop_iterate_nv_m6MpnHoopDesc_pnQFilteringClosure_nJMemRegion__i_;
-text: .text%__1cWBlockOffsetSharedArrayGresize6MI_v_;
-text: .text%__1cPContiguousSpaceNmangle_region6MnJMemRegion__v_;
-text: .text%__1cRTenuredGenerationKshort_name6kM_pkc_: tenuredGeneration.o;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cbCOneContigSpaceCardGenerationLused_region6kM_nJMemRegion__;
-text: .text%__1cQGenCollectedHeapOgather_scratch6MpnKGeneration_I_pnMScratchBlock__;
-text: .text%__1cQDefNewGenerationScontribute_scratch6MrpnMScratchBlock_pnKGeneration_I_v_;
-text: .text%__1cJMarkSweepRFollowRootClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepQKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cQGenCollectedHeapWprepare_for_compaction6M_v_;
-text: .text%__1cKGenerationWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cPContiguousSpaceWprepare_for_compaction6MpnMCompactPoint__v_;
-text: .text%__1cWOffsetTableContigSpaceUinitialize_threshold6M_pnIHeapWord__;
-text: .text%__1cQCompactibleSpaceHforward6MpnHoopDesc_IpnMCompactPoint_pnIHeapWord__6_;
-text: .text%__1cWOffsetTableContigSpacePcross_threshold6MpnIHeapWord_2_2_;
-text: .text%__1cbBBlockOffsetArrayContigSpaceQalloc_block_work6MpnIHeapWord_2_v_;
-text: .text%__1cQDefNewGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: defNewGeneration.o;
-text: .text%__1cbCOneContigSpaceCardGenerationWfirst_compaction_space6kM_pnQCompactibleSpace__: compactingPermGenGen.o;
-text: .text%__1cUCompactingPermGenGenTpre_adjust_pointers6M_v_;
-text: .text%__1cbIRecursiveAdjustSharedObjectClosureGdo_oop6MppnHoopDesc__v_: compactingPermGenGen.o;
-text: .text%__1cNinstanceKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassRoop_oop_iterate_v6MpnHoopDesc_pnKOopClosure__i_;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cYGenAdjustPointersClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationPadjust_pointers6M_v_;
-text: .text%__1cVAdjustPointersClosureIdo_space6MpnFSpace__v_: generation.o;
-text: .text%__1cQCompactibleSpacePadjust_pointers6M_v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cUCompactingPermGenGenPadjust_pointers6M_v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cUCompactingPermGenGenHcompact6M_v_;
-text: .text%__1cQCompactibleSpaceHcompact6M_v_;
-text: .text%__1cRGenCompactClosureNdo_generation6MpnKGeneration__v_: genMarkSweep.o;
-text: .text%__1cKGenerationHcompact6M_v_;
-text: .text%__1cUCompactingPermGenGenMpost_compact6M_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cQGenCollectedHeapKsave_marks6M_v_;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cRTenuredGenerationQcompute_new_size6M_v_;
-text: .text%__1cKGenerationEspec6M_pnOGenerationSpec__;
-text: .text%jni_DeleteWeakGlobalRef: jni.o;
-text: .text%__1cKJNIHandlesTdestroy_weak_global6FpnI_jobject__v_;
-text: .text%__1cNFloatConstantQas_FloatConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cJFloatTypeMas_FloatType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cRAbstractAssemblerGa_long6Mi_v_;
-text: .text%__1cIRuntime1Onew_type_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
-text: .text%__1cVcompiledICHolderKlassRoop_oop_iterate_m6MpnHoopDesc_pnKOopClosure_nJMemRegion__i_;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cOMacroAssemblerEmult6MpnMRegisterImpl_22_v_;
-text: .text%__1cJValueTypeLas_LongType6M_pnILongType__: c1_Canonicalizer.o;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%JVM_HoldsLock;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cONewObjectArrayKexact_type6kM_pnGciType__;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cIRuntime1Noop_arraycopy6FpnIHeapWord_2i_v_;
-text: .text%__1cMGraphBuilderKcompare_op6MpnJValueType_nJBytecodesECode__v_;
-text: .text%__1cNCanonicalizerMdo_CompareOp6MpnJCompareOp__v_;
-text: .text%__1cJValueTypeOas_IntConstant6M_pnLIntConstant__: c1_Canonicalizer.o;
-text: .text%__1cHIntTypeKas_IntType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNSharedRuntimeDf2l6Ff_x_;
-text: .text%__1cJValueTypeQas_FloatConstant6M_pnNFloatConstant__: c1_Canonicalizer.o;
-text: .text%__1cODoubleConstantRas_DoubleConstant6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cKDoubleTypeNas_DoubleType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cNLIR_AssemblerFstore6MpnRFloatRegisterImpl_pnMRegisterImpl_inJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerEload6MpnMRegisterImpl_ipnRFloatRegisterImpl_nJBasicType_pnMCodeEmitInfo__v_;
-text: .text%__1cNLIR_AssemblerLemit_rtcall6MpnMLIR_OpRTCall__v_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cTMaskFillerForNativeIpass_int6M_v_: oopMapCache.o;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cLCardTableRSFclear6MnJMemRegion__v_: cardTableRS.o;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cRComputeEntryStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cJValueTypeMas_ArrayType6M_pnJArrayType__: c1_Canonicalizer.o;
-text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cILongTypeEbase6kM_pnJValueType__: c1_Canonicalizer.o;
-text: .text%__1cRPrivilegedElementHoops_do6MpnKOopClosure__v_;
-text: .text%__1cMUnsafePutRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cIUnsafeOpLas_UnsafeOp6M_p0_: c1_GraphBuilder.o;
-text: .text%__1cMUnsafeGetRawFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cMGraphBuilderNlookup_switch6M_v_;
-text: .text%__1cMLookupSwitchFvisit6MpnSInstructionVisitor__v_: c1_GraphBuilder.o;
-text: .text%__1cNCanonicalizerPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cQNullCheckVisitorPdo_UnsafePutRaw6MpnMUnsafePutRaw__v_;
-text: .text%__1cQNullCheckVisitorPdo_UnsafeGetRaw6MpnMUnsafeGetRaw__v_;
-text: .text%__1cQNullCheckVisitorPdo_LookupSwitch6MpnMLookupSwitch__v_;
-text: .text%__1cIRuntime1Mnew_instance6FpnKJavaThread_pnMklassOopDesc__v_;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cILongTypeLas_LongType6M_p0_: c1_Canonicalizer.o;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cbCOneContigSpaceCardGenerationVunsafe_max_alloc_nogc6kM_I_;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cIRuntime1Qnew_object_array6FpnKJavaThread_pnMklassOopDesc_i_v_;
--- a/make/solaris/makefiles/reorder_COMPILER1_sparcv9	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-# Place holder for LP64 data.
--- a/make/solaris/makefiles/reorder_COMPILER2_amd64	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5574 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cECopyRpd_disjoint_words6FpnIHeapWord_2L_v_;
-text: .text%__1cNinstanceKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cNobjArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQObjectStartArrayMobject_start6kMpnIHeapWord__2_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_;
-text: .text%__1cXresource_allocate_bytes6FL_pc_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cIIndexSetLalloc_block6M_pn0AIBitBlock__;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cYPSPromotionFailedClosureJdo_object6MpnHoopDesc__v_;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cENodeHdel_out6Mp0_v_;
-text: .text%__1cKRelocationLunpack_data6M_v_;
-text: .text%__1cIMachNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cETypeDcmp6Fpk02_i_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cOtypeArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cNGrowableArray4CI_Hat_grow6MirkI_I_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cJrRegPOperEtype6kM_pknEType__;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_LI_v_;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cSPSPromotionManagerUflush_prefetch_queue6M_v_;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cMloadConPNodeErule6kM_I_;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cMMutableSpaceMcas_allocate6ML_pnIHeapWord__;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cETypeFuhash6Fpk0_i_;
-text: .text%__1cJrRegIOperEtype6kM_pknEType__;
-text: .text%__1cMPhaseChaitinLskip_copies6MpnENode__2_;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cNCollectedHeapbDcheck_for_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cKjmpDirNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_;
-text: .text%__1cENodeMcisc_operand6kM_i_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHNTarjanEEVAL6M_p0_;
-text: .text%__1cNMachIdealNodeErule6kM_I_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cJloadPNodeErule6kM_I_;
-text: .text%__1cMloadConINodeErule6kM_I_;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_IrnJVectorSet__v_;
-text: .text%__1cLemit_opcode6FrnKCodeBuffer_i_v_;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cFArenaIArealloc6MpvLL_1_;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cKBranchDataKcell_count6M_i_;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cDLRGFscore6kM_d_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_L_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cMPhaseChaitinKbias_color6MrnDLRG_i_i_;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cECopyYconjoint_words_to_higher6FpnIHeapWord_2L_v_;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cJPhaseLiveGgetset6MpnFBlock__pnIIndexSet__;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cLCounterDataKcell_count6M_i_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_L_pnIHeapWord__;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6ML_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2L_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_;
-text: .text%__1cIIndexSetFclear6M_v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_pnIIndexSet_rnJVectorSet__v_;
-text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2L_v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cHemit_rm6FrnKCodeBuffer_iii_v_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cJPhaseLiveKgetfreeset6M_pnIIndexSet__;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cIJumpDataKcell_count6M_i_;
-text: .text%__1cHNTarjanELINK6Mp01_v_;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cIMachNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFState2t6M_v_;
-text: .text%__1cJPhaseLiveHfreeset6MpknFBlock__v_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cHRegMaskPfind_first_pair6kM_i_;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cNPhaseRegAllocKreg2offset6kMi_i_;
-text: .text%__1cNPhaseRegAllocUreg2offset_unchecked6kMi_i_;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockXcompute_gen_kill_single6MpnQciBytecodeStream__v_;
-text: .text%__1cKjmpDirNodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_;
-text: .text%__1cRMachSafePointNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cNinstanceKlassMclass_loader6kM_pnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cNrFlagsRegOperEtype6kM_pknEType__;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cUGenericGrowableArrayMraw_allocate6Mi_pv_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cIMachNodeKconst_size6kM_i_;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%JVM_Read;
-text: .text%__1cDhpiEread6FipvI_L_;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cHemit_d86FrnKCodeBuffer_i_v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMachNodeJemit_size6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadINodeErule6kM_I_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cJrRegLOperEtype6kM_pknEType__;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKjmpConNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeFreloc6kM_i_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cRMachSpillCopyNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmIOperIconstant6kM_l_;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cJCProjNodeEhash6kM_I_;
-text: .text%__1cJMultiNodeEhash6kM_I_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMi_pnGOopMap__;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpC_pnGOopMap__;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeErule6kM_I_;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_;
-text: .text%__1cGTarjanEEVAL6M_p0_;
-text: .text%__1cYexternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_;
-text: .text%__1cIMachNodeNoperand_index6kMI_i_;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cGBitMapUclear_range_of_words6MLL_v_;
-text: .text%__1cJrRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cIimmPOperEtype6kM_pknEType__;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOrFlagsRegUOperEtype6kM_pknEType__;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cNCollectedHeapbHcheck_for_non_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cHCompileRprobe_alias_cache6MpknHTypePtr__pn0APAliasCacheEntry__;
-text: .text%__1cIMachNodeGExpand6MpnFState_rnJNode_List__p0_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cKRegionNodeEhash6kM_I_;
-text: .text%__1cMMutableSpaceIallocate6ML_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6ML_pnIHeapWord__;
-text: .text%__1cJPSPermGenSallocate_permanent6ML_pnIHeapWord__;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_;
-text: .text%__1cGBitMap2t6MpLL_v_;
-text: .text%__1cNnew_loc_value6FpnNPhaseRegAlloc_inILocationEType__pnNLocationValue__: output.o;
-text: .text%__1cOindOffset8OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOindOffset8OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cOindOffset8OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLjmpConUNodeMideal_Opcode6kM_i_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFChunk2t6ML_v_;
-text: .text%__1cFChunk2n6FLL_pv_;
-text: .text%__1cOindOffset8OperFscale6kM_i_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cFframebCsender_for_interpreter_frame6kMpnLRegisterMap__0_;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKjmpConNodePoper_input_base6kM_I_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cMciMethodDataHdata_at6Mi_pnLProfileData__;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cHBitDataKcell_count6M_i_;
-text: .text%__1cFArenaEgrow6ML_pv_;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cJloadBNodeErule6kM_I_;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cKPSScavengeUoop_promotion_failed6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cHTypePtrLmeet_offset6kMi_i_;
-text: .text%__1cSPSPromotionManagerUoop_promotion_failed6MpnHoopDesc_pnLmarkOopDesc__2_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockIload_one6Mi_v_;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIBoolTestKcc2logical6kMpknEType__3_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cNtestP_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cFBlockUneeded_for_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cIIndexSetSpopulate_free_list6F_v_;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIemit_d326FrnKCodeBuffer_i_v_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cNloadConI0NodeErule6kM_I_;
-text: .text%__1cQciBytecodeStreamMreset_to_bci6Mi_v_;
-text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cHPhiNodeHsize_of6kM_I_;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrlrpknHTypePtr__pknENode__;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cLRegisterMapFclear6M_v_;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cPloadConUL32NodeErule6kM_I_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cMciMethodDataJnext_data6MpnLProfileData__2_;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLBlock_StackXmost_frequent_successor6MpnFBlock__I_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGTarjanELINK6Mp01_v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cTremove_useless_bool6FpnGIfNode_pnIPhaseGVN__pnENode__: ifnode.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_irknQRelocationHolder_i_v_;
-text: .text%__1cLjmpConUNodePoper_input_base6kM_I_;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cOindOffset8OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__;
-text: .text%__1cNloadRangeNodeErule6kM_I_;
-text: .text%__1cNrFlagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIIndexSetJlrg_union6MIIIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cJloadSNodeErule6kM_I_;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cKjmpDirNodeHsize_of6kM_I_;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cHOopFlowNcompute_reach6MpnNPhaseRegAlloc_ipnEDict__v_;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGGCTaskKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cNGCTaskManagerWdecrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerWincrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueHdequeue6M_pnGGCTask__;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cXindIndexScaleOffsetOperJnum_edges6kM_I_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cNtestI_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cKmethodOperGmethod6kM_l_;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%__1cOindOffset8OperNbase_position6kM_i_;
-text: .text%__1cOindOffset8OperNconstant_disp6kM_i_;
-text: .text%__1cENodeHset_req6MIp0_v_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cOcompU_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvI2L_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cLMachNopNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJchar2type6Fc_nJBasicType__;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cJrRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYCallStaticJavaDirectNodeSalignment_required6kM_i_;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWConstantPoolCacheEntryRset_initial_state6Mi_v_;
-text: .text%__1cKNativeCallGverify6M_v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_;
-text: .text%__1cCosGmalloc6FL_pv_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cMvalue_of_loc6FppnHoopDesc__l_;
-text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
-text: .text%__1cRmethodDataOopDescRcompute_data_size6FpnOBytecodeStream__i_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowFBlock__2t6MpnFArena_iirk2_v_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cOcompI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cOcompU_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%JVM_GetClassModifiers;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
-text: .text%__1cJAssemblerGprefix6Mn0AGPrefix__v_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMrax_RegPOperEtype6kM_pknEType__;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cXindIndexScaleOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciBytecodeStream__v_;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__;
-text: .text%__1cOcompU_rRegNodeErule6kM_I_;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cETypeOget_const_type6FpnGciType__pk0_;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQciBytecodeStreamPget_field_index6M_i_;
-text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cRaddI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cKRegionNodeHhas_phi6kM_pnHPhiNode__;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_;
-text: .text%__1cNtestP_regNodeErule6kM_I_;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cNtestI_regNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cOcompI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cOcompI_rRegNodeErule6kM_I_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cJVectorSetEgrow6MI_v_;
-text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNArgumentCountDset6MinJBasicType__v_;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHoopDescGverify6M_v_;
-text: .text%__1cHTypePtrHget_con6kM_l_;
-text: .text%__1cMTypeKlassPtr2t6MnHTypePtrDPTR_pnHciKlass_i_v_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cYCallStaticJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cOrFlagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQciBytecodeStreamQget_method_index6M_i_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cMloadConLNodeErule6kM_I_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cJloadINodePoper_input_base6kM_I_;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cFParsePload_state_from6Mpn0AFBlock__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cRaddP_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cICHeapObj2n6FL_pv_;
-text: .text%__1cKInlineTreeJcallee_at6kMipnIciMethod__p0_;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cOCallRelocationFvalue6M_pC_;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cNloadConP0NodeErule6kM_I_;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConI0NodeMideal_Opcode6kM_i_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_;
-text: .text%__1cKjmpDirNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_;
-text: .text%__1cUThreadSafepointStateMroll_forward6Mn0AMsuspend_type__v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cJrRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__2t6MpnFArena_iirk2_v_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNtestP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNincI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinJsplit_DEF6MpnENode_pnFBlock_iIp25nNGrowableArray4CI__i_I_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cRaddP_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cNFingerprinterLfingerprint6M_L_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cKBlock_ListGremove6MI_v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cKciTypeFlowGJsrSetJcopy_into6Mp1_v_;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_L_;
-text: .text%__1cNGrowableArray4CpnIciObject__Praw_at_put_grow6Mirk14_v_;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cHOopFlowEmake6FpnFArena_i_p0_;
-text: .text%__1cJloadLNodeErule6kM_I_;
-text: .text%__1cNloadConI0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cJimmI0OperIconstant6kM_l_;
-text: .text%__1cScompI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSignatureInfoHdo_void6M_v_;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cHOopFlowFclone6Mp0i_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6ML_v_;
-text: .text%__1cPindOffset32OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPindOffset32OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cTDerivedPointerTableDadd6FppnHoopDesc_3_v_;
-text: .text%__1cFParseFBlockJinit_node6Mp0i_v_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cKjmpDirNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cMMergeMemNodeNgrow_to_match6Mpk0_v_;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cMMergeMemNodeRmake_empty_memory6F_pnENode__;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cKjmpConNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIemit_d646FrnKCodeBuffer_l_v_;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cFParseFBlockMrecord_state6Mp0_v_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cOcompP_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_Bool6MpknENode__v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cKTypeOopPtrHget_con6kM_l_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cXindIndexScaleOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cXindIndexScaleOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cNsubI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cPindOffset32OperFscale6kM_i_;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cHTypePtrLdual_offset6kM_i_;
-text: .text%__1cNMachIdealNodePoper_input_base6kM_I_;
-text: .text%__1cSObjectSynchronizerOinflate_helper6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cKciTypeFlowIblock_at6Mipn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cXindIndexScaleOffsetOperFscale6kM_i_;
-text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cNstoreImmBNodePoper_input_base6kM_I_;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cTconvI2L_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cRshrL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__;
-text: .text%__1cETypeFwiden6kMpk0_2_;
-text: .text%__1cKciTypeFlowLStateVector2t6Mp0_v_;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOcompU_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cJimmI8OperIconstant6kM_l_;
-text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQUnique_Node_ListEpush6MpnENode__v_;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cQPSGenerationPoolImax_size6kM_L_;
-text: .text%__1cQPSGenerationPoolNused_in_bytes6M_L_;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOMethodLivenessNwork_list_get6M_pn0AKBasicBlock__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cNstoreImmBNodeMideal_Opcode6kM_i_;
-text: .text%__1cNaddI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cOcompP_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMPhaseChaitinKFind_const6kMpknENode__I_;
-text: .text%__1cMPhaseChaitinKFind_const6kMI_I_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cHemit_cc6FrnKCodeBuffer_ii_v_;
-text: .text%__1cNtestI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmPOperIconstant6kM_l_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cTleaPIdxScaleOffNodeErule6kM_I_;
-text: .text%JVM_IsNaN;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cHMatcherPc_frame_pointer6kM_i_;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cICallNodeJideal_reg6kM_I_;
-text: .text%__1cOleaPIdxOffNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cOcompP_rRegNodeErule6kM_I_;
-text: .text%__1cMany_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cScompI_rReg_immNodeErule6kM_I_;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cHi2sNodeErule6kM_I_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNloadKlassNodeErule6kM_I_;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MipnGOopMap__v_;
-text: .text%__1cNincI_rRegNodeErule6kM_I_;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MipnGOopMap__v_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MipnGOopMap__v_;
-text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNsubI_rRegNodeMcisc_operand6kM_i_;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cRaddI_rReg_immNodeErule6kM_I_;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cNsubI_rRegNodeErule6kM_I_;
-text: .text%__1cRaddP_rReg_immNodeErule6kM_I_;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateW_sub_Op_CallStaticJava6MpknENode__v_;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cOcompI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNaddI_rRegNodeErule6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cIGraphKitQset_saved_ex_oop6FpnNSafePointNode_pnENode__v_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Ml_v_;
-text: .text%__1cRaddP_rReg_immNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorJcopy_into6kMp1_v_;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcL_v_;
-text: .text%__1cMstringStreamFwrite6MpkcL_v_;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cKciTypeFlowFBlockKsuccessors6MpnQciBytecodeStream_pn0ALStateVector_pn0AGJsrSet__pnNGrowableArray4Cp1___;
-text: .text%__1cKciTypeFlowOwork_list_next6M_pn0AFBlock__;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowJJsrRecord__2t6MpnFArena_iirk2_v_;
-text: .text%__1cNmodI_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4CpnPciInstanceKlass__2t6MpnFArena_iirk1_v_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKciTypeFlowPflow_successors6MpnNGrowableArray4Cpn0AFBlock___pn0ALStateVector__v_;
-text: .text%__1cRsalI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadFNodeErule6kM_I_;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cHi2sNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadConI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_;
-text: .text%__1cIregFOperEtype6kM_pknEType__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cOMethodLivenessNwork_list_add6Mpn0AKBasicBlock__v_;
-text: .text%__1cFParseFBlockNlocal_type_at6kMi_pknEType__;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cICodeHeapSallocated_capacity6kM_L_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%__1cLjmpConUNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_L_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FL_v_;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cOemit_d64_reloc6FrnKCodeBuffer_lnJrelocInfoJrelocType_i_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cENodeHget_ptr6kM_l_;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcompU_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQciBytecodeStreamWget_field_holder_index6M_i_;
-text: .text%__1cQciBytecodeStreamZget_declared_field_holder6M_pnPciInstanceKlass__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cNdecI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_;
-text: .text%__1cPindOffset32OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cICodeHeapIcapacity6kM_L_;
-text: .text%__1cKMemoryPoolImax_size6kM_L_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_L_;
-text: .text%__1cJcmpOpOperFccode6kM_i_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cOcompL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_p0_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cScompU_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNFingerprinterJdo_object6Mii_v_;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cKjmpConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cMloadConFNodeErule6kM_I_;
-text: .text%__1cIMachOperIconstant6kM_l_;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolImax_size6kM_L_;
-text: .text%__1cUEdenMutableSpacePoolNused_in_bytes6M_L_;
-text: .text%__1cUEdenMutableSpacePoolImax_size6kM_L_;
-text: .text%__1cYSurvivorMutableSpacePoolNused_in_bytes6M_L_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciBytecodeStream_pn0ALStateVector__v_;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cRaddI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cPloadConUL32NodeMideal_Opcode6kM_i_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__l_;
-text: .text%__1cHoopDescSslow_identity_hash6M_l_;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXindIndexScaleOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_Halt6MpknENode__v_;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cNloadConI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2L_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cNprefetchwNodeMideal_Opcode6kM_i_;
-text: .text%__1cIAddINodeJideal_reg6kM_I_;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cNmulL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_;
-text: .text%__1cNaddI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMpnNmethodOopDesc_i_pnHnmethod__;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLPCTableNodeHsize_of6kM_I_;
-text: .text%__1cNincI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cQciBytecodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cMorI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cQciBytecodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cScompP_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cICodeHeapLheader_size6F_L_;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cXindIndexScaleOffsetOperNconstant_disp6kM_i_;
-text: .text%__1cSindIndexOffsetOperJnum_edges6kM_I_;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_;
-text: .text%__1cOcompI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNtestI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cNprefetchwNodePoper_input_base6kM_I_;
-text: .text%__1cTCreateExceptionNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cVExceptionHandlerTableJadd_entry6MnRHandlerTableEntry__v_;
-text: .text%__1cPsalI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cRaddP_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_;
-text: .text%__1cTconvL2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_L_;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cGIfNodeHsize_of6kM_I_;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cOcompL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cScompI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMMergeMemNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeMideal_Opcode6kM_i_;
-text: .text%__1cTleaPIdxScaleOffNodePoper_input_base6kM_I_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cOcompP_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNsubI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cTStackWalkCompPolicyRcompilation_level6MnMmethodHandle_i_i_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cPindOffset32OperNbase_position6kM_i_;
-text: .text%__1cPindOffset32OperNconstant_disp6kM_i_;
-text: .text%__1cOcompU_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cRshrL_rReg_immNodeErule6kM_I_;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cScompU_rReg_immNodeErule6kM_I_;
-text: .text%__1cKjmpDirNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpDirNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cNloadConL0NodeErule6kM_I_;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cMindIndexOperFscale6kM_i_;
-text: .text%__1cScompP_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cRandI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cTconvF2D_reg_memNodeErule6kM_I_;
-text: .text%__1cPindOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateM_sub_Op_CmpP6MpknENode__v_;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cKimmL32OperIconstant6kM_l_;
-text: .text%__1cKimmL32OperJnum_edges6kM_I_;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__i_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_;
-text: .text%__1cKDataLayoutKinitialize6MCHi_v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPshrI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cOcompL_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4Cpv_Praw_at_put_grow6Mirk03_v_;
-text: .text%__1cNGrowableArray4Cl_Praw_at_put_grow6Mirkl2_v_;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__;
-text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEmovq6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGRFrameMset_distance6Mi_v_;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cTStackWalkCompPolicyIsenderOf6MpnGRFrame_pnNGrowableArray4C2___2_;
-text: .text%__1cGRFrameKnew_RFrame6FnFframe_pnKJavaThread_p0_4_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_;
-text: .text%__1cTconstantPoolOopDescMklass_at_put6MipnMklassOopDesc__v_;
-text: .text%__1cNFingerprinterGdo_int6M_v_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cRshrL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cFStateM_sub_Op_RegL6MpknENode__v_;
-text: .text%__1cNdecI_rRegNodeErule6kM_I_;
-text: .text%__1cKjmpConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_;
-text: .text%__1cKjmpConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fl_v_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cCosRcurrent_thread_id6F_l_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_getstatic6MpnQciBytecodeStream__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cNPhaseRegAllocKoffset2reg6kMi_i_;
-text: .text%__1cQjmpCon_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjmpCon_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
-text: .text%__1cTconvI2L_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CI_Praw_at_put_grow6MirkI2_v_;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cXindIndexScaleOffsetOperOindex_position6kM_i_;
-text: .text%__1cXindIndexScaleOffsetOperNbase_position6kM_i_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cRsubI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_;
-text: .text%__1cRaddI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cKTypeRawPtrHget_con6kM_l_;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cPloadConUL32NodeLbottom_type6kM_pknEType__;
-text: .text%__1cNloadConI0NodeHsize_of6kM_I_;
-text: .text%JVM_handle_solaris_signal;
-text: .text%signalHandler;
-text: .text%__1cQJNI_FastGetFieldQfind_slowcase_pc6FpC_1_;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_;
-text: .text%__1cTStackWalkCompPolicyMshouldInline6FnMmethodHandle_fi_pkc_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cNGrowableArray4CpnGciType__2t6MpnFArena_iirk1_v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cJArrayDataKcell_count6M_i_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_L_;
-text: .text%__1cSindIndexOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJcmpOpOperGnegate6M_v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointStatebDhandle_polling_page_exception6M_v_;
-text: .text%__1cLjmpConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKcmpOpUOperFccode6kM_i_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadPNodeFreloc6kM_i_;
-text: .text%__1cTno_rax_rbx_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKjmpConNodeGnegate6M_v_;
-text: .text%__1cMindirectOperFscale6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cQComputeCallStackGdo_int6M_v_;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNtestP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQjmpDir_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjmpDir_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_getfield6MpnQciBytecodeStream__v_;
-text: .text%__1cNaddI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cScompP_mem_rRegNodeErule6kM_I_;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeMideal_Opcode6kM_i_;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cOcompI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cRaddP_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__;
-text: .text%__1cLBoxLockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_;
-text: .text%__1cQciBytecodeStreamSget_constant_index6kM_i_;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cMorI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMloadConPNodeFreloc6kM_i_;
-text: .text%__1cSPSPromotionManagerFreset6M_v_;
-text: .text%__1cNPrefetchQdDueueFclear6M_v_;
-text: .text%__1cSPSPromotionManagerKflush_labs6M_v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cNincI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cOcompP_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cHi2sNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseLinit_blocks6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cFParseNdo_all_blocks6M_v_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFArenaEused6kM_L_;
-text: .text%__1cRandI_rReg_immNodeErule6kM_I_;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cPno_rax_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pl_;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cMrax_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__;
-text: .text%__1cNsubI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cKInlineTree2t6MpnHCompile_pk0pnIciMethod_pnIJVMState_if_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_;
-text: .text%__1cNaddI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQComputeCallStackHdo_long6M_v_;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cRaddI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cKInlineTreeYcompute_callee_frequency6kMi_f_;
-text: .text%__1cKInlineTreebCbuild_inline_tree_for_callee6MpnIciMethod_pnIJVMState_i_p0_;
-text: .text%__1cRinterpretedVFrameDbcp6kM_pC_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cNsubI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOMethodLivenessKBasicBlockIload_two6Mi_v_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNmulL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cTcompareAndSwapLNodePoper_input_base6kM_I_;
-text: .text%__1cMloadConINodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cNstoreImmINodeMideal_Opcode6kM_i_;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__;
-text: .text%__1cPstoreImmI16NodeMideal_Opcode6kM_i_;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cFStateQ_sub_Op_CreateEx6MpknENode__v_;
-text: .text%__1cRshrL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLjmpConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLjmpConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cRaddI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cNdecI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__;
-text: .text%__1cMorI_rRegNodeErule6kM_I_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cTconvL2I_reg_regNodeErule6kM_I_;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__;
-text: .text%__1cRaddL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cPsalI_rReg_1NodeErule6kM_I_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cScompU_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompP_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRegionNodeOhas_unique_phi6kM_pnHPhiNode__;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cVExceptionHandlerTableMadd_subtable6MipnNGrowableArray4Cl__22_v_;
-text: .text%__1cNandL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNObjectMonitorHis_busy6kM_l_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cJAssemblerIcmpxchgq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cPshrI_rReg_1NodeErule6kM_I_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cIregDOperEtype6kM_pknEType__;
-text: .text%__1cTStackWalkCompPolicyPshouldNotInline6FnMmethodHandle__pkc_;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_;
-text: .text%__1cQleaPIdxScaleNodeMideal_Opcode6kM_i_;
-text: .text%__1cJcmpOpOperFequal6kM_i_;
-text: .text%__1cScompI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cRaddP_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMrep_stosNodePoper_input_base6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__;
-text: .text%__1cRaddI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
-text: .text%__1cFStateM_sub_Op_CmpU6MpknENode__v_;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cNincI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cPstoreImmI16NodePoper_input_base6kM_I_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cNstoreImmBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cPloadConUL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKklassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cIHaltNodeEhash6kM_I_;
-text: .text%__1cNstoreImmINodePoper_input_base6kM_I_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cNinstanceKlassScopy_static_fields6MpnSPSPromotionManager__v_;
-text: .text%__1cSinstanceKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cOcompL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cRsubI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFStateP_sub_Op_LShiftL6MpknENode__v_;
-text: .text%__1cLjmpConUNodeGnegate6M_v_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_;
-text: .text%__1cLGCTaskQdDueueKinitialize6M_v_;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cJStealTaskEname6M_pc_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cQciBytecodeStreamMget_constant6M_nKciConstant__;
-text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cMrep_stosNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cTsize_java_to_interp6F_I_;
-text: .text%__1cUreloc_java_to_interp6F_I_;
-text: .text%__1cQinit_input_masks6FIrnHRegMask_1_p0_: matcher.o;
-text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cTcompareAndSwapLNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cNCallGeneratorCtf6kM_pknITypeFunc__;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cQleaPIdxScaleNodePoper_input_base6kM_I_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cbAjni_check_async_exceptions6FpnKJavaThread__v_: jni.o;
-text: .text%__1cRsalI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperNbase_position6kM_i_;
-text: .text%__1cMindIndexOperOindex_position6kM_i_;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cRshrL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpCon_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpCon_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKJavaThreadNpd_last_frame6M_nFframe__;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cKmethodOperJnum_edges6kM_I_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreP6MpknENode__v_;
-text: .text%__1cRshrI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNstoreImmBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstorePNodeFreloc6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQleaPIdxScaleNodeErule6kM_I_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cIGraphKitSclear_saved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cXcopy_u2_with_conversion6FpH0i_v_: classFileParser.o;
-text: .text%__1cJAssemblerFtestq6MpnMRegisterImpl_2_v_;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cZresource_reallocate_bytes6FpcLL_0_;
-text: .text%__1cKstoreINodeFreloc6kM_i_;
-text: .text%__1cLsymbolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cPshrI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMorI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cPsalI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cNmulL_rRegNodeErule6kM_I_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cScompP_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_;
-text: .text%__1cRandI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%__1cLmethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNaddI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_;
-text: .text%__1cOjmpLoopEndNodePoper_input_base6kM_I_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cNandL_rRegNodeErule6kM_I_;
-text: .text%__1cQjmpDir_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cQjmpDir_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cSindIndexOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cSindIndexOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNGrowableArray4CI_Egrow6Mi_v_;
-text: .text%__1cFStateP_sub_Op_ConvI2L6MpknENode__v_;
-text: .text%__1cNsubI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcheckCastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cILoopNodeHsize_of6kM_I_;
-text: .text%__1cSindIndexOffsetOperFscale6kM_i_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_;
-text: .text%__1cHi2bNodeErule6kM_I_;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cRjmpConU_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRjmpConU_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPsarI_rReg_1NodeErule6kM_I_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cMloadConDNodeErule6kM_I_;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNdecI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cJScopeDescJstream_at6kMi_pnTDebugInfoReadStream__;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHRetNodePoper_input_base6kM_I_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cPloadConUL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNaddL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cOcompL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJScopeDesc2t6MpknHnmethod_i_v_;
-text: .text%__1cFStateR_sub_Op_LoadRange6MpknENode__v_;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cOcompU_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNsubL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNloadRangeNodeFreloc6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNxorI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_L_;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cUParallelScavengeHeapEused6kM_L_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cRindIndexScaleOperJnum_edges6kM_I_;
-text: .text%__1cRindIndexScaleOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSignatureInfoJdo_double6M_v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cRsalI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cMrdx_RegIOperEtype6kM_pknEType__;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cRshrI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cISubINodeJideal_reg6kM_I_;
-text: .text%__1cICodeHeapIallocate6ML_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6ML_pnJFreeBlock__;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmulL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_;
-text: .text%__1cScompU_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2t6ML_v_;
-text: .text%__1cJloadINodeFreloc6kM_i_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_two6Mi_v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cOAbstractICachePcall_flush_stub6FpCi_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__;
-text: .text%__1cEDictIdoubhash6M_v_;
-text: .text%__1cTleaPIdxScaleOffNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cHi2sNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLimmI_16OperJnum_edges6kM_I_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddL_rReg_immNodeErule6kM_I_;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cNFingerprinterIdo_array6Mii_v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cMorI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cPsalI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cPGCMemoryManagerIgc_begin6M_v_;
-text: .text%__1cPGCMemoryManagerGgc_end6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cYGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUPSAdaptiveSizePolicybPeden_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cIPSOldGenMmax_gen_size6M_L_;
-text: .text%__1cUPSAdaptiveSizePolicybHclear_generation_free_space_flags6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyOeden_increment6MLI_L_;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cPshrI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cRmulI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cOMachEpilogNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKReturnNodeEhash6kM_I_;
-text: .text%__1cLlog2_intptr6Fl_i_;
-text: .text%__1cKKlass_vtbl2n6FLrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cNandL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cONMethodSweeperFsweep6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cCosXserialize_thread_states6F_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosMget_priority6FpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cGThreadMget_priority6Fpk0_nOThreadPriority__;
-text: .text%__1cCosTget_native_priority6FpknGThread_pi_nIOSReturn__;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cNtestP_regNodeFreloc6kM_i_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPsarI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cNIdealLoopTreeNDCE_loop_body6M_v_;
-text: .text%__1cNprefetchwNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_release_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cNdecI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cMrcx_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cNaddL_rRegNodeErule6kM_I_;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cSAdaptiveSizePolicyWminor_collection_begin6M_v_;
-text: .text%__1cSAdaptiveSizePolicyUminor_collection_end6MnHGCCauseFCause__v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cNBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cGGCTaskIdestruct6M_v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MLL_v_;
-text: .text%__1cKPSYoungGenGresize6MLL_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MLL_v_;
-text: .text%__1cSAdaptiveSizePolicybIupdate_minor_pause_young_estimator6Md_v_;
-text: .text%__1cUPSAdaptiveSizePolicybGupdate_minor_pause_old_estimator6Md_v_;
-text: .text%__1cNsubL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeErule6kM_I_;
-text: .text%__1cQinstanceRefKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNandI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_;
-text: .text%__1cMorI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cRandI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cJcmpOpOperEless6kM_i_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cOcompL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cNloadKlassNodeFreloc6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__L_;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cSinstanceKlassKlassXallocate_instance_klass6MiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%__1cScompI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cScompI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cFVTuneQstart_class_load6F_v_;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cFVTuneOend_class_load6F_v_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cRaddL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciBytecodeStream__v_;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cNmulL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_;
-text: .text%__1cWconstantPoolCacheKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cRsalL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cScompP_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cFframeWsender_for_entry_frame6kMpnLRegisterMap__0_;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmodI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cNtestL_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cRaddI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSharedRuntimebOraw_exception_handler_for_return_address6FpC_1_;
-text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPloadConUL32NodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerEandq6MpnMRegisterImpl_i_v_;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcL_pnLPackageInfo__;
-text: .text%JVM_Clone;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cPsalI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciBytecodeStream__v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cGEventsDlog6FpkcE_v_;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cSsafePoint_pollNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cPshrI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cNsubL_rRegNodeErule6kM_I_;
-text: .text%__1cUPSMarkSweepDecoratorVdestination_decorator6F_p0_;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cKBufferBlob2n6FLI_pv_;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_putfield6MpnQciBytecodeStream__v_;
-text: .text%__1cHnmethodNscope_desc_at6MpC_pnJScopeDesc__;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cMrdi_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cTconvL2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
-text: .text%__1cMrax_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSignatureInfoIdo_short6M_v_;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cNandL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MLL_v_;
-text: .text%__1cMorI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHOrINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cILRG_List2t6MI_v_;
-text: .text%__1cHMatcherLreturn_addr6kM_i_;
-text: .text%__1cSindIndexOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOMachPrologNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_;
-text: .text%__1cRaddI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cRaddI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cRmethodDataOopDescYcompute_extra_data_count6Fii_i_;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cRxorI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_2_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6ML_v_;
-text: .text%__1cTresource_free_bytes6FpcL_v_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cRindIndexScaleOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cRindIndexScaleOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cNaddI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNmulL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cWandI_rReg_imm65535NodeMideal_Opcode6kM_i_;
-text: .text%__1cRjmpConU_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRjmpConU_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cSindIndexOffsetOperNconstant_disp6kM_i_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQleaPIdxScaleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cRaddP_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateV_sub_Op_MemBarRelease6MpknENode__v_;
-text: .text%__1cOleaPIdxOffNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerDorq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cScompI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTcompareAndSwapLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorJhalf_type6FpnGciType__3_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cNaddL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNxorI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNincI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerEleaq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cMPhaseChaitinOcache_lrg_info6M_v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cRsarL_rReg_immNodeErule6kM_I_;
-text: .text%__1cKcmpOpUOperJnot_equal6kM_i_;
-text: .text%__1cScompU_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cScompU_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNandL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cTleaPIdxScaleOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNmulL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODataRelocationGoffset6M_i_;
-text: .text%__1cODataRelocationJset_value6MpC_v_;
-text: .text%__1cKRelocationRpd_set_data_value6MpCl_v_;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cFStateO_sub_Op_StoreB6MpknENode__v_;
-text: .text%__1cRaddL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cRandI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOleaPIdxOffNodePoper_input_base6kM_I_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNsubI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cHMemNodeScalculate_adr_type6FpknEType_pknHTypePtr__6_;
-text: .text%__1cRmulI_rReg_immNodeErule6kM_I_;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_;
-text: .text%__1cNaddP_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cNnegI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeErule6kM_I_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_;
-text: .text%__1cNFingerprinterHdo_long6M_v_;
-text: .text%__1cIciMethodRinstructions_size6M_i_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cIAndINodeJideal_reg6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_i_v_;
-text: .text%__1cYexternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cNstoreImmBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMalloc_object6FpnH_jclass_pnGThread__pnPinstanceOopDesc__: jni.o;
-text: .text%__1cRshrL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_i_v_;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_;
-text: .text%__1cKBlock_ListGinsert6MIpnFBlock__v_;
-text: .text%__1cQleaPIdxScaleNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_;
-text: .text%__1cRxorI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cFframeLnmethods_do6M_v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cScompI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_rReg_memNodeErule6kM_I_;
-text: .text%__1cKRelocationYpd_get_address_from_code6M_pC_;
-text: .text%__1cRxorI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_;
-text: .text%__1cNandL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNstoreImmBNodeFreloc6kM_i_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRsalL_rReg_immNodeErule6kM_I_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cNaddP_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cNtestL_regNodeErule6kM_I_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cRsarI_rReg_immNodeErule6kM_I_;
-text: .text%__1cRsarL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperNbase_position6kM_i_;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cKciTypeFlowLStateVectorGdo_new6MpnQciBytecodeStream__v_;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cFStateV_sub_Op_MemBarAcquire6MpknENode__v_;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cSindIndexOffsetOperOindex_position6kM_i_;
-text: .text%__1cSindIndexOffsetOperNbase_position6kM_i_;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cNGrowableArray4Cpv_2t6MpnFArena_iirk0_v_;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_;
-text: .text%__1cNGrowableArray4Cl_2t6MpnFArena_iirkl_v_;
-text: .text%__1cNstoreImmINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMachEpilogNodeFreloc6kM_i_;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cFStateN_sub_Op_LoadL6MpknENode__v_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoHdo_char6M_v_;
-text: .text%__1cNtestU_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateQ_sub_Op_CallLeaf6MpknENode__v_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cJloadLNodeFreloc6kM_i_;
-text: .text%__1cSCallLeafDirectNodeFreloc6kM_i_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cNsubL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_2_v_;
-text: .text%__1cRmulL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cNandI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cRsubI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_;
-text: .text%__1cFStateS_sub_Op_FastUnlock6MpknENode__v_;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcmpFastUnlockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_L_;
-text: .text%__1cScompU_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cPcmovI_reg_gNodeErule6kM_I_;
-text: .text%__1cScompU_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_;
-text: .text%__1cIimmFOperJconstantF6kM_f_;
-text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__;
-text: .text%__1cHOrINodeJideal_reg6kM_I_;
-text: .text%__1cNcmovI_regNodeMcisc_operand6kM_i_;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreC6MpknENode__v_;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_;
-text: .text%__1cRaddL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMrep_stosNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_acquire_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMrcx_RegIOperEtype6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cHNTarjanDDFS6Fp0rnJVectorSet_pnOPhaseIdealLoop_pI_i_;
-text: .text%__1cHNTarjanIsetdepth6MIpI_v_;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cOPhaseIdealLoopQbuild_loop_early6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_late6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopRinit_dom_lca_tags6M_v_;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRsubI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_;
-text: .text%__1cNaddP_rRegNodeErule6kM_I_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_;
-text: .text%__1cRmulI_rReg_immNodeMcisc_operand6kM_i_;
-text: .text%__1cICodeHeapMmax_capacity6kM_L_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cRindIndexScaleOperFscale6kM_i_;
-text: .text%__1cNxorI_rRegNodeErule6kM_I_;
-text: .text%__1cFParseFBlockNstack_type_at6kMi_pknEType__;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJcmpOpOperHgreater6kM_i_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_;
-text: .text%__1cJMemRegionMintersection6kM0_0_;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRmulI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cLRethrowNodeEhash6kM_I_;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cSmembar_releaseNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMatcherQinline_cache_reg6F_i_;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_;
-text: .text%__1cPstoreImmI16NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIemit_d166FrnKCodeBuffer_i_v_;
-text: .text%__1cKimmI16OperIconstant6kM_l_;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cNaddL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cNaddL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_;
-text: .text%__1cPlocal_vsnprintf6FpcLpkcpnR__va_list_element__i_;
-text: .text%jio_vsnprintf;
-text: .text%__1cNstoreImmINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%jio_snprintf;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTcompareAndSwapLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cFStateR_sub_Op_SafePoint6MpknENode__v_;
-text: .text%__1cSsafePoint_pollNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQorI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsafePoint_pollNodeFreloc6kM_i_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cNFingerprinterHdo_bool6M_v_;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cNtestU_regNodeErule6kM_I_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cMrdx_RegLOperEtype6kM_pknEType__;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cINodeHash2t6Mp0_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cPcmovI_reg_gNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cIPhaseCFGDDFS6MpnGTarjan__I_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cHMatcherUvalidate_null_checks6M_v_;
-text: .text%__1cHCompileOcompute_old_SP6M_i_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cFArena2t6ML_v_;
-text: .text%__1cWNode_Backward_Iterator2t6MpnENode_rnJVectorSet_rnJNode_List_rnLBlock_Array__v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cFStateM_sub_Op_Goto6MpknENode__v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cMPhaseChaitinGde_ssa6M_v_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cGTarjanIsetdepth6MI_v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cHCompileTframe_size_in_words6kM_i_;
-text: .text%__1cOCompileWrapper2T6M_v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cNPhasePeephole2t6MpnNPhaseRegAlloc_rnIPhaseCFG__v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cHCompileQShorten_branches6MpnFLabel_ri333_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cHCompileRScheduleAndBundle6M_v_;
-text: .text%__1cOMachPrologNodeFreloc6kM_i_;
-text: .text%__1cWsize_exception_handler6F_I_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cNPhasePeepholeMdo_transform6M_v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cRsarL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cFStateM_sub_Op_CmpL6MpknENode__v_;
-text: .text%__1cJloadSNodeFreloc6kM_i_;
-text: .text%__1cFStateN_sub_Op_LoadS6MpknENode__v_;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cOCompiledRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cNxorI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRmethodDataOopDescPpost_initialize6MpnOBytecodeStream__v_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_Return6MpknENode__v_;
-text: .text%__1cHRetNodeFreloc6kM_i_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
-text: .text%__1cQleaPIdxScaleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRindIndexScaleOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cNandI_rRegNodeErule6kM_I_;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmodI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_;
-text: .text%__1cQsalI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEcmpq6MnHAddress_i_v_;
-text: .text%__1cNloadConP0NodeFreloc6kM_i_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOMacroAssemblerKincrementq6MpnMRegisterImpl_i_v_;
-text: .text%__1cRsarI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cKCodeBuffer2t6MpCi_v_;
-text: .text%__1cNprefetchwNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNprefetchwNodeFreloc6kM_i_;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cKstoreCNodeFreloc6kM_i_;
-text: .text%__1cNdecI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cHi2bNodeMideal_Opcode6kM_i_;
-text: .text%__1cNLocationValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_;
-text: .text%__1cNsubL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateN_sub_Op_LoadB6MpknENode__v_;
-text: .text%__1cNnegI_rRegNodeErule6kM_I_;
-text: .text%__1cNFingerprinterJdo_double6M_v_;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cKcmpOpUOperEless6kM_i_;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%__1cLBoxLockNodeEhash6kM_I_;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cWandI_rReg_imm65535NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWandI_rReg_imm65535NodeErule6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cNcmovI_regNodeErule6kM_I_;
-text: .text%__1cRsalL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNGrowableArray4CpnKInlineTree__Egrow6Mi_v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNaddP_rRegNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNmodL_rRegNodeErule6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cRshrI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cNxorI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLMachUEPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__;
-text: .text%__1cNtestL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_;
-text: .text%__1cHRetDataKcell_count6M_i_;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_;
-text: .text%__1cMdecI_memNodePoper_input_base6kM_I_;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_;
-text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cScompP_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadBNodeFreloc6kM_i_;
-text: .text%__1cUandI_rReg_imm255NodeMideal_Opcode6kM_i_;
-text: .text%__1cScompP_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciBytecodeStream__v_;
-text: .text%__1cNaddL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsubI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cRsarL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNsubL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cRmulL_rReg_immNodeMcisc_operand6kM_i_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cPsalI_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cFStateM_sub_Op_AddL6MpknENode__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorMdo_checkcast6MpnQciBytecodeStream__v_;
-text: .text%__1cMorI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMrax_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cNmodL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cMincI_memNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPshrI_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cNandI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTno_rax_rdx_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJAssemblerGmovzwl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cRmulL_rReg_immNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%__1cRxorI_rReg_memNodeErule6kM_I_;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cRsarI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MulL6MpknENode__v_;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cNnegI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMincI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRandL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRaddI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_;
-text: .text%__1cPcmovI_reg_lNodeErule6kM_I_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cIimmDOperJconstantD6kM_d_;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNGrowableArray4CpnIciObject__2t6MpnFArena_iirk1_v_;
-text: .text%__1cNGrowableArray4CpnIciObject__JappendAll6Mpk2_v_;
-text: .text%__1cNGrowableArray4CpnIciMethod__2t6MpnFArena_iirk1_v_;
-text: .text%__1cNGrowableArray4CpnHciKlass__2t6MpnFArena_iirk1_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cNGrowableArray4CpnPciReturnAddress__2t6MpnFArena_iirk1_v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cIJVMStateNmonitor_depth6kM_i_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cPcmpFastLockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateQ_sub_Op_FastLock6MpknENode__v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvD2I_reg_regNodeErule6kM_I_;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cLVtableStubsPstub_containing6FpC_pnKVtableStub__;
-text: .text%__1cNFingerprinterIdo_float6M_v_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUjmpLoopEnd_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUjmpLoopEnd_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cRandI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_;
-text: .text%__1cNcmovI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdecI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMrax_RegLOperEtype6kM_pknEType__;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__;
-text: .text%__1cNtestP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmovI_reg_gNodeHtwo_adr6kM_I_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNxorI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cMstoreSSPNodeMideal_Opcode6kM_i_;
-text: .text%__1cNmulL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cINodeHashIround_up6FI_I_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cRaddP_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cRaddI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cSInterpreterCodeletKinitialize6MpkcnJBytecodesECode__v_;
-text: .text%__1cNxorI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNaddP_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cOloadConL32NodeErule6kM_I_;
-text: .text%__1cFframeVnmethods_code_blob_do6M_v_;
-text: .text%__1cHi2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_;
-text: .text%__1cNandI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cOleaPIdxOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cNtestU_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cQshrI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cKloadUBNodeErule6kM_I_;
-text: .text%__1cQsalL_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cPstoreImmI16NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cRmulL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cPcmovI_reg_lNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmFlagsFclear6M_v_;
-text: .text%__1cHnmethod2n6FLi_pv_;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cFParseQjump_if_fork_int6MpnENode_2nIBoolTestEmask__pnGIfNode__;
-text: .text%__1cWandI_rReg_imm65535NodeHtwo_adr6kM_I_;
-text: .text%__1cINodeHashUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileWprint_compile_messages6M_v_;
-text: .text%__1cQsalI_rReg_CLNodeErule6kM_I_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cIciMethodRbuild_method_data6MnMmethodHandle__v_;
-text: .text%__1cSstring_compareNodeErule6kM_I_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cScompI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cOcompI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNsubL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKExceptionsG_throw6FpnGThread_pkcinGHandle__v_;
-text: .text%__1cNandL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cPsalL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_i_;
-text: .text%__1cQorI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cRmulI_rReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cJChunkPoolMfree_all_but6ML_v_;
-text: .text%__1cRsalL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cNdecL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOemit_d64_reloc6FrnKCodeBuffer_lrknQRelocationHolder_i_v_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeSalignment_required6kM_i_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cQorI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_L_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cOleaPIdxOffNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNdivL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cScompL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cNGrowableArray4CL_Efind6kMrkL_i_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNloadConI0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKPerfMemoryFalloc6FL_pc_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_LL_v_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cPcmovI_reg_gNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cOjmpLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_ReleaseStringUTFChars: jni.o;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cFStateW_sub_Op_CountedLoopEnd6MpknENode__v_;
-text: .text%__1cNFingerprinterIdo_short6M_v_;
-text: .text%__1cJAssemblerEincq6MpnMRegisterImpl__v_;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cScompU_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cNtestL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWCallLeafNoFPDirectNodeFreloc6kM_i_;
-text: .text%__1cFStateU_sub_Op_CallLeafNoFP6MpknENode__v_;
-text: .text%JVM_FindLibraryEntry;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__;
-text: .text%__1cNmodI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRxorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRmulI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cIMachOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cNandI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNnegI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateS_sub_Op_ClearArray6MpknENode__v_;
-text: .text%__1cRaddL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIXorINodeJideal_reg6kM_I_;
-text: .text%__1cMrep_stosNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMrep_stosNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateO_sub_Op_StoreL6MpknENode__v_;
-text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__;
-text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGThreadLnmethods_do6M_v_;
-text: .text%__1cKstoreLNodeFreloc6kM_i_;
-text: .text%__1cMstoreSSPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRsubI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cScompU_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNFingerprinterHdo_char6M_v_;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNGrowableArray4CpnHoopDesc__Uclear_and_deallocate6M_v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cNGrowableArray4CpnJNode_List__Egrow6Mi_v_;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MLnHGCCauseFCause__v_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cNGrowableArray4CpnFKlass__Uclear_and_deallocate6M_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cLPSMarkSweepPallocate_stacks6F_v_;
-text: .text%__1cLPSMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase36F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cLPSMarkSweepbAreset_millis_since_last_gc6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cNExceptionBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cQUncommonTrapBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cJPSPermGenQcompute_new_size6ML_v_;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQorI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cKJavaThreadLnmethods_do6M_v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNandI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPstoreImmI16NodeFreloc6kM_i_;
-text: .text%__1cPstoreImmI16NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cIPSOldGenOgen_size_limit6M_L_;
-text: .text%__1cUPSAdaptiveSizePolicybQpromo_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cUParallelScavengeHeapOresize_old_gen6ML_v_;
-text: .text%__1cUPSAdaptiveSizePolicyPpromo_increment6MLI_L_;
-text: .text%__1cWandI_rReg_imm65535NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPSOldGenGresize6ML_v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cNstoreImmINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cNcmovI_regNodeHtwo_adr6kM_I_;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cIGraphKitbKcombine_and_pop_all_exception_states6M_pnNSafePointNode__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cFStateP_sub_Op_Rethrow6MpknENode__v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_;
-text: .text%__1cNdecL_rRegNodeErule6kM_I_;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_;
-text: .text%__1cNstoreImmINodeFreloc6kM_i_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cURethrowExceptionNodeFreloc6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTcompareAndSwapLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateX_sub_Op_CompareAndSwapL6MpknENode__v_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_;
-text: .text%__1cTcompareAndSwapLNodeFreloc6kM_i_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOcompP_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPsarI_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cMmulD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cPmethodDataKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cPcmpD_cc_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciBytecodeStream_pnHciKlass_i_v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Ml_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cQciBytecodeStreamFtable6MnJBytecodesECode__2_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cRxorI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cISubLNodeJideal_reg6kM_I_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cRsalL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cNaddP_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cNcmovI_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cPcmpD_cc_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cTconvF2D_reg_memNodePoper_input_base6kM_I_;
-text: .text%__1cNdivL_rRegNodeErule6kM_I_;
-text: .text%__1cRmulL_rReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cQsalL_rReg_CLNodeErule6kM_I_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadConP0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cRxorI_rReg_immNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cPcmovI_reg_lNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cNcmovP_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQorI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cUjmpLoopEnd_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cUjmpLoopEnd_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPCountedLoopNodeGstride6kM_pnENode__;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cNnegI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLencode_copy6FrnKCodeBuffer_ii_v_;
-text: .text%__1cPcmpD_cc_regNodeMcisc_operand6kM_i_;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_;
-text: .text%__1cPcmpD_cc_regNodeErule6kM_I_;
-text: .text%__1cNtestU_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_rReg_immNodeErule6kM_I_;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_;
-text: .text%__1cRxorI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTno_rax_rdx_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQsalI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSobjArrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRxorI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGHandle2t6MpnGThread_pnHoopDesc__v_;
-text: .text%__1cQorI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cOloadConL32NodeMideal_Opcode6kM_i_;
-text: .text%__1cNGrowableArray4Cpv_Egrow6Mi_v_;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cNGrowableArray4Cl_Egrow6Mi_v_;
-text: .text%__1cLResourceObj2n6FLn0APallocation_type__pv_;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cScompL_rReg_immNodeErule6kM_I_;
-text: .text%__1cQshrI_rReg_CLNodeErule6kM_I_;
-text: .text%__1cNaddL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateT_sub_Op_ThreadLocal6MpknENode__v_;
-text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cMmulF_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cRandL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUandI_rReg_imm255NodeErule6kM_I_;
-text: .text%__1cRmulL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNaddP_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cRsarL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_i_;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cIMulINodeJideal_reg6kM_I_;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cFParseTjump_if_always_fork6Mii_v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cQComputeCallStackIdo_float6M_v_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_newarray6MpnQciBytecodeStream__v_;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmovI_reg_lNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cNFingerprinterHdo_byte6M_v_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cMmulD_immNodeErule6kM_I_;
-text: .text%__1cMaddF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRxorI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cNdecL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cRsarI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMrsi_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRindIndexScaleOperNconstant_disp6kM_i_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cNtestI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cOleaPIdxOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNmulI_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4Ci_Uclear_and_deallocate6M_v_;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIModINodeJideal_reg6kM_I_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cPshrL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKmul_hiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEnegq6MpnMRegisterImpl__v_;
-text: .text%__1cNmodL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNsubL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOjmpLoopEndNodeGnegate6M_v_;
-text: .text%__1cQorI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPsalL_rReg_1NodeErule6kM_I_;
-text: .text%__1cPcmpD_cc_immNodeErule6kM_I_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cUandI_rReg_imm255NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cPno_rax_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMrdx_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmulI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNxorI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTconvF2D_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cbFunnecessary_membar_volatileNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__Egrow6Mi_v_;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cNdivL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotPOperFscale6kM_i_;
-text: .text%__1cNmulI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPsarL_rReg_2NodeErule6kM_I_;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMaddF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__;
-text: .text%__1cTconvD2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMstoreSSPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeFreloc6kM_i_;
-text: .text%__1cQshrI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cRandL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cKmul_hiNodeErule6kM_I_;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6ML_v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cILogDNodeGOpcode6kM_i_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cHi2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLimmI_24OperJnum_edges6kM_I_;
-text: .text%__1cRxorI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPsalI_rReg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cXPipeline_Use_Cycle_Mask2t6MI_v_;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cIciMethodOresolve_invoke6MpnHciKlass_2_p0_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPsalL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cZCallDynamicJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cFStateX_sub_Op_CallDynamicJava6MpknENode__v_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cIMinINodeJideal_reg6kM_I_;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTconvI2F_reg_regNodeErule6kM_I_;
-text: .text%__1cNcmovP_regNodeErule6kM_I_;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%JVM_MonitorWait;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cUPSMarkSweepDecoratorbDadvance_destination_decorator6F_v_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_2_v_;
-text: .text%__1cTconvF2D_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMstoreSSPNodeErule6kM_I_;
-text: .text%__1cOloadConL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpUOperFequal6kM_i_;
-text: .text%__1cHRegMask2t6M_v_;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cNGrowableArray4Ci_2t6MpnFArena_iirki_v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cRmulI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerFcmovq6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cNminI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMmulD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_MinI6MpknENode__v_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cScompL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cUandI_rReg_imm255NodeHtwo_adr6kM_I_;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_2_v_;
-text: .text%__1cNGrowableArray4CpnIciObject__Egrow6Mi_v_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cNmodI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cPcmpD_cc_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cMdecI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_;
-text: .text%__1cQsalL_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddI_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cMmulF_immNodeErule6kM_I_;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cOjmpLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FLi_pnGThread__;
-text: .text%__1cMrax_RegIOperEtype6kM_pknEType__;
-text: .text%__1cOjmpLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateW_sub_Op_MemBarVolatile6MpknENode__v_;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cMincI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcLii_2_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cOloadConL32NodeLbottom_type6kM_pknEType__;
-text: .text%__1cRxorI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMmulD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovP_regNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJScopeDescTdecode_scope_values6Mi_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQsalI_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cPsarL_rReg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cIimmIOperJnum_edges6kM_I_;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowFBlock__Gremove6Mrk2_v_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cMdivD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsarL_rReg_63NodeErule6kM_I_;
-text: .text%__1cRsubL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_L_;
-text: .text%__1cRsubL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cNstoreImmPNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cQComputeCallStackHdo_char6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cMaddF_regNodeErule6kM_I_;
-text: .text%__1cNdecL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMdecI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFStateN_sub_Op_LoadF6MpknENode__v_;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGbswapl6MpnMRegisterImpl__v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cMincI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cTconvD2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerHpop_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cMelapsedTimer2t6M_v_;
-text: .text%__1cMdivD_immNodeErule6kM_I_;
-text: .text%__1cTconvI2D_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cRsalL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cPcmpD_cc_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMaddD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNdivI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUandI_rReg_imm255NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNdivL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cKcastPPNodePoper_input_base6kM_I_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadDNodeErule6kM_I_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cPsarL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cMmulD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulF_memNodePoper_input_base6kM_I_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cMaddF_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cQshrL_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNnegI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRaddI_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cMmulF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cQsarL_rReg_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cPcmpF_cc_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_;
-text: .text%__1cPcmpD_cc_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMlogD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvL2FNodeGOpcode6kM_i_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cMPipeline_Use2t6MIIIpnUPipeline_Use_Element__v_;
-text: .text%__1cKstorePNodeErule6kM_I_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_;
-text: .text%__1cMstoreSSPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSMachBreakpointNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRsubL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNtestU_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPsalL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cNmodL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvF2D_reg_regNodeErule6kM_I_;
-text: .text%__1cQsalI_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_rReg_memNodeErule6kM_I_;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMaddF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRxorI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MLL_v_;
-text: .text%__1cRaddL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%JVM_IsArrayClass;
-text: .text%__1cJAssemblerEsbbq6MnHAddress_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEaddq6MnHAddress_i_v_;
-text: .text%JVM_GetClassName;
-text: .text%__1cTconvF2D_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cNmulI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cRsubL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRaddL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cPshrL_rReg_1NodeErule6kM_I_;
-text: .text%__1cQshrI_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_RegD6MpknENode__v_;
-text: .text%__1cQorI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%JVM_Open;
-text: .text%__1cHRegMask2t6Miiiiiii_v_;
-text: .text%__1cNsubI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRmulL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPsarL_rReg_2NodeHtwo_adr6kM_I_;
-text: .text%__1cQConstantIntValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cRxorI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateM_sub_Op_ConD6MpknENode__v_;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%__1cNaddP_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPcmpF_cc_regNodeMcisc_operand6kM_i_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cMmulF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateM_sub_Op_RegF6MpknENode__v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovP_regNodeHtwo_adr6kM_I_;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cScompL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMTailCallNode2t6MpnENode_222222_v_;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cSTailCalljmpIndNodeFreloc6kM_i_;
-text: .text%__1cOloadConL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeErule6kM_I_;
-text: .text%__1cLvframeArrayRregister_location6kMi_pC_;
-text: .text%__1cQorI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateQ_sub_Op_TailCall6MpknENode__v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cMaddD_immNodeErule6kM_I_;
-text: .text%__1cPshrL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmaxI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cMaddF_immNodeErule6kM_I_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cFStateM_sub_Op_MaxI6MpknENode__v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cCosScurrent_stack_size6F_L_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cJloadFNodeFreloc6kM_i_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cKstoreFNodeFreloc6kM_i_;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_;
-text: .text%__1cNcmovL_memNodeErule6kM_I_;
-text: .text%__1cFStateO_sub_Op_StoreF6MpknENode__v_;
-text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cNcmovL_regNodeMcisc_operand6kM_i_;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cTconvL2D_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNdivI_rRegNodeErule6kM_I_;
-text: .text%__1cNdecL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CpknEType__2t6MpnFArena_iirk2_v_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cJAssemblerExorq6MpnMRegisterImpl_2_v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cOcmovI_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cMsubD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cPcmpF_cc_regNodeErule6kM_I_;
-text: .text%__1cNmodI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconvL2D_reg_memNodePoper_input_base6kM_I_;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cMmulF_immNodeHtwo_adr6kM_I_;
-text: .text%__1cQsarL_rReg_63NodeHtwo_adr6kM_I_;
-text: .text%__1cMsubF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cTconvF2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cRandI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cRandI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%JVM_NativePath;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodTinc_decompile_count6M_v_;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cMResourceMarkNreset_to_mark6M_v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cMmulD_regNodeErule6kM_I_;
-text: .text%__1cMdivD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vL_v_;
-text: .text%__1cPcmpD_cc_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2D_reg_regNodeErule6kM_I_;
-text: .text%__1cNcmovL_memNodePoper_input_base6kM_I_;
-text: .text%__1cNdivL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpD_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateT_sub_Op_CallRuntime6MpknENode__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_;
-text: .text%__1cKcastPPNodeHtwo_adr6kM_I_;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cMsubD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsalL_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cVCallRuntimeDirectNodeFreloc6kM_i_;
-text: .text%__1cIGraphKitIset_jvms6MpnIJVMState__v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cOsalI_mem_1NodePoper_input_base6kM_I_;
-text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cMrdi_RegIOperEtype6kM_pknEType__;
-text: .text%__1cVThreadStateTransitionKtransition6FpnKJavaThread_nPJavaThreadState_3_v_;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cQorI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPsalL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMResourceMark2t6M_v_;
-text: .text%__1cQshrI_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescVdecode_monitor_values6Mi_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cOMacroAssemblerKincrementl6MpnMRegisterImpl_i_v_;
-text: .text%__1cFframebCinterpreter_frame_set_locals6Mpl_v_;
-text: .text%__1cFframebHinterpreter_frame_set_monitor_end6MpnPBasicObjectLock__v_;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cFframebCinterpreter_frame_set_method6MpnNmethodOopDesc__v_;
-text: .text%__1cMmulF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFframebBinterpreter_frame_sender_sp6kM_pl_;
-text: .text%__1cMaddF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cKstoreINodeErule6kM_I_;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cPcmovI_reg_gNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cODeoptimizationVtrap_state_add_reason6Fii_i_;
-text: .text%__1cDhpiFclose6Fi_i_;
-text: .text%__1cJMemRegionFminus6kM0_0_;
-text: .text%__1cMmulD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovL_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerWupdate_mdp_by_constant6MpnMRegisterImpl_i_v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cTconvI2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%JVM_Close;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQshrL_rReg_CLNodeErule6kM_I_;
-text: .text%__1cTconvF2D_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cOcmovI_regUNodeMcisc_operand6kM_i_;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cKcastPPNodeErule6kM_I_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cJAssemblerGmovslq6MpnMRegisterImpl_2_v_;
-text: .text%__1cRandI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRConstantLongValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cMsubD_regNodeErule6kM_I_;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cNmulI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLRuntimeStub2n6FLI_pv_;
-text: .text%__1cRxorI_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMmulF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConL32NodeHsize_of6kM_I_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cRaddL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cNdecI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_ConF6MpknENode__v_;
-text: .text%__1cMloadConFNodeHsize_of6kM_I_;
-text: .text%__1cPsarL_rReg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsarL_rReg_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPoldgetTimeNanos6F_x_;
-text: .text%__1cKmul_hiNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cTconvI2D_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationRgather_statistics6Fn0ALDeoptReason_n0ALDeoptAction_nJBytecodesECode__v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cOcmovI_regUNodeErule6kM_I_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cXpartialSubtypeCheckNodeMideal_Opcode6kM_i_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLvframeArrayZdeallocate_monitor_chunks6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cMmulD_memNodePoper_input_base6kM_I_;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cOcompL_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cMaddF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_;
-text: .text%__1cLconvI2BNodeErule6kM_I_;
-text: .text%__1cTconvF2I_reg_regNodeErule6kM_I_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddL_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cMmulL_memNodePoper_input_base6kM_I_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cMaddF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cMincL_memNodePoper_input_base6kM_I_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cMmulL_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMaddD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKloadUBNodeFreloc6kM_i_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cMmulD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cSCardTableExtensionbEresize_covered_region_by_start6MnJMemRegion__v_;
-text: .text%__1cQshrL_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddL_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMlogD_regNodeErule6kM_I_;
-text: .text%__1cNmulI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMdecI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsalL_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKemit_break6FrnKCodeBuffer__v_;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cMsubF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMdecI_memNodeFreloc6kM_i_;
-text: .text%__1cMdecI_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cNstoreImmPNodePoper_input_base6kM_I_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cTconvL2F_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cFStateM_sub_Op_CmpD6MpknENode__v_;
-text: .text%__1cNloadConL0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKcastPPNodeMideal_Opcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cPshrL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNdivI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetComponentType;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEsbbq6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovL_memNodeMideal_Opcode6kM_i_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%jni_EnsureLocalCapacity: jni.o;
-text: .text%__1cMaddF_memNodePoper_input_base6kM_I_;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cRandL_rReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%JVM_NewArray;
-text: .text%JVM_FreeMemory;
-text: .text%JVM_TotalMemory;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cMincI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cMmulF_memNodeErule6kM_I_;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cRaddL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTconvL2F_reg_regNodeErule6kM_I_;
-text: .text%__1cKPSYoungGenLpost_resize6M_v_;
-text: .text%__1cNcmovL_regNodeErule6kM_I_;
-text: .text%__1cRandI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPBytecode_invokeLresult_type6kMpnGThread__nJBasicType__;
-text: .text%__1cMincL_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSInterpreterRuntimeJnote_trap6FpnKJavaThread_ipnGThread__v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cIModLNodeJideal_reg6kM_I_;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cMaddF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_DivL6MpknENode__v_;
-text: .text%__1cTconvL2D_reg_memNodeErule6kM_I_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cMincI_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateP_sub_Op_ConvF2D6MpknENode__v_;
-text: .text%__1cMmulL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cMincI_memNodeFreloc6kM_i_;
-text: .text%__1cPcmpF_cc_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMsubF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMsubF_memNodePoper_input_base6kM_I_;
-text: .text%__1cTconvF2D_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_DefineClass;
-text: .text%__1cMaddF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEshrq6MpnMRegisterImpl_i_v_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cTleaPIdxScaleOffNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cOsalI_mem_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cMmulF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cTconvD2F_reg_regNodeMcisc_operand6kM_i_;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cTconvF2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cTconvF2D_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovD_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cMsubD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cPshrL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_immNodeErule6kM_I_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cNcmovL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOcmovD_regUNodeErule6kM_I_;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cMorL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvD2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cXpartialSubtypeCheckNodeErule6kM_I_;
-text: .text%__1cOstackSlotDOperEtype6kM_pknEType__;
-text: .text%__1cHThreadsLnmethods_do6F_v_;
-text: .text%__1cLloadSSDNodeErule6kM_I_;
-text: .text%__1cMsubD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%__1cTconvF2D_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cMloadConFNodeKconst_size6kM_i_;
-text: .text%__1cMorL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulD_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMaddD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMloadConFNodeFreloc6kM_i_;
-text: .text%__1cILogDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNstoreImmPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_;
-text: .text%__1cMlogD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cMaddD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMaddD_regNodeErule6kM_I_;
-text: .text%__1cScompL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_;
-text: .text%__1cJimmP0OperIconstant6kM_l_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%JVM_GetClassContext;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cMsubF_regNodeErule6kM_I_;
-text: .text%__1cRsubL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cTconvL2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMmulF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeMideal_Opcode6kM_i_;
-text: .text%__1cNmodL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cQsalI_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cJAssemblerFcmovq6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMmulD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMaddF_immNodeHtwo_adr6kM_I_;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cTconvL2D_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeErule6kM_I_;
-text: .text%__1cVMoveL2D_reg_stackNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_MulD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_ModL6MpknENode__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cQshrL_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cKJavaThreadbOcheck_special_condition_for_native_trans6Fp0_v_;
-text: .text%__1cODeoptimizationYreset_invocation_counter6FpnJScopeDesc_i_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__;
-text: .text%__1cMnegF_regNodeErule6kM_I_;
-text: .text%__1cMsubF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cXpartialSubtypeCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_;
-text: .text%__1cKcastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMmulD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNmulI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cScompL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_data_at6MpnMRegisterImpl_i2_v_;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cMmulF_regNodeErule6kM_I_;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_MulF6MpknENode__v_;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cMloadConDNodeHsize_of6kM_I_;
-text: .text%__1cOcmovI_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cMaddD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cMloadConDNodeKconst_size6kM_i_;
-text: .text%__1cLConvL2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOstackSlotDOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cTconvF2D_reg_memNodeFreloc6kM_i_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMloadConDNodeFreloc6kM_i_;
-text: .text%JVM_Lseek;
-text: .text%__1cPsarL_rReg_1NodeErule6kM_I_;
-text: .text%__1cPsarL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVcompiledICHolderKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cOstackSlotDOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMmulF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMlogD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_AddF6MpknENode__v_;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cSstring_compareNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateP_sub_Op_StrComp6MpknENode__v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cScompL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cPcmpF_cc_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_;
-text: .text%__1cQmulI_mem_immNodePoper_input_base6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cNdecL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%jni_GetEnv;
-text: .text%JVM_NanoTime;
-text: .text%__1cRmulI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cQmulI_mem_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cJAssemblerFpushq6MnHAddress__v_;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_;
-text: .text%__1cPcmpD_cc_immNodeKconst_size6kM_i_;
-text: .text%__1cMorL_rRegNodeErule6kM_I_;
-text: .text%__1cScompP_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cScompP_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cNdivI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorOdo_null_assert6MpnHciKlass__v_;
-text: .text%__1cMsubD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnGciType__Egrow6Mi_v_;
-text: .text%__1cMdivD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cPcmpD_cc_immNodeFreloc6kM_i_;
-text: .text%__1cMmulD_memNodeErule6kM_I_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cQorI_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMmulF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cPsalL_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQshrI_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableQvolatile_barrier6FnJAssemblerQMembar_mask_bits__v_;
-text: .text%__1cNdivL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cVMoveL2D_reg_stackNodeErule6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__;
-text: .text%__1cKPSYoungGenRavailable_to_live6M_L_;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNcmovL_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSstore_to_stackslot6FrnKCodeBuffer_iii_v_;
-text: .text%__1cQshrL_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_;
-text: .text%__1cMmulD_immNodeFreloc6kM_i_;
-text: .text%__1cQmulI_mem_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cRaddI_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMlogD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCardTableModRefBSYcommitted_unique_to_self6kMinJMemRegion__1_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cFStateN_sub_Op_LoadD6MpknENode__v_;
-text: .text%__1cTconvL2F_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cPcmpF_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKPSYoungGenUavailable_to_min_gen6M_L_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cKPSYoungGenQlimit_gen_shrink6ML_L_;
-text: .text%__1cTconvI2D_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_ConvI2F6MpknENode__v_;
-text: .text%__1cMmulD_immNodeKconst_size6kM_i_;
-text: .text%__1cMmulF_immNodeFreloc6kM_i_;
-text: .text%__1cJloadBNodeHsize_of6kM_I_;
-text: .text%__1cOcompI_rRegNodeHsize_of6kM_I_;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cJloadPNodeHsize_of6kM_I_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cNcmovL_regNodeHtwo_adr6kM_I_;
-text: .text%__1cLloadSSDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cVVM_ParallelGCSystemGC2t6MIInHGCCauseFCause__v_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cMsubD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOcmovI_regUNodeHtwo_adr6kM_I_;
-text: .text%__1cMaddD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGmovsbl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMorL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cQmulI_mem_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKimmL10OperJnum_edges6kM_I_;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cMsubD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cRsubI_rReg_memNodeHsize_of6kM_I_;
-text: .text%__1cKmul_hiNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQsarL_rReg_63NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cPsarL_rReg_2NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLdivL_10NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%JVM_GC;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cIPSOldGenGexpand6ML_v_;
-text: .text%__1cIPSOldGenXexpand_and_cas_allocate6ML_pnIHeapWord__;
-text: .text%__1cPsarL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cMsubF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cRaddL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cVMoveL2D_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompP_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOGenerateOopMapGdo_jsr6Mi_v_;
-text: .text%__1cMmulF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOcmovD_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovL_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMmulF_immNodeKconst_size6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cMdecI_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cJloadDNodeFreloc6kM_i_;
-text: .text%__1cMincL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cTconvD2F_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cMmulD_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMsubF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovI_regUNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cMsubF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJMemRegion2t6M_v_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cQsalL_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_;
-text: .text%__1cHnmethodVinvalidate_osr_method6M_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOBasicHashtable2t6Mii_v_;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cMdivD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_Sleep;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOstackSlotIOperFscale6kM_i_;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cLloadSSINodeErule6kM_I_;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLConvL2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_;
-text: .text%__1cRandI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%jni_GetJavaVM: jni.o;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cNGrowableArray4CpnIPerfData__Praw_at_put_grow6Mirk14_v_;
-text: .text%__1cFciEnvOrecord_failure6Mpkc_v_;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOstackSlotDOperFscale6kM_i_;
-text: .text%__1cOstackSlotDOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOcmovI_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvD2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvF2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cTconvL2D_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXpartialSubtypeCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cRaddI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cScompP_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMsubF_memNodeErule6kM_I_;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cNdivI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_;
-text: .text%__1cFframebFset_interpreter_frame_sender_sp6Mpl_v_;
-text: .text%__1cPsarL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cMaddF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cNSpaceCounters2t6MpkciLpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cOcompiledVFrameUresolve_monitor_lock6kMnILocation__pnJBasicLock__;
-text: .text%__1cTconvD2I_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_;
-text: .text%__1cMorL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cMaddD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cZCompiledArgumentOopFinderDset6MinJBasicType__v_;
-text: .text%__1cNstoreImmPNodeFreloc6kM_i_;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cNReservedSpace2t6ML_v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cNmulI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%Unsafe_GetNativeByte;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cFStateP_sub_Op_ConvD2I6MpknENode__v_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cINegDNodeJideal_reg6kM_I_;
-text: .text%__1cPshrL_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTconvF2D_reg_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_;
-text: .text%__1cNandI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pLi_v_;
-text: .text%__1cMsubF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMmulL_memNodeFreloc6kM_i_;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cFStateM_sub_Op_NegD6MpknENode__v_;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cNstoreImmPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivINodeJideal_reg6kM_I_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cMaddF_memNodeErule6kM_I_;
-text: .text%__1cOcmovD_regUNodeHtwo_adr6kM_I_;
-text: .text%__1cMaddF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cMorL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerNpop_CPU_state6M_v_;
-text: .text%__1cOMacroAssemblerOpush_CPU_state6M_v_;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cOMacroAssemblerMpop_IU_state6M_v_;
-text: .text%__1cOMacroAssemblerNpush_IU_state6M_v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cTconvL2D_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cRaddL_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMaddF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNTemplateTableOprepare_invoke6FpnMRegisterImpl_2inJBytecodesECode__v_;
-text: .text%__1cVMoveF2I_reg_stackNodeErule6kM_I_;
-text: .text%__1cJAssemblerEandq6MpnMRegisterImpl_2_v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRComputeEntryStackJdo_double6M_v_;
-text: .text%__1cMaddD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cMsubD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cKPSScavengeZclean_up_failed_promotion6F_v_;
-text: .text%JVM_Available;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJAssemblerFimulq6MpnMRegisterImpl_2_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cKPSYoungGenOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cISubDNodeJideal_reg6kM_I_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cMmulI_memNodePoper_input_base6kM_I_;
-text: .text%__1cNGrowableArray4CpnLmarkOopDesc__Uclear_and_deallocate6M_v_;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cRaddL_rReg_memNodeErule6kM_I_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddL_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cMmulF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMaddF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cVMoveF2I_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerHfxrstor6MnHAddress__v_;
-text: .text%__1cJAssemblerGfxsave6MnHAddress__v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cNGCTaskManagerGthread6MI_pnMGCTaskThread__;
-text: .text%__1cRConstantLongValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cMmulD_memNodeHtwo_adr6kM_I_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cNcmovL_memNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_AddD6MpknENode__v_;
-text: .text%__1cMmulI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cScompL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cLloadSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cMmulI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcmovD_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cNnegI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cFStateP_sub_Op_ConvI2D6MpknENode__v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cJCodeCachebCmake_marked_nmethods_zombies6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cFStateM_sub_Op_CmpF6MpknENode__v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cQshrL_rReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cILogDNodeJideal_reg6kM_I_;
-text: .text%__1cRaddL_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMincL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cNcmovL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cMmulD_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cMaddF_immNodeKconst_size6kM_i_;
-text: .text%__1cVMoveL2D_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvbNArrayIndexOutOfBoundsException_instance6M_pnKciInstance__;
-text: .text%__1cMsubD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddF_immNodeFreloc6kM_i_;
-text: .text%__1cMaddD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddD_immNodeFreloc6kM_i_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cMaddD_immNodeKconst_size6kM_i_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cOsalI_mem_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSPSPromotionManager2t6M_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cMsubF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cFStateM_sub_Op_SubF6MpknENode__v_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cKstoreBNodeErule6kM_I_;
-text: .text%__1cKVtableStub2n6FLi_pv_;
-text: .text%__1cJAssemblerEdecq6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_22_v_;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cRaddI_mem_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_L_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cJTimeStamp2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_2i_v_;
-text: .text%__1cLconvI2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorKpass_float6M_v_;
-text: .text%__1cISubFNodeJideal_reg6kM_I_;
-text: .text%__1cNGrowableArray4CpnIPerfData__Egrow6Mi_v_;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_;
-text: .text%__1cFStateM_sub_Op_LogD6MpknENode__v_;
-text: .text%__1cJlookupOne6FpnHJNIEnv__pkcpnGThread__pnH_jclass__: jni.o;
-text: .text%__1cLloadSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_SubD6MpknENode__v_;
-text: .text%JVM_RegisterSignal;
-text: .text%JVM_FindSignal;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cMorL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cLloadSSDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJArgumentsObuild_jvm_args6Fpkc_v_;
-text: .text%__1cOLibraryCallKitMpop_math_arg6M_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cRaddI_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cQmulI_mem_immNodeFreloc6kM_i_;
-text: .text%__1cNincI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cUConstantOopReadValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cRaddI_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdivD_immNodeKconst_size6kM_i_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cNGrowableArray4CpnTDerivedPointerEntry__Egrow6Mi_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_;
-text: .text%__1cCosHrealloc6FpvL_1_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cZcatch_cleanup_intra_block6FpnENode_1pnFBlock_ii_v_: lcm.o;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cRalign_object_size6Fl_l_;
-text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_;
-text: .text%__1cNstoreImmBNodeErule6kM_I_;
-text: .text%__1cNstoreImmINodeErule6kM_I_;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cNGrowableArray4CpnNmethodOopDesc__Egrow6Mi_v_;
-text: .text%__1cXpartialSubtypeCheckNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTconvF2I_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cNGrowableArray4CpC_Egrow6Mi_v_;
-text: .text%__1cNGrowableArray4CL_Egrow6Mi_v_;
-text: .text%__1cPsarL_rReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Lpkci_v_;
-text: .text%__1cIPSOldGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cNdivI_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cQAgentLibraryList2t6M_v_;
-text: .text%__1cMmulF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerGmovsbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_2_v_;
-text: .text%__1cRaddL_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerGmovzwl6MpnMRegisterImpl_2_v_;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFidivq6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cJAssemblerEcdqq6M_v_;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerDorq6MnHAddress_i_v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJAssemblerFxaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNGCTaskManagerKset_thread6MIpnMGCTaskThread__v_;
-text: .text%__1cJAssemblerHldmxcsr6MnHAddress__v_;
-text: .text%__1cKcastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPeriodicTask2t6ML_v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cEMIN24CL_6FTA0_0_;
-text: .text%__1cRCardTableModRefBSbCpar_chunk_heapword_alignment6F_L_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cOMacroAssemblerPcorrected_idivq6MpnMRegisterImpl__i_;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivD6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2F6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2D6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvF2I6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvD2F6MpknENode__v_;
-text: .text%__1cScompP_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cKCastPPNodeJideal_reg6kM_I_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvL2D_reg_memNodeFreloc6kM_i_;
-text: .text%__1cMdivD_immNodeFreloc6kM_i_;
-text: .text%__1cMmulF_memNodeFreloc6kM_i_;
-text: .text%__1cMaddF_memNodeFreloc6kM_i_;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKciTypeFlowLStateVectorRdo_multianewarray6MpnQciBytecodeStream__v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cNSafepointBlob2n6FLI_pv_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_;
-text: .text%__1cLConvL2FNodeJideal_reg6kM_I_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cJAssemblerEshrq6MpnMRegisterImpl__v_;
-text: .text%__1cMsubF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEsubq6MnHAddress_i_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cMmulD_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cKNoopGCTaskQcreate_on_c_heap6F_p0_;
-text: .text%__1cJAssemblerFxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFxchgq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJAssemblerIcmpxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cQRelocationHolder2t6M_v_;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cJArgumentsSset_bytecode_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cJAssemblerHclflush6MnHAddress__v_;
-text: .text%__1cOAbstractICacheKinitialize6F_v_;
-text: .text%__1cLGCTaskQdDueueQcreate_on_c_heap6F_p0_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cYGCAdaptivePolicyCounters2t6MpkciipnSAdaptiveSizePolicy__v_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cJAssemblerHstmxcsr6MnHAddress__v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_LLL_v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_LLLLLLL_v_;
-text: .text%__1cHOrLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: adaptiveSizePolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKmethods_do6FpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cOMacroAssemblerKdecrementl6MpnMRegisterImpl_i_v_;
-text: .text%__1cKcastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cNMemoryServicebFadd_parallel_scavenge_heap_info6FpnUParallelScavengeHeap__v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cNMemoryServiceXadd_psYoung_memory_pool6FpnKPSYoungGen_pnNMemoryManager_4_v_;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl_3_v_;
-text: .text%__1cFJNIidKdeallocate6Fp0_v_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cYVM_Version_StubGeneratorTgenerate_getPsrInfo6M_pC_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNMemoryServiceVadd_psOld_memory_pool6FpnIPSOldGen_pnNMemoryManager__v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cKPSYoungGenUset_space_boundaries6MLL_v_;
-text: .text%__1cKPSYoungGenbGcompute_initial_space_boundaries6M_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_L_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
-text: .text%__1cKPSYoungGen2t6MLLL_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cRaddL_rReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRaddL_mem_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cMincL_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cNMemoryServiceWadd_psPerm_memory_pool6FpnJPSPermGen_pnNMemoryManager__v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cOsalI_mem_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_;
-text: .text%__1cIPSOldGen2t6MLLLpkci_v_;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cSInterpreterRuntimeYthrow_ClassCastException6FpnKJavaThread_pnHoopDesc__v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_;
-text: .text%__1cFVTuneEexit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cKvtune_init6F_v_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cKDictionaryKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cKDictionaryKfree_entry6MpnPDictionaryEntry__v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cFStateQ_sub_Op_TailJump6MpknENode__v_;
-text: .text%__1cMorL_rRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cFStateL_sub_Op_OrL6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_NegF6MpknENode__v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cFStateP_sub_Op_MoveL2D6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cFStateO_sub_Op_CastPP6MpknENode__v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cTConstantDoubleValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FL_v_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_L_;
-text: .text%__1cOtailjmpIndNodeFreloc6kM_i_;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFciEnvXget_or_create_exception6MrpnI_jobject_nMsymbolHandle__pnKciInstance__;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cNGrowableArray4CpnIPerfData__JappendAll6Mpk2_v_;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cMmulD_memNodeFreloc6kM_i_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cMsubD_immNodeFreloc6kM_i_;
-text: .text%__1cMsubF_memNodeFreloc6kM_i_;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cFParseWprofile_null_checkcast6M_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cOsalI_mem_1NodeFreloc6kM_i_;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cMmulI_memNodeFreloc6kM_i_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cMincL_memNodeFreloc6kM_i_;
-text: .text%__1cRaddL_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cRaddL_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMincL_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cNcmovL_memNodeFreloc6kM_i_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%JVM_MaxMemory;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cOsalI_mem_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%JVM_Socket;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cKTypeOopPtrEmake6FnHTypePtrDPTR_i_pk0_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNGrowableArray4CpnIciMethod__Egrow6Mi_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_L_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cHoopDescLheader_size6F_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cNGrowableArray4CpnPJvmtiRawMonitor__Uclear_and_deallocate6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cIUniversePcheck_alignment6FLLpkc_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%Unsafe_PageSize;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_iipc_l_: os_solaris.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_;
-text: .text%__1cNExceptionBlob2n6FLI_pv_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNExceptionBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cQUncommonTrapBlob2n6FLI_pv_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQUncommonTrapBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cSDeoptimizationBlob2n6FLI_pv_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: cmsAdaptiveSizePolicy.o;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cCosZset_memory_serialize_page6FpC_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FL_L_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FL_L_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cMsubD_immNodeKconst_size6kM_i_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_;
-text: .text%__1cNcmovL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNSharedRuntimebBgenerate_class_cast_message6FpnKJavaThread_pkc_pc_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__L_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cJAssemblerDorq6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsarq6MpnMRegisterImpl__v_;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEshlq6MpnMRegisterImpl__v_;
-text: .text%__1cNStubGeneratorQgenerate_initial6M_v_;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_;
-text: .text%__1cNStubGeneratorMgenerate_all6M_v_;
-text: .text%__1cNStubGeneratorSgenerate_d2l_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_d2i_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_f2l_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_f2i_fixup6M_pC_;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cNStubGeneratorTgenerate_verify_oop6M_pC_;
-text: .text%__1cNStubGeneratorVgenerate_verify_mxcsr6M_pC_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_i486	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8395 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cQIndexSetIteratorEnext6M_I_: ifg.o;
-text: .text%__1cSPSPromotionManagerWcopy_to_survivor_space6MpnHoopDesc__2_;
-text: .text%__1cNinstanceKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: indexSet.o;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cJMarkSweepO_mark_and_push6FppnHoopDesc__v_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cIMachNodeNrematerialize6kM_i_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMOopTaskQdDueueKpop_global6MrpnHoopDesc__i_;
-text: .text%__1cPOopTaskQdDueueSetPsteal_best_of_26MipirpnHoopDesc__i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: live.o;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIIndexSetLalloc_block6M_pn0AIBitBlock__;
-text: .text%__1cHRegMaskFis_UP6kM_i_;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: ad_i486_misc.o;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cRMachSpillCopyNodeMis_SpillCopy6M_p0_: ad_i486.o;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIMachNodeJideal_reg6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: classes.o;
-text: .text%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_i486_misc.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: classes.o;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cENodeHis_Copy6kM_I_: classes.o;
-text: .text%__1cQObjectStartArrayMobject_start6MpnIHeapWord__2_: cardTableExtension.o;
-text: .text%__1cRMachSpillCopyNodeHis_Copy6kM_I_: ad_i486.o;
-text: .text%__1cNobjArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cENodeHis_Copy6kM_I_: ad_i486_misc.o;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_: loopnode.o;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: ad_i486_misc.o;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cNRelocIteratorEnext6M_i_: relocInfo.o;
-text: .text%__1cJeRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cUGenericGrowableArrayLraw_at_grow6MipknEGrET__pv_;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: ad_i486.o;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cJeRegPOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cIProjNodeHis_Proj6M_p0_;
-text: .text%__1cENodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopopts.o;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cMloadConINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPOopTaskQdDueueSetFsteal6MipirpnHoopDesc__i_;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopnode.o;
-text: .text%__1cMloadConINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cHPhiNodeGis_Phi6M_p0_: cfgnode.o;
-text: .text%__1cENodeGpinned6kM_i_: classes.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_i486.o;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_i486_misc.o;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: callnode.o;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: nmethod.o;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeNrematerialize6kM_i_: classes.o;
-text: .text%__1cJloadPNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIrc_class6FnHOptoRegEName__nCRC__: ad_i486.o;
-text: .text%__1cNMachIdealNodeErule6kM_I_: ad_i486.o;
-text: .text%__1cKjmpDirNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_: ad_i486.o;
-text: .text%__1cOlower_pressure6FpnDLRG_IpnFBlock_pI4_v_: ifg.o;
-text: .text%__1cMget_live_bit6Fpii_i_: buildOopMap.o;
-text: .text%__1cMPhaseChaitinLskip_copies6MpnENode__2_;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_i486_misc.o;
-text: .text%__1cINodeHashLhash_delete6MpknENode__i_;
-text: .text%__1cEDictGInsert6Mpv1i_1_;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cJMultiNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cHTypeIntCeq6kMpknEType__i_;
-text: .text%__1cENodeGis_CFG6kM_i_: cfgnode.o;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: ad_i486.o;
-text: .text%__1cETypeJtype_dict6F_pnEDict__;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: matcher.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: classes.o;
-text: .text%__1cFArenaIcontains6kMpkv_i_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cIProjNodeGis_CFG6kM_i_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: classes.o;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cJraw_score6Fdd_d_: chaitin.o;
-text: .text%__1cDLRGFscore6kM_d_;
-text: .text%__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_: markSweep.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: classes.o;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cIProjNodeGpinned6kM_i_;
-text: .text%__1cMloadConPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMPhaseChaitinKelide_copy6MpnENode_ipnFBlock_rnJNode_List_6i_i_;
-text: .text%__1cHNTarjanEEVAL6M_p0_;
-text: .text%__1cMloadConPNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: classes.o;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: coalesce.o;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMset_live_bit6Fpii_v_: buildOopMap.o;
-text: .text%__1cHCompileRvalid_bundle_info6MpknENode__i_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeHdel_out6Mp0_v_: phaseX.o;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_IrnJVectorSet__v_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_i486.o;
-text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_nHOptoRegEName__;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: oopMap.o;
-text: .text%__1cENodeHis_Copy6kM_I_: cfgnode.o;
-text: .text%__1cIMachNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cOtypeArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cMPhaseChaitinQis_high_pressure6MpnFBlock_pnDLRG_I_i_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cMPhaseChaitinKbias_color6MrnDLRG_i_nHOptoRegEName__;
-text: .text%__1cENodeMcisc_operand6kM_i_: classes.o;
-text: .text%__1cMOopTaskQdDueueOpop_local_slow6MInOTaskQdDueueSuperDAge__i_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: typeArrayKlass.o;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cETypeLisa_oop_ptr6kM_i_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_i486.o;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_i486.o;
-text: .text%__1cIMachNodeMcisc_operand6kM_i_: ad_i486.o;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_i486_misc.o;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cENodeHdel_out6Mp0_v_: graphKit.o;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_: dictionary.o;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cSPSPromotionManagerUflush_prefetch_queue6M_v_: psPromotionManager.o;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cETypeJsingleton6kM_i_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_: ad_i486.o;
-text: .text%__1cJleaP8NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJleaP8NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMclr_live_bit6Fpii_v_: buildOopMap.o;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_i486.o;
-text: .text%__1cIMachNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cJPhaseLiveGgetset6MpnFBlock__pnIIndexSet__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cJloadINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSis_single_register6FI_i_: postaloc.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: relocInfo.o;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: classes.o;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cECopyYconjoint_words_to_higher6FpnIHeapWord_2I_v_: node.o;
-text: .text%__1cHTypeIntJsingleton6kM_i_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_pnIIndexSet_rnJVectorSet__v_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: cfgnode.o;
-text: .text%__1cMMutableSpaceMcas_allocate6MI_pnIHeapWord__;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIciObjectGequals6Mp0_i_;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cKTypeOopPtrCeq6kMpknEType__i_;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cHTypePtrCeq6kMpknEType__i_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBlob.o;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cJeRegIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cLemit_opcode6FrnKCodeBuffer_i_v_;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cENodeNrematerialize6kM_i_: cfgnode.o;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_i486_misc.o;
-text: .text%__1cKup_one_dom6FpnENode__1_: ifnode.o;
-text: .text%__1cJMultiNodeIis_Multi6M_p0_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cJPhaseLiveKgetfreeset6M_pnIIndexSet__;
-text: .text%__1cHnmethodbHfollow_root_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_ppnHoopDesc_iri_v_;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: classes.o;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cFState2T6M_v_;
-text: .text%__1cIParmNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_i486_misc.o;
-text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2I_v_: node.o;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cHemit_rm6FrnKCodeBuffer_iii_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: typeArrayKlass.o;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cIMachNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: typeArrayKlass.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_I_: parallelScavengeHeap.o;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: cfgnode.o;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cHNTarjanELINK6Mp01_v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: node.o;
-text: .text%__1cLuse_dom_lca6FpnFBlock_pnENode_3rnLBlock_Array__1_: gcm.o;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cIIndexSetFclear6M_v_: live.o;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cJPhaseLiveHfreeset6MpknFBlock__v_;
-text: .text%__1cENodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cIBoolNodeHis_Bool6M_p0_: subnode.o;
-text: .text%__1cTleaPIdxScaleOffNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNPhaseRegAllocUreg2offset_unchecked6kMnHOptoRegEName__i_;
-text: .text%__1cNPhaseRegAllocKreg2offset6kMnHOptoRegEName__i_;
-text: .text%__1cTleaPIdxScaleOffNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachNode2t6M_v_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cFStateRMachOperGenerator6MipnIMachNode_pnHCompile__pnIMachOper__;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: classes.o;
-text: .text%__1cHdom_lca6FpnFBlock_1_1_: gcm.o;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cPClassFileParserOcheck_property6MipkcipnGThread__v_;
-text: .text%__1cKRegionNodeGpinned6kM_i_: classes.o;
-text: .text%__1cFMutexGunlock6M_v_;
-text: .text%__1cHPhiNodeGpinned6kM_i_: cfgnode.o;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_i486.o;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_i486.o;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cFStateDDFA6MipknENode__i_;
-text: .text%__1cFState2t6M_v_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: classes.o;
-text: .text%__1cKRelocationLunpack_data6M_v_: ad_i486.o;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cKjmpDirNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: cfgnode.o;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cENodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cOMethodLivenessKBasicBlockXcompute_gen_kill_single6MpnQciByteCodeStream__v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: callnode.o;
-text: .text%__1cICallNodeHis_Call6M_p0_: callnode.o;
-text: .text%__1cRMachSpillCopyNodeOimplementation6kMpnKCodeBuffer_pnNPhaseRegAlloc_i_I_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cHemit_d86FrnKCodeBuffer_i_v_;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cRMachSafePointNodeEjvms6kM_pnIJVMState__: ad_i486_misc.o;
-text: .text%__1cENodeFIdeal6MpnIPhaseGVN_i_p0_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfo.o;
-text: .text%__1cGIfNodeGpinned6kM_i_: classes.o;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: memnode.o;
-text: .text%__1cENodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: instanceKlass.o;
-text: .text%__1cNeFlagsRegOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: location.o;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: callnode.o;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: cfgnode.o;
-text: .text%__1cOis_diamond_phi6FpnENode__i_: cfgnode.o;
-text: .text%__1cHCompileMFillLocArray6MpnENode_pnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: ad_i486.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_i486.o;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cLTypeInstPtrCeq6kMpknEType__i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: memnode.o;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cLimpl_helper6FpnKCodeBuffer_iiiiipkci_i_: ad_i486.o;
-text: .text%__1cKTypeOopPtrJsingleton6kM_i_;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cKJavaThreadPcook_last_frame6MnFframe__1_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitHstopped6M_i_;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cGIfNodeFis_If6M_p0_: classes.o;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: callnode.o;
-text: .text%__1cFMutexElock6MpnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbAname_and_type_ref_index_at6Mi_i_;
-text: .text%__1cENodeSremove_dead_region6MpnIPhaseGVN_i_i_;
-text: .text%__1cKTypeOopPtrLxadd_offset6kMi_i_;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: coalesce.o;
-text: .text%__1cHMatcherKLabel_Root6MpknENode_pnFState_p16_6_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: callnode.o;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cFBlockLis_uncommon6kMrnLBlock_Array__i_;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_: relocInfo.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_i486_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: classes.o;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cSCallStaticJavaNodeEhash6kM_I_: callnode.o;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_i486_misc.o;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cIHaltNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: classes.o;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeIpeephole6MpnFBlock_ipnNPhaseRegAlloc_ri_p0_;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: cfgnode.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: cfgnode.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: classes.o;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cOmatch_into_reg6FpnENode_iii1_i_: matcher.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: reg_split.o;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfoRec.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_i486.o;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_i486.o;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cKTypeAryPtrCeq6kMpknEType__i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: callnode.o;
-text: .text%__1cOindOffset8OperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cPciObjectFactoryLis_found_at6MipnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cLTypeInstPtr2t6MnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cIimmIOperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: classes.o;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cETypeKhas_memory6kM_i_;
-text: .text%__1cNloadRangeNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLTypeInstPtrEmake6FnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_pk0_;
-text: .text%__1cKjmpConNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cJStartNodeGpinned6kM_i_: callnode.o;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeGis_CFG6kM_i_: connode.o;
-text: .text%__1cHMatcherKReduceOper6MpnFState_ipnIMachNode_rpnENode__v_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cRMachSpillCopyNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeVoopmapreg_to_location6kMnFVMRegEName_pknLRegisterMap__ppnHoopDesc__;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: instanceKlass.o;
-text: .text%__1cJTypeTupleJsingleton6kM_i_;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cKCodeBuffer2t6MiiiiiipnKBufferBlob_pnJrelocInfo_pnORelocateBuffer_ipnLOopRecorder_pkcii_v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cKCodeBufferQalloc_relocation6MI_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMachNodeJemit_size6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cHCmpNodeGis_Cmp6kM_pk0_: classes.o;
-text: .text%__1cFMutexElock6M_v_;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: instanceKlass.o;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cENodeRis_cisc_alternate6kM_i_: ad_i486.o;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNencode_RegMem6FrnKCodeBuffer_iiiiii_v_;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pnIciObject_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cENodeMcisc_operand6kM_i_: cfgnode.o;
-text: .text%__1cJeRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_: symbolTable.o;
-text: .text%__1cFframeUis_interpreted_frame6kM_i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: cfgnode.o;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cJMultiNodeEhash6kM_I_: classes.o;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cHCompileJcan_alias6MpknHTypePtr_i_i_;
-text: .text%__1cSPSPromotionManagerMdrain_stacks6M_v_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cLOptoRuntimeXdeoptimize_caller_frame6FpnKJavaThread_i_v_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cZPhaseConservativeCoalesceJcopy_copy6MpnENode_2pnFBlock_I_i_;
-text: .text%__1cENodeGis_CFG6kM_i_: subnode.o;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: classes.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: multnode.o;
-text: .text%__1cGTarjanEEVAL6M_p0_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cTconstantPoolOopDescSklass_ref_index_at6Mi_i_;
-text: .text%__1cOeFlagsRegUOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: classes.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: cfgnode.o;
-text: .text%__1cFBlockGselect6MrnJNode_List_rnLBlock_Array_pirnJVectorSet_IrnNGrowableArray4CI___pnENode__;
-text: .text%__1cKMachIfNodeJis_MachIf6kM_pk0_: ad_i486_misc.o;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nmethod.o;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: multnode.o;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_i486.o;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cENodeHget_int6kM_i_;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cHConNodeGis_Con6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferFreset6M_v_;
-text: .text%__1cENodeGis_Con6kM_I_: classes.o;
-text: .text%__1cGBitMapUclear_range_of_words6MII_v_: bitMap.o;
-text: .text%__1cGBitMapFclear6M_v_;
-text: .text%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_: split_if.o;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
-text: .text%__1cYDebugInformationRecorderLcheck_phase6Mn0AFPhase__v_;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__: cardTableExtension.o;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cMMachCallNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: oopMap.o;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cENodeHis_Copy6kM_I_: memnode.o;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
-text: .text%__1cUParallelScavengeHeapVunsafe_max_tlab_alloc6kM_I_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIMachNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: classes.o;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cENodeGpinned6kM_i_: connode.o;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: collectedHeap.o;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: sharedHeap.o;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cQciByteCodeStreamEjava6MnJBytecodesECode__2_;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cOindOffset8OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKjmpDirNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: subnode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: cfgnode.o;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: machnode.o;
-text: .text%__1cKjmpConNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cUGenericGrowableArray2t6Mii_v_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_: loopopts.o;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cHMatcherTReduceInst_Interior6MpnFState_ipnIMachNode_IrpnENode__I_;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_i486.o;
-text: .text%__1cIAddPNodeHis_AddP6M_p0_: classes.o;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_i486.o;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cJloadSNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJPSPermGenSallocate_permanent6MI_pnIHeapWord__;
-text: .text%__1cMMutableSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6MI_pnIHeapWord__;
-text: .text%__1cHCompileRprobe_alias_cache6MpknHTypePtr__pn0APAliasCacheEntry__;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cIMachNodeNoperand_index6kMI_i_;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: multnode.o;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cIMachNodeGExpand6MpnFState_rnJNode_List__p0_: ad_i486_misc.o;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cENodeOis_block_start6kM_i_;
-text: .text%__1cPciInstanceKlassMis_interface6M_i_: ciInstanceKlass.o;
-text: .text%__1cJeRegLOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cHPhiNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKjmpConNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cLjmpConUNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cGBitMap2t6MpII_v_;
-text: .text%__1cLOptoRuntimeFnew_C6FpnMklassOopDesc_pnKJavaThread__v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: classes.o;
-text: .text%__1cKis_x2logic6FpnIPhaseGVN_pnENode__3_: cfgnode.o;
-text: .text%__1cHAbsNodeLis_absolute6FpnIPhaseGVN_pnENode__4_;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cLPhaseValuesGintcon6Mi_pnIConINode__;
-text: .text%__1cHCompilePfind_alias_type6MpknHTypePtr_i_pn0AJAliasType__;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cJloadLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: block.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: parse1.o;
-text: .text%__1cMMachCallNodeLis_MachCall6M_p0_: ad_i486_misc.o;
-text: .text%__1cNSafePointNodebBneeds_polling_address_input6F_i_;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cIMachNodeKconst_size6kM_i_: ad_i486.o;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cPjava_lang_ClassMis_primitive6FpnHoopDesc__i_;
-text: .text%__1cIMachNodeFreloc6kM_i_: ad_i486.o;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherQis_save_on_entry6Mi_i_;
-text: .text%__1cLBoxLockNodeNrematerialize6kM_i_: classes.o;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cOindOffset8OperFscale6kM_i_: ad_i486.o;
-text: .text%__1cNloadConI0NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIIndexSetSpopulate_free_list6F_v_;
-text: .text%__1cLPCTableNodeGpinned6kM_i_: classes.o;
-text: .text%__1cNnew_loc_value6FpnNPhaseRegAlloc_nHOptoRegEName_nILocationEType__pnNLocationValue__: output.o;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUGenericGrowableArray2t6MpnFArena_iipnEGrET__v_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: cfgnode.o;
-text: .text%__1cENodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cKutf8_write6FpCH_0_: utf8.o;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOis_range_check6FpnENode_r12ri_i_: ifnode.o;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: methodDataOop.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: multnode.o;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
-text: .text%__1cMciMethodDataHdata_at6Mi_pnLProfileData__;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_i486_misc.o;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cSloadL_volatileNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cGOopMapbEmap_compiler_reg_to_oopmap_reg6MnHOptoRegEName_ii_nFVMRegEName__;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cGOopMapHset_xxx6MnHOptoRegEName_nLOopMapValueJoop_types_ii2_v_;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cENodeHdel_out6Mp0_v_: coalesce.o;
-text: .text%__1cGBitMapGat_put6MIi_v_;
-text: .text%__1cJloadBNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: parse2.o;
-text: .text%__1cHMatcherTcollect_null_checks6MpnENode__v_;
-text: .text%__1cNloadConI0NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHMemNodeMIdeal_common6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cITypeLongCeq6kMpknEType__i_;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRMachSafePointNodeQis_MachSafePoint6M_p0_: ad_i486_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlockIload_one6Mi_v_;
-text: .text%__1cNSafePointNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: ad_i486_misc.o;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: classes.o;
-text: .text%__1cIemit_d326FrnKCodeBuffer_i_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cIJVMStateNclone_shallow6kM_p0_;
-text: .text%__1cNloadConI0NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: subnode.o;
-text: .text%__1cIMachNodeFreloc6kM_i_: ad_i486_misc.o;
-text: .text%__1cFciEnvIis_in_vm6F_i_;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
-text: .text%__1cHTypePtrLmeet_offset6kMi_i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: connode.o;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFChunk2t6MI_v_;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cKciTypeFlowLStateVectorSapply_one_bytecode6MpnQciByteCodeStream__i_;
-text: .text%__1cGOopMapJset_value6MnHOptoRegEName_ii_v_;
-text: .text%__1cIMachOperLdisp_is_oop6kM_i_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cOcompU_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cIIndexSetFclear6M_v_: indexSet.o;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cETypeFempty6kM_i_;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cJTypeTupleCeq6kMpknEType__i_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: split_if.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: memnode.o;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cFMutexbClock_without_safepoint_check6M_v_;
-text: .text%__1cPSignatureStreamHis_done6kM_i_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIBoolTestKcc2logical6kMpknEType__3_;
-text: .text%__1cIAddPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cQCompressedStream2t6MpCi_v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: multnode.o;
-text: .text%__1cJeRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cUParallelScavengeHeapPis_in_permanent6kMpkv_i_: parallelScavengeHeap.o;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__: ad_i486.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: loopopts.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: cfgnode.o;
-text: .text%__1cKBranchDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cENodeGis_CFG6kM_i_: memnode.o;
-text: .text%__1cKjmpDirNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cFBlockUneeded_for_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlass.o;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMemNodeGis_Mem6M_p0_: classes.o;
-text: .text%__1cMPhaseIterGVNbGregister_new_node_with_optimizer6MpnENode__2_;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cNPhaseRegAllocGis_oop6kMpknENode__i_;
-text: .text%__1cGIfNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: classes.o;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cKjmpDirNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cJdo_method6FpnNmethodOopDesc__v_: recompilationMonitor.o;
-text: .text%__1cZload_can_see_stored_value6FpnILoadNode_pnENode_pnOPhaseTransform__3_: memnode.o;
-text: .text%__1cFframeGsender6kMpnLRegisterMap_pnICodeBlob__0_;
-text: .text%__1cNtestP_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLrecord_bias6FpknIPhaseIFG_ii_v_: coalesce.o;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cKNativeCallLdestination6kM_pC_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6FnTinstanceKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: memnode.o;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cSCallStaticJavaNodeRis_CallStaticJava6kM_pk0_: callnode.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cUPSMarkSweepDecoratorQinsert_deadspace6MripnIHeapWord_I_i_;
-text: .text%__1cMMergeMemNodeLis_MergeMem6M_p0_: memnode.o;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: methodOop.o;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
-text: .text%__1cLjmpConUNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cOno_flip_branch6FpnFBlock__i_: block.o;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cKRelocationJpack_data6M_i_: ad_i486.o;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cNmethodOopDescLis_accessor6kM_i_;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cNeFlagsRegOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cQciByteCodeStreamMreset_to_bci6Mi_v_;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: lcm.o;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: machnode.o;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cENodeHis_Goto6kM_I_: classes.o;
-text: .text%__1cILoadNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceKlass.o;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: relocInfo.o;
-text: .text%__1cJloadPNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cMPhaseIterGVNFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cLis_cond_add6FpnIPhaseGVN_pnHPhiNode__pnENode__;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: classes.o;
-text: .text%__1cKRegionNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: memnode.o;
-text: .text%__1cFMutexNowned_by_self6kM_i_;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrirpknHTypePtr__pknENode__;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIIndexSetFclear6M_v_: chaitin.o;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockOschedule_local6MrnHMatcher_rnLBlock_Array_pirnJVectorSet_rnNGrowableArray4CI___i_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cLBlock_StackXmost_frequent_successor6MpnFBlock__I_;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: symbolKlass.o;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cENodeGpinned6kM_i_: subnode.o;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGTarjanELINK6Mp01_v_;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cENodeGis_Con6kM_I_: cfgnode.o;
-text: .text%__1cMciMethodDataJnext_data6MpnLProfileData__2_;
-text: .text%__1cENodeGpinned6kM_i_: memnode.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: subnode.o;
-text: .text%__1cIBoolNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cOcompU_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cNRelocIteratorKinitialize6MipnICodeBlob_pC3_v_;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_: symbolKlass.o;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: parse1.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_i486.o;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cIGraphKitEstop6M_v_;
-text: .text%__1cTremove_useless_bool6FpnGIfNode_pnIPhaseGVN__pnENode__: ifnode.o;
-text: .text%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cJeRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: subnode.o;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: systemDictionary.o;
-text: .text%__1cMloadConLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cILoadNodeHis_Load6M_p0_: classes.o;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cKjmpConNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_irknQRelocationHolder_i_v_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cOcompI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLjmpConUNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_i486_clone.o;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOindOffset8OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOindOffset8OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOindOffset8OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cHRegMaskQis_aligned_Pairs6kM_i_;
-text: .text%__1cMloadConLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompU_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cHSubNodeGis_Sub6M_p0_: classes.o;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cYCallStaticJavaDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNeFlagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
-text: .text%__1cIregDOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cSInterpreterRuntimeLcache_entry6FpnKJavaThread__pnWConstantPoolCacheEntry__: interpreterRuntime.o;
-text: .text%__1cJStoreNodeIis_Store6kM_pk0_: classes.o;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cHi2sNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNtestI_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cJloadPNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPimpl_mov_helper6FpnKCodeBuffer_iiii_i_: ad_i486.o;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cKjmpDirNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cKTypeRawPtrJsingleton6kM_i_;
-text: .text%__1cMloadConDNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConDNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cMPhaseChaitinJsplit_USE6MpnENode_pnFBlock_2IIiinNGrowableArray4CI__i_I_;
-text: .text%__1cMloadConDNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cXindIndexScaleOffsetOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cGOopMapHset_oop6MnHOptoRegEName_ii_v_;
-text: .text%__1cHMatcherXadjust_outgoing_stk_arg6MinHOptoRegEName_r2_2_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cJeRegLOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cLRegisterMapFclear6Mpi_v_;
-text: .text%__1cNtestI_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFframeOis_first_frame6kM_i_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: cfgnode.o;
-text: .text%__1cENodeMcisc_operand6kM_i_: memnode.o;
-text: .text%__1cNtestP_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cHTypeAryRary_must_be_exact6kM_i_;
-text: .text%__1cRMachNullCheckNodeQis_MachNullCheck6M_p0_: machnode.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: callnode.o;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cOcompU_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: reg_split.o;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
-text: .text%__1cHTypeIntFempty6kM_i_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJchar2type6Fc_nJBasicType__: fieldType.o;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmethodOopDescMintrinsic_id6kM_n0ALIntrinsicId__;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: subnode.o;
-text: .text%__1cITypeNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cFciEnvXget_klass_by_index_impl6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cMgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHOopFlowNcompute_reach6MpnNPhaseRegAlloc_ipnEDict__v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cLOptoRuntimePnew_typeArray_C6FnJBasicType_ipnKJavaThread__v_;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: multnode.o;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cUGenericGrowableArrayPraw_at_put_grow6MipknEGrET_3_v_;
-text: .text%__1cMMergeMemNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cOcompU_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: codeBlob.o;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKjmpDirNodeHis_Goto6kM_I_: ad_i486_misc.o;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeHdel_out6Mp0_v_: split_if.o;
-text: .text%__1cLMachNopNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLPhaseValuesFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: connode.o;
-text: .text%__1cOcompU_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNloadKlassNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cICallNodeLis_CallLeaf6kM_pknMCallLeafNode__: callnode.o;
-text: .text%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cKmethodOperGmethod6kM_i_: ad_i486.o;
-text: .text%__1cWConstantPoolCacheEntryRset_initial_state6Mi_v_;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_: loopTransform.o;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: methodDataOop.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: methodDataOop.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: classes.o;
-text: .text%__1cOindOffset8OperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cOcompI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNaddI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
-text: .text%__1cRmethodDataOopDescRcompute_data_size6FpnOBytecodeStream__i_;
-text: .text%__1cMMergeMemNodeQclone_all_memory6FpnENode__p0_;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: multnode.o;
-text: .text%__1cGOopMapQset_callee_saved6MnHOptoRegEName_ii2_v_;
-text: .text%__1cOPhaseIdealLoopIsplit_up6MpnENode_22_i_;
-text: .text%__1cKTypeOopPtrWmake_from_klass_common6FpnHciKlass_ii_pk0_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: postaloc.o;
-text: .text%__1cOcompU_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: subnode.o;
-text: .text%__1cNtestI_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cIJumpDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: symbolKlass.o;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: symbolKlass.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: symbolKlass.o;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: machnode.o;
-text: .text%__1cHRegMaskPfind_first_pair6kM_nHOptoRegEName__;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRMachSafePointNodeRis_safepoint_node6kM_i_: ad_i486_misc.o;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: classes.o;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cOeFlagsRegUOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: cfgnode.o;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPClassFileParserbLparse_constant_pool_nameandtype_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cYCallStaticJavaDirectNodeSalignment_required6kM_i_: ad_i486_misc.o;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNtestP_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: memnode.o;
-text: .text%__1cKstorePNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOindOffset8OperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cXindIndexScaleOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRaddI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKstoreINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: memnode.o;
-text: .text%__1cOcompI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_: loopnode.o;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQciByteCodeStreamFEOBCs6M_nJBytecodesECode__;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cNsubI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cPVirtualCallDataPadjust_pointers6M_v_;
-text: .text%__1cPVirtualCallDataPfollow_contents6M_v_;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__i_;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: machnode.o;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cENodeHis_Copy6kM_I_: machnode.o;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cRCompilationPolicyNcanBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: multnode.o;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJlabelOperFclone6kM_pnIMachOper__;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cNCatchProjNodeMis_CatchProj6kM_pk0_: cfgnode.o;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cNtestI_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: subnode.o;
-text: .text%__1cKTypeOopPtrHget_con6kM_i_;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMUniverseOperFclone6kM_pnIMachOper__;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: multnode.o;
-text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cKRegionNodeHhas_phi6kM_pnHPhiNode__;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIciMethodbCinterpreter_invocation_count6M_i_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cOcompI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cRshrI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cFframeQoops_do_internal6MpnKOopClosure_pnLRegisterMap_i_v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cOeFlagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLjmpConUNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cJVectorSetEgrow6MI_v_;
-text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciByteCodeStream__v_;
-text: .text%__1cHnmethodJis_zombie6kM_i_: nmethod.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: gcm.o;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserbJparse_constant_pool_methodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: connode.o;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cLeAXRegPOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: gcm.o;
-text: .text%__1cETypeOget_const_type6FpnGciType__pk0_;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cITypeLong2t6Mxxi_v_;
-text: .text%__1cKCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQciByteCodeStreamPget_field_index6M_i_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: memnode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: memnode.o;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cJloadINodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: methodOop.o;
-text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cKjmpConNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cMPhaseChaitinVmay_be_copy_of_callee6kMpnENode__i_;
-text: .text%__1cXroundDouble_mem_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cIPhaseCCPFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cFParseKensure_phi6Mii_pnHPhiNode__;
-text: .text%__1cJloadFNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: postaloc.o;
-text: .text%__1cOMachReturnNodeNis_MachReturn6M_p0_: ad_i486_misc.o;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_i486.o;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cQPreserveJVMState2t6MpnIGraphKit_i_v_;
-text: .text%__1cNtestP_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_: spaceCounters.o;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cFciEnvSget_klass_by_index6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cLcastP2INodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrHget_con6kM_i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: callnode.o;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerMemit_operand6MpnMRegisterImpl_22nHAddressLScaleFactor_irknQRelocationHolder__v_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cNloadRangeNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cLPhaseValuesHmakecon6MpknEType__pnHConNode__;
-text: .text%__1cOcompI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIciMethodPliveness_at_bci6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessPget_liveness_at6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessKBasicBlockPget_liveness_at6MpnIciMethod_i_nGBitMap__;
-text: .text%__1cPSignatureStream2t6MnMsymbolHandle_i_v_;
-text: .text%__1cITypeLongJsingleton6kM_i_;
-text: .text%__1cOcompI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMii_pnGOopMap__;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpCi_pnGOopMap__;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: ciMethodData.o;
-text: .text%__1cHnmethodKis_nmethod6kM_i_: nmethod.o;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cLCastP2INodeGOpcode6kM_i_;
-text: .text%__1cKCodeBufferOadd_stub_reloc6MpCrknQRelocationHolder_i_v_;
-text: .text%__1cKCodeBufferOalloc_relocate6M_pnORelocateBuffer__;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: subnode.o;
-text: .text%__1cKjmpDirNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHTypePtrJsingleton6kM_i_;
-text: .text%__1cJAssemblerEcall6MpCnJrelocInfoJrelocType__v_;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cIGraphKitObasic_plus_adr6MpnENode_2i_2_;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIimmPOperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshrI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMPhaseIterGVNHmakecon6MpknEType__pnHConNode__;
-text: .text%__1cMTypeKlassPtrCeq6kMpknEType__i_;
-text: .text%__1cRaddI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cWShouldNotReachHereNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryLis_resolved6kMnJBytecodesECode__i_: interpreterRuntime.o;
-text: .text%__1cWConstantPoolCacheEntryIas_flags6MnITosState_iiiii_i_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cQMachCallJavaNodePis_MachCallJava6M_p0_: ad_i486_misc.o;
-text: .text%__1cWShouldNotReachHereNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJimmI0OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cNloadConI0NodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cHMatcherWis_short_branch_offset6Mi_i_;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cITypeFuncCeq6kMpknEType__i_;
-text: .text%__1cNSafePointNode2t6MIpnIJVMState__v_;
-text: .text%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
-text: .text%__1cHcommute6FpnENode_ii_i_: addnode.o;
-text: .text%__1cJeRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: cfgnode.o;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cHAddNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_i486.o;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKjmpDirNodeFclone6kM_pnENode__;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
-text: .text%__1cOCallRelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCi_v_;
-text: .text%__1cOCallRelocationPset_destination6MpCi_v_;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__: ad_i486.o;
-text: .text%__1cIHaltNodeGpinned6kM_i_: classes.o;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cYCallStaticJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cJStartNodeGpinned6kM_i_: classes.o;
-text: .text%__1cMTypeKlassPtr2t6MnHTypePtrDPTR_pnHciKlass_i_v_;
-text: .text%__1cJloadPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cJStoreNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQciByteCodeStreamQget_method_index6M_i_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cICallNodeHis_Call6M_p0_: classes.o;
-text: .text%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
-text: .text%__1cNaddI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
-text: .text%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
-text: .text%__1cNaddI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeQlatency_from_use6kMrnLBlock_Array_rnNGrowableArray4CI__pk0p0_i_;
-text: .text%__1cMPhaseChaitinKprompt_use6MpnFBlock_I_i_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2ipnGThread__v_;
-text: .text%__1cOkill_dead_code6FpnENode_pnMPhaseIterGVN__i_: node.o;
-text: .text%__1cFParsePload_state_from6Mpn0AFBlock__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cNloadConI0NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJStartNodeIis_Start6M_p0_: callnode.o;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cIAddINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cNsubI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: codeBlob.o;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
-text: .text%__1cNloadRangeNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFBlockUhoist_LCA_above_defs6Mp01IrnLBlock_Array__1_;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cIciMethodLscale_count6Mi_i_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cHMonitorKnotify_all6M_i_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cOCallRelocationFvalue6M_pC_: ad_i486.o;
-text: .text%__1cNtestP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cScompP_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: classes.o;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cENodeHis_Type6M_pnITypeNode__: classes.o;
-text: .text%__1cNmethodOopDescPis_final_method6kM_i_;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitRnull_check_common6MpnENode_nJBasicType_i_2_;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: constMethodKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: constMethodKlass.o;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cKoopFactoryPnew_constMethod6FiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cPClassFileParserMparse_method6MnSconstantPoolHandle_ipnLAccessFlags_pnPtypeArrayHandle_55pnGThread__nMmethodHandle__;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cLklassVtableWneeds_new_vtable_entry6FpnNmethodOopDesc_pnMklassOopDesc_pnHoopDesc_pnNsymbolOopDesc_nLAccessFlags__i_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: methodKlass.o;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: methodKlass.o;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: methodKlass.o;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cOcompU_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cKciTypeFlowGJsrSetJcopy_into6Mp1_v_;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cILoadNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
-text: .text%__1cPClassFileParserbDverify_legal_method_modifiers6MiinMsymbolHandle_pnGThread__v_;
-text: .text%__1cJloadINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cQleaPIdxScaleNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKTypeOopPtrFempty6kM_i_;
-text: .text%__1cJleaP8NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%JVM_CurrentThread;
-text: .text%__1cPindOffset32OperFscale6kM_i_: ad_i486.o;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cRInlineCacheBufferIcontains6FpC_i_;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
-text: .text%__1cHOopFlowEmake6FpnFArena_i_p0_;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cMMergeMemNodeNgrow_to_match6Mpk0_v_;
-text: .text%__1cVeADXRegL_low_onlyOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cVloadConL_low_onlyNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQleaPIdxScaleNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cVloadConL_low_onlyNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNMachIdealNodePoper_input_base6kM_I_: machnode.o;
-text: .text%__1cNSharedRuntimeDf2i6Ff_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cVloadConL_low_onlyNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cRaddI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cRRawBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cMMergeMemNodeRmake_empty_memory6F_pnENode__;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: callnode.o;
-text: .text%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cQciByteCodeStreamJget_field6Mri_pnHciField__;
-text: .text%__1cKBlock_ListGremove6MI_v_;
-text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2I_v_: block.o;
-text: .text%__1cXvirtual_call_RelocationIparse_ic6FrpnICodeBlob_rpC5rppnHoopDesc_pi_nNRelocIterator__;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: connode.o;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_virtual_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cKCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNstoreImmBNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHOopFlowFclone6Mp0i_v_;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cMPhaseChaitinJsplit_DEF6MpnENode_pnFBlock_iIp25nNGrowableArray4CI__i_I_;
-text: .text%__1cNGCTaskManagerNresource_flag6MI_i_;
-text: .text%__1cNGCTaskManagerYshould_release_resources6MI_i_;
-text: .text%__1cNtestP_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cFStateM_sub_Op_Bool6MpknENode__v_;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cRcmpFastUnlockNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: subnode.o;
-text: .text%__1cKciTypeFlowNmake_range_at6Mi_pn0AFRange__;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKjmpDirNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNaddI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: subnode.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: subnode.o;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cbFCompressedLineNumberWriteStream2t6Mi_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cPClassFileParserWparse_linenumber_table6MIIpipnGThread__pC_;
-text: .text%__1cNsubI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cMWarmCallInfoHis_cold6kM_i_;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cJleaP8NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParseFBlockJinit_node6Mp0i_v_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cGBitMapVset_union_with_result6M0_i_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cNtestI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cLcastP2INodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadKlassNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: callnode.o;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cNincI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKjmpConNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: graphKit.o;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cScompI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Goto6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: memnode.o;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cScompI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: subnode.o;
-text: .text%__1cHTypePtrLdual_offset6kM_i_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cGGCTaskKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerWdecrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cNGCTaskManagerWincrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueHdequeue6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cNsubI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNtestI_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFframeZsender_for_compiled_frame6kMpnLRegisterMap_pnICodeBlob_i_0_;
-text: .text%__1cPClassFileParserbFparse_constant_pool_class_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNstoreImmPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cICodeBlobLlink_offset6M_i_;
-text: .text%__1cFParseFBlockMrecord_state6Mp0_v_;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cJCatchNodeIis_Catch6kM_pk0_: classes.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: addnode.o;
-text: .text%__1cOMethodLivenessKBasicBlockMmerge_normal6MnGBitMap__i_;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserZskip_over_field_signature6MpciIpnGThread__1_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: callnode.o;
-text: .text%__1cIGraphKitTadd_safepoint_edges6MpnNSafePointNode_i_v_;
-text: .text%__1cIJVMStateKclone_deep6kM_p0_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cSvframeStreamCommonbBfill_from_interpreter_frame6M_v_;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_iipnGThread__v_;
-text: .text%__1cNaddI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cICmpPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cKBufferBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cOMacroAssemblerZneeds_explicit_null_check6Fi_i_;
-text: .text%__1cNstoreImmBNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cETypeFwiden6kMpk0_2_: type.o;
-text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cRsalI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQleaPIdxScaleNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cFframeNis_java_frame6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: callnode.o;
-text: .text%__1cJloadCNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSafePointNodeEhash6kM_I_: callnode.o;
-text: .text%__1cMnabxRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowIblock_at6Mipn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cKciTypeFlowFRangeNget_block_for6Mpn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cLjmpConUNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNaddI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTCreateExceptionNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cUGenericGrowableArrayMraw_contains6kMpknEGrET__i_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cIMachNodeMcisc_operand6kM_i_: machnode.o;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cRcmpFastUnlockNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowLStateVector2t6Mp0_v_;
-text: .text%__1cOMethodLivenessNwork_list_get6M_pn0AKBasicBlock__;
-text: .text%__1cIIndexSetFclear6M_v_: coalesce.o;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cNmethodOopDescWwas_executed_more_than6kMi_i_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: machnode.o;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cICmpINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cHCompileKTracePhase2t6MpkcpnMelapsedTimer_i_v_;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cKciTypeFlowFBlockPis_simpler_than6Mp1_i_;
-text: .text%__1cRshrI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cQciByteCodeStreamKget_method6Mri_pnIciMethod__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cQleaPIdxScaleNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cXindIndexScaleOffsetOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cKciTypeFlowLStateVectorEmeet6Mpk1_i_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cRMachSafePointNode2t6M_v_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cQleaPIdxScaleNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOcompI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHemit_cc6FrnKCodeBuffer_ii_v_;
-text: .text%__1cJloadLNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cNincI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopHdom_lca6kMpnENode_2_2_;
-text: .text%__1cHMatcherScalling_convention6FpnLRegPair_Ii_v_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cQindOffset32XOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cICallNodeOis_CallRuntime6kM_pknPCallRuntimeNode__: callnode.o;
-text: .text%__1cXinsert_anti_dependences6FrpnFBlock_pnENode_rnLBlock_Array__i_: gcm.o;
-text: .text%__1cIimmLOperJconstantL6kM_x_: ad_i486_clone.o;
-text: .text%__1cWflagsReg_long_LTGEOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: lcm.o;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cHMatcherVReduceInst_Chain_Rule6MpnFState_ipnIMachNode_rpnENode__v_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cICodeBlobTfix_oop_relocations6MpC1_v_;
-text: .text%__1cICodeBlobTfix_oop_relocations6M_v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cFframeToops_interpreted_do6MpnKOopClosure_pknLRegisterMap_i_v_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cHMatcherPc_frame_pointer6kM_nHOptoRegEName__;
-text: .text%__1cMMachCallNode2t6M_v_;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHTypeIntEmake6Fii_pk0_;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cNsubI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
-text: .text%__1cNsubI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIGraphKitbLset_predefined_input_for_runtime_call6MpnNSafePointNode__v_;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cLcastP2INodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: ciStreams.o;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cScompP_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cOcompU_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNstoreImmPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRcmpFastUnlockNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: connode.o;
-text: .text%__1cPindOffset32OperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: frame.o;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodIis_alive6kM_i_: nmethod.o;
-text: .text%__1cPClassFileParserbGparse_constant_pool_string_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNloadConI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: connode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: connode.o;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cNincI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: callnode.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: memnode.o;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMorI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MiipnGOopMap__v_;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MiipnGOopMap__v_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcI_v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cIciMethodRhas_compiled_code6M_i_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cICallInfoDset6MnLKlassHandle_nMmethodHandle_pnGThread__v_;
-text: .text%__1cKstoreCNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cRMachSafePointNodeSis_MachCallRuntime6M_pnTMachCallRuntimeNode__: ad_i486_misc.o;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_: nmethod.o;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cITypeLongEmake6Fx_pk0_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: ciTypeFlow.o;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cRMachSafePointNodePis_MachCallLeaf6M_pnQMachCallLeafNode__: ad_i486_misc.o;
-text: .text%__1cRMachSafePointNodeLset_oop_map6MpnGOopMap__v_: ad_i486_misc.o;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MiipnGOopMap__v_;
-text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cENodeGis_Con6kM_I_: callnode.o;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: classes.o;
-text: .text%__1cOoop_RelocationJpack_data6M_i_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: cfgnode.o;
-text: .text%__1cMCallJavaNodeLis_CallJava6kM_pk0_: callnode.o;
-text: .text%__1cICallNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_ipnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachOperIconstant6kM_i_;
-text: .text%__1cRaddI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cWMachCallStaticJavaNodeVis_MachCallStaticJava6M_p0_: ad_i486_misc.o;
-text: .text%__1cFStateW_sub_Op_CallStaticJava6MpknENode__v_;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNdecI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: parse3.o;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadKlassNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJleaP8NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKRelocationLunpack_data6M_v_: codeBlob.o;
-text: .text%__1cJimmI8OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cRMachSafePointNodeWis_MachCallInterpreter6M_pnXMachCallInterpreterNode__: ad_i486_misc.o;
-text: .text%__1cLPhaseValuesHzerocon6MnJBasicType__pnHConNode__;
-text: .text%__1cScompI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: classes.o;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: cpCacheOop.o;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cKInlineTreeJcallee_at6kMipnIciMethod__p0_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: thread.o;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOleaPIdxOffNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJCodeCacheIcontains6Fpv_i_;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMkpnNmethodOopDesc_i_pnHnmethod__;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%__1cYCallStaticJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorJcopy_into6kMp1_v_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadCNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowFBlockKsuccessors6MpnQciByteCodeStream_pn0ALStateVector_pn0AGJsrSet__pnNGrowableArray4Cp1___;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowOwork_list_next6M_pn0AFBlock__;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cJOopMapSetGall_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure_pFppnHoopDesc_9E_v9B9B_v_;
-text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cIGraphKitNuncommon_trap6MipnHciKlass_pkci_v_;
-text: .text%__1cJOopMapSetHoops_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cIGraphKitJmake_load6MpnENode_2pknEType_nJBasicType_i_2_;
-text: .text%__1cILoadNodeEmake6FpnENode_22pknHTypePtr_pknEType_nJBasicType__p0_;
-text: .text%__1cOleaPIdxOffNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cMindirectOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cKciTypeFlowFBlock2t6Mp0pn0AFRange_pn0AGJsrSet__v_;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cScompU_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: psTasks.o;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cIimmPOperPconstant_is_oop6kM_i_: ad_i486_clone.o;
-text: .text%__1cLanyRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cLanyRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOMethodLivenessNwork_list_add6Mpn0AKBasicBlock__v_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParsePdo_field_access6Mii_v_;
-text: .text%__1cPCountedLoopNodeOis_CountedLoop6M_p0_: classes.o;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitQset_saved_ex_oop6FpnNSafePointNode_pnENode__v_;
-text: .text%__1cKciTypeFlowPflow_successors6MpnNGrowableArray4Cpn0AFBlock___pn0ALStateVector__v_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cLcastP2INodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRshrI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cHnmethodKcopy_pc_at6MipnGPcDesc__v_;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cNdecI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFTypeDCeq6kMpknEType__i_;
-text: .text%__1cSindIndexOffsetOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessNmake_block_at6Mipn0AKBasicBlock__2_;
-text: .text%__1cENodeHis_Goto6kM_I_: cfgnode.o;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cNloadConL0NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
-text: .text%__1cLLShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRsalI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLnaxRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cFParseFBlockNlocal_type_at6kMi_pknEType__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodKlass.o;
-text: .text%__1cXjava_lang_ref_ReferenceNreferent_addr6FpnHoopDesc__p2_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: connode.o;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: loopnode.o;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cNaddI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: methodLiveness.o;
-text: .text%__1cNloadConL0NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cPshlI_eReg_1NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMCreateExNodeGpinned6kM_i_: classes.o;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cRindIndexScaleOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cNloadConL0NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cHi2sNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRindIndexScaleOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMPhaseChaitinTsplit_Rematerialize6MpnENode_pnFBlock_IrInNGrowableArray4CI__ipIp2i_2_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: ad_i486_misc.o;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cHCompileZintrinsic_insertion_index6MpnIciMethod_i_i_;
-text: .text%__1cNstoreImmBNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: loopnode.o;
-text: .text%__1cRandI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKstoreINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciType.o;
-text: .text%__1cTleaPIdxScaleOffNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: codeBlob.o;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cScompU_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHCompilebAallow_range_check_smearing6kM_i_;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmodI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLjmpConUNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJeRegIOperFclone6kM_pnIMachOper__;
-text: .text%__1cQciByteCodeStreamZget_declared_field_holder6M_pnPciInstanceKlass__;
-text: .text%__1cQciByteCodeStreamWget_field_holder_index6M_i_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: classes.o;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cNdecI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLOptoRuntimeOnew_objArray_C6FpnMklassOopDesc_ipnKJavaThread__v_;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_ipnGThread__pnHoopDesc__;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKReturnNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cMLinkResolverbNlinktime_resolve_virtual_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cNmethodOopDescbHhas_unloaded_classes_in_signature6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cPindOffset32OperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cPindOffset32OperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cQmark_inner_loops6FpnIPhaseCFG_pnFBlock__v_: block.o;
-text: .text%__1cPindOffset32OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cPindOffset32OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cPindOffset32OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_i_v_;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadSNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cKjmpConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: memnode.o;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
-text: .text%__1cPDictionaryEntrybAcontains_protection_domain6kMpnHoopDesc__i_;
-text: .text%__1cNPhaseRegAllocKoffset2reg6kMi_nHOptoRegEName__;
-text: .text%__1cFParseRensure_memory_phi6Mii_pnHPhiNode__;
-text: .text%__1cHTypeAryCeq6kMpknEType__i_;
-text: .text%__1cMorI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadRangeNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: memnode.o;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cTStackWalkCompPolicyRcompilation_level6MnMmethodHandle_i_i_;
-text: .text%__1cIMachNodeTmay_be_short_branch6kM_i_: ad_i486_misc.o;
-text: .text%__1cKRegionNodeGpinned6kM_i_: loopnode.o;
-text: .text%__1cJloadINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKBranchDataNis_BranchData6M_i_: ciMethodData.o;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIJumpDataLis_JumpData6M_i_: ciMethodData.o;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: frame.o;
-text: .text%__1cJxRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cNsubI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOcompI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJcmpOpOperFccode6kM_i_: ad_i486_clone.o;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cENodeHdel_out6Mp0_v_: ifnode.o;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cKjmpDirNodeOis_pc_relative6kM_i_: ad_i486_misc.o;
-text: .text%__1cKjmpDirNodeTmay_be_short_branch6kM_i_: ad_i486_misc.o;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFParseKdo_get_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cScompP_mem_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cJleaP8NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRaddI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cRshrI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciByteCodeStream_pn0ALStateVector__v_;
-text: .text%__1cPClassFileParserWparse_field_attributes6MnSconstantPoolHandle_iHpHpi2pnPtypeArrayHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_modifiers6MiipnGThread__v_;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNchunk_oops_do6FpnKOopClosure_pnFChunk_pc_I_: handles.o;
-text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
-text: .text%__1cQjava_lang_StringMbasic_create6FpnQtypeArrayOopDesc_ipnGThread__nGHandle__;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cUParallelScavengeHeapNtlab_capacity6kM_I_;
-text: .text%__1cKjmpConNodeOis_pc_relative6kM_i_: ad_i486_misc.o;
-text: .text%__1cKjmpConNodeTmay_be_short_branch6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: connode.o;
-text: .text%__1cPshlI_eReg_1NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: machnode.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: machnode.o;
-text: .text%__1cHi2sNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: memnode.o;
-text: .text%__1cENodeRis_cisc_alternate6kM_i_: machnode.o;
-text: .text%__1cICallNodeSis_CallDynamicJava6kM_pknTCallDynamicJavaNode__: callnode.o;
-text: .text%__1cKTypeRawPtrHget_con6kM_i_;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: machnode.o;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserbIparse_constant_pool_fieldref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cScompU_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cQindOffset32XOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRandI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cMWarmCallInfoGis_hot6kM_i_;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cMPhaseChaitinKFind_const6kMI_I_;
-text: .text%__1cMPhaseChaitinKFind_const6kMpknENode__I_;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopTransform.o;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cKRelocationJpack_data6M_i_: relocInfo.o;
-text: .text%__1cKCodeBufferMstart_a_stub6M_v_;
-text: .text%__1cKCodeBufferKend_a_stub6M_v_;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cFParseUprofile_taken_branch6Mi_v_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cTleaPIdxScaleOffNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFframeNis_glue_frame6kM_i_;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cXjava_lang_ref_ReferenceJnext_addr6FpnHoopDesc__p2_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: machnode.o;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cScompU_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: methodDataOop.o;
-text: .text%__1cXjava_lang_ref_ReferencePdiscovered_addr6FpnHoopDesc__p2_;
-text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTleaPIdxScaleOffNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cPcheckCastPPNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_Halt6MpknENode__v_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWflagsReg_long_EQdDNEOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cWThreadLocalAllocBufferImax_size6F_I_;
-text: .text%__1cWThreadLocalAllocBufferFclear6M_v_;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cTStackWalkCompPolicyIsenderOf6MpnGRFrame_pnNGrowableArray4C2___2_;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cFframeTis_first_java_frame6kM_i_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cGRFrameMset_distance6Mi_v_;
-text: .text%__1cGRFrameKnew_RFrame6FnFframe_pnKJavaThread_kp0_4_;
-text: .text%__1cHConNodeEmake6FpknEType__p0_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlassKlass.o;
-text: .text%__1cWThreadLocalAllocBufferVaccumulate_statistics6MIi_v_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIGraphKitOtoo_many_traps6MnODeoptimizationLDeoptReason__i_;
-text: .text%__1cWflagsReg_long_LEGTOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cQindOffset32XOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cUThreadSafepointStateMroll_forward6Mn0AMsuspend_type_pnHnmethod_i_v_;
-text: .text%__1cGThreadQunboost_priority6Fp0_v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cIGraphKitTtoo_many_recompiles6MnODeoptimizationLDeoptReason__i_;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cLcastP2INodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cScompP_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cPcmpFastLockNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompP_mem_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cXcmpL_reg_flags_LTGENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: relocInfo.o;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cHCompileOcall_generator6MpnIciMethod_ipnIJVMState_if_pnNCallGenerator__;
-text: .text%__1cNciCallProfileRapply_prof_factor6Mf_v_;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cHCompileOfind_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: multnode.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: compile.o;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: codeBlob.o;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_kpnGRFrame__v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__v_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cXindIndexScaleOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cXindIndexScaleOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cXindIndexScaleOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cNCatchProjNode2t6MpnENode_Ii_v_;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: ciMethodData.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: cfgnode.o;
-text: .text%__1cQciByteCodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseZcan_not_compile_call_site6MpnIciMethod_pnPciInstanceKlass__i_;
-text: .text%__1cQciByteCodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cKstorePNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
-text: .text%__1cSindIndexOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMeADXRegLOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cKciTypeFlowLStateVectorJdo_invoke6MpnQciByteCodeStream_i_v_;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cNstoreImmPNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLPCTableNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cLPCTableNodeKis_PCTable6kM_pk0_: classes.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: cfgnode.o;
-text: .text%__1cJStartNodeIis_Start6M_p0_: classes.o;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cXindIndexScaleOffsetOperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKDataLayoutKinitialize6MCHi_v_;
-text: .text%__1cKDataLayoutPneeds_array_len6FC_i_;
-text: .text%__1cScompP_mem_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNincI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cSCompareAndSwapNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRAbstractAssemblerHbind_to6MrnFLabel_i_v_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
-text: .text%__1cMnabxRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: ad_i486_misc.o;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cPstoreImmI16NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cXcmpL_reg_flags_LTGENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNloadConI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNtestI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitNcast_not_null6MpnENode__2_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: nmethod.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopnode.o;
-text: .text%__1cJleaP8NodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cKGCStatInfoMset_gc_usage6MinLMemoryUsage_i_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cGRFrameLis_compiled6kM_i_: rframe.o;
-text: .text%__1cRInterpretedRFrameOis_interpreted6kM_i_: rframe.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: callnode.o;
-text: .text%__1cRsalI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cENodeHdel_out6Mp0_v_: callnode.o;
-text: .text%__1cISubINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cMDisplacementEbind6MrnFLabel_ipnRAbstractAssembler__v_;
-text: .text%__1cTStackWalkCompPolicyMshouldInline6FnMmethodHandle_fi_pkc_;
-text: .text%__1cTconstantPoolOopDescMklass_at_put6MipnMklassOopDesc__v_: constantPoolOop.o;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cIciMethodOshould_exclude6M_i_;
-text: .text%__1cKInlineTreeWfind_subtree_from_root6Fp0pnIJVMState_pnIciMethod_i_1_;
-text: .text%__1cIciMethodNshould_inline6M_i_;
-text: .text%__1cKInlineTreeMshouldInline6kMpnIciMethod_irnNciCallProfile_pnMWarmCallInfo__pkc_;
-text: .text%__1cTpass_initial_checks6FpnIciMethod_i1_i_;
-text: .text%__1cOCompilerOracleNshould_inline6FnMmethodHandle__i_;
-text: .text%__1cIciMethodbAinterpreter_throwout_count6kM_i_;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cKInlineTreeNtry_to_inline6MpnIciMethod_irnNciCallProfile_pnMWarmCallInfo__pkc_;
-text: .text%__1cVExceptionHandlerTableJadd_entry6MnRHandlerTableEntry__v_;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRaddI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTCreateExceptionNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOjmpLoopEndNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
-text: .text%__1cLRethrowNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cFStateM_sub_Op_CmpP6MpknENode__v_;
-text: .text%__1cMorI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cIciMethodWwas_executed_more_than6Mi_i_;
-text: .text%__1cRshrI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConINodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cKstoreLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMonitorEwait6Mil_i_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cScompP_mem_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cPcmpFastLockNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLnaxRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNCompileBrokerYcheck_compilation_result6FnMmethodHandle_iippnHnmethod__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlass.o;
-text: .text%__1cJloadCNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
-text: .text%__1cbAjni_check_async_exceptions6FpnKJavaThread__v_: jni.o;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cLeDXRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%__1cQjmpCon_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjmpCon_shortNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cIGraphKitZset_all_rewritable_memory6MpnENode__v_;
-text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKjmpDirNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cKjmpDirNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cKjmpDirNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cScompI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
-text: .text%__1cRaddI_eReg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJFieldTypeYis_valid_array_signature6FpnNsymbolOopDesc__i_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cJloadCNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMeADXRegLOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cFParseRbranch_prediction6Mrf_f_;
-text: .text%__1cRandI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLeAXRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLeAXRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cPshlI_eReg_1NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorMdo_getstatic6MpnQciByteCodeStream__v_;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cNCompileBrokerXcompilation_is_in_queue6FnMmethodHandle_i_i_;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_x_;
-text: .text%__1cRindIndexScaleOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cNaddI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_: methodKlass.o;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: loopnode.o;
-text: .text%__1cJxRegIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: loopnode.o;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cHciKlassNis_subtype_of6Mp0_i_;
-text: .text%__1cNtestP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cENodeHdel_out6Mp0_v_: loopTransform.o;
-text: .text%__1cQleaPIdxScaleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cNloadConI0NodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cHTypeAryFempty6kM_i_;
-text: .text%__1cKTypeAryPtrFempty6kM_i_;
-text: .text%__1cCosFsleep6FpnGThread_xi_i_;
-text: .text%__1cNgetTimeMillis6F_x_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: scopeDesc.o;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cENodeRlatency_from_uses6kMrnLBlock_Array_rnNGrowableArray4CI___i_;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cCosOis_interrupted6FpnGThread_i_i_;
-text: .text%__1cNaddI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cNloadKlassNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cNmethodOopDescWload_signature_classes6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cNCompileBrokerTcompile_method_base6FnMmethodHandle_ii1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cITypeLongFempty6kM_i_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cJloadSNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodKlass.o;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmulL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJStoreNodeEmake6FpnENode_22pknHTypePtr_2nJBasicType__p0_;
-text: .text%__1cIGraphKitPstore_to_memory6MpnENode_22nJBasicType_i_2_;
-text: .text%__1cHi2sNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cLcastP2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompP_mem_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNincI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdecI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cQPSGenerationPoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cQPSGenerationPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cFParseYprofile_not_taken_branch6M_v_;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: parse2.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: cfgnode.o;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cKInlineTreePshouldNotInline6kMpnIciMethod_pnMWarmCallInfo__pkc_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cNandL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cKciTypeFlowIcan_trap6MrnQciByteCodeStream__i_;
-text: .text%__1cNxorI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cZload_long_indOffset32OperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKjmpConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKjmpConNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cMLinkResolverbElinktime_resolve_static_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cLencode_Copy6FrnKCodeBuffer_ii_v_;
-text: .text%__1cQjmpDir_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjmpDir_shortNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cLjmpConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: machnode.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: machnode.o;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cMorI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMorI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cUmembar_cpu_orderNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cFParseFdo_if6MpnENode_2nIBoolTestEmask_2_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: ciMethodData.o;
-text: .text%__1cLBoxLockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJxRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cIConINodeHget_int6kMpi_i_: classes.o;
-text: .text%__1cIciMethodbHhas_unloaded_classes_in_signature6M_i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cJloadCNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNsubI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%__1cRis_error_reported6F_i_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_I_: thread.o;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2I_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cOoop_RelocationHoops_do6MpFppnHoopDesc__v_v_;
-text: .text%__1cKBufferBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSdivD_reg_roundNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQleaPIdxScaleNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cKMemoryPoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cRresolve_and_patch6FppnHoopDesc__v_;
-text: .text%__1cMorI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cIregFOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerFpushl6MpnMRegisterImpl__v_;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_I_: jvm.o;
-text: .text%__1cPstoreImmI16NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cKciTypeFlowLStateVectorLdo_getfield6MpnQciByteCodeStream__v_;
-text: .text%__1cFParseMvisit_blocks6M_v_;
-text: .text%__1cNsubI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
-text: .text%__1cRsalI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2I_reg_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowGJsrSetSis_compatible_with6Mp1_i_;
-text: .text%__1cOcompU_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cXcmpL_reg_flags_LTGENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: classes.o;
-text: .text%__1cJcmpOpOperGnegate6M_v_: ad_i486_clone.o;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%__1cKMemBarNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKjmpConNodeGnegate6M_v_: ad_i486_misc.o;
-text: .text%__1cFMutexMjvm_raw_lock6M_v_;
-text: .text%__1cFMutexOjvm_raw_unlock6M_v_;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cXmembar_release_lockNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cITypeLongEmake6Fxx_pk0_;
-text: .text%__1cNaddL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_i486_clone.o;
-text: .text%__1cPClassFileParserUskip_over_field_name6MpciI_1_;
-text: .text%__1cLjmpConUNodeOis_pc_relative6kM_i_: ad_i486_misc.o;
-text: .text%__1cLjmpConUNodeTmay_be_short_branch6kM_i_: ad_i486_misc.o;
-text: .text%__1cNstoreImmPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cETypeCeq6kMpk0_i_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cRaddI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLeCXRegIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cMMonitorValue2t6MpnKScopeValue_nILocation__v_;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cLBoxLockNodeKis_BoxLock6kM_pk0_: classes.o;
-text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__nHOptoRegEName__;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cFParseRoptimize_inlining6MpnIciMethod_ipnPciInstanceKlass_24irnKInlineTreeLInlineStyle_r2_v_;
-text: .text%__1cQimprove_receiver6FpnPciInstanceKlass_pknLTypeInstPtr_ri_1_;
-text: .text%__1cJloadPNodeFreloc6kM_i_;
-text: .text%__1cQStackFrameStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseSmerge_memory_edges6MpnMMergeMemNode_ii_v_;
-text: .text%__1cJloadBNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cFBlockTimplicit_null_check6MrnLBlock_Array_rnNGrowableArray4CI__pnENode_6_v_;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmulL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRaddI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: loopnode.o;
-text: .text%__1cRsarI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: loopnode.o;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cLCastP2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIciMethodLis_accessor6kM_i_;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cPsarI_eReg_1NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cXindIndexScaleOffsetOperOindex_position6kM_i_: ad_i486.o;
-text: .text%__1cXindIndexScaleOffsetOperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cZload_long_indOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompU_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: memnode.o;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cRinterpretedVFrameDbcp6kM_pC_;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cMCallLeafNodeLis_CallLeaf6kM_pk0_: classes.o;
-text: .text%__1cJAssemblerEpopl6MpnMRegisterImpl__v_;
-text: .text%__1cKStoreCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: loopnode.o;
-text: .text%__1cPsarI_eReg_1NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cZload_long_indOffset32OperFscale6kM_i_: ad_i486.o;
-text: .text%__1cIciMethodVhas_balanced_monitors6M_i_;
-text: .text%__1cFArenaEused6kM_I_;
-text: .text%__1cFParseNdo_all_blocks6M_v_;
-text: .text%__1cOParseGeneratorJcan_parse6FpnIciMethod_i_i_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFParseLinit_blocks6M_v_;
-text: .text%__1cIciMethodPcan_be_compiled6M_i_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cTStackWalkCompPolicyPshouldNotInline6FnMmethodHandle__pkc_;
-text: .text%__1cRaddI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTcompareAndSwapLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cHi2sNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIget_long6kM_x_;
-text: .text%__1cQciByteCodeStreamSget_constant_index6kM_i_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmBNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: cfgnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: cfgnode.o;
-text: .text%__1cNdecI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompU_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNstoreImmINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pi_;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__i_;
-text: .text%__1cRruntime_type_from6FpnJJavaValue__nJBasicType__: javaCalls.o;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cUGenericGrowableArrayEgrow6Mi_v_;
-text: .text%__1cSCallLeafDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowFBlockPclone_loop_head6Mp0ip1pn0AGJsrSet__3_;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cNxorI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHMatcherPstack_alignment6F_I_;
-text: .text%__1cKInlineTree2t6MpnHCompile_pk0pnIciMethod_pnIJVMState_if_v_;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cMURShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLeSIRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cQSystemDictionaryVadd_loader_constraint6FnMsymbolHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableJadd_entry6MnMsymbolHandle_pnMklassOopDesc_nGHandle_34pnGThread__i_;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSloadL_volatileNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cQindOffset32XOperLdisp_is_oop6kM_i_: ad_i486.o;
-text: .text%__1cQindOffset32XOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cQindOffset32XOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cQindOffset32XOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodDataKlass.o;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKInlineTreeYcompute_callee_frequency6kMi_f_;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cKInlineTreebCbuild_inline_tree_for_callee6MpnIciMethod_pnIJVMState_i_p0_;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJGC_lockerNlock_critical6FpnKJavaThread__v_: jni.o;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cRindIndexScaleOperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: loopnode.o;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cXmembar_release_lockNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHnmethodbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cLklassVtableKis_miranda6FpnNmethodOopDesc_pnPobjArrayOopDesc_pnMklassOopDesc__i_;
-text: .text%__1cENodeHdel_out6Mp0_v_: library_call.o;
-text: .text%__1cRandI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cPshlI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlass.o;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cJAssemblerHcmpxchg6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cHnmethodPis_locked_by_vm6kM_i_: nmethod.o;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cOjmpLoopEndNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: ad_i486.o;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__: vm_operations.o;
-text: .text%__1cRsalI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHnmethodLis_unloaded6kM_i_: nmethod.o;
-text: .text%__1cIimmDOperJconstantD6kM_d_: ad_i486_clone.o;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2I_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompU_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompU_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMrep_stosNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJStartNodeOis_block_start6kM_i_: callnode.o;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_: cpCacheOop.o;
-text: .text%__1cWConstantPoolCacheEntryLis_resolved6kMnJBytecodesECode__i_: cpCacheOop.o;
-text: .text%__1cOMethodLivenessKBasicBlockIload_two6Mi_v_;
-text: .text%__1cIGraphKitMarray_length6MpnENode__2_;
-text: .text%__1cJloadCNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNincI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cMindirectOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLsymbolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cLPCTableNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cLRShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJcmpOpOperFclone6kM_pnIMachOper__;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cJStartNodeOis_block_start6kM_i_: classes.o;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cNeFlagsRegOperFclone6kM_pnIMachOper__;
-text: .text%__1cMMachCallNodeHis_Call6M_pnICallNode__: ad_i486_misc.o;
-text: .text%__1cKTypeRawPtrCeq6kMpknEType__i_;
-text: .text%__1cFStateQ_sub_Op_CreateEx6MpknENode__v_;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cLjmpConUNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cLjmpConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLjmpConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cIGraphKitRmake_slow_call_ex6MpnENode_pnPciInstanceKlass__v_;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: symbolKlass.o;
-text: .text%__1cPconvL2I_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLmethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%__1cZload_long_indOffset32OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cZload_long_indOffset32OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cZload_long_indOffset32OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHMemNodeScalculate_adr_type6FpknEType_pknHTypePtr__6_;
-text: .text%__1cHMatcherXadjust_incoming_stk_arg6MnHOptoRegEName__2_;
-text: .text%__1cFStateM_sub_Op_CmpU6MpknENode__v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQindOffset32XOperMdisp_as_type6kM_pknHTypePtr__: ad_i486.o;
-text: .text%__1cQindOffset32XOperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cQindOffset32XOperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cNstoreImmBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTcompareAndSwapLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLlog2_intptr6Fi_i_: mulnode.o;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cScompP_mem_eRegNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cHMulNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRaddI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cKjavaVFrameNis_java_frame6kM_i_: vframe.o;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cRMachSafePointNodeLis_MachCall6M_pnMMachCallNode__: ad_i486_misc.o;
-text: .text%__1cKStoreBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNandL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: methodDataOop.o;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cENodeHget_int6kMpi_i_;
-text: .text%__1cOcompI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
-text: .text%__1cYSurvivorMutableSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cTleaPIdxScaleOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJcmpOpOperFequal6kM_i_: ad_i486_clone.o;
-text: .text%__1cMorI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cKRegionNodeOhas_unique_phi6kM_pnHPhiNode__;
-text: .text%__1cNnegI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRsarI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPsarI_eReg_1NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPshrI_eReg_1NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cQVMOperationQdDueueLqueue_empty6Mi_i_;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cVExceptionHandlerTableMadd_subtable6MipnNGrowableArray4Ci__2_v_;
-text: .text%__1cQLibraryIntrinsicKis_virtual6kM_i_: library_call.o;
-text: .text%__1cScompP_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNxorI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cUCompressedReadStreamMraw_read_int6FrpC_i_: vframe.o;
-text: .text%__1cRMachSafePointNodePis_MachCallJava6M_pnQMachCallJavaNode__: ad_i486_misc.o;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: classes.o;
-text: .text%__1cIimmIOperFclone6kM_pnIMachOper__;
-text: .text%__1cJleaP8NodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cMloadConINodeFclone6kM_pnENode__;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cRaddL_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cNmulL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQinit_input_masks6FIrnHRegMask_1_p0_: matcher.o;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cNIdealLoopTreeObeautify_loops6MpnOPhaseIdealLoop__i_;
-text: .text%__1cOjmpLoopEndNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cMrep_stosNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cFStateO_sub_Op_StoreP6MpknENode__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: phaseX.o;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: callnode.o;
-text: .text%__1cPshlI_eReg_1NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cSindIndexOffsetOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: cfgnode.o;
-text: .text%__1cNaddL_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cMMutableSpaceFclear6M_v_;
-text: .text%__1cQjmpCon_shortNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjmpCon_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cQjmpCon_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpConNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cPshrI_eReg_1NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cYmulI_imm_RShift_highNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPstoreImmI16NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cUParallelScavengeHeapMmem_allocate6MIii_pnIHeapWord__;
-text: .text%__1cNstoreImmBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cIGraphKitXset_edges_for_java_call6MpnMCallJavaNode_i_v_;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cIVerifierRshould_verify_for6FpnHoopDesc__i_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_: ad_i486_clone.o;
-text: .text%__1cLjmpConUNodeGnegate6M_v_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: loopnode.o;
-text: .text%__1cRandI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNnegI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
-text: .text%__1cOstackSlotDOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNandL_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cJleaP8NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
-text: .text%__1cENodeGis_Sub6M_pnHSubNode__: classes.o;
-text: .text%__1cTcompareAndSwapLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompU_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cScompU_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompU_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cYmulI_imm_RShift_highNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNinstanceKlassbCfind_local_field_from_offset6kMiipnPfieldDescriptor__i_;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cJLoadSNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%JVM_IsInterface;
-text: .text%__1cNinstanceKlassWfind_field_from_offset6kMiipnPfieldDescriptor__i_;
-text: .text%__1cPciInstanceKlassTget_field_by_offset6Mii_pnHciField__;
-text: .text%__1cFStateM_sub_Op_RegL6MpknENode__v_;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cRshrI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cScompP_mem_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadSNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cXconvI2L_reg_reg_zexNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cRsalI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJimmI0OperFclone6kM_pnIMachOper__;
-text: .text%__1cNloadConI0NodeFclone6kM_pnENode__;
-text: .text%__1cWflagsReg_long_LTGEOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cQciByteCodeStreamMget_constant6M_nKciConstant__;
-text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cRMachNullCheckNode2t6MpnENode_2I_v_;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_: machnode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: machnode.o;
-text: .text%__1cXconvI2L_reg_reg_zexNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cEhash6Fpkc1_I_;
-text: .text%__1cQput_after_lookup6FnMsymbolHandle_0ppnLNameSigHash__i_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cLeCXRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cScompI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLCastP2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cUreloc_java_to_interp6F_I_;
-text: .text%__1cTsize_java_to_interp6F_I_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompU_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeRis_safepoint_node6kM_i_: ad_i486_misc.o;
-text: .text%__1cQciByteCodeStreamPget_klass_index6M_i_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cMnadxRegIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cJCHAResultOis_monomorphic6kM_i_;
-text: .text%__1cJCHAResult2t6MnLKlassHandle_nMsymbolHandle_2pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___n0E_i_v_;
-text: .text%__1cIciMethodXfind_monomorphic_target6MpnHciKlass_22_p0_;
-text: .text%__1cDCHAManalyze_call6FnLKlassHandle_11nMsymbolHandle_2_pnJCHAResult__;
-text: .text%__1cRaddL_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKMemBarNode2t6M_v_;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cKMemBarNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMloadConFNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_I_;
-text: .text%__1cNSafepointBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_;
-text: .text%__1cbCCompiledCodeSafepointHandlerYcaller_must_gc_arguments6kM_i_: safepoint.o;
-text: .text%__1cUThreadSafepointStateYcaller_must_gc_arguments6kM_i_;
-text: .text%__1cWstatic_stub_RelocationJpack_data6M_i_;
-text: .text%__1cMloadConFNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSReferenceProcessorOprocess_phase36MppnHoopDesc_ipnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__v_;
-text: .text%__1cSReferenceProcessorOprocess_phase26MppnHoopDesc_pnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorbAprocess_discovered_reflist6MppnHoopDesc_pnPReferencePolicy_i_v_;
-text: .text%__1cSReferenceProcessorbAenqueue_discovered_reflist6MpnHoopDesc_p2_v_;
-text: .text%__1cNandL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cMnegF_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cQjmpDir_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKjmpDirNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cQjmpDir_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cQjmpDir_shortNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConFNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKMemBarNodeJis_MemBar6kM_pk0_: classes.o;
-text: .text%__1cIMachNodeKconst_size6kM_i_: machnode.o;
-text: .text%__1cIMachNodeFreloc6kM_i_: machnode.o;
-text: .text%__1cIMachNodeTmay_be_short_branch6kM_i_: machnode.o;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cIGraphKitOinsert_mem_bar6MpnKMemBarNode__v_;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%__1cNCallGeneratorCtf6kM_pknITypeFunc__;
-text: .text%__1cNCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cLOptoRuntimebCcomplete_monitor_unlocking_C6FpnHoopDesc_pnJBasicLock__v_;
-text: .text%__1cITypeNodeHis_Type6M_p0_: classes.o;
-text: .text%__1cNdecI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: chaitin.o;
-text: .text%__1cYmulI_imm_RShift_highNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cICodeBlobRis_at_poll_return6MpC_i_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTleaPIdxScaleOffNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNGCTaskManagerRset_resource_flag6MIi_v_;
-text: .text%__1cScompI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cNmulL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMeADXRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQleaPIdxScaleNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cXcopy_u2_with_conversion6FpH0i_v_: classFileParser.o;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_;
-text: .text%__1cSvframeStreamCommonbHskip_method_invoke_and_aux_frames6M_v_;
-text: .text%__1cIGraphKitbMset_predefined_output_for_runtime_call6MpnENode_pnMMergeMemNode__v_;
-text: .text%__1cNminI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cJloadLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: parse1.o;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
-text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cNaddL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMrep_stosNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cZCallInterpreterDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: methodDataOop.o;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQciByteCodeStreamJget_klass6Mri_pnHciKlass__;
-text: .text%__1cNandL_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNandL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHi2sNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMjniIdSupportNto_method_oop6FpnK_jmethodID__pnNmethodOopDesc__;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: callnode.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: callnode.o;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cPCheckCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cXcmpL_reg_flags_LEGTNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: loopnode.o;
-text: .text%__1cSloadL_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: live.o;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cMPhaseChaitinQgather_lrg_masks6Mi_v_;
-text: .text%__1cRjmpConU_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRjmpConU_shortNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cVmerge_point_too_heavy6FpnHCompile_pnENode__i_: loopopts.o;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: loopnode.o;
-text: .text%__1cNandI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cPsarI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_acquire_lockNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKstoreBNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXconvI2L_reg_reg_zexNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: connode.o;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: oopFactory.o;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: oopFactory.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: oopFactory.o;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cOleaPIdxOffNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cPshlI_eReg_1NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPClassFileParserbHparse_constant_pool_integer_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerFpushl6Mi_v_;
-text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: reg_split.o;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKklassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNxorI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNxorI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHMatcherMreturn_value6Fii_nLRegPair__;
-text: .text%__1cNinstanceKlassScopy_static_fields6MpnSPSPromotionManager__v_;
-text: .text%__1cSinstanceKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cbACallCompiledJavaDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRandI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsafePoint_pollNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSloadL_volatileNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cLcastP2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: frame.o;
-text: .text%__1cFStateR_sub_Op_LoadRange6MpknENode__v_;
-text: .text%__1cOcompU_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cIMachNodeTmay_be_short_branch6kM_i_: ad_i486.o;
-text: .text%__1cRsarI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cNnmethodLocker2T6M_v_;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLCastP2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIGraphKitSclear_saved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cKstoreINodeFreloc6kM_i_;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
-text: .text%__1cNaddL_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNaddL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitOmake_slow_call6MpknITypeFunc_pCpkcpnENode_88_8_;
-text: .text%__1cPcheckCastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUGenericGrowableArray2t6MiipnEGrET_i_v_;
-text: .text%__1cSReferenceProcessorSdiscover_reference6MpnHoopDesc_nNReferenceType__i_;
-text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
-text: .text%__1cNnegI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cKciTypeFlowLfind_ranges6M_v_;
-text: .text%__1cKciTypeFlowXmark_known_range_starts6M_v_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cXjava_lang_ref_ReferenceIset_next6FpnHoopDesc_2_v_;
-text: .text%__1cOeFlagsRegUOperFclone6kM_pnIMachOper__;
-text: .text%__1cSReferenceProcessorTget_discovered_list6MnNReferenceType__ppnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cNsubL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMorI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: multnode.o;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cLConvI2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNIdealLoopTreeNDCE_loop_body6M_v_;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cKstoreCNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cLeAXRegIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cFParseKdo_put_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cPmethodDataKlassRoop_is_methodData6kM_i_: methodDataKlass.o;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodDataKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: methodDataKlass.o;
-text: .text%__1cTcompareAndSwapLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOLibraryCallKitOgenerate_guard6MpnENode_pnKRegionNode_f_v_;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKJNIHandlesLmake_global6FnGHandle_i_pnI_jobject__;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: jvm.o;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cWflagsReg_long_LTGEOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNloadRangeNodeFreloc6kM_i_;
-text: .text%__1cFParseNpush_constant6MnKciConstant__i_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: classes.o;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cNaddL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: objArrayKlass.o;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse2.o;
-text: .text%__1cNminI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOcompP_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cLProfileDataSis_VirtualCallData6M_i_: ciMethodData.o;
-text: .text%__1cJScopeDescGis_top6kM_i_;
-text: .text%__1cMorI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOjmpLoopEndNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKTypeRawPtrFempty6kM_i_;
-text: .text%__1cTCallInterpreterNodeGOpcode6kM_i_;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cScompI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRxorI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cXmembar_acquire_lockNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNPrefetchQdDueueFclear6M_v_: psPromotionManager.o;
-text: .text%__1cSPSPromotionManagerFreset6M_v_;
-text: .text%__1cXconvI2L_reg_reg_zexNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cSPSPromotionManagerKflush_labs6M_v_;
-text: .text%__1cRaddI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cIAndINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIregDOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cSCompareAndSwapNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cLRuntimeStubIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cIciObjectMis_obj_array6M_i_: ciInstanceKlass.o;
-text: .text%__1cFciEnvZcheck_klass_accessibility6MpnHciKlass_pnMklassOopDesc__i_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cHciKlassMis_interface6M_i_: ciObjArrayKlass.o;
-text: .text%__1cNtestP_regNodeFreloc6kM_i_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cOleaPIdxOffNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPconvL2I_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHCompilePneed_stack_bang6kMi_i_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cNsubI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSmembar_acquireNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHRetNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cNobjArrayKlassPoop_is_objArray6kM_i_: objArrayKlass.o;
-text: .text%__1cHRetNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKimmL32OperJconstantL6kM_x_: ad_i486_clone.o;
-text: .text%__1cRindIndexScaleOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cRindIndexScaleOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRindIndexScaleOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cQleaPIdxScaleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cRxorI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_two6Mi_v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cJloadINodeIpeephole6MpnFBlock_ipnNPhaseRegAlloc_ri_pnIMachNode__;
-text: .text%__1cJloadINodeFreloc6kM_i_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOleaPIdxOffNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cJloadBNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cTleaPIdxScaleOffNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cYmulI_imm_RShift_highNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNxorI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: klass.o;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: klass.o;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: klass.o;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: classes.o;
-text: .text%__1cQPlaceholderTableJnew_entry6MipnNsymbolOopDesc_pnHoopDesc__pnQPlaceholderEntry__;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cOMachEpilogNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopnode.o;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: loopnode.o;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopnode.o;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cPsarI_eReg_1NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cHnmethodKpc_desc_at6MpCi_pnGPcDesc__;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cPindOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cPconvI2D_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNIdealLoopTreeTcheck_inner_safepts6MpnOPhaseIdealLoop__v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: assembler_i486.o;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cRaddI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNIdealLoopTreeUiteration_split_impl6MpnOPhaseIdealLoop_rnJNode_List__v_;
-text: .text%__1cNIdealLoopTreeOpolicy_peeling6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreebBpolicy_do_remove_empty_loop6MpnOPhaseIdealLoop__i_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%JVM_InternString;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cNget_next_hash6F_i_: synchronizer.o;
-text: .text%__1cPshrI_eReg_1NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cUimpl_fp_store_helper6FpnKCodeBuffer_iiiiiii_i_: ad_i486.o;
-text: .text%__1cVloadConL_low_onlyNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cXmembar_release_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOMacroAssemblerJincrement6MpnMRegisterImpl_i_v_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeHdel_out6Mp0_v_: callGenerator.o;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cPclear_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cWflagsReg_long_LEGTOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cEDictIdoubhash6M_v_;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cRcmpOp_commuteOperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cScompU_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSshrL_eReg_1_31NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPCountedLoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRMachSafePointNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cUmembar_cpu_orderNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cNmodI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMMutableSpaceKinitialize6MnJMemRegion_i_v_;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cENodeHis_Copy6kM_I_: ad_i486.o;
-text: .text%__1cKstorePNodeFreloc6kM_i_;
-text: .text%__1cNincI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cNcmovI_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: dictionary.o;
-text: .text%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cVloadConL_low_onlyNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPstoreImmI16NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: instanceKlass.o;
-text: .text%__1cWflagsReg_long_EQdDNEOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cRandI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cTGeneratePairingInfoRpossible_gc_point6MpnOBytecodeStream__i_: ciMethod.o;
-text: .text%__1cJLoadBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
-text: .text%__1cNmodI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRshrI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOGenerateOopMapOset_bbmark_bit6Mi_v_;
-text: .text%__1cIGraphKitOhas_ex_handler6M_i_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cRaddI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRsubI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cPRoundDoubleNodeGOpcode6kM_i_;
-text: .text%__1cRsarI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICallNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: doCall.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: connode.o;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSshlL_eReg_1_31NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cLregFPR1OperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cQinstanceRefKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cLeDIRegPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cLregFPR1OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSmembar_acquireNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitRmerge_fast_memory6MpnENode_2i_v_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cSCompareAndSwapNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cSindIndexOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cSindIndexOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cSindIndexOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cNstoreImmBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIGraphKitOmake_merge_mem6MpnENode_22_v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cOcompP_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cSmembar_releaseNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: classes.o;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cFframeRis_compiled_frame6kMpi_i_;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: thread.o;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__I_;
-text: .text%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNmethodOopDescMsort_methods6FpnPobjArrayOopDesc_222_v_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cIVerifierQrelax_verify_for6FpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cSinstanceKlassKlassXallocate_instance_klass6MiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cLklassVtablebKcompute_vtable_size_and_num_mirandas6Fri1pnMklassOopDesc_pnPobjArrayOopDesc_nLAccessFlags_pnHoopDesc_pnNsymbolOopDesc_5_v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: constantPoolKlass.o;
-text: .text%__1cVjava_lang_ClassLoaderRis_trusted_loader6FpnHoopDesc__i_;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserNparse_methods6MnSconstantPoolHandle_ipnLAccessFlags_ppnPobjArrayOopDesc_66pnGThread__nOobjArrayHandle__;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: constantPoolKlass.o;
-text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cPClassFileParserNfill_oop_maps6MnTinstanceKlassHandle_ii_v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserMparse_fields6MnSconstantPoolHandle_ipnUFieldAllocationCount_pnOobjArrayHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: constantPoolKlass.o;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserQparse_interfaces6MnSconstantPoolHandle_nGHandle_2pnGThread__nOobjArrayHandle__;
-text: .text%__1cPClassFileParserOparseClassFile6MnMsymbolHandle_nGHandle_2r1pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cLloadSSFNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cSindIndexOffsetOperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cFVTuneOend_class_load6F_v_;
-text: .text%__1cFVTuneQstart_class_load6F_v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: loopnode.o;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cHMatcherNfind_receiver6Fi_nFVMRegEName__;
-text: .text%__1cNnegI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: generateOptoStub.o;
-text: .text%__1cRsubI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNandI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cILoopNode2t6MpnENode_2_v_;
-text: .text%__1cVeADXRegL_low_onlyOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cENodeGis_Con6kM_I_: memnode.o;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: debugInfo.o;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_: classLoader.o;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cTMachCallRuntimeNodeSis_MachCallRuntime6M_p0_: ad_i486_misc.o;
-text: .text%__1cMloadConPNodeFreloc6kM_i_;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: cpCacheKlass.o;
-text: .text%__1cNinstanceKlassLverify_code6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cIRewriterScompute_index_maps6FnSconstantPoolHandle_rpnIintArray_rpnIintStack__v_;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cIintArray2t6Mki1_v_: rewriter.o;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: cpCacheKlass.o;
-text: .text%__1cIRewriterXnew_constant_pool_cache6FrnIintArray_pnGThread__nXconstantPoolCacheHandle__;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: cpCacheKlass.o;
-text: .text%__1cRmethodDataOopDescJis_mature6kM_i_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cQciByteCodeStreamUis_unresolved_string6kM_i_;
-text: .text%__1cFciEnvUis_unresolved_string6kMpnPciInstanceKlass_i_i_;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%__1cFciEnvZis_unresolved_string_impl6kMpnNinstanceKlass_i_i_;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cNmulL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNminI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: classes.o;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cPconvI2L_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSshrL_eReg_1_31NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPshrI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWconstantPoolCacheKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cYmulI_imm_RShift_highNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHMatcherUc_calling_convention6FpnLRegPair_I_v_;
-text: .text%__1cPCallRuntimeNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: classes.o;
-text: .text%__1cHAddNodeGis_Add6kM_pk0_: classes.o;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cRshrI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cRaddL_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNaddI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
-text: .text%__1cSloadL_volatileNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNandI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcI_pnLPackageInfo__: classLoader.o;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cLeDIRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_: connode.o;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cUCallCompiledJavaNodeGOpcode6kM_i_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cUmembar_cpu_orderNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPClassFileParserbSparse_constant_pool_interfacemethodref_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cRsalI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
-text: .text%__1cNloadKlassNodeFreloc6kM_i_;
-text: .text%__1cFStateV_sub_Op_MemBarRelease6MpknENode__v_;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMatcherQpost_fast_unlock6FpknENode__i_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cLeSIRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciByteCodeStream__v_;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNaddP_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cLregFPR1OperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: instanceKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlass.o;
-text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciByteCodeStream__v_;
-text: .text%__1cbDReferenceProcessorInitializerIis_clean6kM_v_: concurrentMarkSweepGeneration.o;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: cfgnode.o;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cNSharedRuntimebOraw_exception_handler_for_return_address6FpC_1_;
-text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cNaddI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMnegF_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompP_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorLdo_putfield6MpnQciByteCodeStream__v_;
-text: .text%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstance.o;
-text: .text%__1cSshlL_eReg_1_31NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cMnegF_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cKcopy_table6FppC1i_v_: interpreter.o;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: loopopts.o;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cNaddL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKBufferBlob2n6FII_pv_;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
-text: .text%__1cMeBCXRegLOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: compile.o;
-text: .text%__1cScompP_mem_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCCompiledCodeSafepointHandlerbDhandle_polling_page_exception6M_pC_;
-text: .text%__1cKJavaThreadUin_stack_yellow_zone6MpC_i_: os_solaris_i486.o;
-text: .text%__1cFframebDsender_for_raw_compiled_frame6kMpnLRegisterMap__0_;
-text: .text%__1cMVM_OperationSis_cheap_allocated6kM_i_: vm_operations.o;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__pC_;
-text: .text%__1cKloadUBNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cLGCTaskQdDueueKinitialize6M_v_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cJStealTask2t6Mi_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cHnmethodJcode_size6kM_i_: nmethod.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: memnode.o;
-text: .text%__1cJcmpOpOperEless6kM_i_: ad_i486_clone.o;
-text: .text%__1cSaddD_reg_roundNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSmembar_releaseNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MII_v_;
-text: .text%__1cJloadCNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cNsubL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJimmL0OperJconstantL6kM_x_: ad_i486_clone.o;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNxorI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cILRG_List2t6MI_v_;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cGBundlePinitialize_nops6FppnIMachNode__v_;
-text: .text%__1cOMachPrologNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNstoreImmPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLeAXRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cNsubL_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cHi2bNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cRmethodDataOopDescYcompute_extra_data_count6Fii_i_;
-text: .text%__1cWCallLeafNoFPDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse3.o;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: jni.o;
-text: .text%__1cKimmI16OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cSshrL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPstoreImmI16NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIemit_d166FrnKCodeBuffer_i_v_;
-text: .text%__1cRxorI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRsubI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJeRegPOperFclone6kM_pnIMachOper__;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cKciTypeFlowLStateVectorJhalf_type6FpnGciType__3_: ciTypeFlow.o;
-text: .text%__1cJAssemblerDnop6M_v_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: connode.o;
-text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cNmodI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRsarI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cRjmpConU_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cRjmpConU_shortNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cLjmpConUNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cRjmpConU_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKcmpOpUOperFclone6kM_pnIMachOper__;
-text: .text%__1cFStateO_sub_Op_StoreB6MpknENode__v_;
-text: .text%__1cFTypeFCeq6kMpknEType__i_;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cIimmPOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConPNodeFclone6kM_pnENode__;
-text: .text%__1cSshrL_eReg_1_31NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: connode.o;
-text: .text%__1cRxorI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cKadd_n_reqs6FpnENode_1_v_: graphKit.o;
-text: .text%__1cNdecI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cILoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNsubI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXconvI2L_reg_reg_zexNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cMPhaseChaitinOcache_lrg_info6M_v_;
-text: .text%__1cNtestU_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJScopeDescJstream_at6kMi_pnTDebugInfoReadStream__;
-text: .text%__1cTDebugInfoReadStream2t6MpknHnmethod_i_v_;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: frame.o;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cKciTypeFlowLStateVectorOmeet_exception6MpnPciInstanceKlass_pk1_i_;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cWflagsReg_long_EQdDNEOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cIBoolNodeZis_counted_loop_exit_test6M_i_;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
-text: .text%__1cRaddL_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cQsalI_eReg_CLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNnegI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompP_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cILoopNodeHsize_of6kM_I_: loopnode.o;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cOcompP_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMatcherQis_spillable_arg6Fi_i_;
-text: .text%__1cSsafePoint_pollNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMatcherKcan_be_arg6Fi_i_;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIregFOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cTDebugInfoReadStreamLread_handle6M_nGHandle__;
-text: .text%__1cJScopeDesc2t6MpknHnmethod_i_v_;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cHnmethodOis_java_method6kM_i_: nmethod.o;
-text: .text%__1cNminI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompiledVFrameGis_top6kM_i_;
-text: .text%__1cFStateQ_sub_Op_CallLeaf6MpknENode__v_;
-text: .text%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_v_;
-text: .text%__1cHi2sNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cIciObjectIis_klass6M_i_: ciInstance.o;
-text: .text%__1cMoutputStreamMdo_vsnprintf6FpcIpkcpvirI_3_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cRaddI_eReg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cSloadL_volatileNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_immNodeFreloc6kM_i_;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSvframeStreamCommonYfill_from_compiled_frame6MpnHnmethod_i_v_;
-text: .text%__1cHnmethodQis_native_method6kM_i_: nmethod.o;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: cfgnode.o;
-text: .text%__1cTshrL_eReg_32_63NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: objArrayKlass.o;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cPshrI_eReg_1NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cQLRUMaxHeapPolicyWshould_clear_reference6MpnHoopDesc__i_;
-text: .text%__1cIGraphKitNstore_barrier6MpnENode_22_v_;
-text: .text%__1cMrep_stosNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cWflagsReg_long_LEGTOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSThreadLocalStorageTpd_getTlsAccessMode6F_n0AQpd_tlsAccessMode__;
-text: .text%__1cOMacroAssemblerKget_thread6MpnMRegisterImpl__v_;
-text: .text%__1cKloadUBNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHMonitorGnotify6M_i_;
-text: .text%__1cIRootNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRcmpFastUnlockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cFStateS_sub_Op_FastUnlock6MpknENode__v_;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOstackSlotFOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cSstore_to_stackslot6FrnKCodeBuffer_iii_v_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cMnadxRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_: callnode.o;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cUmembar_cpu_orderNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMloadConINodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: cfgnode.o;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cOjmpLoopEndNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRmulI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPsarI_eReg_1NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cKstoreLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOcompP_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMvalue_of_loc6FppnHoopDesc__i_;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cTcompareAndSwapLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cTshrL_eReg_32_63NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSshlL_eReg_1_31NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKcmpOpUOperJnot_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cOcompP_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNSCMemProjNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cNandI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNaddP_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNstoreImmPNodeFreloc6kM_i_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKtype2basic6FpknEType__nJBasicType__;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNstoreImmBNodeFreloc6kM_i_;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: jvm.o;
-text: .text%JVM_Clone;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: jvm.o;
-text: .text%__1cNcmovI_regNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVeADXRegL_low_onlyOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: objArrayKlass.o;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: objArrayKlass.o;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: objArrayKlass.o;
-text: .text%__1cMeBCXRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNimmI_1_31OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cLPhaseValues2T5B6M_v_;
-text: .text%__1cNtestU_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJLoadCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRsubI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cMalloc_object6FpnH_jclass_pnGThread__pnPinstanceOopDesc__: jni.o;
-text: .text%__1cIGraphKitOnull_check_oop6MpnKRegionNode_pnENode_i_4_;
-text: .text%__1cRmulI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cPconvL2I_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJeRegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cNstoreImmINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPshlI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNmaxI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHnmethodVis_dependent_on_entry6MpnMklassOopDesc_2pnNmethodOopDesc__i_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlass.o;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%__1cQsalI_eReg_CLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cIRootNodeHis_Root6M_p0_: classes.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cOMethodLivenessKBasicBlockPmerge_exception6MnGBitMap__i_;
-text: .text%__1cNminI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNsubI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cMorI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNtestU_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cIciMethodRinstructions_size6M_i_;
-text: .text%__1cRsarI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPshrI_eReg_1NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreC6MpknENode__v_;
-text: .text%__1cNobjArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddL_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNsubL_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNsubL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompU_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cScompU_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cTleaPIdxScaleOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cNsubL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSCallLeafDirectNodeFreloc6kM_i_;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cNcmovI_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cNcmovI_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cHMatcherPprior_fast_lock6FpknENode__i_;
-text: .text%__1cFStateV_sub_Op_MemBarAcquire6MpknENode__v_;
-text: .text%__1cLConvL2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOMachEpilogNodeFreloc6kM_i_;
-text: .text%__1cOMachEpilogNodeNis_MachEpilog6M_p0_: ad_i486.o;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cSstring_compareNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cSindIndexOffsetOperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cSindIndexOffsetOperOindex_position6kM_i_: ad_i486.o;
-text: .text%__1cKRelocationJpack_data6M_i_: codeBlob.o;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciInstanceKlass.o;
-text: .text%__1cLPcDescCacheKpc_desc_at6kMpnHnmethod_pCi_pnGPcDesc__;
-text: .text%__1cXmembar_acquire_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLloadSSFNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNaddP_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cPstoreImmI16NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cNmodL_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmulL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIDivINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cSloadL_volatileNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cENodeHdel_out6Mp0_v_: parseHelper.o;
-text: .text%__1cNandI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJTraceTime2t6MpkciipnMoutputStream__v_;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cOPhaseIdealLoop2t6MrnMPhaseIterGVN_pk0i_v_;
-text: .text%__1cKciTypeFlowFRangeSprivate_copy_count6kMpn0AGJsrSet__i_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXcmpL_reg_flags_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: frame.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: codeBlob.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: callnode.o;
-text: .text%__1cNIdealLoopTreeMis_loop_exit6kMpnENode_pnOPhaseIdealLoop__2_;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cZload_long_indOffset32OperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cZload_long_indOffset32OperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cNincI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNxorI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNandL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNtestU_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: onStackReplacement.o;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNincI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: loopnode.o;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cNxorI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRsubI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cKBlock_ListGinsert6MIpnFBlock__v_;
-text: .text%__1cECopyYconjoint_words_to_higher6FpnIHeapWord_2I_v_: block.o;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: loopnode.o;
-text: .text%__1cFStateP_sub_Op_CastP2I6MpknENode__v_;
-text: .text%__1cLCastP2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNaddL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_I_;
-text: .text%__1cMtlsLoadPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmaxI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNandL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cHNTarjanIsetdepth6MIpI_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_late6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopQbuild_loop_early6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cHNTarjanDDFS6Fp0rnJVectorSet_pnOPhaseIdealLoop_pI_i_;
-text: .text%__1cOPhaseIdealLoopRinit_dom_lca_tags6M_v_;
-text: .text%__1cNaddP_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvI2L_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLeCXRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_i486_clone.o;
-text: .text%__1cSmembar_acquireNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__v_;
-text: .text%__1cScheck_phi_clipping6FpnHPhiNode_rpnHConNode_rI45rpnENode_5_i_: cfgnode.o;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKCompiledICIis_clean6kM_i_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cKciTypeFlowLStateVectorGdo_new6MpnQciByteCodeStream__v_;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKJavaThreadNreguard_stack6MpC_i_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cIUniverseWis_out_of_memory_error6FnGHandle__i_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSshlL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cNcmovI_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOstackSlotFOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cLloadSSFNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateN_sub_Op_LoadL6MpknENode__v_;
-text: .text%__1cNnegI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cJloadFNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cKCompiledICZcompute_monomorphic_entry6FnMmethodHandle_nLKlassHandle_iirnOCompiledICInfo_pnGThread__v_;
-text: .text%__1cObox_handleNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_: interpreter.o;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_: interpreter.o;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: memnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: memnode.o;
-text: .text%__1cUParallelScavengeHeapEused6kM_I_;
-text: .text%__1cOmulIS_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cTshrL_eReg_32_63NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerGmovzxb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: parse2.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: loopnode.o;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cFParseJdo_ifnull6MnIBoolTestEmask__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cFframeLnmethods_do6M_v_;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cLeAXRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHMatcherQinline_cache_reg6F_nHOptoRegEName__;
-text: .text%__1cLloadSSFNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cGOopMapPset_derived_oop6MnHOptoRegEName_ii2_v_;
-text: .text%__1cOimmI_32_63OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cLOptoRuntimebAresolve_opt_virtual_call_C6FpnKJavaThread__pC_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_long_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitOset_pair_local6MipnENode__v_: parse2.o;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__: ciTypeArrayKlass.o;
-text: .text%__1cKloadUBNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cJLoadCNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cRsubI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cNaddI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
-text: .text%__1cJArrayDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cRmulI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cNloadConI0NodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNstoreImmINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHnmethodNscope_desc_at6MpCi_pnJScopeDesc__;
-text: .text%__1cTcompareAndSwapLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: multnode.o;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%jio_vsnprintf;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsalI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRsalI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeRis_safepoint_node6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%__1cIimmLOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConLNodeFclone6kM_pnENode__;
-text: .text%jio_snprintf;
-text: .text%__1cTCallDynamicJavaNodeEhash6kM_I_: callnode.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: frame.o;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: subnode.o;
-text: .text%__1cMstoreSSINodeHis_Copy6kM_I_: ad_i486_misc.o;
-text: .text%__1cYmulI_imm_RShift_highNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQsalL_eReg_CLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIMulLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOjmpLoopEndNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOmulIS_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cMdecI_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cOleaPIdxOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReturnNode2t6MpnENode_2222_v_;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cSReferenceProcessorOprocess_phase16MppnHoopDesc_pnPReferencePolicy_pnRBoolObjectClosure_pnKOopClosure_pnLVoidClosure__v_;
-text: .text%__1cSReferenceProcessorbBenqueue_discovered_reflists6MppnHoopDesc__v_;
-text: .text%__1cSReferenceProcessorbDenqueue_discovered_references6M_i_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cPGCMemoryManagerIgc_begin6M_v_;
-text: .text%__1cPGCMemoryManagerGgc_end6M_v_;
-text: .text%__1cUParallelScavengeHeapTensure_parseability6M_v_;
-text: .text%__1cUParallelScavengeHeapOfill_all_tlabs6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cNMemoryServiceIgc_begin6Fi_v_;
-text: .text%__1cNMemoryServiceGgc_end6Fi_v_;
-text: .text%__1cXTraceMemoryManagerStats2t6Mi_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cRaddL_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXjava_lang_ref_ReferenceRpending_list_addr6F_ppnHoopDesc__;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
-text: .text%__1cSReferenceProcessorbDprocess_discovered_references6M_v_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
-text: .text%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cMtlsLoadPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cPVM_GC_OperationQgc_count_changed6kM_i_;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
-text: .text%__1cPVM_GC_OperationNdoit_prologue6M_i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cURethrowExceptionNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
-text: .text%__1cRmulI_eReg_immNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cNmodI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cTAbstractInterpreterRnotice_safepoints6F_v_;
-text: .text%__1cONMethodSweeperFsweep6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cTAbstractInterpreterRignore_safepoints6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cURethrowExceptionNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cOCompilerOraclePshould_break_at6FnMmethodHandle__i_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cKCodeBufferJcopy_code6MpnICodeBlob__v_;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cICodeBlobWfix_relocation_at_move6Mi_v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
-text: .text%__1cNRelocIteratorMcreate_index6FpnKCodeBuffer_pnJrelocInfo_4_4_;
-text: .text%__1cICodeBlob2t6MpkcpnKCodeBuffer_iiipnJOopMapSet_i_v_;
-text: .text%__1cKCodeBufferPcopy_relocation6MpnICodeBlob__v_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_base6MnITosState_ppCi_v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cNmodL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreFNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQVMOperationQdDueueDadd6MpnMVM_Operation__i_;
-text: .text%__1cJEventMark2t6MpkcE_v_: vmThread.o;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cScompI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: jvm.o;
-text: .text%__1cOcompI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cLGCTaskQdDueue2t6Mi_v_;
-text: .text%__1cJloadFNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNJvmtiGCMarker2t6Mi_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cKPSScavengeXshould_attempt_scavenge6F_i_;
-text: .text%__1cUWaitForBarrierGCTask2t6Mi_v_;
-text: .text%__1cUPSAdaptiveSizePolicyPupdate_averages6MiII_v_;
-text: .text%__1cNBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cGGCTaskIdestruct6M_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MII_v_;
-text: .text%__1cKPSScavengeQinvoke_no_policy6Fpi_i_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cKPSYoungGenRresize_generation6MII_i_;
-text: .text%__1cKPSYoungGenGresize6MII_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MII_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cUPSAdaptiveSizePolicyUminor_collection_end6MnHGCCauseFCause__v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWminor_collection_begin6M_v_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPcompute_survivor_space_size_and_threshold6MiiI_i_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_: ad_i486.o;
-text: .text%__1cMindirectOperNbase_position6kM_i_: ad_i486.o;
-text: .text%__1cbDVM_ParallelGCFailedAllocation2t6MIiiI_v_;
-text: .text%__1cJloadSNodeFreloc6kM_i_;
-text: .text%__1cMrep_stosNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateN_sub_Op_LoadS6MpknENode__v_;
-text: .text%__1cQorI_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQshrI_eReg_CLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cNIdealLoopTreePiteration_split6MpnOPhaseIdealLoop_rnJNode_List__v_;
-text: .text%__1cHnmethodPscopes_pcs_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodQscopes_data_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodJstub_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodOexception_size6kM_i_: nmethod.o;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNstoreImmINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINodeHash2t6Mp0_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cZCallInterpreterDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%__1cFStateM_sub_Op_Goto6MpknENode__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cIPhaseCFGQFind_Inner_Loops6M_v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: cfgnode.o;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cIPhaseCFGDDFS6MpnGTarjan__I_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cIPhaseCFGOschedule_early6MrnJVectorSet_rnJNode_List_rnLBlock_Array__i_;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cWNode_Backward_Iterator2t6MpnENode_rnJVectorSet_rnJNode_List_rnLBlock_Array__v_;
-text: .text%__1cIPhaseCFGNschedule_late6MrnJVectorSet_rnJNode_List_rnNGrowableArray4CI___v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cGTarjanIsetdepth6MI_v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cMPhaseChaitinbGstretch_base_pointer_live_ranges6MpnMResourceArea__i_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cQorI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: matcher.o;
-text: .text%__1cHMatcherUvalidate_null_checks6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cHCompileOcompute_old_SP6M_nHOptoRegEName__;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cOleaPIdxOffNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cHMatcherLreturn_addr6kM_nHOptoRegEName__;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cMPhaseChaitinGde_ssa6M_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cFArena2t6MI_v_;
-text: .text%__1cWsize_exception_handler6F_I_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cOCompileWrapper2T6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyZdecay_supplemental_growth6Mi_v_;
-text: .text%__1cNPhasePeepholeMdo_transform6M_v_;
-text: .text%__1cHCompileTframe_size_in_words6kM_i_;
-text: .text%__1cNPhasePeephole2T6M_v_;
-text: .text%__1cNPhasePeephole2t6MpnNPhaseRegAlloc_rnIPhaseCFG__v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: buildOopMap.o;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cWemit_exception_handler6FrnKCodeBuffer__v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cMPhaseChaitin2T6M_v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cIPhaseCFGLRemoveEmpty6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cHCompileQShorten_branches6MpnFLabel_ri333_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cHCompileRScheduleAndBundle6M_v_;
-text: .text%__1cKCodeBufferOrelocate_stubs6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPeden_increment_with_supplement_aligned_up6MI_I_;
-text: .text%__1cUPSAdaptiveSizePolicyOeden_increment6MII_I_;
-text: .text%__1cOMachPrologNodeFreloc6kM_i_;
-text: .text%__1cUPSAdaptiveSizePolicyVadjust_for_throughput6MipI1_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cJPhaseLive2T6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicybDcompute_generation_free_space6MIIIIIIIi_v_;
-text: .text%__1cIPSOldGenMmax_gen_size6M_I_: psOldGen.o;
-text: .text%__1cUPSAdaptiveSizePolicybHclear_generation_free_space_flags6M_v_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: loopnode.o;
-text: .text%__1cUPSAdaptiveSizePolicyQdecaying_gc_cost6kM_d_;
-text: .text%__1cHCompileYinit_scratch_locs_memory6M_v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: methodDataKlass.o;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_words6FpnNmethodOopDesc__i_;
-text: .text%__1cRmethodDataOopDescPpost_initialize6MpnOBytecodeStream__v_;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_bytes6FpnNmethodOopDesc__i_;
-text: .text%__1cRmethodDataOopDescKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: methodDataOop.o;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: methodDataKlass.o;
-text: .text%__1cNmulL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEname6kM_pkc_: vm_operations.o;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: methodDataKlass.o;
-text: .text%__1cKPSScavengeGinvoke6Fpi_v_;
-text: .text%__1cUParallelScavengeHeapTfailed_mem_allocate6MpiIii_pnIHeapWord__;
-text: .text%__1cUPSAdaptiveSizePolicyOshould_full_GC6MI_i_;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cOcmpD_cc_P6NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopTransform.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_Return6MpknENode__v_;
-text: .text%__1cLlog2_intptr6Fi_i_: divnode.o;
-text: .text%__1cbLtransform_int_divide_to_long_multiply6FpnIPhaseGVN_pnENode_i_3_: divnode.o;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNcmovI_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cHRetNodeFreloc6kM_i_;
-text: .text%__1cOClearArrayNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciInstance.o;
-text: .text%__1cIciObjectJis_method6M_i_: ciInstance.o;
-text: .text%__1cNaddP_eRegNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cIGraphKitNallocate_heap6MpnENode_222pknITypeFunc_pC22ipknKTypeOopPtr__2_;
-text: .text%__1cPciInstanceKlassbBcompute_shared_has_subklass6M_i_;
-text: .text%__1cOLibraryCallKitNtry_to_inline6M_i_;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cLRuntimeStubbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cOcompP_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_CmpL6MpknENode__v_;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: library_call.o;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_pCnJrelocInfoJrelocType__v_;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: loopTransform.o;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHBitDataKis_BitData6M_i_: ciMethodData.o;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cRxorI_eReg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNaddL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivL_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPshlI_eReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cGThreadOis_interrupted6Fp0i_i_;
-text: .text%__1cSmembar_releaseNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNdecI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNandL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshrI_eReg_CLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdecI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cMstoreSSINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cOcmpD_cc_P6NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadLNodeFreloc6kM_i_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: multnode.o;
-text: .text%__1cRxorI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLBoxLockNodeEhash6kM_I_: classes.o;
-text: .text%__1cIAddLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRaddI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: ad_i486_misc.o;
-text: .text%__1cJlabelOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cNsubL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cTconvF2I_reg_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopopts.o;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
-text: .text%__1cRxorI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_SafePoint6MpknENode__v_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cSsafePoint_pollNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsafePoint_pollNodeFreloc6kM_i_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlass.o;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cLOptoRuntimeRmultianewarray1_C6FpnMklassOopDesc_ipnKJavaThread__v_;
-text: .text%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
-text: .text%__1cKCodeBuffer2t6MpCi_v_;
-text: .text%__1cNandI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSshlL_eReg_1_31NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: memnode.o;
-text: .text%__1cOmulIS_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQsalI_eReg_CLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopKclone_loop6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cQsalL_eReg_CLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cXroundDouble_mem_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRandI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKciTypeFlowFBlockQset_private_copy6Mi_v_;
-text: .text%__1cLimmI_16OperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cHi2sNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cHi2sNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRxorI_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvI2L_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cSshrL_eReg_1_31NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKStoreDNodeGOpcode6kM_i_;
-text: .text%__1cNcmovP_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopTransform.o;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOcmpD_cc_P6NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmaxI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: vmThread.o;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cNstoreImmINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
-text: .text%__1cOstackSlotLOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cRaddI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSloadL_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUjmpLoopEnd_shortNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cUjmpLoopEnd_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNmodL_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cIjniIdMapHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTDerivedPointerTableDadd6FppnHoopDesc_3_v_;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: classes.o;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: loopnode.o;
-text: .text%__1cKstoreCNodeFreloc6kM_i_;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: loopnode.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: loopnode.o;
-text: .text%__1cMincI_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Copy6kM_I_: loopnode.o;
-text: .text%__1cXconvI2L_reg_reg_zexNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cScompP_mem_eRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKReflectionGinvoke6FnTinstanceKlassHandle_nMmethodHandle_nGHandle_inOobjArrayHandle_nJBasicType_4ipnGThread__pnHoopDesc__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cTcmovII_reg_LEGTNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cTshrL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cMdecI_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateQ_sub_Op_FastLock6MpknENode__v_;
-text: .text%__1cPcmpFastLockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciByteCodeStream__v_;
-text: .text%__1cNaddI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc_ii_v_: nativeLookup.o;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cMdecI_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPshlI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: frame.o;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cNminI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cMorI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOmangle_name_on6FpnMoutputStream_pnNsymbolOopDesc__v_: nativeLookup.o;
-text: .text%__1cNIdealLoopTreeMpolicy_align6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeNpolicy_unroll6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeSpolicy_range_check6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeQpolicy_peel_only6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cLloadSSFNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYmulI_imm_RShift_highNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseFBlockNstack_type_at6kMi_pknEType__;
-text: .text%__1cJAssemblerGmovzxw6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFStateN_sub_Op_LoadB6MpknENode__v_;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerSload_unsigned_word6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cKstoreBNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cZCallInterpreterDirectNodeSalignment_required6kM_i_: ad_i486_misc.o;
-text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cTsarL_eReg_32_63NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMorI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: callnode.o;
-text: .text%__1cNtestU_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMURShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLMachUEPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cWflagsReg_long_LTGEOperFclone6kM_pnIMachOper__;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRsarI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIJVMStateNmonitor_depth6kM_i_: graphKit.o;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cHnmethodUnumber_of_dependents6kM_i_: nmethod.o;
-text: .text%__1cNSingletonBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: node.o;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLRethrowNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPsarI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKcmpOpUOperEless6kM_i_: ad_i486_clone.o;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cbACallCompiledJavaDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cMLinkResolverbHlinktime_resolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
-text: .text%__1cENodeHdel_out6Mp0_v_: doCall.o;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cKRegionNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cMincI_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cHTypePtrFempty6kM_i_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cTshrL_eReg_32_63NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cIplus_adr6FpnENode_i_1_: generateOptoStub.o;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cScompP_mem_eRegNodeFreloc6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_checkcast6MpnQciByteCodeStream__v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: frame.o;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cNmaxI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNtestU_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateP_sub_Op_ConvI2L6MpknENode__v_;
-text: .text%__1cNdivL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cQsalI_eReg_CLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cJloadBNodeFreloc6kM_i_;
-text: .text%__1cOcmpD_cc_P6NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOleaPIdxOffNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodKlass.o;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: compiledIC.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constMethodKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constMethodKlass.o;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cRmulI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cPstoreImmI16NodeFreloc6kM_i_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cLloadSSDNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOmulIS_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cVloadConL_low_onlyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsubI_eReg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: typeArrayKlass.o;
-text: .text%__1cOcmpD_cc_P6NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceRefKlass.o;
-text: .text%__1cObox_handleNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadFNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cNCompileBrokerTcreate_compile_task6FpnMCompileQdDueue_inMmethodHandle_i3ipkcii_pnLCompileTask__;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%__1cLCompileTaskKinitialize6MinMmethodHandle_i1ipkcii_v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cPconvF2D_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMincI_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cUGenericGrowableArrayNraw_appendAll6Mpk0_v_;
-text: .text%__1cFStateM_sub_Op_MulL6MpknENode__v_;
-text: .text%__1cOstackSlotFOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cFciEnv2t6MpnHJNIEnv__iii_v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cSshrL_eReg_1_31NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cNmodI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: arrayKlass.o;
-text: .text%__1cNaddP_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIimmFOperJconstantF6kM_f_: ad_i486_clone.o;
-text: .text%__1cOcompP_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cOstackSlotPOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cObox_handleNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLCodeletMark2t6MrpnZInterpreterMacroAssembler_pkcinJBytecodesECode__v_: interpreter.o;
-text: .text%__1cSInterpreterCodeletKinitialize6MpkcinJBytecodesECode__v_;
-text: .text%__1cNandI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cLloadSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmodL_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQmulD_reg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNandI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cPshrI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHi2bNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
-text: .text%__1cNnegI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cMstoreSSINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cINodeHashIround_up6FI_I_;
-text: .text%__1cbACallCompiledJavaDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%JVM_IHashCode;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: jvm.o;
-text: .text%__1cIVMThreadMis_VM_thread6kM_i_: vmThread.o;
-text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: vmThread.o;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cRtestI_reg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__: ad_i486_misc.o;
-text: .text%__1cNmaxI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AddL6MpknENode__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cXroundDouble_mem_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: frame.o;
-text: .text%__1cMstoreSSPNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: nmethod.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii1i_v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cRmulI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorQset_entry_points6MnJBytecodesECode__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorWset_short_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cOjmpLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateW_sub_Op_CountedLoopEnd6MpknENode__v_;
-text: .text%__1cXconvI2L_reg_reg_zexNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMinINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSCompareAndSwapNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cUmembar_cpu_orderNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsalL_eReg_CLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateW_sub_Op_MemBarCPUOrder6MpknENode__v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cPClassFileParserbGparse_constant_pool_double_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cRaddI_eReg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSleaP_eReg_immINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOjmpLoopEndNodeOis_pc_relative6kM_i_: ad_i486_misc.o;
-text: .text%__1cOjmpLoopEndNodeTmay_be_short_branch6kM_i_: ad_i486_misc.o;
-text: .text%__1cIModINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRmulI_eReg_immNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cTbasictype2arraycopy6FnJBasicType_i_pC_;
-text: .text%__1cFStateU_sub_Op_CallLeafNoFP6MpknENode__v_;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cLOptoRuntimeOarraycopy_Type6F_pknITypeFunc__;
-text: .text%__1cMMachCallNodeXreturns_float_or_double6kM_i_;
-text: .text%__1cOLibraryCallKitQinline_arraycopy6M_i_;
-text: .text%__1cOMacroAssemblerOcall_VM_helper6MpnMRegisterImpl_pCii_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTcmovII_reg_LTGENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cbACallCompiledJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: compiledIC.o;
-text: .text%__1cNLocationValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cUCompressedReadStreamIread_int6M_i_: location.o;
-text: .text%__1cNLocationValueLis_location6kM_i_: debugInfo.o;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cQshrI_eReg_CLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNCompileBrokerTis_compile_blocking6FnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
-text: .text%__1cNCompileBrokerTis_not_compile_only6FnMmethodHandle__i_;
-text: .text%__1cNsubL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQsalL_eReg_CLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constMethodKlass.o;
-text: .text%__1cFMutex2t6Mipkci_v_;
-text: .text%__1cJAssemblerLemit_farith6Miii_v_;
-text: .text%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
-text: .text%__1cNCompileBrokerOcheck_break_at6FnMmethodHandle_iii_i_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: callnode.o;
-text: .text%__1cJStartNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cOCompiledRFrameLis_compiled6kM_i_: rframe.o;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: nmethod.o;
-text: .text%__1cNminI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOCompiledRFrame2t6MnFframe_pnKJavaThread_kpnGRFrame__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler_ii_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cFciEnvbUsystem_dictionary_modification_counter_changed6M_i_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cIciMethodQbreak_at_execute6M_i_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cHnmFlagsFclear6M_v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cHnmethodSresolve_JNIHandles6M_v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__v_;
-text: .text%__1cHnmethod2n6FIi_pv_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cHnmethodLnew_nmethod6FnMmethodHandle_iiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__p0_;
-text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
-text: .text%__1cLPcDescCache2t6M_v_;
-text: .text%__1cFciEnvbFpost_compiled_method_load_event6MpnHnmethod__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cICodeBlobJcopy_oops6MppnI_jobject_i_v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cTcmovII_reg_LEGTNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLOptoRuntimeInew_Type6F_pknITypeFunc__;
-text: .text%__1cQorI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
-text: .text%__1cNsubL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cIGraphKitMnew_instance6MpnPciInstanceKlass__pnENode__;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6MnMmethodHandle__v_;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod_ii_v_;
-text: .text%__1cHCompileWprint_compile_messages6M_v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cINodeHashUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cIPhaseCCP2T6M_v_;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileVfinal_graph_reshaping6M_i_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cXMachCallInterpreterNodePret_addr_offset6M_i_;
-text: .text%__1cZCallInterpreterDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cZCallInterpreterDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cTsarL_eReg_32_63NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cICallInfoDset6MnLKlassHandle_1nMmethodHandle_2pnGThread__v_;
-text: .text%__1cMLinkResolverWresolve_interface_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cRaddL_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
-text: .text%__1cJAssemblerEincl6MpnMRegisterImpl__v_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_iii_v_;
-text: .text%__1cMstoreSSPNodeHis_Copy6kM_I_: ad_i486_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cNGrowableArray4CX_Efind6kMkX_i_: interpreterRuntime.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: interpreterRuntime.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: exceptions.o;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cRaddL_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerFffree6Mi_v_;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_v_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinGHandle__i_;
-text: .text%__1cKExceptionsG_throw6FpnGThread_pkcinGHandle__v_;
-text: .text%__1cSstring_compareNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cJloadDNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cXroundDouble_mem_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSshlL_eReg_1_31NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_v_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_II_v_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse1.o;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cTconvD2I_reg_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNmulI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cObox_handleNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
-text: .text%__1cNloadConI0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cJStoreNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKExceptionsRspecial_exception6FpnGThread_pkcinMsymbolHandle_4_i_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cLOptoRuntimeSnew_typeArray_Type6F_pknITypeFunc__;
-text: .text%__1cNdivL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cPCountedLoopNodeGstride6kM_pnENode__: loopTransform.o;
-text: .text%__1cIGraphKitJnew_array6MpnENode_nJBasicType_pknEType_pknMTypeKlassPtr__2_;
-text: .text%__1cSleaP_eReg_immINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cLlog2_intptr6Fi_i_: graphKit.o;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJloadCNodeFreloc6kM_i_;
-text: .text%__1cFStateN_sub_Op_LoadC6MpknENode__v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cTcmovII_reg_LEGTNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQmulD_reg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cTcmovII_reg_LEGTNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cMTypeKlassPtrRcast_to_exactness6kMi_pknEType__;
-text: .text%__1cQsalI_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvI2F_SSFNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSshrL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJleaP8NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObox_handleNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNcmpL_LTGENodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbFunnecessary_membar_volatileNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNcmpL_LTGENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cSaddF24_reg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopJdo_unroll6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cFStateS_sub_Op_ClearArray6MpknENode__v_;
-text: .text%__1cMrep_stosNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMrep_stosNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOcompI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPmethodDataKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cNtestP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cSstring_compareNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMatcherOc_return_value6Fii_nLRegPair__;
-text: .text%__1cRandL_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSleaP_eReg_immINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cHi2bNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHCompile2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_i486_clone.o;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMmulD_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cUjmpLoopEnd_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOjmpLoopEndNodeUshort_branch_version6M_pnIMachNode__;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cUjmpLoopEnd_shortNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvF2D_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cUjmpLoopEnd_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHi2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQPSIsAliveClosureLdo_object_b6MpnHoopDesc__i_: psScavenge.o;
-text: .text%__1cFStateO_sub_Op_StoreL6MpknENode__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: ad_i486_misc.o;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreLNodeFreloc6kM_i_;
-text: .text%__1cENodeHdel_out6Mp0_v_: divnode.o;
-text: .text%__1cGThreadLnmethods_do6M_v_;
-text: .text%__1cSsafePoint_pollNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRsubI_eReg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSReferenceProcessorZadd_to_discovered_list_mt6MppnHoopDesc_23_v_;
-text: .text%__1cPRoundDoubleNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cScompP_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cWflagsReg_long_EQdDNEOperFclone6kM_pnIMachOper__;
-text: .text%__1cWflagsReg_long_LEGTOperFclone6kM_pnIMachOper__;
-text: .text%__1cTcmovII_reg_EQdDNENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cMNativeLookupMlookup_style6FnMmethodHandle_pcpkciiripnGThread__pC_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodKlass.o;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_: objectMonitor_solaris.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodKlass.o;
-text: .text%__1cRmulI_eReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cRandI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cVlookup_special_native6Fpc_pC_: nativeLookup.o;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cRandI_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%__1cRmulI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTsarL_eReg_32_63NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cPshrI_eReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cRxorI_eReg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLregDPR1OperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cLregDPR1OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMnegD_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMstoreSSINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRcmpOp_commuteOperFclone6kM_pnIMachOper__;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cScompU_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerGfstp_d6MnHAddress__v_;
-text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciByteCodeStream_pnHciKlass_i_v_;
-text: .text%__1cOmulF24_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQleaPIdxScaleNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRtestI_reg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cRsubI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cCosHSolarisFEventEpark6M_v_: objectMonitor_solaris.o;
-text: .text%__1cKJavaThreadLnmethods_do6M_v_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_i_;
-text: .text%__1cNcmovI_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZCallDynamicJavaDirectNodeSalignment_required6kM_i_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNObjectMonitorREntryQdDueue_insert6MpnMObjectWaiter_i_v_;
-text: .text%__1cQorI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cPClassFileParserbFparse_constant_pool_float_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmINodeFreloc6kM_i_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cNObjectMonitorbAEntryQdDueue_SelectSuccessor6M_pnMObjectWaiter__;
-text: .text%__1cRsarI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: objArrayKlass.o;
-text: .text%__1cKstoreDNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeFreloc6kM_i_;
-text: .text%__1cLlog2_intptr6Fi_i_: objArrayKlassKlass.o;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPsarI_eReg_1NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOaddF24_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvI2D_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPsarI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: callnode.o;
-text: .text%__1cbACallCompiledJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cODeoptimizationYtrap_state_is_recompiled6Fi_i_;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYMachCallCompiledJavaNodePret_addr_offset6M_i_;
-text: .text%__1cNdivI_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cRaddL_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSInterpreterRuntimeTnmethod_entry_point6FpnKJavaThread_pnNmethodOopDesc_pnHnmethod__pC_;
-text: .text%__1cRandL_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cHnmethodXinterpreter_entry_point6M_pC_;
-text: .text%__1cFTypeDJsingleton6kM_i_;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: frame.o;
-text: .text%__1cIGraphKitbKcombine_and_pop_all_exception_states6M_pnNSafePointNode__: parse1.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cQshrL_eReg_CLNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotIOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cMmulD_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJloadDNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateP_sub_Op_Rethrow6MpknENode__v_;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cKloadUBNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTcmovII_reg_LEGTNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNsubI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cNaddP_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cURethrowExceptionNodeFreloc6kM_i_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cQorI_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHMonitor2t6Mipkci_v_;
-text: .text%__1cQshrI_eReg_CLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cRaddL_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cLloadSSDNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPconvI2F_SSFNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cTCallDynamicJavaNodeSis_CallDynamicJava6kM_pk0_: callnode.o;
-text: .text%__1cNxorI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cNmulL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: cfgnode.o;
-text: .text%__1cMstoreSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConPNodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmethodOopDescLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cNcmovP_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescVparameter_annotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cNinstanceKlassQmethod_index_for6kMpnNmethodOopDesc_pnGThread__i_;
-text: .text%__1cQorI_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOstackSlotDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLloadSSDNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMstoreSSPNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cOstackSlotDOperJnum_edges6kM_I_: ad_i486.o;
-text: .text%__1cMstoreSSINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cRxorI_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOleaPIdxOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddL_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Mi_v_;
-text: .text%__1cSObjectSynchronizerHinflate6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cPstoreImmI16NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcmpD_cc_P6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTshrL_eReg_32_63NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRandI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cRandI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: loopnode.o;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cRandI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNandL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cTcmovII_reg_LTGENodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cSleaP_eReg_immINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtypeArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cPregister_native6FnLKlassHandle_nMsymbolHandle_1pCpnGThread__i_: jni.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEmove6Mii_v_;
-text: .text%__1cNcmovI_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cMloadConLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cNmodL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cTconvD2I_reg_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: arrayKlass.o;
-text: .text%__1cFParseQjump_if_fork_int6MpnENode_2nIBoolTestEmask__pnGIfNode__;
-text: .text%__1cOcompP_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXis_positive_zero_double6Fd_i_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: arrayKlass.o;
-text: .text%__1cNmaxI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: arrayKlass.o;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodDataKlass.o;
-text: .text%__1cNmulI_eRegNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodDataKlass.o;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cLloadSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cTcmovII_reg_LTGENodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cOrepush_if_args6FpnFParse_pnENode_3_v_: parse2.o;
-text: .text%__1cNaddL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOstackSlotFOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cTcmovII_reg_LTGENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOstackSlotFOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cSshlL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOstackSlotFOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cJAssemblerGpushad6M_v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cQorI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cQsalL_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowOsplit_range_at6Mi_pn0AFRange__;
-text: .text%__1cPshrI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cISubLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNnegI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNnegI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cSobjArrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cFParseXfetch_interpreter_state6MipknEType_pnENode__5_;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_i_v_;
-text: .text%__1cQmulD_reg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTsarL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotDOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cJAssemblerGfstp_s6MnHAddress__v_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cXroundDouble_mem_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLloadSSDNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQsalI_eReg_CLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cNmodI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRcmpOp_commuteOperFccode6kM_i_: ad_i486_clone.o;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSCountedLoopEndNode2t6MpnENode_2ff_v_;
-text: .text%__1cPCountedLoopNode2t6MpnENode_2_v_;
-text: .text%__1cNcmovP_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_pkcnGHandle_6_6_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOmulF24_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFStateX_sub_Op_CompareAndSwapL6MpknENode__v_;
-text: .text%__1cSloadL_volatileNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNtestU_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTCompareAndSwapLNode2t6MpnENode_2222_v_;
-text: .text%__1cSCompareAndSwapNode2t6MpnENode_2222_v_;
-text: .text%__1cOLibraryCallKitRinline_unsafe_CAS6MnJBasicType__i_;
-text: .text%__1cSloadL_volatileNodeFreloc6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cObox_handleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFframeVnmethods_code_blob_do6M_v_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cVCallRuntimeDirectNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_ThreadJis_daemon6FpnHoopDesc__i_;
-text: .text%__1cJloadDNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cKstoreDNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cTcmovII_reg_LTGENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQshrI_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cQciByteCodeStreamFtable6MnJBytecodesECode__2_;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cSstoreD_roundedNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cTconvD2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreFNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: machnode.o;
-text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_nHOptoRegEName__;
-text: .text%__1cFStateT_sub_Op_ThreadLocal6MpknENode__v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cMtlsLoadPNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cWResolveOopMapConflictsRpossible_gc_point6MpnOBytecodeStream__i_: rewriter.o;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_: interpreterRuntime.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorDbox6Mii_v_;
-text: .text%__1cSsarL_eReg_1_31NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cYmulI_imm_RShift_highNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLLShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPRoundDoubleNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKstoreDNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPRoundDoubleNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTCallInterpreterNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cLPhaseValuesHlongcon6Mx_pnIConLNode__;
-text: .text%__1cFStateX_sub_Op_CallInterpreter6MpknENode__v_;
-text: .text%__1cZCallInterpreterDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallInterpreterDirectNodeFreloc6kM_i_;
-text: .text%__1cTCallInterpreterNodeSis_CallInterpreter6kM_pk0_: classes.o;
-text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_nHOptoRegEName__;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cHCompilebMGenerate_Compiled_To_Interpreter_Graph6MpknITypeFunc_pC_v_;
-text: .text%__1cMdecI_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMatcherXcompiler_method_oop_reg6F_nHOptoRegEName__;
-text: .text%__1cXMachCallInterpreterNodeWis_MachCallInterpreter6M_p0_: ad_i486_misc.o;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: classes.o;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cXjvm_define_class_common6FpnHJNIEnv__pkcpnI_jobject_pkWi53pnGThread__pnH_jclass__: jvm.o;
-text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cIciObjectUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSTailCalljmpIndNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOCallNativeNodeGOpcode6kM_i_;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cLregDPR1OperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cZCallDynamicJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cSTailCalljmpIndNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cJLoadPNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cNcmpL_EQdDNENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNcmpL_EQdDNENodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXroundDouble_mem_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cOstoreF_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cOmulIS_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSalign_to_page_size6FI_I_: heap.o;
-text: .text%__1cOaddF24_regNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cMstoreSSPNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvI2D_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cNmulI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cNmulI_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRandI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cTcmovII_reg_EQdDNENodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cTcmovII_reg_LEGTNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJChunkPoolMfree_all_but6MI_v_: allocation.o;
-text: .text%__1cRandL_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNxorI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOaddF24_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%JVM_MonitorWait;
-text: .text%__1cNObjectMonitorEwait6MxipnGThread__v_;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlassKlass.o;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cMmulD_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQshrL_eReg_CLNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNdivI_eRegNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cNSingletonBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cSleaP_eReg_immINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassMis_interface6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cNcmpL_LEGTNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cNcmpL_LEGTNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cHMatcherXinterpreter_arg_ptr_reg6F_nHOptoRegEName__;
-text: .text%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cSCompiledStaticCallIis_clean6kM_i_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLOptoRuntimeVresolve_static_call_C6FpnKJavaThread__pC_;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cOmulF24_regNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cRsubL_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsubL_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRmulI_imm_highNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cHi2bNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHBoxNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
-text: .text%__1cTcmovII_reg_EQdDNENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cTcmovII_reg_EQdDNENodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNtestI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerFpopfd6M_v_;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_I_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
-text: .text%__1cNmaxI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMLinkResolverbPlinktime_resolve_interface_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cPconvF2D_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNIdealLoopTreeXpolicy_maximally_unroll6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cbCAbstractInterpreterGeneratorVset_vtos_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_newarray6MpnQciByteCodeStream__v_;
-text: .text%__1cTmembar_volatileNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cNxorI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cPconvI2F_SSFNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMjniIdSupportNto_jmethod_id6FpnNmethodOopDesc__pnK_jmethodID__;
-text: .text%__1cMjniIdPrivateGid_for6FnTinstanceKlassHandle_i_i_: jniId.o;
-text: .text%__1cNget_method_id6FpnHJNIEnv__pnH_jclass_pkc5ipnGThread__pnK_jmethodID__: jni.o;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cRmulI_imm_highNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cQorI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVloadConL_low_onlyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIUniverseWreinitialize_vtable_of6FpnFKlass_pnGThread__v_;
-text: .text%__1cPshlI_eReg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_SetClassSigners;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cJAssemblerGpushfd6M_v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: sharedRuntime.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmulI_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cNmulI_eRegNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cHAddress2t6MinJrelocInfoJrelocType__v_;
-text: .text%__1cTsarL_eReg_32_63NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cTconvF2I_reg_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceRefKlass.o;
-text: .text%__1cNsubL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_mem_eRegNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cNaddL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRmulI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLloadSSDNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cS__ieee754_rem_pio26Fdpd_i_: sharedRuntimeTrig.o;
-text: .text%__1cQshrL_eReg_CLNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cObox_handleNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cTshlL_eReg_32_63NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cTmembar_volatileNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRtestI_reg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cMstoreSSINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: connode.o;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: connode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: cfgnode.o;
-text: .text%get_thread;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cPconvF2D_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOjmpLoopEndNodeGnegate6M_v_: ad_i486_misc.o;
-text: .text%__1cHCompileRmake_vm_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: node.o;
-text: .text%__1cJCMoveNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRsubI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLloadSSFNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: node.o;
-text: .text%__1cMnegD_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: node.o;
-text: .text%__1cSsarL_eReg_1_31NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cTshrL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: sharedRuntime.o;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
-text: .text%__1cLOptoRuntimeThandle_wrong_method6FpnKJavaThread__pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
-text: .text%__1cTmembar_volatileNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUPSMarkSweepDecoratorHcompact6Mi_v_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cTcmovII_reg_EQdDNENodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPconvI2F_SSFNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cUPSMarkSweepDecoratorVdestination_decorator6F_p0_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cQshrI_eReg_CLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadDNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOaddF24_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cOmulF24_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cOaddF24_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOmulF24_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cFParseScreate_jump_tables6MpnENode_pnLSwitchRange_4_i_;
-text: .text%__1cQjava_lang_ThreadMis_stillborn6FpnHoopDesc__i_;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cUverify_byte_codes_fn6F_pv_: verifier.o;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%__1cOstoreF_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%__1cQshrL_eReg_CLNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKstoreBNodeFreloc6kM_i_;
-text: .text%__1cPconvI2F_SSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cMdecI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: thread.o;
-text: .text%__1cPconvI2L_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddD_reg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerGmembar6M_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%__1cNcmovP_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%__1cbBinitialize_itable_for_klass6FpnMklassOopDesc__v_;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cXconvI2L_reg_reg_zexNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbFunnecessary_membar_volatileNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRsubL_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cRsubL_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cRsubL_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cPmovI_nocopyNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorThas_signature_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorVhas_annotations_field6F_i_;
-text: .text%__1cHCompilebMGenerate_Interpreter_To_Compiled_Graph6MpknITypeFunc__v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cFStateM_sub_Op_RegD6MpknENode__v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cUCallCompiledJavaNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cGThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cGThreadVis_jvmti_agent_thread6kM_i_: thread.o;
-text: .text%__1cbACallCompiledJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbACallCompiledJavaDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cTcmovII_reg_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbACallCompiledJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cUPipeline_Use_Element2t6MIIIinXPipeline_Use_Cycle_Mask__v_: ad_i486_pipeline.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cFStateY_sub_Op_CallCompiledJava6MpknENode__v_;
-text: .text%__1cXPipeline_Use_Cycle_Mask2t6MI_v_: ad_i486_pipeline.o;
-text: .text%__1cMsubD_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSleaP_eReg_immINodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTshlL_eReg_32_63NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRxorI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNcmovI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSstoreD_roundedNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSstoreD_roundedNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MinI6MpknENode__v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cNminI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cQmulD_reg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cHi2bNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMmulD_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMstoreSSPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cICodeBlobOis_java_method6kM_i_: codeBlob.o;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKLoadPCNodeGOpcode6kM_i_;
-text: .text%__1cRaddI_mem_eRegNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKCMoveINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRcmpOp_commuteOperHgreater6kM_i_: ad_i486_clone.o;
-text: .text%__1cNObjectMonitorGenter26MpnGThread__v_;
-text: .text%__1cNmodL_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRcmpOp_commuteOperGnegate6M_v_: ad_i486_clone.o;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cQaddD_reg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRmulI_imm_highNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJCMoveNode2t6MpnENode_22pknEType__v_: connode.o;
-text: .text%__1cJCMoveNodeEmake6FpnENode_222pknEType__p0_;
-text: .text%__1cOPhaseIdealLoopVinsert_pre_post_loops6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cLloadSSDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCodeBufferWinsert_double_constant6Md_pC_;
-text: .text%__1cXroundDouble_mem_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: onStackReplacement.o;
-text: .text%__1cWis_positive_one_double6Fd_i_;
-text: .text%__1cNaddP_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cFframeVshould_be_deoptimized6kM_i_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlass.o;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: callnode.o;
-text: .text%__1cMincI_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlass.o;
-text: .text%__1cSleaP_eReg_immINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJEventMark2t6MpkcE_v_: psMarkSweep.o;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerDjmp6MpCnJrelocInfoJrelocType__v_;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cTconvD2I_reg_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cOcmpD_cc_P6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSshrL_eReg_1_31NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cHMatcherXpost_store_load_barrier6FpknENode__i_;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRuntime.o;
-text: .text%__1cSsarL_eReg_1_31NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cSmulF24_reg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cLTypeInstPtrRcast_to_exactness6kMi_pknEType__;
-text: .text%__1cYjava_lang_reflect_MethodbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodbChas_annotation_default_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodVhas_annotations_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodThas_signature_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cNCallGeneratorSfor_predicted_call6FpnHciKlass_p03_3_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateN_sub_Op_LoadF6MpknENode__v_;
-text: .text%__1cNandI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKReflectionKnew_method6FnMmethodHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cTconvD2I_reg_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cWPredictedCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cWPredictedCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNmethodOopDescSannotation_default6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cMstoreSSPNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cRmulI_imm_highNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFParseTjump_if_always_fork6Mii_v_;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFStateW_sub_Op_MemBarVolatile6MpknENode__v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: typeArrayKlass.o;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cPconvI2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciObjectFactory.o;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cIciObjectJis_method6M_i_: ciObjectFactory.o;
-text: .text%__1cNmodI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_LShiftL6MpknENode__v_;
-text: .text%__1cNmodI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceRefKlass.o;
-text: .text%__1cKcmpOpUOperFequal6kM_i_: ad_i486_clone.o;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciObjectFactory.o;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%__1cMloadConDNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cPmovI_nocopyNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIci2bNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
-text: .text%__1cMVirtualSpaceJexpand_by6MI_i_;
-text: .text%__1cJAssemblerFfld_d6MnHAddress__v_;
-text: .text%__1cJloadFNodeFreloc6kM_i_;
-text: .text%__1cOaddF24_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMincI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cRaddI_eReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cTcmovII_reg_LTGENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cSTailCalljmpIndNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cMstoreSSPNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOmulF24_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
-text: .text%__1cQsalI_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNdivI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cNandI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPClassFileParserXverify_unqualified_name6MpcIi_i_;
-text: .text%__1cUGenericGrowableArrayKraw_remove6MpknEGrET__v_;
-text: .text%__1cOcmovI_regUNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMmulD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFTypeFJsingleton6kM_i_;
-text: .text%__1cRandL_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cPconvI2D_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: memnode.o;
-text: .text%__1cNmulI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cQsalL_eReg_CLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cNdivL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cRsubL_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvF2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTAbstractInterpreterLdeopt_entry6FnITosState_i_pC_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cQshrL_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRuntime.o;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cNcmovP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cMdecI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSstring_compareNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: markSweep.o;
-text: .text%__1cRInterpreterOopMapIis_empty6M_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureLdo_nmethods6kM_ki_: markSweep.o;
-text: .text%__1cTsarL_eReg_32_63NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNcmovP_regNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cOmulF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMsubD_regNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cRjni_invoke_static6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cMsubD_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOjmpLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cJAssemblerFbswap6MpnMRegisterImpl__v_;
-text: .text%__1cTconvF2I_reg_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMstoreSSPNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cOjmpLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOjmpLoopEndNodeJis_Branch6kM_I_: ad_i486_misc.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_i486_misc.o;
-text: .text%__1cIGraphKitXinsert_mem_bar_volatile6MpnKMemBarNode_i_v_;
-text: .text%__1cRsubI_eReg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
-text: .text%__1cFStateX_sub_Op_CallDynamicJava6MpknENode__v_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cQMachCallJavaNodeVis_MachCallStaticJava6M_pnWMachCallStaticJavaNode__: ad_i486_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cTcmovII_reg_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYcmpL_zero_flags_LTGENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNCallGeneratorQfor_virtual_call6FpnIciMethod__p0_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cIModLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cOPSPromotionLABRunallocate_object6MpnHoopDesc__i_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MII_v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cNsubI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICodeHeapJexpand_by6MI_i_;
-text: .text%__1cTcmovII_reg_LEGTNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJAssemblerFfld_s6MnHAddress__v_;
-text: .text%__1cOstoreF_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cVscale_to_lwp_priority6Fiii_i_: os_solaris.o;
-text: .text%__1cMdivD_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddI_mem_eRegNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMdivD_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNxorI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulI_mem_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQmulI_mem_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorI_eReg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cMsubD_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cUVirtualCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cPconvI2F_SSFNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRcmpOp_commuteOperKless_equal6kM_i_: ad_i486_clone.o;
-text: .text%__1cIci2bNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cIDivLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMincI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cQmulD_reg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_ConD6MpknENode__v_;
-text: .text%__1cSaddD_reg_roundNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNmodL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: output.o;
-text: .text%__1cYinternal_word_RelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cNaddI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cSdivD_reg_roundNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cTshlL_eReg_32_63NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cTOopMapForCacheEntryOreport_results6kM_i_: oopMapCache.o;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cFTypeDGis_nan6kM_i_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%_start: os_solaris.o;
-text: .text%__1cYcmpL_zero_flags_LTGENodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cLStrCompNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cTcmovII_reg_EQdDNENodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cMPipeline_Use2t6MIIIpnUPipeline_Use_Element__v_: ad_i486_pipeline.o;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cNsubL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cCosNcreate_thread6FpnGThread_n0AKThreadType_I_i_;
-text: .text%__1cPRoundDoubleNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cFParseScan_rerun_bytecode6M_i_;
-text: .text%__1cXjava_lang_reflect_FieldThas_signature_field6F_i_;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cDhpiEread6FipvI_I_: jvm.o;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldVhas_annotations_field6F_i_;
-text: .text%__1cMstoreSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cIPipeline2t6MIIiIIiiiikpnSmachPipelineStages_3kpInMPipeline_Use__v_: ad_i486_pipeline.o;
-text: .text%JVM_Read;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cOcmpF_cc_P6NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOJavaAssertionsHenabled6Fpkci_i_;
-text: .text%__1cOcmpF_cc_P6NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferMinitial_size6F_I_;
-text: .text%__1cQaddD_reg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__: javaAssertions.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%__1cLConvL2FNodeGOpcode6kM_i_;
-text: .text%__1cMFlatProfilerJis_active6F_i_;
-text: .text%__1cNThreadServiceKadd_thread6FpnKJavaThread_i_v_;
-text: .text%__1cIjniIdMapGcreate6FnTinstanceKlassHandle__p0_;
-text: .text%__1cQorI_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cHThreadsDadd6FpnKJavaThread_i_v_;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cNloadConL0NodeFclone6kM_pnENode__;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGParker2t6M_v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJimmL0OperFclone6kM_pnIMachOper__;
-text: .text%__1cENodeGis_Con6kM_I_: loopnode.o;
-text: .text%__1cNjni_functions6F_pknTJNINativeInterface___;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIjniIdMap2t6MpnMklassOopDesc_i_v_;
-text: .text%__1cIjniIdMapRcompute_index_cnt6FnTinstanceKlassHandle__i_;
-text: .text%__1cLjniIdBucket2t6MpnIjniIdMap_p0_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: loopnode.o;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cCosMguard_memory6FpcI_i_;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cNaddL_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cOaddF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cSmulF24_reg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorl_eReg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cM__kernel_cos6Fdd_d_: sharedRuntimeTrig.o;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cM__kernel_sin6Fddi_d_: sharedRuntimeTrig.o;
-text: .text%__1cSleaP_eReg_immINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cNSharedRuntimeEdsin6Fd_d_;
-text: .text%__1cNSharedRuntimeEdcos6Fd_d_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: multnode.o;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cSshlL_eReg_1_31NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cNdecI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconvF2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovP_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEsbbl6MnHAddress_i_v_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cHRegMask2t6Miiiii_v_: ad_i486_expand.o;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%JVM_IsArrayClass;
-text: .text%__1cVloadConL_low_onlyNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cSMachBreakpointNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlass.o;
-text: .text%__1cICmpDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cVMoveL2D_reg_stackNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQshrI_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRmulI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: output.o;
-text: .text%JVM_GetClassName;
-text: .text%__1cSsarL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cQorl_eReg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2D_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: mulnode.o;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_RegF6MpknENode__v_;
-text: .text%__1cPmovI_nocopyNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cOcmpF_cc_P6NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKRelocationYpd_get_address_from_code6M_pC_;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRuntime.o;
-text: .text%__1cSmulF24_reg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulF24_reg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNtestU_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerDjmp6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%JVM_Open;
-text: .text%__1cOmulIS_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%JVM_StartThread;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_: interpreterRuntime.o;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRxorI_eReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cQmulI_mem_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotDOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cOstackSlotDOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cMmulD_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOstackSlotDOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOstackSlotPOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%__1cQmulI_mem_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPconvI2D_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRandL_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTAbstractInterpreterWlayout_activation_impl6FpnNmethodOopDesc_iiiipnFframe_4i_i_;
-text: .text%JVM_TotalMemory;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%JVM_FreeMemory;
-text: .text%__1cObox_handleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTshlL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQmulI_mem_immNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cQmulI_mem_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvI2F_SSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJScopeDescTdecode_scope_values6Mi_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cCosOunguard_memory6FpcI_i_;
-text: .text%__1cHRetDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cGParker2T6M_v_;
-text: .text%__1cQorI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRmulI_imm_highNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cKJavaThreadEexit6Mi_v_;
-text: .text%__1cKloadUBNodeFreloc6kM_i_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cNThreadServiceNremove_thread6FpnKJavaThread_i_v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cUThreadSafepointState2T6M_v_;
-text: .text%__1cFStateT_sub_Op_RoundDouble6MpknENode__v_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: klassKlass.o;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: library_call.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: generateOopMap.o;
-text: .text%__1cTcmovII_reg_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cNcmovL_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cMTailCallNode2t6MpnENode_222222_v_;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cFStateQ_sub_Op_TailCall6MpknENode__v_;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cLeDIRegIOperEtype6kM_pknEType__: ad_i486.o;
-text: .text%__1cPmovI_nocopyNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSTailCalljmpIndNodeFreloc6kM_i_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cNandI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cFStateO_sub_Op_StoreF6MpknENode__v_;
-text: .text%__1cQaddD_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTsarL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cNaddP_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNaddP_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovI_regUNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%__1cENodeJis_MemBar6kM_pknKMemBarNode__: classes.o;
-text: .text%__1cMstoreSSPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUGenericGrowableArrayUclear_and_deallocate6M_v_;
-text: .text%__1cRandI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cSsarL_eReg_1_31NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cVMoveL2D_reg_stackNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cObox_handleNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cTcmovII_reg_LEGTNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: onStackReplacement.o;
-text: .text%__1cObox_handleNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRuntime.o;
-text: .text%__1cSaddD_reg_roundNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulF24_reg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSaddD_reg_roundNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOmulF24_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cHi2bNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cOLibraryCallKitYinline_native_time_funcs6Mi_i_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cOcmpF_cc_P6NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: ciTypeFlow.o;
-text: .text%__1cNmulI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKdirectOperFscale6kM_i_: ad_i486_clone.o;
-text: .text%__1cQorI_eReg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorI_eReg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%__1cMsubD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIci2bNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIregDOperFclone6kM_pnIMachOper__;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNmaxI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMelapsedTimer2t6M_v_: phase.o;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cODeoptimizationYquery_update_method_data6FnQmethodDataHandle_in0ALDeoptReason_rIri4_pnLProfileData__;
-text: .text%__1cKstoreDNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNminI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNPhaseRegAllocHset_oop6MpknENode_i_v_;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cFStateM_sub_Op_MaxI6MpknENode__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cWis_positive_zero_float6Ff_i_;
-text: .text%__1cTcmovII_reg_LTGENodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cQorI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%__1cMloadConDNodeFclone6kM_pnENode__;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%JVM_NativePath;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%__1cVloadConL_low_onlyNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIimmDOperFclone6kM_pnIMachOper__;
-text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__: ad_i486_misc.o;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cHnmethodNis_osr_method6kM_i_: nmethod.o;
-text: .text%__1cNmulI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQorl_eReg_immNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cQsalI_eReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOaddF24_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: callnode.o;
-text: .text%__1cFStateT_sub_Op_CallRuntime6MpknENode__v_;
-text: .text%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: callnode.o;
-text: .text%__1cOcmovI_regUNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodDataKlass.o;
-text: .text%__1cQsalI_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodDataKlass.o;
-text: .text%__1cVCallRuntimeDirectNodeFreloc6kM_i_;
-text: .text%__1cSdivD_reg_roundNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cNandI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_reg_stackNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOmulF24_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOcmovI_regUNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJloadCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRandL_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTcmovII_reg_LTGENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTshrL_eReg_32_63NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOcmpF_cc_P6NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOaddF24_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSaddF24_reg_immNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNcmovP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovI_regUNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cSmulF24_reg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cKstoreFNodeFreloc6kM_i_;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerWupdate_mdp_by_constant6MpnMRegisterImpl_i_v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorRset_unimplemented6Mi_v_;
-text: .text%__1cSstoreD_roundedNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i_v_;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCodeBufferVinsert_float_constant6Mf_pC_;
-text: .text%__1cWroundFloat_mem_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOsubF24_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cSaddF24_reg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cSaddD_reg_roundNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdecI_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTconvF2I_reg_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cMloadConDNodeFreloc6kM_i_;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQaddD_reg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMdecI_memNodeFreloc6kM_i_;
-text: .text%__1cTshlL_eReg_32_63NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cWCallLeafNoFPDirectNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConDNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_i486_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMdecI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimeWresolve_virtual_call_C6FpnKJavaThread__pC_;
-text: .text%__1cLTypeInstPtrLmirror_type6kM_pnGciType__;
-text: .text%__1cSmulF24_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationVtrap_state_add_reason6Fii_i_;
-text: .text%__1cKstoreINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMdivD_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cOCompilerThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%__1cYcmpL_zero_flags_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVcompiledICHolderKlassSoop_being_unloaded6MpnRBoolObjectClosure_pnHoopDesc__i_;
-text: .text%__1cLRuntimeStub2n6FII_pv_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
-text: .text%__1cLRuntimeStub2t6MpkcpnKCodeBuffer_iipnJOopMapSet_i_v_;
-text: .text%__1cOstoreF_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2F_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLloadSSDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQshrL_eReg_CLNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQsalL_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cFTypeDFempty6kM_i_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodDataOop.o;
-text: .text%__1cPconvL2D_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKdirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486_clone.o;
-text: .text%__1cKdirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486_clone.o;
-text: .text%__1cPoldgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cKdirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486_clone.o;
-text: .text%__1cKdirectOperLdisp_is_oop6kM_i_: ad_i486_clone.o;
-text: .text%__1cLConvD2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cPconvI2F_SSFNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cRmulI_imm_highNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cXpartialSubtypeCheckNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cRxorI_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXpartialSubtypeCheckNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cDhpiFclose6Fi_i_: jvm.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cFStateN_sub_Op_LoadD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_MulD6MpknENode__v_;
-text: .text%__1cSMachCallNativeNodePret_addr_offset6M_i_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cOsubF24_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: deoptimization.o;
-text: .text%__1cTAbstractInterpreterMreturn_entry6FnITosState_i_pC_;
-text: .text%JVM_Close;
-text: .text%__1cLOptoRuntimeRnew_objArray_Type6F_pknITypeFunc__;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOmulIS_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovL_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNdivI_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cTunsafe_intrinsic_id6FpnNsymbolOopDesc_1_nNmethodOopDescLIntrinsicId__;
-text: .text%__1cSaddF24_reg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cIAddFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTinc_decompile_count6FpnHnmethod__v_: nmethod.o;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cMsubD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOcmpD_cc_P6NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTcmovII_reg_EQdDNENodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFStateM_sub_Op_CmpD6MpknENode__v_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%__1cSCallLeafDirectNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPmovI_nocopyNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIci2bNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cSsarL_eReg_1_31NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovI_regUNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cMdivD_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTconvF2I_reg_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSmulF24_reg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cTcmovII_reg_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cQAbstractCompilerMsupports_osr6M_i_: c2compiler.o;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableGbranch6Fii_v_;
-text: .text%__1cXcmpL_reg_flags_LTGENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshrI_eReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cHCompile2t6MpnFciEnv_pF_pknITypeFunc_pCpkciiii_v_;
-text: .text%__1cKemit_break6FrnKCodeBuffer__v_;
-text: .text%__1cQshrI_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2F_SSF_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIGraphKitIgen_stub6MpCpkciii_v_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cLloadSSINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQmulD_reg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cMloadConFNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cQmulD_reg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSmulF24_reg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJlog2_long6Fx_i_: mulnode.o;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_i_v_;
-text: .text%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cQorl_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVeADXRegL_low_onlyOperFclone6kM_pnIMachOper__;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cKimmL32OperFclone6kM_pnIMachOper__;
-text: .text%__1cLOptoRuntimeNgenerate_stub6FpnFciEnv_pF_pknITypeFunc_pCpkciiii_8_;
-text: .text%__1cVloadConL_low_onlyNodeFclone6kM_pnENode__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cFParseWload_interpreter_state6MpnENode_2_v_;
-text: .text%__1cVMoveL2D_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMStartOSRNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cPconvI2D_regNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cTshlL_eReg_32_63NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateO_sub_Op_StoreD6MpknENode__v_;
-text: .text%__1cPmovI_nocopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cFStateM_sub_Op_ConF6MpknENode__v_;
-text: .text%__1cNcmovI_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
-text: .text%__1cNcmovI_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cIci2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivD_reg_roundNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cWroundFloat_mem_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOmulF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cTcmovII_reg_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cFframebHinterpreter_frame_set_monitor_end6MpnPBasicObjectLock__v_;
-text: .text%__1cOstoreF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPmovP_nocopyNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFframebBinterpreter_frame_sender_sp6kM_pi_;
-text: .text%__1cNcmovL_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cTAbstractInterpreterPsize_activation6FpnNmethodOopDesc_iiiii_i_;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescVdecode_monitor_values6Mi_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cTcmovII_reg_EQdDNENodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSvframeArrayElementPunpack_on_stack6MiipnFframe_ii_v_;
-text: .text%__1cTconvD2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFframebCinterpreter_frame_set_locals6Mpi_v_;
-text: .text%__1cFframebCinterpreter_frame_set_method6MpnNmethodOopDesc__v_;
-text: .text%__1cTAbstractInterpreterQcontinuation_for6FpnNmethodOopDesc_pCiiri_3_;
-text: .text%__1cTAbstractInterpreterRTosState_as_index6FnITosState__i_;
-text: .text%__1cTAbstractInterpreterRlayout_activation6FpnNmethodOopDesc_iiiipnFframe_4i_v_;
-text: .text%__1cSvframeArrayElementNon_stack_size6kMiiii_i_;
-text: .text%__1cSInterpreterRuntimeJnote_trap6FpnKJavaThread_ipnGThread__v_;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRmulI_imm_highNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cRsubL_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cFStateP_sub_Op_ConvF2D6MpknENode__v_;
-text: .text%__1cCosNcommit_memory6FpcI_i_;
-text: .text%__1cScompP_eReg_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_memNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cXpartialSubtypeCheckNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNdivL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cFStateM_sub_Op_DivL6MpknENode__v_;
-text: .text%__1cNsubL_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cLimmI_32OperIconstant6kM_i_: ad_i486_clone.o;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: klassKlass.o;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%Unsafe_DefineClass1;
-text: .text%JVM_GetComponentType;
-text: .text%JVM_DefineClass;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cNmodI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLOptoRuntimeNfetch_monitor6FipnJBasicLock_pC_pnHoopDesc__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRaddD_reg_imm1NodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
-text: .text%__1cJAssemblerGfrstor6MnHAddress__v_;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cSUnsafe_DefineClass6FpnHJNIEnv__pnI_jstring_pnL_jbyteArray_iipnI_jobject_7_pnH_jclass__: unsafe.o;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cSObjectSynchronizerOinflate_helper6FpnHoopDesc__pnNObjectMonitor__: synchronizer.o;
-text: .text%__1cSdivD_reg_roundNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cOsubF24_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2D_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLimmI_24OperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cLloadSSDNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cOstackSlotPOperFclone6kM_pnIMachOper__;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase16Frii_v_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceRefKlass.o;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase36F_v_;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cPconvL2F_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cLPSMarkSweepbAreset_millis_since_last_gc6F_v_;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MInHGCCauseFCause__v_;
-text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cMsubD_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cQUncommonTrapBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cNExceptionBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cRCardTableModRefBSEis_a6MnKBarrierSetEName__i_: cardTableExtension.o;
-text: .text%__1cMset_property6FnGHandle_pkc2pnGThread__v_: jvm.o;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cHBoxNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__v_;
-text: .text%__1cQorl_eReg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLPSMarkSweepQinvoke_no_policy6Fpii_v_;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%__1cObox_handleNodeFclone6kM_pnENode__;
-text: .text%__1cLPSMarkSweepPallocate_stacks6F_v_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cMdivD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLPSMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cMincI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cQSystemDictionaryMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: symbolKlass.o;
-text: .text%__1cNmodL_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MpnMRegisterImpl_i2rnFLabel__v_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cFStateL_sub_Op_Box6MpknENode__v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cSmulF24_reg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: symbolKlass.o;
-text: .text%__1cKDictionaryMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cHThreadsLnmethods_do6F_v_;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cJPSPermGenQcompute_new_size6MI_v_;
-text: .text%__1cXpartialSubtypeCheckNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cHi2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cFStateM_sub_Op_ModL6MpknENode__v_;
-text: .text%__1cSaddF24_reg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cHi2bNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTleaPIdxScaleOffNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFj_not6FnNTemplateTableJCondition__nJAssemblerJCondition__: templateTable_i486.o;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cVMoveF2I_reg_stackNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cMincI_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cQaddD_reg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cVMoveL2D_reg_stackNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMincI_memNodeFreloc6kM_i_;
-text: .text%__1cOaddF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_pnNsymbolOopDesc_pkc_nGHandle__;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cSsarL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%JVM_NewArray;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOcmpF_cc_P6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlass.o;
-text: .text%__1cFStateM_sub_Op_MulF6MpknENode__v_;
-text: .text%__1cTconvF2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTshlL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerFpopad6M_v_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cSmulF24_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cRmethodDataOopDescRbci_to_extra_data6Mii_pnLProfileData__;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvD2I_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNcmovI_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFStateP_sub_Op_ConvD2I6MpknENode__v_;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cPconvI2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: compiledICHolderKlass.o;
-text: .text%__1cVVM_ParallelGCSystemGC2t6MI_v_;
-text: .text%__1cOcmovI_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIregFOperFclone6kM_pnIMachOper__;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cLCastP2INodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cPconvL2D_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPmovP_nocopyNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cSaddF24_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%__1cHCompileWget_MethodAccessorImpl6M_pnPciInstanceKlass__;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cSmulF24_reg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cScompP_eReg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cScompP_eReg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cHCompileRget_Method_invoke6M_pnIciMethod__;
-text: .text%__1cLPSMarkSweepGinvoke6Fpii_v_;
-text: .text%JVM_GC;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cXpartialSubtypeCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cWroundFloat_mem_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cKScopeValueLis_location6kM_i_: debugInfo.o;
-text: .text%__1cVVM_ParallelGCSystemGCEname6kM_pkc_: vm_operations.o;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: compiledICHolderKlass.o;
-text: .text%__1cOLibraryCallKitbDis_method_invoke_or_aux_frame6MpnIJVMState__i_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: objArrayKlass.o;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cPconvL2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cETypeJis_finite6kM_i_;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: compiledICHolderKlass.o;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddF24_reg_immNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cCosNcommit_memory6FpcII_i_;
-text: .text%__1cOresolve_symbol6Fpkc_pC_: os_solaris.o;
-text: .text%__1cLloadSSINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: klassKlass.o;
-text: .text%__1cNloadConL0NodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cImulINodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: interpreter.o;
-text: .text%__1cQConstantIntValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cOLibraryCallKitXinline_string_compareTo6M_i_;
-text: .text%__1cImulINodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cSstring_compareNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateP_sub_Op_StrComp6MpknENode__v_;
-text: .text%__1cIcp2bNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cFStateP_sub_Op_ConvI2F6MpknENode__v_;
-text: .text%__1cOMacroAssemblerPempty_FPU_stack6M_v_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%__1cQConstantIntValuePis_constant_int6kM_i_: debugInfo.o;
-text: .text%__1cICodeBlobZis_at_poll_or_poll_return6MpC_i_;
-text: .text%__1cSmulF24_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddD_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceRefKlass.o;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cScompP_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHBoxNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvL2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTcmovII_reg_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cLvframeArrayZdeallocate_monitor_chunks6M_v_;
-text: .text%__1cLvframeArrayHfill_in6MpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pknLRegisterMap_i_v_;
-text: .text%__1cLvframeArrayIallocate6FpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pnLRegisterMap_nFframe_9A9A9A_p0_;
-text: .text%__1cOstoreF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVcompiledICHolderKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNcmovI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cImulINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsalL_eReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cbCAbstractInterpreterGeneratorUset_wide_entry_point6MpnITemplate_rpC_v_;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_data_at6MpnMRegisterImpl_i2_v_;
-text: .text%__1cRsubI_eReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cQsalL_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODeoptimizationLUnrollBlock2t6MiiiiipippCnJBasicType__v_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cKstorePNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2F_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConDNodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cSmulF24_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cQmulI_mem_immNodeFreloc6kM_i_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_Sleep;
-text: .text%JVM_Lseek;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cRmulI_eReg_immNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cNTemplateTableQvolatile_barrier6F_v_;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_ppkc5i_i_: arguments.o;
-text: .text%__1cQmulD_reg_immNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cKVtableStubSpd_code_size_limit6Fi_i_;
-text: .text%__1cMdivD_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cQmulD_reg_immNodeFreloc6kM_i_;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cODeoptimizationScreate_vframeArray6FpnKJavaThread_nFframe_pnLRegisterMap__pnLvframeArray__;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRaddI_mem_eRegNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cNcmovL_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: deoptimization.o;
-text: .text%__1cODeoptimizationRgather_statistics6Fn0ALDeoptReason_n0ALDeoptAction_nJBytecodesECode__v_;
-text: .text%__1cIcp2bNodeMideal_Opcode6kM_i_: ad_i486_misc.o;
-text: .text%__1cODeoptimizationPget_method_data6FpnKJavaThread_nMmethodHandle_i_pnRmethodDataOopDesc__;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cIci2bNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%Unsafe_GetNativeByte;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cTsarL_eReg_32_63NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPconvL2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQmulD_reg_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRuntime.o;
-text: .text%__1cFTypeFGis_nan6kM_i_;
-text: .text%__1cSaddF24_reg_memNodeMcisc_operand6kM_i_: ad_i486_misc.o;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%JVM_NanoTime;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cVMoveF2I_reg_stackNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerFpushl6MnHAddress__v_;
-text: .text%jni_GetEnv;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodLiveness.o;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: interp_masm_i486.o;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cKstoreDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMloadConFNodeFreloc6kM_i_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cHTypePtrKadd_offset6kMi_pk0_;
-text: .text%__1cMorI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cFStateP_sub_Op_ConvI2D6MpknENode__v_;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cQshrL_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmFOperFclone6kM_pnIMachOper__;
-text: .text%__1cFKlassMoop_is_array6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cFStateM_sub_Op_AddF6MpknENode__v_;
-text: .text%__1cOcompI_eRegNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cMloadConFNodeFclone6kM_pnENode__;
-text: .text%__1cTconvI2F_SSF_memNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cPBytecode_invokeLresult_type6kMpnGThread__nJBasicType__;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cOsubF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstoreF_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: machnode.o;
-text: .text%__1cLloadSSINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cLloadSSINodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConFNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cKstoreDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSaddD_reg_roundNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWroundFloat_mem_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cPmovP_nocopyNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: callnode.o;
-text: .text%__1cOsubF24_regNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNstoreImmPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cOcmovI_regUNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddD_reg_imm1NodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cPmovI_nocopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerFfwait6M_v_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cPmovP_nocopyNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cRandL_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNcmovL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cZInterpreterMacroAssemblerRremove_activation6MnITosState_pnMRegisterImpl_iii_v_;
-text: .text%__1cImulINodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cImulINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSaddF24_reg_memNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cImulINodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cOcmpF_cc_P6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_continuation_for6MnITosState__pC_;
-text: .text%__1cLvframeArrayRregister_location6kMi_pC_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constantPoolKlass.o;
-text: .text%__1cVis_positive_one_float6Ff_i_;
-text: .text%__1cRaddI_mem_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulF24_reg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cSdivD_reg_roundNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cSaddF24_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_safept_entry_for6MnITosState_pC_2_;
-text: .text%__1cSaddF24_reg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSstoreD_roundedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdivD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
-text: .text%__1cFStateO_sub_Op_LoadPC6MpknENode__v_;
-text: .text%__1cJAssemblerGmovsxb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSmulF24_reg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cHMulNodeGis_Mul6kM_pk0_: classes.o;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cIGraphKitSgen_native_wrapper6MpnIciMethod__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cOmulIS_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNtestI_regNodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cSaddF24_reg_memNodeRis_cisc_alternate6kM_i_: ad_i486_misc.o;
-text: .text%__1cOsubF24_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cKLoadPCNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cXpartialSubtypeCheckNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cVMoveL2D_reg_stackNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
-text: .text%__1cKdirectOperJnum_edges6kM_I_: ad_i486_clone.o;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cTconvI2F_SSF_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cFTypeFFempty6kM_i_;
-text: .text%__1cKdirectOperNconstant_disp6kM_i_: ad_i486_clone.o;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cNReservedSpace2t6MpcI_v_;
-text: .text%__1cNaddP_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJEventMark2t6MpkcE_v_: nmethod.o;
-text: .text%__1cIMachOperNbase_position6kM_i_;
-text: .text%__1cQorl_eReg_immNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2F_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cPconvL2F_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cWroundFloat_mem_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cYinternal_word_RelocationMforce_target6MpC_v_: relocInfo.o;
-text: .text%__1cQmulD_reg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerGf2ieee6M_v_;
-text: .text%__1cQmulD_reg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cPconvL2D_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_i486_clone.o;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cFStateS_sub_Op_CallNative6MpknENode__v_;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%__1cENodeHdel_out6Mp0_v_: connode.o;
-text: .text%JVM_GetClassContext;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cNdivI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJAssemblerHfincstp6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MnITosState__v_;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cQorI_eReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOMacroAssemblerEfpop6M_v_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassMcreate_klass6FnJBasicType_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cLlog2_intptr6Fi_i_: typeArrayKlass.o;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod__v_;
-text: .text%__1cQAbstractCompilerPsupports_native6M_i_: c2compiler.o;
-text: .text%__1cOGenerateOopMapGdo_jsr6Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cSaddF24_reg_immNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cZInterpreterMacroAssemblerGd2ieee6M_v_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cSmulF24_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSaddF24_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%stat: os_solaris.o;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cWroundFloat_mem_regNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cLConvF2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cLClassLoaderbCupdate_class_path_entry_list6Fpkc_v_;
-text: .text%__1cOcmovI_regUNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJArgumentsRverify_percentage6FIpkc_i_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFStateM_sub_Op_AddD6MpknENode__v_;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJAssemblerEcall6MpnMRegisterImpl_nJrelocInfoJrelocType__v_;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cFTypeFJis_finite6kM_i_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cLOptoRuntimeRresolve_call_Type6F_pknITypeFunc__;
-text: .text%__1cCosHSolarisSset_signal_handler6Fiii_v_;
-text: .text%__1cOPhaseIdealLoopTdo_maximally_unroll6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cSaddF24_reg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cJAssemblerGfnsave6MnHAddress__v_;
-text: .text%__1cVMoveF2I_reg_stackNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMdecI_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cJloadDNodeFreloc6kM_i_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cMloadConLNodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cSaddF24_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMloadConFNodeGis_Con6kM_I_: ad_i486_misc.o;
-text: .text%__1cISubDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLloadSSINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cQorl_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cSaddD_reg_roundNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cKReturnNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframebFset_interpreter_frame_sender_sp6Mpi_v_;
-text: .text%__1cRmulI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovI_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cOMacroAssemblerEfcmp6MpnMRegisterImpl__v_;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cOsubF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWroundFloat_mem_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%jni_GetJavaVM;
-text: .text%__1cHciKlassIis_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cSaddF24_reg_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTconvI2F_SSF_memNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cTconvI2F_SSF_memNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cNReservedSpaceKinitialize6MIIipc_v_;
-text: .text%JVM_LoadLibrary;
-text: .text%__1cCosOreserve_memory6FIpc_1_;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%__1cOstoreF_immNodeFreloc6kM_i_;
-text: .text%__1cVMoveF2I_reg_stackNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cNmulI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerGfild_d6MnHAddress__v_;
-text: .text%__1cRmulI_imm_highNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerGmovsxw6MpnMRegisterImpl_nHAddress__v_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cIcp2bNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIcp2bNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeHsize_of6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cXpartialSubtypeCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPmovP_nocopyNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cVMoveL2D_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
-text: .text%__1cRaddI_mem_eRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOLibraryCallKitbNinline_native_Reflection_getCallerClass6M_i_;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cOLibraryCallKitZinline_native_Class_query6MnIciMethodLIntrinsicId__i_;
-text: .text%__1cOstoreF_immNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cPconvL2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKciTypeFlowLStateVectorOdo_null_assert6MpnHciKlass__v_;
-text: .text%__1cPconvL2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIci2bNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeFclone6kM_pnENode__;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cQmulD_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerHfucomip6Mi_v_;
-text: .text%__1cTGeneratePairingInfoOreport_results6kM_i_: ciMethod.o;
-text: .text%__1cFciEnvbNArrayIndexOutOfBoundsException_instance6M_pnKciInstance__;
-text: .text%__1cRsalI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: callnode.o;
-text: .text%__1cTconvI2F_SSF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMelapsedTimer2t6M_v_: methodLiveness.o;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKMemoryPool2t6Mpkcn0AIPoolType_IIii_v_;
-text: .text%__1cRaddD_reg_imm1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosHSolarisOset_mpss_range6FpcII_i_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cPciInstanceKlassbDcompute_shared_is_initialized6M_i_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cNSpaceCounters2t6MpkciIpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cOPSVirtualSpaceJexpand_by6MI_i_;
-text: .text%__1cSaddF24_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cPmovP_nocopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cIcp2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLklassVtableTis_miranda_entry_at6Mi_i_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cLVtableStubsIcontains6FpC_i_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cOMacroAssemblerQload_signed_word6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cNdivI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXNativeSignatureIteratorLpass_double6M_v_: interpreterRuntime.o;
-text: .text%__1cLVtableStubsPstub_containing6FpC_pnKVtableStub__;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cFStateP_sub_Op_ConvF2I6MpknENode__v_;
-text: .text%__1cODeoptimizationYreset_invocation_counter6FpnJScopeDesc_i_v_;
-text: .text%__1cQshrL_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvF2I_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRuntime.o;
-text: .text%__1cOcompI_eRegNodeFclone6kM_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerNsuper_call_VM6MpnMRegisterImpl_2pC22_v_;
-text: .text%__1cLVtableStubsLcreate_stub6FiipnNmethodOopDesc__pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_: generateOopMap.o;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cTshlL_eReg_32_63NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cQshrL_eReg_CLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLVtableStubsGlookup6Fiii_pnKVtableStub__;
-text: .text%__1cSsarL_eReg_1_31NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNReservedSpaceKfirst_part6MIii_0_;
-text: .text%__1cJAssemblerFfinit6M_v_;
-text: .text%__1cLVtableStubsOis_entry_point6FpC_i_;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: subnode.o;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: frame.o;
-text: .text%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_: stubGenerator_i486.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
-text: .text%__1cLOptoRuntimebBhandle_wrong_method_ic_miss6FpnKJavaThread__pC_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationZtrap_state_set_recompiled6Fii_i_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSmulF24_reg_immNodeFreloc6kM_i_;
-text: .text%__1cLloadSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cKCompiledICOis_megamorphic6kM_i_;
-text: .text%__1cUInterpreterGeneratorbAgenerate_run_compiled_code6M_v_;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MpC_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cIDivDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cSmulF24_reg_immNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cFStateM_sub_Op_DivD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cINegDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableOprepare_invoke6FpnMRegisterImpl_2inJBytecodesECode__v_;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cOcompP_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNGCTaskManagerGthread6MI_pnMGCTaskThread__;
-text: .text%__1cPdouble_quadword6Fpxxx_0_: ad_i486.o;
-text: .text%__1cFStateM_sub_Op_SubD6MpknENode__v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_v_;
-text: .text%__1cSmulF24_reg_memNodeFreloc6kM_i_;
-text: .text%__1cScompP_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_v_;
-text: .text%__1cFStateM_sub_Op_NegD6MpknENode__v_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: gcTaskThread.o;
-text: .text%__1cJlog2_long6Fx_i_: divnode.o;
-text: .text%__1cMelapsedTimer2t6M_v_: compileBroker.o;
-text: .text%__1cNcmovI_regNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cQaddD_reg_immNodeFreloc6kM_i_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNcmovI_memNodeFreloc6kM_i_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: unsafe.o;
-text: .text%__1cPaddress_of_flag6FnXCommandLineFlagWithType__pnEFlag__: globals.o;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cNdivI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cImulINodeFreloc6kM_i_;
-text: .text%__1cNmulI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cNmulI_eRegNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cRClassPathZipEntry2t6Mppvpc_v_;
-text: .text%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cOLibraryCallKitbBinline_native_currentThread6M_i_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cTconvI2F_SSF_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cQaddD_reg_immNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cLClassLoaderSget_canonical_path6Fpc1i_i_;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMstoreSSINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddD_reg_imm1NodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerEdecl6MnHAddress__v_;
-text: .text%__1cOstackSlotFOperFclone6kM_pnIMachOper__;
-text: .text%__1cSaddF24_reg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceRefKlass.o;
-text: .text%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmulD_reg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cOcompP_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cHRetNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_LTGENodeFclone6kM_pnENode__;
-text: .text%__1cNtestI_regNodeFclone6kM_pnENode__;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cRaddL_eReg_memNodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cRaddL_eReg_memNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIcp2bNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cFciEnvOrecord_failure6Mpkc_v_;
-text: .text%__1cNcmovL_regNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
-text: .text%__1cENodeHdel_out6Mp0_v_: ifg.o;
-text: .text%__1cJAssemblerEfld16M_v_;
-text: .text%__1cSmembar_acquireNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cJAssemblerFfld_x6MnHAddress__v_;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerHfistp_d6MnHAddress__v_;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cOMacroAssemblerIfcmp2int6MpnMRegisterImpl_i_v_;
-text: .text%__1cFciEnvXget_or_create_exception6MrpnI_jobject_nMsymbolHandle__pnKciInstance__;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cLloadSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
-text: .text%__1cRaddI_mem_eRegNodeFreloc6kM_i_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cOCompilerThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cIDivFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cSCardTableExtensionbEresize_covered_region_by_start6MnJMemRegion__v_;
-text: .text%__1cJArgumentsMbuild_string6Fppcpkc_v_;
-text: .text%__1cJArgumentsObuild_jvm_args6Fpkc_v_;
-text: .text%__1cJArgumentsMadd_property6Fpkc_i_;
-text: .text%__1cJAssemblerFfmulp6Mi_v_;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstanceKlass.o;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_22_v_;
-text: .text%__1cNcmovL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cRaddI_mem_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_FindSignal;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRuntime.o;
-text: .text%__1cLOptoRuntimeVgenerate_handler_blob6FpCi_pnNSafepointBlob__;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cSaddF24_reg_memNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cOcmpF_cc_P6NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cMVM_OperationNdoit_prologue6M_i_: vm_operations.o;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cUInterpreterGeneratorXcheck_for_compiled_code6MrnFLabel__v_;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cIci2bNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_: arguments.o;
-text: .text%__1cLconvI2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateM_sub_Op_CmpF6MpknENode__v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cOLibraryCallKitVinline_fp_conversions6MnIciMethodLIntrinsicId__i_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cHCompilePget_invoke_name6M_pnIciSymbol__;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cJAssemblerGfmul_d6MnHAddress__v_;
-text: .text%__1cLVtableStubsFenter6FiiipnKVtableStub__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRaddD_reg_imm1NodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cRaddD_reg_imm1NodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cISubFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNandI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cNReservedSpaceJlast_part6MI_0_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cJlookupOne6FpnHJNIEnv__pkcpnGThread__pnH_jclass__: jni.o;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cNSafepointBlob2n6FII_pv_;
-text: .text%__1cQmulD_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2F_SSF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_I_v_;
-text: .text%__1cFTypeDJis_finite6kM_i_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cSPSPromotionManager2t6M_v_;
-text: .text%__1cOstackSlotIOperFscale6kM_i_: ad_i486.o;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_i486.o;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: oopMapCache.o;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveF2I_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddF24_reg_memNodeFreloc6kM_i_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cSdivD_reg_roundNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cPmovP_nocopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cIci2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMOopTaskQdDueue2t6M_v_;
-text: .text%__1cSCommandLineFlagsExJboolAtPut6FnXCommandLineFlagWithType_i_v_;
-text: .text%__1cSCommandLineFlagsExKis_default6FnPCommandLineFlag__i_;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cRaddI_mem_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%JVM_Available;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_2i_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_2i_v_;
-text: .text%__1cMOopTaskQdDueueKinitialize6M_v_;
-text: .text%__1cPmovI_nocopyNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtailjmpIndNodeHtwo_adr6kM_I_: ad_i486_misc.o;
-text: .text%__1cIci2bNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosGgetenv6Fpkcpci_i_;
-text: .text%__1cOtailjmpIndNodeGpinned6kM_i_: ad_i486_misc.o;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cIcp2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLconvI2BNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeFclone6kM_pnENode__;
-text: .text%__1cKciTypeFlowLStateVectorRdo_multianewarray6MpnQciByteCodeStream__v_;
-text: .text%__1cJAssemblerGfild_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6Mi_v_;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNStubGeneratorUgenerate_d2i_wrapper6MpC_1_: stubGenerator_i486.o;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cJAssemblerEfxch6Mi_v_;
-text: .text%__1cJAssemblerFfprem6M_v_;
-text: .text%__1cSvframeStreamCommonbFfill_in_compiled_inlined_sender6M_i_;
-text: .text%__1cJAssemblerJfnstsw_ax6M_v_;
-text: .text%__1cJAssemblerEsahf6M_v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cNVM_DeoptimizeEname6kM_pkc_: vm_operations.o;
-text: .text%__1cOtailjmpIndNodeJnum_opnds6kM_I_: ad_i486_misc.o;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_: vm_operations.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
-text: .text%__1cJAssemblerEfchs6M_v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cSaddF24_reg_immNodeFreloc6kM_i_;
-text: .text%__1cJAssemblerEfabs6M_v_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cRsubI_eReg_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cFStateL_sub_Op_OrL6MpknENode__v_;
-text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFStateM_sub_Op_SubF6MpknENode__v_;
-text: .text%__1cPOopTaskQdDueueSetOregister_queue6MipnMOopTaskQdDueue__v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cSestimate_path_freq6FpnENode__f_: loopnode.o;
-text: .text%__1cFStateP_sub_Op_MoveL2D6MpknENode__v_;
-text: .text%__1cNincI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: memoryService.o;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosure2t6Mi_v_: markSweep.o;
-text: .text%__1cNstoreImmBNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLloadSSINodeZcheck_for_anti_dependence6kM_i_: ad_i486_misc.o;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cOmulF24_regNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cJAssemblerEmull6MnHAddress__v_;
-text: .text%__1cJAssemblerDorl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFshrdl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cJAssemblerFcpuid6M_v_;
-text: .text%__1cJAssemblerEfldz6M_v_;
-text: .text%__1cJAssemblerFfld_s6Mi_v_;
-text: .text%__1cJAssemblerFfst_s6MnHAddress__v_;
-text: .text%__1cJAssemblerFfst_d6MnHAddress__v_;
-text: .text%__1cOaddF24_regNodeMcisc_version6Mi_pnIMachNode__;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
-text: .text%__1cSaddF24_reg_immNodeKconst_size6kM_i_: ad_i486_misc.o;
-text: .text%__1cHMatcherQconvL2FSupported6F_ki_;
-text: .text%__1cFStateP_sub_Op_ConvL2F6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2D6MpknENode__v_;
-text: .text%__1cGatomll6Fpkcpx_i_: arguments.o;
-text: .text%__1cJArgumentsRcheck_memory_size6Fxx_n0AJArgsRange__;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cPconvD2F_regNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cJArgumentsRparse_memory_size6Fpkcpxx_n0AJArgsRange__;
-text: .text%__1cFStateP_sub_Op_ConvD2F6MpknENode__v_;
-text: .text%__1cHnmethodVinvalidate_osr_method6M_v_;
-text: .text%__1cJArgumentsXPropertyList_unique_add6FppnOSystemProperty_pkcpc_v_;
-text: .text%__1cQAgentLibraryList2t6M_v_: arguments.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: arrayKlassKlass.o;
-text: .text%__1cJAssemblerEmovb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
-text: .text%__1cPconvL2D_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: parse1.o;
-text: .text%__1cPconvD2F_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNmulI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMFastLockNodeLis_FastLock6kM_pk0_: classes.o;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cIPSOldGenOgen_size_limit6M_I_;
-text: .text%__1cIciObjectMis_classless6kM_i_: ciMethod.o;
-text: .text%__1cIPSOldGenGresize6MI_v_;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cQorl_eReg_immNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cPconvL2F_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cRInvocationCounterMreinitialize6Fi_v_;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cFParseNfetch_monitor6MipnENode_2_2_;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: gcTaskThread.o;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: universe.o;
-text: .text%__1cXpartialSubtypeCheckNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%lstat: perfMemory_solaris.o;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cPfilename_to_pid6Fpkc_l_: perfMemory_solaris.o;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cTis_directory_secure6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MpnMRegisterImpl__v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cJTimeStamp2t6M_v_: runtimeService.o;
-text: .text%__1cIPSOldGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Ipkci_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cLOptoRuntimeSfetch_monitor_Type6F_pknITypeFunc__;
-text: .text%__1cbCAbstractInterpreterGeneratorTgenerate_error_exit6Mpkc_pC_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_i486.o;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cMelapsedTimer2t6M_v_: psAdaptiveSizePolicy.o;
-text: .text%__1cUPSAdaptiveSizePolicybQpromo_increment_with_supplement_aligned_up6MI_I_;
-text: .text%__1cUPSAdaptiveSizePolicyPpromo_increment6MII_I_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_2i_v_;
-text: .text%__1cCosbCis_thread_cpu_time_supported6F_i_;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOMacroAssemblerIsave_eax6MpnMRegisterImpl__v_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cRCardTableModRefBSbCpar_chunk_heapword_alignment6F_I_: tenuredGeneration.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%__1cSReferenceProcessor2t6MnJMemRegion_iii_v_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cOMacroAssemblerLrestore_eax6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerFfremr6MpnMRegisterImpl__v_;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%__1cOMacroAssemblerGsincos6Miii_v_;
-text: .text%__1cEMIN24CI_6FTA0_0_: tenuredGeneration.o;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cNGCTaskManagerKset_thread6MIpnMGCTaskThread__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%__1cNdefaultStreamMhas_log_file6M_i_;
-text: .text%__1cUGenericGrowableArrayGgrow646Mi_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: oopMapCache.o;
-text: .text%__1cOPSVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cYalign_to_allocation_size6FI_I_: heap.o;
-text: .text%__1cWcheck_compare_clipping6FipnGIfNode_pnHConNode_rpnENode__i_: cfgnode.o;
-text: .text%__1cLConvL2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cUParallelScavengeHeapOresize_old_gen6MI_v_;
-text: .text%__1cIciObjectOis_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cRcheck_if_clipping6FpknKRegionNode_rpnGIfNode_5_i_: cfgnode.o;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cKJavaThread2t6M_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__cplus_fini_at_exit: CCrti.o;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cIUniverseUreinitialize_itables6F_v_;
-text: .text%__1cNReservedSpace2t6MIIipc_v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cSuniverse_post_init6F_v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%Unsafe_PageSize;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cHVM_ExitEname6kM_pkc_: vm_operations.o;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNCollectedHeapYlarge_typearray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassVoop_is_typeArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cKTypeOopPtrEmake6FnHTypePtrDPTR_i_pk0_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cKVM_VersionWget_processor_features6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cVverificationType_exit6F_v_;
-text: .text%__1cQVerificationTypeKinitialize6F_v_;
-text: .text%__1cQVerificationTypeIfinalize6F_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cRAllocateTLSOffset6F_v_: threadLS_solaris_i486.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cYVM_Version_StubGeneratorTgenerate_getPsrInfo6M_pC_: vm_version_i486.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cVverificationType_init6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cGThreadWset_as_starting_thread6M_i_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cFVTuneEexit6F_v_;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: typeArrayKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cKvtune_init6F_v_;
-text: .text%__1cIUniversePcheck_alignment6FIIpkc_v_;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: constantPoolKlass.o;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFJNIidKdeallocate6Fp0_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cLlog2_intptr6Fi_i_: heap.o;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cICodeHeapHreserve6MIII_i_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cSinstanceKlassKlassUoop_is_instanceKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbCset_safepoints_for_all_bytes6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbEset_entry_points_for_all_bytes6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: instanceKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSCommandLineFlagsExKuintxAtPut6FnXCommandLineFlagWithType_I_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cMelapsedTimer2t6M_v_: fprofiler.o;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: dictionary.o;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cKDictionaryKfree_entry6MpnPDictionaryEntry__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cFStateQ_sub_Op_TailJump6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_NegF6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cODeoptimizationTload_class_by_index6FnSconstantPoolHandle_i_v_;
-text: .text%__1cODeoptimizationTload_class_by_index6FnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKScopeValuePis_constant_int6kM_i_: debugInfo.o;
-text: .text%__1cUConstantOopReadValuePis_constant_oop6kM_i_: debugInfo.o;
-text: .text%__1cUConstantOopReadValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cRcheck_basic_types6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_: generateOopMap.o;
-text: .text%__1cMelapsedTimer2t6M_v_: generateOopMap.o;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cRAlwaysTrueClosure2t6M_v_: genCollectedHeap.o;
-text: .text%__1cKNoopGCTaskQcreate_on_c_heap6F_p0_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cXSynchronizedGCTaskQdDueue2t6MpnLGCTaskQdDueue_pnFMutex__v_;
-text: .text%__1cLGCTaskQdDueueQcreate_on_c_heap6F_p0_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%JVM_MaxMemory;
-text: .text%JVM_Halt;
-text: .text%JVM_InitProperties;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cbDinitializeDirectBufferSupport6FpnHJNIEnv___i_: jni.o;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: jvmtiEnvBase.o;
-text: .text%__1cNGrowableArray4CpnMJvmtiEnvBase__2t6Mii_v_: jvmtiEnvBase.o;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_Socket;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cLlog2_intptr6Fi_i_: interpreter_i486.o;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRuntime.o;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: cpCacheKlass.o;
-text: .text%__1cJAssemblerEmull6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerGmovsxw6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGmovsxb6MpnMRegisterImpl_2_v_;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsbSparse_java_tool_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsbNparse_java_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsVfinalize_vm_init_args6FpnMSysClassPath_i_i_;
-text: .text%__1cJArgumentsWparse_each_vm_init_arg6FpknOJavaVMInitArgs_pnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
-text: .text%__1cJArgumentsbOparse_java_compiler_environment_variable6F_v_;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerJdecrement6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerLextend_sign6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFfaddp6Mi_v_;
-text: .text%__1cJAssemblerGfdivrp6Mi_v_;
-text: .text%__1cJAssemblerHfdivr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerHfdivr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfmul_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfadd_d6MnHAddress__v_;
-text: .text%__1cJAssemblerGfadd_s6MnHAddress__v_;
-text: .text%__1cJAssemblerFfsqrt6M_v_;
-text: .text%__1cJAssemblerEfcos6M_v_;
-text: .text%__1cJAssemblerEfsin6M_v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerExchg6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEsubl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerFshldl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cHi2sNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHi2bNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cNstoreImmINodeErule6kM_I_: ad_i486_misc.o;
-text: .text%__1cLconvP2BNodePoper_input_base6kM_I_: ad_i486_misc.o;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_i486_expand.o;
-text: .text%__1cRaddL_eReg_memNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLconvP2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIcp2bNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_i486.o;
-text: .text%__1cTconvI2F_SSF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQmulD_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOtailjmpIndNodeFreloc6kM_i_;
-text: .text%__1cTconvI2F_SSF_memNodeFreloc6kM_i_;
-text: .text%__1cQmulD_reg_memNodeFreloc6kM_i_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cQno_shared_spaces6F_v_: arguments.o;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_III_v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_IIIIIII_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_i486_pipeline.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cOcompiler2_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cMelapsedTimer2t6M_v_: compilationPolicy.o;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cNExceptionBlob2n6FII_pv_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNExceptionBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cQUncommonTrapBlob2n6FII_pv_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQUncommonTrapBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cSDeoptimizationBlob2n6FII_pv_;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: constantPoolKlass.o;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOracleRparse_from_string6Fpkc_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cHcc_file6F_pkc_: compilerOracle.o;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: cfgnode.o;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cMTailJumpNode2t6MpnENode_22222_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerIlcmp2int6MpnMRegisterImpl_222_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerElmul6Mii_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl_3_v_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTClassLoadingServiceVnotify_class_unloaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cRciArrayKlassKlassUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cLOptoRuntimeVhandle_exception_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray1_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cWResolveOopMapConflictsOreport_results6kM_i_: rewriter.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cQRelocationHolder2t6M_v_: relocInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cNcarSpace_init6F_v_;
-text: .text%__1cICarSpaceEinit6F_v_;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
-text: .text%__1cNSharedRuntimeUlookup_function_DD_D6FrpFpnHJNIEnv__pnH_jclass_dd_dpkc_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cTAssertIsPermClosure2t6M_v_: sharedHeap.o;
-text: .text%__1cLOptoRuntimeYgenerate_arraycopy_stubs6F_v_;
-text: .text%__1cLOptoRuntimebPgenerate_polling_page_return_handler_blob6F_v_;
-text: .text%__1cLOptoRuntimebSgenerate_polling_page_safepoint_handler_blob6F_v_;
-text: .text%__1cLOptoRuntimebPgenerate_illegal_instruction_handler_blob6F_v_;
-text: .text%__1cLOptoRuntimeUsetup_exception_blob6F_v_;
-text: .text%__1cLOptoRuntimeWfill_in_exception_blob6F_v_;
-text: .text%__1cLOptoRuntimebBgenerate_uncommon_trap_blob6F_v_;
-text: .text%__1cHRegMask2t6Miiiii_v_: regmask.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cMelapsedTimer2t6M_v_: psMarkSweep.o;
-text: .text%__1cTPSAlwaysTrueClosure2t6M_v_: psMarkSweep.o;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
-text: .text%__1cUPSAdaptiveSizePolicy2t6MIIIIIddI_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: placeholders.o;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cUdelete_shared_memory6FpcI_v_: perfMemory_solaris.o;
-text: .text%__1cUcreate_shared_memory6FI_pc_: perfMemory_solaris.o;
-text: .text%__1cSmmap_create_shared6FI_pc_: perfMemory_solaris.o;
-text: .text%__1cbAcreate_sharedmem_resources6Fpkc1I_i_: perfMemory_solaris.o;
-text: .text%__1cRmake_user_tmp_dir6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cURecompilationMonitorbGstart_recompilation_monitor_task6F_v_;
-text: .text%__1cKPSYoungGenUset_space_boundaries6MII_v_;
-text: .text%__1cKPSYoungGenbGcompute_initial_space_boundaries6M_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGen2t6MIII_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cMelapsedTimer2t6M_v_: psScavenge.o;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cPOopTaskQdDueueSet2t6Mi_v_: psPromotionManager.o;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.o;
-text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_: psPromotionLAB.o;
-text: .text%__1cRalign_object_size6Fi_i_: psPromotionLAB.o;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cIPSOldGen2t6MIIIpkci_v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: symbolKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cINegFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cNStubGeneratorTgenerate_verify_oop6M_pC_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorUgenerate_atomic_xchg6M_pC_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorYgenerate_get_previous_fp6M_pC_: stubGenerator_i486.o;
-text: .text%__1cNStubGeneratorUcreate_control_words6M_v_: stubGenerator_i486.o;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cMPeriodicTaskLis_enrolled6kM_i_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cLremove_file6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cNMemoryServicebFadd_parallel_scavenge_heap_info6FpnUParallelScavengeHeap__v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cMCodeHeapPool2t6MpnICodeHeap_pkci_v_;
-text: .text%__1cYSurvivorMutableSpacePool2t6MpnKPSYoungGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cUEdenMutableSpacePool2t6MpnKPSYoungGen_pnMMutableSpace_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cQPSGenerationPool2t6MpnJPSPermGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cQPSGenerationPool2t6MpnIPSOldGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cJMarkSweepSMarkAndPushClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepRFollowRootClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepSFollowStackClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepOIsAliveClosure2t6M_v_: markSweep.o;
-text: .text%__1cJMarkSweepQKeepAliveClosure2t6M_v_: markSweep.o;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cNMemoryServiceXadd_psYoung_memory_pool6FpnKPSYoungGen_pnNMemoryManager_4_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cHRetDataKis_RetData6M_i_: methodDataOop.o;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cNGrowableArray4CpnKMemoryPool__2t6Mii_v_: memoryService.o;
-text: .text%__1cNGrowableArray4CpnNMemoryManager__2t6Mii_v_: memoryService.o;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cNMemoryServiceWadd_psPerm_memory_pool6FpnJPSPermGen_pnNMemoryManager__v_;
-text: .text%__1cNMemoryServiceVadd_psOld_memory_pool6FpnIPSOldGen_pnNMemoryManager__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: klassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: klassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassUoop_is_instanceKlass6kM_i_: klassKlass.o;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cJMemRegion2t6M_v_: jvmtiTagMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cWNonPrintingResourceObj2n6FInLResourceObjPallocation_type__pv_: jvmtiImpl.o;
-text: .text%__1cNGrowableArray4CpnPJvmtiRawMonitor__2t6Mii_v_: jvmtiImpl.o;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cJTimeStamp2t6M_v_: management.o;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_: lowMemoryDetector.o;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cRLowMemoryDetectorUhas_pending_requests6F_i_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cKRegionNodeUdepends_only_on_test6kM_i_: loopnode.o;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: loaderConstraints.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: library_call.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: objArrayKlass.o;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_I_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cMarrayOopDescLheader_size6FnJBasicType__i_: parGCAllocBuffer.o;
-text: .text%__1cRalign_object_size6Fi_i_: parGCAllocBuffer.o;
-text: .text%__1cHoopDescLheader_size6F_i_: parGCAllocBuffer.o;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cCosMsupports_sse6F_i_;
-text: .text%__1cVcheck_for_sse_support6F_v_: os_solaris_i486.o;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cWget_sharedmem_filename6Fpkci_pc_: perfMemory_solaris.o;
-text: .text%__1cNget_user_name6Fl_pc_: perfMemory_solaris.o;
-text: .text%__1cQget_user_tmp_dir6Fpkc_pc_: perfMemory_solaris.o;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEkind6M_nNCollectedHeapEName__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cOisT2_libthread6F_i_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cQDoNothingClosure2t6M_v_: oopMap.o;
-text: .text%__1cXonStackReplacement_init6F_v_;
-text: .text%__1cSOnStackReplacementKinitialize6F_v_;
-text: .text%__1cNObjectMonitorREntryQdDueue_unlink6MpnMObjectWaiter__v_;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: objArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassUoop_is_objArrayKlass6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlass.o;
-text: .text%__1cCosXis_server_class_machine6F_i_;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cCosHSolarisRmpss_sanity_check6F_v_;
-text: .text%__1cCosPuncommit_memory6FpcI_i_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cVcheck_pending_signals6Fi_i_: os_solaris.o;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosScreate_main_thread6FpnGThread__i_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_sparc	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7113 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cLOptoRuntimeLjshort_copy6Fph1I_v_;
-text: .text%__1cLOptoRuntimeTarrayof_jshort_copy6FpnIHeapWord_2I_v_;
-text: .text%__1cSPSPromotionManagerWcopy_to_survivor_space6MpnHoopDesc__2_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cNinstanceKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cJMarkSweepO_mark_and_push6FppnHoopDesc__v_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMOopTaskQdDueueKpop_global6MrpnHoopDesc__i_;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: ad_sparc_misc.o;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: ifg.o;
-text: .text%__1cJMarkSweepPmark_and_follow6FppnHoopDesc__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_sparc_misc.o;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHRegMaskFis_UP6kM_i_;
-text: .text%__1cUGenericGrowableArrayLraw_at_grow6MipknEGrET__pv_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_sparc_misc.o;
-text: .text%__1cIMachNodeNrematerialize6kM_i_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: classes.o;
-text: .text%__1cIProjNodeHis_Proj6M_p0_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: classes.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: classes.o;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cENodeHis_Copy6kM_I_: ad_sparc_misc.o;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cENodeHis_Copy6kM_I_: classes.o;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: ad_sparc_misc.o;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cIMachNodeJideal_reg6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cRMachSpillCopyNodeMis_SpillCopy6M_p0_: ad_sparc.o;
-text: .text%__1cENodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cNSharedRuntimeElmul6Fxx_x_;
-text: .text%__1cPOopTaskQdDueueSetFsteal6MipirpnHoopDesc__i_;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cENodeGpinned6kM_i_: classes.o;
-text: .text%__1cJiRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNRelocIteratorEnext6M_i_: relocInfo.o;
-text: .text%__1cRMachSpillCopyNodeHis_Copy6kM_I_: ad_sparc.o;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cHPhiNodeGis_Phi6M_p0_: cfgnode.o;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: callnode.o;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: ad_sparc.o;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cOloadConI13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNobjArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cEDictGInsert6Mpv1i_1_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cJMultiNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeGis_CFG6kM_i_: cfgnode.o;
-text: .text%__1cOloadConI13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOloadConI13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_: markSweep.o;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cIProjNodeGis_CFG6kM_i_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cINodeHashLhash_delete6MpknENode__i_;
-text: .text%__1cFArenaIcontains6kMpkv_i_;
-text: .text%__1cOloadConI13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: classes.o;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntCeq6kMpknEType__i_;
-text: .text%__1cKbranchNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIProjNodeGpinned6kM_i_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: classes.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: classes.o;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: cfgnode.o;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: nmethod.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: ad_sparc.o;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cMPhaseChaitinKelide_copy6MpnENode_ipnFBlock_rnJNode_List_6i_i_;
-text: .text%__1cQObjectStartArrayMobject_start6MpnIHeapWord__2_: cardTableExtension.o;
-text: .text%__1cHCompileRvalid_bundle_info6MpknENode__i_;
-text: .text%__1cENodeNrematerialize6kM_i_: classes.o;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHCompileNnode_bundling6MpknENode__pnGBundle__;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopopts.o;
-text: .text%__1cOlower_pressure6FpnDLRG_IpnFBlock_pI4_v_: ifg.o;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_: ad_sparc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cENodeHis_Copy6kM_I_: cfgnode.o;
-text: .text%__1cKSchedulingLanti_do_def6MpnFBlock_pnENode_nHOptoRegEName_i_v_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: ad_sparc.o;
-text: .text%__1cIMachNodePin_oper_RegMask6kMIII_pknHRegMask__;
-text: .text%__1cETypeJsingleton6kM_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: coalesce.o;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cETypeLisa_oop_ptr6kM_i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cNMachIdealNodeErule6kM_I_: ad_sparc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_sparc_misc.o;
-text: .text%__1cIciObjectGequals6Mp0_i_;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cHTypeIntJsingleton6kM_i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: classes.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: cfgnode.o;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassQoop_is_typeArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cNSharedRuntimeDl2f6Fx_f_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: classes.o;
-text: .text%__1cIParmNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cMPhaseChaitinKbias_color6MrnDLRG_i_nHOptoRegEName__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cJiRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: classes.o;
-text: .text%__1cJiRegIOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cENodeXpartial_latency_of_defs6MrnLBlock_Array_rnNGrowableArray4CI___v_;
-text: .text%__1cXPipeline_Use_Cycle_Mask2L6Mi_r0_: ad_sparc_pipeline.o;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cJMultiNodeIis_Multi6M_p0_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: relocInfo.o;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_sparc.o;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cFMutexGunlock6M_v_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cFStateRMachOperGenerator6MipnIMachNode_pnHCompile__pnIMachOper__;
-text: .text%__1cKRelocationNunpack_2_ints6Mri1_v_: relocInfo.o;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBlob.o;
-text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cKJavaThreadPcook_last_frame6MnFframe__1_;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cUGenericGrowableArrayPraw_at_put_grow6MipknEGrET_3_v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cKRegionNodeGpinned6kM_i_: classes.o;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJloadINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_sparc.o;
-text: .text%__1cKbranchNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateDDFA6MipknENode__i_;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cENodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cOMethodLivenessKBasicBlockXcompute_gen_kill_single6MpnQciByteCodeStream__v_;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_sparc.o;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: typeArrayKlass.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_I_: parallelScavengeHeap.o;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cIBoolNodeHis_Bool6M_p0_: subnode.o;
-text: .text%__1cMPipeline_UseMfull_latency6kMIrk0_I_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_: ad_sparc.o;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cHPhiNodeGpinned6kM_i_: cfgnode.o;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodeEjvms6kM_pnIJVMState__: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopnode.o;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cIMachNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cENodeFIdeal6MpnIPhaseGVN_i_p0_;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cICallNodeHis_Call6M_p0_: callnode.o;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: ad_sparc.o;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cOtypeArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cGIfNodeGpinned6kM_i_: classes.o;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrCeq6kMpknEType__i_;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: classes.o;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachNode2t6M_v_;
-text: .text%__1cIMachNodeQis_MachNullCheck6M_pnRMachNullCheckNode__: ad_sparc.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: callnode.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: callnode.o;
-text: .text%__1cOis_diamond_phi6FpnENode__i_: cfgnode.o;
-text: .text%__1cHMatcherKLabel_Root6MpknENode_pnFState_p16_6_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: memnode.o;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: classes.o;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: callnode.o;
-text: .text%__1cMOopTaskQdDueueOpop_local_slow6MInOTaskQdDueueSuperDAge__i_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cKTypeOopPtrJsingleton6kM_i_;
-text: .text%__1cPindOffset13OperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cFMutexElock6M_v_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cJCProjNodeGis_CFG6kM_i_: cfgnode.o;
-text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cGIfNodeFis_If6M_p0_: classes.o;
-text: .text%__1cENodeNrematerialize6kM_i_: cfgnode.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nmethod.o;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc_misc.o;
-text: .text%__1cOmatch_into_reg6FpnENode_iii1_i_: matcher.o;
-text: .text%__1cENodeSremove_dead_region6MpnIPhaseGVN_i_i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: classes.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: memnode.o;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cKTypeAryPtrCeq6kMpknEType__i_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: cfgnode.o;
-text: .text%__1cSinstanceKlassKlassMoop_is_klass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: classes.o;
-text: .text%__1cMloadConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitHstopped6M_i_;
-text: .text%__1cETypeKhas_memory6kM_i_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: cfgnode.o;
-text: .text%__1cMloadConPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStartNodeGpinned6kM_i_: callnode.o;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileMFillLocArray6MpnENode_pnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cIHaltNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrEmake6FnHTypePtrDPTR_pnHciKlass_ipnIciObject_i_pk0_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: cfgnode.o;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cYCallStaticJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: callnode.o;
-text: .text%__1cKMachIfNodeJis_MachIf6kM_pk0_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: classes.o;
-text: .text%__1cbFCompressedLineNumberWriteStreamKwrite_pair6Mii_v_;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cSCallStaticJavaNodeEhash6kM_I_: callnode.o;
-text: .text%__1cHMatcherKReduceOper6MpnFState_ipnIMachNode_rpnENode__v_;
-text: .text%__1cMPipeline_UseJadd_usage6Mrk0_v_;
-text: .text%__1cRCardTableModRefBSEkind6M_nKBarrierSetEName__: cardTableExtension.o;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cJiRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cNsymbolOopDescGequals6kMpkci_i_;
-text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_nHOptoRegEName__;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cJTypeTupleJsingleton6kM_i_;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cJiRegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cPClassFileParserbEparse_constant_pool_utf8_entry6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cKSchedulingWAddNodeToAvailableList6MpnENode__v_;
-text: .text%__1cKSchedulingSChooseNodeToBundle6M_pnENode__;
-text: .text%__1cKSchedulingPAddNodeToBundle6MpnENode_pknFBlock__v_;
-text: .text%__1cKRelocationLunpack_data6M_v_: codeBlob.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: memnode.o;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: classes.o;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cMMutableSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cJPSPermGenSallocate_permanent6MI_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6MI_pnIHeapWord__;
-text: .text%__1cENodeGis_CFG6kM_i_: connode.o;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMutableSpaceMcas_allocate6MI_pnIHeapWord__;
-text: .text%__1cNflagsRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: cfgnode.o;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pnIciObject_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cHCmpNodeGis_Cmp6kM_pk0_: classes.o;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cTconstantPoolOopDescSklass_ref_index_at6Mi_i_;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cENodeGis_CFG6kM_i_: subnode.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: multnode.o;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: classes.o;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
-text: .text%__1cJMultiNodeEhash6kM_I_: classes.o;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQciByteCodeStreamEjava6MnJBytecodesECode__2_;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cMMachCallNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFBlockGselect6MrnJNode_List_rnLBlock_Array_pirnJVectorSet_IrnNGrowableArray4CI___pnENode__;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cXPipeline_Use_Cycle_MaskCOr6Mrk0_v_;
-text: .text%__1cTconstantPoolOopDescQsignature_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc_misc.o;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cIMachNodeGExpand6MpnFState_rnJNode_List__p0_: ad_sparc_misc.o;
-text: .text%__1cGBitMapFclear6M_v_;
-text: .text%__1cHConNodeGis_Con6kM_I_: classes.o;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlass.o;
-text: .text%__1cFBlockLis_uncommon6kMrnLBlock_Array__i_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: cfgnode.o;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: multnode.o;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6FnTobjArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cFframeVoopmapreg_to_location6kMnFVMRegEName_pknLRegisterMap__ppnHoopDesc__;
-text: .text%__1cENodeHget_int6kM_i_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: methodDataOop.o;
-text: .text%__1cHMatcherTReduceInst_Interior6MpnFState_ipnIMachNode_IrpnENode__I_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassQarray_klass_impl6FnTinstanceKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cMflagsRegOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: codeBlob.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: cfgnode.o;
-text: .text%__1cICodeBlobLoop_addr_at6kMi_ppnHoopDesc__;
-text: .text%__1cObranchConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: classes.o;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: multnode.o;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cPciInstanceKlassMis_interface6M_i_: ciInstanceKlass.o;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cPindOffset13OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: coalesce.o;
-text: .text%__1cUcompI_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cENodeOis_block_start6kM_i_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKCodeBufferIrelocate6MpCrknQRelocationHolder_i_v_;
-text: .text%__1cKbranchNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPjava_lang_ClassMis_primitive6FpnHoopDesc__i_;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cIAddPNodeHis_AddP6M_p0_: classes.o;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cUGenericGrowableArray2t6Mii_v_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cVcompP_iRegP_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cNbranchConNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: subnode.o;
-text: .text%__1cENodeHis_Copy6kM_I_: memnode.o;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGBitMap2t6MpII_v_;
-text: .text%__1cUGenericGrowableArray2t6MpnFArena_iipnEGrET__v_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cITypeLongCeq6kMpknEType__i_;
-text: .text%__1cLPCTableNodeGpinned6kM_i_: classes.o;
-text: .text%__1cTconstantPoolOopDescbAname_and_type_ref_index_at6Mi_i_;
-text: .text%__1cHPhiNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeGpinned6kM_i_: connode.o;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeGis_Con6kM_I_: classes.o;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cUParallelScavengeHeapPis_in_permanent6kMpkv_i_: parallelScavengeHeap.o;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cHCompileJcan_alias6MpknHTypePtr_i_i_;
-text: .text%__1cKimmI13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_sparc_misc.o;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: cfgnode.o;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: classes.o;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cObranchConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cKis_x2logic6FpnIPhaseGVN_pnENode__3_: cfgnode.o;
-text: .text%__1cHAbsNodeLis_absolute6FpnIPhaseGVN_pnENode__4_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGBitMapGat_put6MIi_v_;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cLPhaseValuesGintcon6Mi_pnIConINode__;
-text: .text%__1cJloadBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: multnode.o;
-text: .text%__1cGThreadLis_in_stack6kMpC_i_;
-text: .text%__1cKJavaThreadNis_lock_owned6kMpC_i_;
-text: .text%__1cFMutexElock6MpnGThread__v_;
-text: .text%__1cKciTypeFlowLStateVectorSapply_one_bytecode6MpnQciByteCodeStream__i_;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cENodeLis_MergeMem6M_pnMMergeMemNode__: classes.o;
-text: .text%__1cGOopMapJset_value6MnHOptoRegEName_ii_v_;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: classes.o;
-text: .text%__1cTconstantPoolOopDescLname_ref_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cLBoxLockNodeNrematerialize6kM_i_: classes.o;
-text: .text%__1cKBranchDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: callnode.o;
-text: .text%__1cJTypeTupleCeq6kMpknEType__i_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cSaddP_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_sparc.o;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cObranchConPNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: symbolKlass.o;
-text: .text%__1cHCompilePfind_alias_type6MpknHTypePtr_i_pn0AJAliasType__;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cKbranchNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOcompU_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cQSystemDictionaryXcheck_signature_loaders6FnMsymbolHandle_nGHandle_2ipnGThread__v_;
-text: .text%__1cKbranchNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: cfgnode.o;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cHMemNodeMIdeal_common6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceKlass.o;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cENodeGis_Con6kM_I_: subnode.o;
-text: .text%__1cFframeUis_interpreted_frame6kM_i_;
-text: .text%__1cLsymbolKlassNoop_is_symbol6kM_i_: symbolKlass.o;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cETypeFempty6kM_i_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cMMachCallNodeLis_MachCall6M_p0_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeHis_Mach6M_p0_: machnode.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: connode.o;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cNSafePointNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cJiRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: multnode.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cMPhaseIterGVNbGregister_new_node_with_optimizer6MpnENode__2_;
-text: .text%__1cPciInstanceKlassRis_instance_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cOloadConI13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOloadConI13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cOno_flip_branch6FpnFBlock__i_: block.o;
-text: .text%__1cMloadConINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJiRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cJrelocInfo2t6Mn0AJrelocType_ii_v_;
-text: .text%__1cPSignatureStreamHis_done6kM_i_;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cIAddPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cQaddP_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescPis_empty_method6kM_i_;
-text: .text%__1cSaddI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKReflectionTverify_field_access6FpnMklassOopDesc_22nLAccessFlags_ii_i_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMflagsRegOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cJiRegLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cRshlI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZPhaseConservativeCoalesceJcopy_copy6MpnENode_2pnFBlock_I_i_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: lcm.o;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cKRelocationSfix_oop_relocation6M_v_: relocInfo.o;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cNflagsRegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKcmpOpPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cMloadConINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescRis_not_compilable6kMi_i_;
-text: .text%__1cNmethodOopDescLis_accessor6kM_i_;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeRawPtrJsingleton6kM_i_;
-text: .text%__1cGIfNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHMemNodeGis_Mem6M_p0_: classes.o;
-text: .text%__1cSCallStaticJavaNodeRis_CallStaticJava6kM_pk0_: callnode.o;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cENodeHis_Goto6kM_I_: classes.o;
-text: .text%__1cPciObjectFactorySget_unloaded_klass6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cNmethodOopDescMintrinsic_id6kM_n0ALIntrinsicId__;
-text: .text%__1cQaddP_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
-text: .text%__1cNflagsRegUOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cQciByteCodeStreamMreset_to_bci6Mi_v_;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cMMergeMemNodeLis_MergeMem6M_p0_: memnode.o;
-text: .text%__1cFBlockOschedule_local6MrnHMatcher_rnLBlock_Array_pirnJVectorSet_rnNGrowableArray4CI___i_;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cObranchConUNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQCompressedStream2t6MpCi_v_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMObjectLocker2t6MnGHandle_pnGThread__v_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cNSafePointNodebBneeds_polling_address_input6F_i_;
-text: .text%__1cKRegionNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOcompI_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cENodeGis_CFG6kM_i_: memnode.o;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cOloadConI13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cRMachSafePointNodeQis_MachSafePoint6M_p0_: ad_sparc_misc.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: parse2.o;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: classes.o;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframeZsender_with_pc_adjustment6kMpnLRegisterMap_pnICodeBlob_i_0_;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cFframeGsender6kMpnLRegisterMap_pnICodeBlob__0_;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cILoadNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeGpinned6kM_i_: subnode.o;
-text: .text%__1cKbranchNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cMPhaseIterGVNFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cNbranchConNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSPSPromotionManagerMdrain_stacks6M_v_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cLis_cond_add6FpnIPhaseGVN_pnHPhiNode__pnENode__;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: cfgnode.o;
-text: .text%__1cNbranchConNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompU_iRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJdo_method6FpnNmethodOopDesc__v_: recompilationMonitor.o;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cILoadNodeHis_Load6M_p0_: classes.o;
-text: .text%__1cYCallStaticJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: subnode.o;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: split_if.o;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cVcompP_iRegP_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: parse1.o;
-text: .text%__1cENodeGpinned6kM_i_: memnode.o;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cFciEnvXget_klass_by_index_impl6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: methodDataOop.o;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: methodDataOop.o;
-text: .text%__1cQaddP_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStoreNodeIis_Store6kM_pk0_: classes.o;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstorePNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cKbranchNodeHis_Goto6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cTremove_useless_bool6FpnGIfNode_pnIPhaseGVN__pnENode__: ifnode.o;
-text: .text%__1cGOopMapHset_xxx6MnHOptoRegEName_nLOopMapValueJoop_types_ii2_v_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cJloadINodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPSignatureStreamJis_object6kM_i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: callnode.o;
-text: .text%__1cIBoolNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: multnode.o;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cMgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: subnode.o;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cGOopMapHset_oop6MnHOptoRegEName_ii_v_;
-text: .text%__1cKSchedulingbFComputeRegisterAntidependencies6MpnFBlock__v_;
-text: .text%__1cKSchedulingPComputeUseCount6MpknFBlock__v_;
-text: .text%__1cITypeNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cHTypePtrHget_con6kM_i_;
-text: .text%__1cUcompI_iReg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: ad_sparc.o;
-text: .text%__1cIJumpDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc.o;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc.o;
-text: .text%__1cENodeJis_Branch6kM_I_: ad_sparc.o;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cVcompP_iRegP_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cHSubNodeGis_Sub6M_p0_: classes.o;
-text: .text%__1cNPhaseRegAllocGis_oop6kMpknENode__i_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cQaddI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConUNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: multnode.o;
-text: .text%__1cUParallelScavengeHeapVunsafe_max_tlab_alloc6kM_I_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cFMutexbClock_without_safepoint_check6M_v_;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cIMachNodeNis_MachEpilog6M_pnOMachEpilogNode__: ad_sparc.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: codeBlob.o;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cKSharedHeapXfill_region_with_object6FnJMemRegion__v_;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cUcompI_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLMachNopNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cRlock_ptr_RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cPVirtualCallDataPadjust_pointers6M_v_;
-text: .text%__1cPVirtualCallDataPfollow_contents6M_v_;
-text: .text%__1cIJVMStateNclone_shallow6kM_p0_;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: classes.o;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRMachSpillCopyNodeOimplementation6kMpnKCodeBuffer_pnNPhaseRegAlloc_i_I_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: classes.o;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cHMatcherQis_save_on_entry6Mi_i_;
-text: .text%__1cSaddP_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKTypeOopPtrWmake_from_klass_common6FpnHciKlass_ii_pk0_;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: machnode.o;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cMMergeMemNodeQclone_all_memory6FpnENode__p0_;
-text: .text%__1cOcompU_iRegNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntFempty6kM_i_;
-text: .text%__1cKbranchNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLPhaseValuesFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cIMachOperIconstant6kM_i_;
-text: .text%__1cNCatchProjNodeMis_CatchProj6kM_pk0_: cfgnode.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: subnode.o;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_: spaceCounters.o;
-text: .text%__1cQaddI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cOcompU_iRegNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNRelocIteratorKinitialize6MipnICodeBlob_pC3_v_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cPcompP_iRegPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferRtransform_address6kMrk0pC_3_;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: subnode.o;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: memnode.o;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cOcompI_iRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cNPhaseRegAllocKreg2offset6kMnHOptoRegEName__i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: multnode.o;
-text: .text%__1cKReflectionTverify_class_access6FpnMklassOopDesc_2i_i_;
-text: .text%__1cICallNodeLis_CallLeaf6kM_pknMCallLeafNode__: callnode.o;
-text: .text%__1cRCompilationPolicyOmustBeCompiled6FnMmethodHandle__i_;
-text: .text%__1cMMergeMemNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cMPhaseChaitinJsplit_USE6MpnENode_pnFBlock_2IIiinNGrowableArray4CI__i_I_;
-text: .text%__1cENodeGis_Con6kM_I_: cfgnode.o;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cRshlI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: multnode.o;
-text: .text%JVM_CurrentThread;
-text: .text%__1cENodeHget_ptr6kM_i_;
-text: .text%__1cQciByteCodeStreamFEOBCs6M_nJBytecodesECode__;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cNRelocIteratorEnext6M_i_: codeBuffer.o;
-text: .text%__1cSaddI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: codeBuffer.o;
-text: .text%__1cPBoundRelocationMupdate_addrs6MpCrknKCodeBuffer_4_1_;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cLOptoRuntimeFnew_C6FpnMklassOopDesc_pnKJavaThread__v_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: connode.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: gcm.o;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNflagsRegUOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cFframeOis_entry_frame6kM_i_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cLklassVtableTupdate_super_vtable6MpnNinstanceKlass_pnNmethodOopDesc_i_i_;
-text: .text%__1cXmembar_release_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cLOopRecorderOallocate_index6MpnI_jobject__i_;
-text: .text%__1cOcompU_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cSaddP_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPindOffset13OperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cUcompI_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVcompP_iRegP_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSvframeStreamCommonPfill_from_frame6M_i_;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: classes.o;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo0RegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cSaddI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConUNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cKRegionNodeGis_CFG6kM_i_: loopnode.o;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cVcompP_iRegP_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: relocInfo.o;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cKRelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: postaloc.o;
-text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciByteCodeStream__v_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cObranchConUNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cITypeLongJsingleton6kM_i_;
-text: .text%__1cJTraceTime2t6MpkcpnMelapsedTimer_iipnMoutputStream__v_;
-text: .text%__1cKoopFactoryKnew_method6FinLAccessFlags_iiipnGThread__pnNmethodOopDesc__;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cNmethodOopDescLobject_size6Fi_i_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cLklassVtableWneeds_new_vtable_entry6FpnNmethodOopDesc_pnMklassOopDesc_pnHoopDesc_pnNsymbolOopDesc_nLAccessFlags__i_;
-text: .text%__1cNmethodOopDescJinit_code6M_v_;
-text: .text%__1cQconstMethodKlassIallocate6MiiiipnGThread__pnSconstMethodOopDesc__;
-text: .text%__1cPClassFileParserMparse_method6MnSconstantPoolHandle_ipnLAccessFlags_pnPtypeArrayHandle_55pnGThread__nMmethodHandle__;
-text: .text%__1cObranchConUNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cLstoreI0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnvSget_klass_by_index6MpnPciInstanceKlass_iri_pnHciKlass__;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQaddI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cNmethodOopDescPis_final_method6kM_i_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIRewriterOrewrite_method6FnMmethodHandle_rnIintArray_pnGThread__1_;
-text: .text%__1cNmethodOopDescLlink_method6FnMmethodHandle__v_;
-text: .text%__1cPClassFileParserbDverify_legal_method_modifiers6MiinMsymbolHandle_pnGThread__v_;
-text: .text%__1cHTypeAryRary_must_be_exact6kM_i_;
-text: .text%__1cRshrI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJCatchNodeIis_Catch6kM_pk0_: classes.o;
-text: .text%__1cIGraphKitEstop6M_v_;
-text: .text%__1cOcompI_iRegNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPhaseCCPFwiden6kMpknEType_3_3_: phaseX.o;
-text: .text%__1cKCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPcompP_iRegPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachNullCheckNodeQis_MachNullCheck6M_p0_: machnode.o;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNMachIdealNodeMideal_Opcode6kM_i_: machnode.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cENodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodKis_nmethod6kM_i_: nmethod.o;
-text: .text%__1cOcompI_iRegNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
-text: .text%__1cOcompU_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: connode.o;
-text: .text%__1cOCallRelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cKRelocationXpd_set_call_destination6MpCi_v_;
-text: .text%__1cKRelocationTpd_call_destination6M_pC_;
-text: .text%__1cJiRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNflagsRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: callnode.o;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMflagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHnmethodJis_zombie6kM_i_: nmethod.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: callnode.o;
-text: .text%__1cKSchedulingQNodeFitsInBundle6MpnENode__i_;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cOMachReturnNodeNis_MachReturn6M_p0_: ad_sparc_misc.o;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassVshould_be_initialized6kM_i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cPSignatureStream2t6MnMsymbolHandle_i_v_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cVcompP_iRegP_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cPClassFileParserWparse_linenumber_table6MIIpipnGThread__pC_;
-text: .text%__1cbFCompressedLineNumberWriteStream2t6Mi_v_;
-text: .text%__1cITypeFuncCeq6kMpknEType__i_;
-text: .text%__1cUcompI_iReg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeFclone6kM_pnENode__;
-text: .text%__1cMUniverseOperFclone6kM_pnIMachOper__;
-text: .text%__1cJlabelOperFclone6kM_pnIMachOper__;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__: ad_sparc.o;
-text: .text%__1cICallNodeHis_Call6M_p0_: classes.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_sparc.o;
-text: .text%__1cRshlI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRelocationJpack_data6M_i_: codeBlob.o;
-text: .text%__1cOPhaseIdealLoopIsplit_up6MpnENode_22_i_;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: ciMethodData.o;
-text: .text%__1cJStartNodeGpinned6kM_i_: classes.o;
-text: .text%__1cHAddNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOis_range_check6FpnENode_r12ri_i_: ifnode.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockPget_liveness_at6MpnIciMethod_i_nGBitMap__;
-text: .text%__1cIciMethodPliveness_at_bci6Mi_nGBitMap__;
-text: .text%__1cOMethodLivenessPget_liveness_at6Mi_nGBitMap__;
-text: .text%__1cQregF_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: memnode.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: subnode.o;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cFParseKensure_phi6Mii_pnHPhiNode__;
-text: .text%__1cOoop_RelocationJpack_data6M_i_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cNSafePointNode2t6MIpnIJVMState__v_;
-text: .text%__1cHTypePtrJsingleton6kM_i_;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cIGraphKitObasic_plus_adr6MpnENode_2i_2_;
-text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
-text: .text%__1cRshlI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileParserZskip_over_field_signature6MpciIpnGThread__1_;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSaddP_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: codeBlob.o;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cMloadConDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRegisterMap2t6MpnKJavaThread_i_v_;
-text: .text%__1cKTypeOopPtrHget_con6kM_i_;
-text: .text%__1cQsubI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLPhaseValuesHmakecon6MpknEType__pnHConNode__;
-text: .text%__1cJloadLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_iipnGThread__v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: subnode.o;
-text: .text%__1cLOptoRuntimebCcomplete_monitor_unlocking_C6FpnHoopDesc_pnJBasicLock__v_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_locking_C6FpnHoopDesc_pnJBasicLock_pnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cLRegisterMapLpd_location6kMnFVMRegEName__pC_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cOcompI_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cQsubI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPindOffset13OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: machnode.o;
-text: .text%__1cPindOffset13OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cKBufferBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cIAddINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cHRegMaskPfind_first_pair6kM_nHOptoRegEName__;
-text: .text%__1cMloadConLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWShouldNotReachHereNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRlock_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVcompP_iRegP_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompI_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cNloadRangeNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: ad_sparc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: memnode.o;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: memnode.o;
-text: .text%__1cOGenerateOopMapPjump_targets_do6MpnOBytecodeStream_pFp0ipi_v4_i_;
-text: .text%__1cPcompP_iRegPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cYDebugInformationRecorderOdescribe_scope6MpnIciMethod_ipnKDebugToken_44_v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cVCompressedWriteStreamJwrite_int6Mi_v_: debugInfoRec.o;
-text: .text%__1cIHaltNodeGpinned6kM_i_: classes.o;
-text: .text%__1cMloadConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_: ad_sparc.o;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: cfgnode.o;
-text: .text%__1cPsp_ptr_RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cQPreserveJVMState2t6MpnIGraphKit_i_v_;
-text: .text%__1cIGraphKitRnull_check_common6MpnENode_nJBasicType_i_2_;
-text: .text%__1cPcompP_iRegPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMWarmCallInfoHis_cold6kM_i_;
-text: .text%__1cLCastP2INodeGOpcode6kM_i_;
-text: .text%__1cRshrI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Copy6kM_I_: machnode.o;
-text: .text%__1cFMutexNowned_by_self6kM_i_;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cSaddI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowNmake_range_at6Mi_pn0AFRange__;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cOCallRelocationFvalue6M_pC_: codeBlob.o;
-text: .text%__1cENodeHis_Type6M_pnITypeNode__: classes.o;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cENodeQlatency_from_use6kMrnLBlock_Array_rnNGrowableArray4CI__pk0p0_i_;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cJStoreNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHTypeAryCeq6kMpknEType__i_;
-text: .text%__1cJStartNodeIis_Start6M_p0_: callnode.o;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cHCompileKTracePhase2t6MpkcpnMelapsedTimer_i_v_;
-text: .text%__1cMPhaseIterGVNHmakecon6MpknEType__pnHConNode__;
-text: .text%__1cSaddI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJLoadCNodeGOpcode6kM_i_;
-text: .text%__1cMTypeKlassPtrCeq6kMpknEType__i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: memnode.o;
-text: .text%__1cHciFieldJwill_link6MpnPciInstanceKlass_nJBytecodesECode__i_;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: node.o;
-text: .text%__1cQciByteCodeStreamJget_field6Mri_pnHciField__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cOcompI_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMergeMemStreamOnext_non_empty6Mi_i_: graphKit.o;
-text: .text%__1cRshlI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cTCreateExceptionNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGBitMapVset_union_with_result6M0_i_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: memnode.o;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: frame.o;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: callnode.o;
-text: .text%__1cFframeOis_first_frame6kM_i_;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cICodeBlobTfix_oop_relocations6M_v_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cJloadSNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: subnode.o;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRcmpFastUnlockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cETypeFwiden6kMpk0_2_: type.o;
-text: .text%__1cRcmpFastUnlockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cLstoreI0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cQciByteCodeStreamKget_method6Mri_pnIciMethod__;
-text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cNSafePointNodeGpinned6kM_i_: classes.o;
-text: .text%__1cPcompP_iRegPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCodeCacheQfind_blob_unsafe6Fpv_pnICodeBlob__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cIciMethodbCinterpreter_invocation_count6M_i_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: subnode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: subnode.o;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cWConstantPoolCacheEntryJset_field6MnJBytecodesECode_2nLKlassHandle_iinITosState_ii_v_;
-text: .text%__1cKCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMLinkResolverNresolve_field6FrnPFieldAccessInfo_nSconstantPoolHandle_inJBytecodesECode_ipnGThread__v_;
-text: .text%__1cKciTypeFlowFRangeNget_block_for6Mpn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cQsubI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cUGenericGrowableArrayMraw_contains6kMpknEGrET__i_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: systemDictionary.o;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: subnode.o;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cENodeHis_Goto6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cHnmethodIis_alive6kM_i_: nmethod.o;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cRshrI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOkill_dead_code6FpnENode_pnMPhaseIterGVN__i_: node.o;
-text: .text%__1cMPrefetchNodeGOpcode6kM_i_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cIimmPOperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: cfgnode.o;
-text: .text%__1cRRawBytecodeStreamMset_interval6Mii_v_;
-text: .text%__1cIregDOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cQsubI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: connode.o;
-text: .text%__1cFciEnvIis_in_vm6F_i_;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__: ad_sparc_misc.o;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: thread.o;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cKciTypeFlowLStateVectorEmeet6Mpk1_i_;
-text: .text%__1cNbranchConNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cLstoreB0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: callnode.o;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIJVMStateKclone_deep6kM_p0_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIGraphKitTadd_safepoint_edges6MpnNSafePointNode_i_v_;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cJloadFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: node.o;
-text: .text%__1cMMachCallNodeHis_Call6M_pnICallNode__: ad_sparc_misc.o;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cNloadRangeNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMindirectOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cHMatcherScalling_convention6FpnLRegPair_Ii_v_;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_nGHandle_2ipnGThread__pnMklassOopDesc__;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cFciEnvWget_klass_by_name_impl6MpnHciKlass_pnIciSymbol_i_2_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cRMachSafePointNode2t6M_v_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cRInlineCacheBufferIcontains6FpC_i_;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cICallNodeOis_CallRuntime6kM_pknPCallRuntimeNode__: callnode.o;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cJloadCNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXinsert_anti_dependences6FrpnFBlock_pnENode_rnLBlock_Array__i_: gcm.o;
-text: .text%__1cPorI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompU_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cOPhaseIdealLoopHdom_lca6kMpnENode_2_2_;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHMatcherPc_frame_pointer6kM_nHOptoRegEName__;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachCallNode2t6M_v_;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: methodLiveness.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodKlass.o;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cICmpPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHnmethodOis_not_entrant6kM_i_: nmethod.o;
-text: .text%__1cNprefetch2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cIciMethodRhas_compiled_code6M_i_;
-text: .text%__1cPcompP_iRegPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPsp_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cLOptoRuntimePnew_typeArray_C6FnJBasicType_ipnKJavaThread__v_;
-text: .text%__1cRshrP_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationIparse_ic6FrpnICodeBlob_rpC5rppnHoopDesc_pi_nNRelocIterator__;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
-text: .text%__1cRloadConP_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreB0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIimmIOperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: cfgnode.o;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQsubI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_: ciTypeFlow.o;
-text: .text%__1cKReturnNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cQaddP_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKmethodOperGmethod6kM_i_: ad_sparc.o;
-text: .text%__1cQjava_lang_StringQbasic_create_oop6FpnQtypeArrayOopDesc_ipnGThread__pnHoopDesc__;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cENodeHis_Goto6kM_I_: cfgnode.o;
-text: .text%__1cICmpINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPemit_call_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_iii_v_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: callnode.o;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: classes.o;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MiipnGOopMap__v_;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cRloadConP_pollNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cENodeJis_Region6kM_pknKRegionNode__: connode.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: connode.o;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOMacroAssemblerZneeds_explicit_null_check6Fi_i_;
-text: .text%__1cSaddI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: frame.o;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: callnode.o;
-text: .text%__1cNflagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIGraphKitbLset_predefined_input_for_runtime_call6MpnNSafePointNode__v_;
-text: .text%__1cRshlI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cHCompileZintrinsic_insertion_index6MpnIciMethod_i_i_;
-text: .text%__1cTOopMapForCacheEntryRpossible_gc_point6MpnOBytecodeStream__i_;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MiipnGOopMap__v_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cRMachSafePointNodePis_MachCallLeaf6M_pnQMachCallLeafNode__: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodeLset_oop_map6MpnGOopMap__v_: ad_sparc_misc.o;
-text: .text%__1cXjava_lang_ref_ReferenceNreferent_addr6FpnHoopDesc__p2_;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cRMachSafePointNodeSis_MachCallRuntime6M_pnTMachCallRuntimeNode__: ad_sparc_misc.o;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cNMachIdealNodePoper_input_base6kM_I_: machnode.o;
-text: .text%__1cSCallLeafDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHRegMaskQis_aligned_Pairs6kM_i_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cPClassFileParserbCverify_legal_field_modifiers6MiipnGThread__v_;
-text: .text%__1cPClassFileParserWparse_field_attributes6MnSconstantPoolHandle_iHpHpi2pnPtypeArrayHandle_pnGThread__v_;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKstorePNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cKciTypeFlowFBlockKsuccessors6MpnQciByteCodeStream_pn0ALStateVector_pn0AGJsrSet__pnNGrowableArray4Cp1___;
-text: .text%__1cRMachSafePointNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cMCallJavaNodeLis_CallJava6kM_pk0_: callnode.o;
-text: .text%__1cQMachCallJavaNodePis_MachCallJava6M_p0_: ad_sparc_misc.o;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cICallNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cKTypeOopPtrFempty6kM_i_;
-text: .text%__1cKciTypeFlowFBlock2t6Mp0pn0AFRange_pn0AGJsrSet__v_;
-text: .text%__1cRshrI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cLstoreB0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWMachCallStaticJavaNodeVis_MachCallStaticJava6M_p0_: ad_sparc_misc.o;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cRMachSafePointNodeWis_MachCallInterpreter6M_pnXMachCallInterpreterNode__: ad_sparc_misc.o;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cQaddI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cMLinkResolverbNlinktime_resolve_virtual_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cJloadCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cFframeQoops_do_internal6MpnKOopClosure_pnLRegisterMap_i_v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_virtual_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cPCountedLoopNodeOis_CountedLoop6M_p0_: classes.o;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciType.o;
-text: .text%__1cFKlassXcan_be_statically_bound6FpnNmethodOopDesc__i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: connode.o;
-text: .text%__1cHnmethodZsize_of_exception_handler6F_i_;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cQandL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cObranchConPNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOMethodLivenessNmake_block_at6Mipn0AKBasicBlock__2_;
-text: .text%__1cPorI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cSInterpreterRuntimeDldc6FpnKJavaThread_i_v_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cHTypeIntEmake6Fii_pk0_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: ad_sparc.o;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlassKlass.o;
-text: .text%__1cNSafePointNodeEhash6kM_I_: callnode.o;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMCreateExNodeGpinned6kM_i_: classes.o;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cFParsePdo_field_access6Mii_v_;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQmark_inner_loops6FpnIPhaseCFG_pnFBlock__v_: block.o;
-text: .text%__1cILoadNodeEmake6FpnENode_22pknHTypePtr_pknEType_nJBasicType__p0_;
-text: .text%__1cICallNodeSis_CallDynamicJava6kM_pknTCallDynamicJavaNode__: callnode.o;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMii_pnGOopMap__;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpCi_pnGOopMap__;
-text: .text%__1cNmethodOopDescWwas_executed_more_than6kMi_i_;
-text: .text%__1cRshrI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cPorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLPhaseValuesHzerocon6MnJBasicType__pnHConNode__;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cHnmethodKcopy_pc_at6MipnGPcDesc__v_;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKbranchNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKbranchNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_ref_ReferencePdiscovered_addr6FpnHoopDesc__p2_;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: loopnode.o;
-text: .text%__1cOloadConI13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: methodDataOop.o;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cJFieldTypeYis_valid_array_signature6FpnNsymbolOopDesc__i_;
-text: .text%__1cQandL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQaddL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNbranchConNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: machnode.o;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cYinlineCallClearArrayNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJmake_load6MpnENode_2pknEType_nJBasicType_i_2_;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cENodeGis_Con6kM_I_: callnode.o;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cIGraphKitNuncommon_trap6MipnHciKlass_pkci_v_;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMkpnNmethodOopDesc_i_pnHnmethod__;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cMLinkResolverbEruntime_resolve_special_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_4ipnGThread__v_;
-text: .text%__1cMLinkResolverbFlinktime_resolve_special_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciByteCodeStream_pn0ALStateVector__v_;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cQmulL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cQciByteCodeStreamZget_declared_field_holder6M_pnPciInstanceKlass__;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: classes.o;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConUNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXjava_lang_ref_ReferenceJnext_addr6FpnHoopDesc__p2_;
-text: .text%__1cMWarmCallInfoGis_hot6kM_i_;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6FnUtypeArrayKlassHandle_iipnGThread__pnMklassOopDesc__;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MiipnGThread__pnMklassOopDesc__;
-text: .text%__1cSCompareAndSwapNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cLRethrowNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cTmembar_CPUOrderNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTCreateExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlowLStateVectorJdo_invoke6MpnQciByteCodeStream_i_v_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: connode.o;
-text: .text%__1cQmulL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreB0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadBNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cFTypeDCeq6kMpknEType__i_;
-text: .text%__1cITypeLongEmake6Fx_pk0_;
-text: .text%__1cKJavaThreadbHcheck_and_handle_async_exceptions6Mi_v_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: memnode.o;
-text: .text%__1cMPhaseChaitinTsplit_Rematerialize6MpnENode_pnFBlock_IrInNGrowableArray4CI__ipIp2i_2_;
-text: .text%__1cKimmI13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cQandL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseKdo_get_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNCatchProjNode2t6MpnENode_Ii_v_;
-text: .text%__1cPVirtualCallDataSis_VirtualCallData6M_i_: ciMethodData.o;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: cfgnode.o;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassOis_subclass_of6kMpnMklassOopDesc__i_;
-text: .text%__1cLPCTableNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: cfgnode.o;
-text: .text%__1cLPCTableNodeKis_PCTable6kM_pk0_: classes.o;
-text: .text%__1cNciCallProfileRapply_prof_factor6Mf_v_;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cHCompileOcall_generator6MpnIciMethod_ipnIJVMState_if_pnNCallGenerator__;
-text: .text%__1cHCompileOfind_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cLLShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cQciByteCodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cNloadConP0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
-text: .text%__1cQxorI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cIciMethodLscale_count6Mi_i_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlass.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cOCompilerOracleOshould_exclude6FnMmethodHandle__i_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cLstoreI0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKBranchDataNis_BranchData6M_i_: ciMethodData.o;
-text: .text%__1cKRegionNodeGpinned6kM_i_: loopnode.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: memnode.o;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cNloadRangeNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQxorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIJumpDataLis_JumpData6M_i_: ciMethodData.o;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNflagsRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cCosOis_interrupted6FpnGThread_i_i_;
-text: .text%__1cLmethodKlassNoop_is_method6kM_i_: methodKlass.o;
-text: .text%__1cQsubI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_release_lockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: memnode.o;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cRshrI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeOis_CountedLoop6M_pnPCountedLoopNode__: loopnode.o;
-text: .text%__1cTcan_branch_register6FpnENode_1_i_;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKstoreCNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHConNodeEmake6FpknEType__p0_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: memnode.o;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cRshrP_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: callnode.o;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cPcompP_iRegPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvI2D_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSsafePoint_pollNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cHMonitorKnotify_all6M_i_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cOstackSlotLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIciMethodbAinterpreter_throwout_count6kM_i_;
-text: .text%__1cOCompilerOracleNshould_inline6FnMmethodHandle__i_;
-text: .text%__1cIciMethodOshould_exclude6M_i_;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cKInlineTreeWfind_subtree_from_root6Fp0pnIJVMState_pnIciMethod_i_1_;
-text: .text%__1cIciMethodNshould_inline6M_i_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cGThreadXclear_pending_exception6M_v_;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cSstkL_to_regD_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbHhas_unloaded_classes_in_signature6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cTmembar_CPUOrderNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: connode.o;
-text: .text%__1cNprefetch2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cQaddI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStartNodeIis_Start6M_p0_: classes.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodKlass.o;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosFsleep6FpnGThread_xi_i_;
-text: .text%__1cIos_sleep6Fxi_i_: os_solaris.o;
-text: .text%__1cSstkL_to_regD_2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cKTypeRawPtrHget_con6kM_i_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cPconvI2L_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cPconvL2I_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIimmLOperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cTStackWalkCompPolicyRcompilation_level6MnMmethodHandle_i_i_;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cRis_error_reported6F_i_;
-text: .text%__1cNWatcherThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cQandL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrirpknHTypePtr__pknENode__;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHCompilebAallow_range_check_smearing6kM_i_;
-text: .text%__1cRbranchLoopEndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%__1cIciMethodWwas_executed_more_than6Mi_i_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: machnode.o;
-text: .text%__1cENodeHis_Proj6M_pnIProjNode__: machnode.o;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cWCallLeafNoFPDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cPcheckCastPPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Write;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKRelocationJpack_data6M_i_: relocInfo.o;
-text: .text%__1cNinstanceKlassVis_same_class_package6FpnHoopDesc_pnNsymbolOopDesc_24_i_;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cQmulL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cEUTF8Fequal6FpWi1i_i_;
-text: .text%__1cSbranchCon_longNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cUcompU_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%JVM_RawMonitorEnter;
-text: .text%__1cFMutexMjvm_raw_lock6M_v_;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cFMutexOjvm_raw_unlock6M_v_;
-text: .text%__1cKg1RegIOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopnode.o;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cPClassFileParserUskip_over_field_name6MpciI_1_;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cIGraphKitNcast_not_null6MpnENode__2_;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitTtoo_many_recompiles6MnODeoptimizationLDeoptReason__i_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlass.o;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cIGraphKitOtoo_many_traps6MnODeoptimizationLDeoptReason__i_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cKBufferBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSandI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cFParseRensure_memory_phi6Mii_pnHPhiNode__;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cFParseUprofile_taken_branch6Mi_v_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cYcompareAndSwapL_boolNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWstatic_stub_RelocationJpack_data6M_i_;
-text: .text%__1cILoopNodeHis_Loop6M_p0_: loopnode.o;
-text: .text%__1cNCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cQxorI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cYinlineCallClearArrayNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYinlineCallClearArrayNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cKMemoryPoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cNloadKlassNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cMLinkResolverTresolve_static_call6FrnICallInfo_rnLKlassHandle_nMsymbolHandle_53iipnGThread__v_;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cLRuntimeStubYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cJloadCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIimmPOperPconstant_is_oop6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnMklassOopDesc__i_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cOloadConI13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMtlsLoadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeGis_Con6kM_I_: multnode.o;
-text: .text%__1cQandI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cITypeLongEmake6Fxx_pk0_;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cJOopMapSetTupdate_register_map6FpknFframe_pnICodeBlob_pnLRegisterMap__v_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cNGCTaskManagerYshould_release_resources6MI_i_;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cITypeLongFempty6kM_i_;
-text: .text%__1cJloadBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLklassVtableXvtable_accessibility_at6Mi_n0AKAccessType__;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cSmembar_acquireNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cCosbCstack_shadow_pages_available6FpnGThread_nMmethodHandle__i_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: ad_sparc.o;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cKInlineTreePshouldNotInline6kMpnIciMethod_pnMWarmCallInfo__pkc_;
-text: .text%__1cRcompL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodbHhas_unloaded_classes_in_signature6M_i_;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: classes.o;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cObranchConUNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: nmethod.o;
-text: .text%__1cKstoreINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cJcmpOpOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKTypeRawPtrCeq6kMpknEType__i_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cKTypeAryPtrEmake6FnHTypePtrDPTR_pknHTypeAry_pnHciKlass_ii_pk0_;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFParseRoptimize_inlining6MpnIciMethod_ipnPciInstanceKlass_24irnKInlineTreeLInlineStyle_r2_v_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cQxorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKcmpOpPOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cObranchConPNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cSaddL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cFframeToops_interpreted_do6MpnKOopClosure_pknLRegisterMap_i_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cJloadCNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitPstore_to_memory6MpnENode_22nJBasicType_i_2_;
-text: .text%__1cJStoreNodeEmake6FpnENode_22pknHTypePtr_2nJBasicType__p0_;
-text: .text%__1cMMonitorValue2t6MpnKScopeValue_nILocation__v_;
-text: .text%__1cLBoxLockNodeKis_BoxLock6kM_pk0_: classes.o;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__nHOptoRegEName__;
-text: .text%__1cMloadConLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cHMatcherPstack_alignment6F_I_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeIget_long6kM_x_;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cSmembar_releaseNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJimmU5OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSbranchCon_longNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNbranchConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshrI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cKciTypeFlowGJsrSetSis_compatible_with6Mp1_i_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cETypeCeq6kMpk0_i_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cFParseRbranch_prediction6Mrf_f_;
-text: .text%__1cRsarI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHTypeAryFempty6kM_i_;
-text: .text%__1cKTypeAryPtrFempty6kM_i_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: methodDataKlass.o;
-text: .text%__1cOMacroAssemblerFjumpl6MrnHAddress_pnMRegisterImpl_ipkci_v_;
-text: .text%__1cOMacroAssemblerEjump6MrnHAddress_ipkci_v_;
-text: .text%__1cIciMethodLis_accessor6kM_i_;
-text: .text%__1cRbranchLoopEndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceKlass.o;
-text: .text%__1cQmulL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframeUentry_frame_is_first6kM_i_;
-text: .text%__1cJiRegIOperFclone6kM_pnIMachOper__;
-text: .text%__1cLstoreP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cHnmethodbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cIciMethodPcan_be_compiled6M_i_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFArenaEused6kM_I_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cIciMethodVhas_balanced_monitors6M_i_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cQsubI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQSystemDictionaryVadd_loader_constraint6FnMsymbolHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableJadd_entry6MnMsymbolHandle_pnMklassOopDesc_nGHandle_34pnGThread__i_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cMloadConINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNbranchConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNbranchConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQandL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLmethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cLsymbolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQaddL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassbDcheck_valid_for_instantiation6MipnGThread__v_;
-text: .text%__1cJStartNodeOis_block_start6kM_i_: callnode.o;
-text: .text%__1cRsarI_reg_imm5NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cSInterpreterRuntimebAfrequency_counter_overflow6FpnKJavaThread_pC_x_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cENodeRlatency_from_uses6kMrnLBlock_Array_rnNGrowableArray4CI___i_;
-text: .text%__1cPconvL2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cXmembar_release_lockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cJloadLNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRshrP_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cFBlockTimplicit_null_check6MrnLBlock_Array_rnNGrowableArray4CI__pnENode_6_v_;
-text: .text%__1cQandI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFframeNis_glue_frame6kM_i_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cFParseYprofile_not_taken_branch6M_v_;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cHciKlassNis_subtype_of6Mp0_i_;
-text: .text%__1cbACallCompiledJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: cfgnode.o;
-text: .text%__1cRRawBytecodeStream2t6MnMmethodHandle__v_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQLibraryIntrinsicKis_virtual6kM_i_: library_call.o;
-text: .text%__1cMPrefetchNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: callnode.o;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cYDebugInformationRecorderNadd_dependent6MpnPciInstanceKlass_pnIciMethod__v_;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cRshrP_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQandI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMURShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cNmethodOopDescWload_signature_classes6FnMmethodHandle_pnGThread__i_;
-text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cNCompileBrokerTcompile_method_base6FnMmethodHandle_ii1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNinstanceKlassPlink_class_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cMloadConFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cbACallCompiledJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2L_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cENodeHdel_out6Mp0_v_: library_call.o;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: cfgnode.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: cfgnode.o;
-text: .text%__1cRcompL_reg_conNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cLOopRecorderKfind_index6MpnI_jobject__i_;
-text: .text%__1cJStartNodeOis_block_start6kM_i_: classes.o;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cFframeTis_first_java_frame6kM_i_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cFframeNis_java_frame6kM_i_;
-text: .text%__1cNprefetch2NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowFBlockPclone_loop_head6Mp0ip1pn0AGJsrSet__3_;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRshrP_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cKRegionNodeJis_Region6kM_pk0_: loopnode.o;
-text: .text%__1cFParseFdo_if6MpnENode_2nIBoolTestEmask_2_v_;
-text: .text%__1cLCastP2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSandI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: callnode.o;
-text: .text%__1cMPrefetchNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cMloadConFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJCodeCacheIcontains6Fpv_i_;
-text: .text%__1cQaddL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMCallLeafNodeLis_CallLeaf6kM_pk0_: classes.o;
-text: .text%__1cLPCTableNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIMachNodeJis_MachIf6kM_pknKMachIfNode__: ad_sparc.o;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cQdivD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cIGraphKitRmake_slow_call_ex6MpnENode_pnPciInstanceKlass__v_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cYinlineCallClearArrayNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNflagsRegLOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIConINodeHget_int6kMpi_i_: classes.o;
-text: .text%__1cKOopClosureLdo_nmethods6kM_ki_: psTasks.o;
-text: .text%__1cJOopMapSetGall_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure_pFppnHoopDesc_9E_v9B9B_v_;
-text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cJOopMapSetHoops_do6FpknFframe_pnICodeBlob_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cFBlockUhoist_LCA_above_defs6Mp01IrnLBlock_Array__1_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cMvframeStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cQjava_lang_StringGequals6FpnHoopDesc_pHi_i_;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: codeBlob.o;
-text: .text%__1cVExceptionHandlerTableMadd_subtable6MipnNGrowableArray4Ci__2_v_;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHMulNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cHciKlassOis_subclass_of6Mp0_i_;
-text: .text%__1cJloadCNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInterpretedRFrameOis_interpreted6kM_i_: rframe.o;
-text: .text%__1cGRFrameLis_compiled6kM_i_: rframe.o;
-text: .text%__1cPorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cbACallCompiledJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cRcompL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQput_after_lookup6FnMsymbolHandle_0ppnLNameSigHash__i_;
-text: .text%__1cSconvI2D_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHMatcherQis_spillable_arg6Fi_i_;
-text: .text%__1cLRegisterMapFclear6Mpi_v_;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cUPipeline_Use_Element2t6M_v_: output.o;
-text: .text%__1cRshrL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: classes.o;
-text: .text%__1cFParseSmerge_memory_edges6MpnMMergeMemNode_ii_v_;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNimmP_pollOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cRloadConP_pollNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSconvI2D_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cIMulINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cLRegisterMapIpd_clear6M_v_;
-text: .text%__1cSstkL_to_regD_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cLstoreP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMnegF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo0RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cSaddL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCodeBuffer2t6MiiiiiipnKBufferBlob_pnJrelocInfo_pnORelocateBuffer_ipnLOopRecorder_pkcii_v_;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cSstkL_to_regD_2NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_ltNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassWfind_field_from_offset6kMiipnPfieldDescriptor__i_;
-text: .text%__1cPciInstanceKlassTget_field_by_offset6Mii_pnHciField__;
-text: .text%__1cRshrP_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cSstkL_to_regD_2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWstatic_stub_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cSstkL_to_regD_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRelocationWfix_relocation_at_move6Mi_v_: codeBlob.o;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSvframeStreamCommonbHskip_method_invoke_and_aux_frames6M_v_;
-text: .text%__1cRbranchLoopEndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvI2D_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassXmark_dependent_nmethods6MpnMklassOopDesc__i_;
-text: .text%__1cDCHANprocess_class6FnLKlassHandle_pnNGrowableArray4n0B___pnNGrowableArray4nMmethodHandle___nMsymbolHandle_6_v_;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cSconvI2D_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cHnmethodPis_locked_by_vm6kM_i_: nmethod.o;
-text: .text%__1cUcompU_iReg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitXset_edges_for_java_call6MpnMCallJavaNode_i_v_;
-text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
-text: .text%__1cJloadLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: methodDataOop.o;
-text: .text%__1cSbranchCon_longNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNloadKlassNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRbranchLoopEndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cMjniIdSupportNto_method_oop6FpnK_jmethodID__pnNmethodOopDesc__;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallInterpreterDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodLis_unloaded6kM_i_: nmethod.o;
-text: .text%__1cYcompareAndSwapL_boolNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cSbranchCon_longNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJimmU5OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRbranchLoopEndNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: ad_sparc.o;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: loopnode.o;
-text: .text%__1cbCcatch_cleanup_fix_all_inputs6FpnENode_11_v_: lcm.o;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cOMacroAssemblerUallocate_oop_address6MpnI_jobject_pnMRegisterImpl__nHAddress__;
-text: .text%__1cUThreadSafepointStateXexamine_state_of_thread6Mi_v_;
-text: .text%__1cUSafepointSynchronizeOsafepoint_safe6FpnKJavaThread_nPJavaThreadState__i_;
-text: .text%__1cUParallelScavengeHeapNtlab_capacity6kM_I_;
-text: .text%__1cKcmpOpPOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConPNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKstoreBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: loopnode.o;
-text: .text%__1cPconvL2I_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNnmethodLocker2T6M_v_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNnmethodLocker2t6MpnHnmethod__v_;
-text: .text%__1cLstoreB0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescOis_initializer6kM_i_;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cQxorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferMstart_a_stub6M_v_;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferKend_a_stub6M_v_;
-text: .text%__1cFTypeFCeq6kMpknEType__i_;
-text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cQciByteCodeStreamMget_constant6M_nKciConstant__;
-text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cPconvL2I_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSbranchCon_longNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cQandL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJiRegPOperFclone6kM_pnIMachOper__;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cIregDOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cKMemBarNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKMemBarNode2t6M_v_;
-text: .text%__1cNIdealLoopTreeObeautify_loops6MpnOPhaseIdealLoop__i_;
-text: .text%__1cRsarI_reg_imm5NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: frame.o;
-text: .text%__1cKimmI13OperFclone6kM_pnIMachOper__;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cNCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cJcmpOpOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cNprefetch2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRcompL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cSandI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKMemBarNodeJis_MemBar6kM_pk0_: classes.o;
-text: .text%__1cIciMethodXfind_monomorphic_target6MpnHciKlass_22_p0_;
-text: .text%__1cJCHAResultOis_monomorphic6kM_i_;
-text: .text%__1cDCHAManalyze_call6FnLKlassHandle_11nMsymbolHandle_2_pnJCHAResult__;
-text: .text%__1cOloadConI13NodeFclone6kM_pnENode__;
-text: .text%__1cObranchConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOinsert_mem_bar6MpnKMemBarNode__v_;
-text: .text%__1cLOptoRuntimeOnew_objArray_C6FpnMklassOopDesc_ipnKJavaThread__v_;
-text: .text%__1cRshlL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbACallCompiledJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitMarray_length6MpnENode__2_;
-text: .text%__1cIGraphKitbMset_predefined_output_for_runtime_call6MpnENode_pnMMergeMemNode__v_;
-text: .text%__1cWThreadLocalAllocBufferFclear6M_v_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cMPhaseChaitinQgather_lrg_masks6Mi_v_;
-text: .text%__1cIimmDOperJconstantD6kM_d_: ad_sparc_clone.o;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: live.o;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cSaddI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZnoG3_iRegI_64bit_safeOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: symbolKlass.o;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRshlI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvL2I_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciTypeArrayKlassTis_type_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cQaddL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMatcherMreturn_value6Fii_nLRegPair__;
-text: .text%__1cGThreadQunboost_priority6Fp0_v_;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cUcompU_iReg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cITypeNodeHis_Type6M_p0_: classes.o;
-text: .text%__1cICodeBlob2t6Mpkcii_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cTmembar_CPUOrderNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_acquireNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJNIHandlesLmake_global6FnGHandle_i_pnI_jobject__;
-text: .text%__1cTCallInterpreterNodeGOpcode6kM_i_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cRshrP_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCHAResultSmonomorphic_target6kM_nMmethodHandle__;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHMonitorEwait6Mil_i_;
-text: .text%__1cJloadPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNprefetch2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cPorI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cSReferenceProcessorSdiscover_reference6MpnHoopDesc_nNReferenceType__i_;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: callnode.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: callnode.o;
-text: .text%__1cHRetNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNbranchConNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cHRetNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cKcmpOpPOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSandI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXjava_lang_ref_ReferenceIset_next6FpnHoopDesc_2_v_;
-text: .text%__1cSReferenceProcessorTget_discovered_list6MnNReferenceType__ppnHoopDesc__;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cXmembar_acquire_lockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cKStoreBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cUGenericGrowableArray2t6MiipnEGrET_i_v_;
-text: .text%__1cJloadCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeHget_int6kMpi_i_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cKjavaVFrameNis_java_frame6kM_i_: vframe.o;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowXmark_known_range_starts6M_v_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowLfind_ranges6M_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_ltNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cKStoreCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cOcompU_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cLklassVtableRinitialize_vtable6MpnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cNobjArrayKlassPoop_is_objArray6kM_i_: objArrayKlass.o;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassRoop_is_methodData6kM_i_: methodDataKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: methodDataKlass.o;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cIGraphKitOmake_slow_call6MpknITypeFunc_pCpkcpnENode_88_8_;
-text: .text%__1cUGenericGrowableArrayEgrow6Mi_v_;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cKstoreCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cIMachNodeQis_MachSafePoint6M_pnRMachSafePointNode__: machnode.o;
-text: .text%__1cNCollectedHeapWpermanent_obj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: klass.o;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: klass.o;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cENodeHis_Mach6M_pnIMachNode__: loopnode.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: loopnode.o;
-text: .text%__1cQPlaceholderTableJadd_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cENodeHis_Copy6kM_I_: ad_sparc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: memnode.o;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cRsarI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompU_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUcompU_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cOGenerateOopMapTmerge_state_vectors6MpnNCellTypeState_2_i_;
-text: .text%__1cRcompL_reg_conNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cXmembar_acquire_lockNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKimmP13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cVcompP_iRegP_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeGis_Con6kM_I_: ad_sparc.o;
-text: .text%__1cSaddL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRcompL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: machnode.o;
-text: .text%__1cNMachIdealNodeJnum_opnds6kM_I_: machnode.o;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cRMachNullCheckNode2t6MpnENode_2I_v_;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cNSafePointNodeMis_SafePoint6M_p0_: classes.o;
-text: .text%__1cSCompareAndSwapNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseNpush_constant6MnKciConstant__i_;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cENodeGis_Sub6M_pnHSubNode__: classes.o;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cNIdealLoopTreeTcheck_inner_safepts6MpnOPhaseIdealLoop__v_;
-text: .text%__1cIciObjectMis_obj_array6M_i_: ciInstanceKlass.o;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cIRootNodeHis_Root6M_p0_: classes.o;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRuntimeStubIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cLCastP2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cHnmethodKpc_desc_at6MpCi_pnGPcDesc__;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cQSystemDictionaryRcheck_constraints6FiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTablePcheck_or_update6MnTinstanceKlassHandle_nGHandle_nMsymbolHandle__pkc_;
-text: .text%__1cVshrL_reg_imm6_L2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQmodI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassXsearch_secondary_supers6kMpnMklassOopDesc__i_;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
-text: .text%__1cKTypeRawPtrFempty6kM_i_;
-text: .text%__1cLConvI2LNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: machnode.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: machnode.o;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cIMachNodeLis_MachCall6M_pnMMachCallNode__: machnode.o;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cQxorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: assembler_sparc.o;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cOLibraryCallKitOgenerate_guard6MpnENode_pnKRegionNode_f_v_;
-text: .text%__1cSandI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreP0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cLklassItableRinitialize_itable6M_v_;
-text: .text%__1cQPSGenerationPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cQPSGenerationPoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: reg_split.o;
-text: .text%__1cENodeHis_Load6M_pnILoadNode__: multnode.o;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPconvI2L_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJLoadBNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRcompL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cQciByteCodeStreamJget_klass6Mri_pnHciKlass__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: instanceKlass.o;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: classes.o;
-text: .text%__1cQcmovI_reg_ltNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cUCallCompiledJavaNodeGOpcode6kM_i_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cNprefetch2NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cSinstanceKlassKlassXallocate_instance_klass6MiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cPClassFileParserNfill_oop_maps6MnTinstanceKlassHandle_ii_v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cRconstantPoolKlassIallocate6MipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNmethodOopDescMsort_methods6FpnPobjArrayOopDesc_222_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKoopFactoryQnew_constantPool6FipnGThread__pnTconstantPoolOopDesc__;
-text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderRis_trusted_loader6FpnHoopDesc__i_;
-text: .text%__1cPClassFileParserOparseClassFile6MnMsymbolHandle_nGHandle_2r1pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cTClassLoadingServiceTnotify_class_loaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cPClassFileParserQparse_interfaces6MnSconstantPoolHandle_nGHandle_2pnGThread__nOobjArrayHandle__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cIVerifierRshould_verify_for6FpnHoopDesc__i_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cIVerifierQrelax_verify_for6FpnHoopDesc__i_;
-text: .text%__1cPClassFileParserMparse_fields6MnSconstantPoolHandle_ipnUFieldAllocationCount_pnOobjArrayHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cLklassVtablebKcompute_vtable_size_and_num_mirandas6Fri1pnMklassOopDesc_pnPobjArrayOopDesc_nLAccessFlags_pnHoopDesc_pnNsymbolOopDesc_5_v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserNparse_methods6MnSconstantPoolHandle_ipnLAccessFlags_ppnPobjArrayOopDesc_66pnGThread__nOobjArrayHandle__;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cQSystemDictionaryVresolve_super_or_fail6FnMsymbolHandle_1nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKcmpOpPOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cRMachSafePointNodePis_MachCallJava6M_pnQMachCallJavaNode__: ad_sparc_misc.o;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cFVTuneQstart_class_load6F_v_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cFVTuneOend_class_load6F_v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cKklassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQmodI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cYcompareAndSwapL_boolNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSinstanceKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNinstanceKlassScopy_static_fields6MpnSPSPromotionManager__v_;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cKoopFactoryVnew_constantPoolCache6FipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cWconstantPoolCacheKlassIallocate6MipnGThread__pnYconstantPoolCacheOopDesc__;
-text: .text%__1cIVerifierRverify_byte_codes6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWadd_loader_constraints6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cPCheckCastPPNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLstoreP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cQmulD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cLProfileDataSis_VirtualCallData6M_i_: ciMethodData.o;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cITypeFuncMreturns_long6kM_i_;
-text: .text%__1cJloadSNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse2.o;
-text: .text%__1cENodeGis_Con6kM_I_: connode.o;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cIAndINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIciObjectSis_obj_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cTGeneratePairingInfoRpossible_gc_point6MpnOBytecodeStream__i_: ciMethod.o;
-text: .text%__1cQandL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeOis_block_start6kM_i_: loopnode.o;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cQsubL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQStackFrameStream2t6MpnKJavaThread_i_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: compile.o;
-text: .text%__1cLClassLoaderLadd_package6Fpkci_i_;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopnode.o;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: loopnode.o;
-text: .text%__1cOcompI_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopnode.o;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cHTypePtrCeq6kMpknEType__i_;
-text: .text%__1cQandI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cSCompareAndSwapNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cRcompL_reg_conNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmembar_acquireNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPindOffset13OperFclone6kM_pnIMachOper__;
-text: .text%__1cICallNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cJloadCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodJcode_size6kM_i_: nmethod.o;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: loopnode.o;
-text: .text%__1cLstoreI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cPciObjArrayKlassSis_obj_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cSaddL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshrL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cQmodI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cRreturn_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cQmodI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarI_reg_imm5NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseKdo_put_xxx6MpknHTypePtr_pnENode_pnHciField_i_v_;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMnegF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNIdealLoopTreeOpolicy_peeling6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cNIdealLoopTreeUiteration_split_impl6MpnOPhaseIdealLoop_rnJNode_List__v_;
-text: .text%__1cNIdealLoopTreebBpolicy_do_remove_empty_loop6MpnOPhaseIdealLoop__i_;
-text: .text%__1cQsubL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitRmerge_fast_memory6MpnENode_2i_v_;
-text: .text%__1cRcompL_reg_conNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMnegF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: instanceKlass.o;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlass.o;
-text: .text%__1cbCCompiledCodeSafepointHandlerYcaller_must_gc_arguments6kM_i_: safepoint.o;
-text: .text%__1cUThreadSafepointStateYcaller_must_gc_arguments6kM_i_;
-text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
-text: .text%__1cNSafepointBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cLCastP2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUcompU_iReg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cRmethodDataOopDescJis_mature6kM_i_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cMMachCallNodeMreturns_long6kM_i_;
-text: .text%__1cIGraphKitOhas_ex_handler6M_i_;
-text: .text%__1cMloadConDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJStartNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReturnNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cQaddI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQcmovI_reg_ltNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_gtNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachSafePointNodeLis_MachCall6M_pnMMachCallNode__: ad_sparc_misc.o;
-text: .text%__1cSsafePoint_pollNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cTMachCallRuntimeNodeSis_MachCallRuntime6M_p0_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cFciEnvUis_unresolved_string6kMpnPciInstanceKlass_i_i_;
-text: .text%__1cQciByteCodeStreamUis_unresolved_string6kM_i_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNflagsRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cZCallDynamicJavaDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerOcas_under_lock6MpnMRegisterImpl_22pCi_v_;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cTmembar_CPUOrderNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: connode.o;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cQmulL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cILoopNode2t6MpnENode_2_v_;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: classes.o;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cSaddP_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMatcherUc_calling_convention6FpnLRegPair_I_v_;
-text: .text%__1cPCallRuntimeNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cHnmethodQis_native_method6kM_i_: nmethod.o;
-text: .text%__1cPCountedLoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: classes.o;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cLRShiftINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKg1RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: frame.o;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cIciObjectMhas_encoding6M_i_;
-text: .text%__1cNinstanceKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKo0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVshrL_reg_imm6_L2INodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbGupdate_compiled_code_entry_point6Mi_v_;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKJNIHandlesOdestroy_global6FpnI_jobject_i_v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMatcherQpost_fast_unlock6FpknENode__i_;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cHAddNodeGis_Add6kM_pk0_: classes.o;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cJLoadCNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciByteCodeStream__v_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: objArrayKlass.o;
-text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciByteCodeStream__v_;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cQxorI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_sparc.o;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstance.o;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: loopopts.o;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cSmembar_releaseNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__: vm_operations.o;
-text: .text%__1cRshrL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse3.o;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cQLRUMaxHeapPolicyWshould_clear_reference6MpnHoopDesc__i_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cPcompP_iRegPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSxorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: output.o;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cQshlI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvL2I_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLCounterDataOis_CounterData6M_i_: methodDataOop.o;
-text: .text%__1cJloadPNodeFclone6kM_pnENode__;
-text: .text%__1cQinstanceRefKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cYDebugInformationRecorderNappend_handle6MpnI_jobject__i_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%JVM_Clone;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cYinlineCallClearArrayNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassTis_java_lang_Object6M_i_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cSmembar_releaseNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRshrL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_release_lockNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompU_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYSurvivorMutableSpacePoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cNSharedRuntimeOresolve_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cUEdenMutableSpacePoolImax_size6kM_I_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cNSharedRuntimeSresolve_sub_helper6FpnKJavaThread_iipnGThread__nMmethodHandle__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cLstoreP0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cHMatcherNfind_receiver6Fi_nFVMRegEName__;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cQandI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMachEpilogNodeNis_MachEpilog6M_p0_: ad_sparc.o;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmPOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConPNodeFclone6kM_pnENode__;
-text: .text%__1cNSCMemProjNodeGis_CFG6kM_i_: classes.o;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRMachSafePointNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: assembler_sparc.o;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNobjArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cQcmovI_reg_gtNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cLcmpD_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadSNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cJcmpOpOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: ad_sparc_misc.o;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cSaddL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKCompiledICWis_in_transition_state6kM_i_;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadCNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJScopeDescGis_top6kM_i_;
-text: .text%__1cRshrL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlowLStateVectorOmeet_exception6MpnPciInstanceKlass_pk1_i_;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cNloadConL0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cLstoreB0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRshrI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: thread.o;
-text: .text%__1cICodeBlobKis_nmethod6kM_i_: onStackReplacement.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cRcmpFastUnlockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: connode.o;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cTCallDynamicJavaNodeEhash6kM_I_: callnode.o;
-text: .text%__1cQsubI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: frame.o;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cRcompL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeGis_Con6kM_I_: memnode.o;
-text: .text%__1cRshlL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoop2t6MrnMPhaseIterGVN_pk0i_v_;
-text: .text%__1cIciObjectIis_klass6M_i_: ciInstance.o;
-text: .text%__1cRloadConP_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cSCallLeafDirectNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSstring_compareNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFBytesNget_native_u46FpC_I_: bytecodes.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlass.o;
-text: .text%__1cRcompL_reg_conNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverUresolve_special_call6FrnICallInfo_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cRcompL_reg_conNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: cfgnode.o;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: connode.o;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interp_masm_sparc.o;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cGOopMapPset_derived_oop6MnHOptoRegEName_ii2_v_;
-text: .text%__1cLConvL2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_late6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopQbuild_loop_early6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cKCompiledICIis_clean6kM_i_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cGOopMapQset_callee_saved6MnHOptoRegEName_ii2_v_;
-text: .text%__1cYcompareAndSwapL_boolNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRbranchLoopEndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: loopnode.o;
-text: .text%__1cKCompiledICZcompute_monomorphic_entry6FnMmethodHandle_nLKlassHandle_iirnOCompiledICInfo_pnGThread__v_;
-text: .text%__1cKtype2basic6FpknEType__nJBasicType__;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cNIdealLoopTreeMis_loop_exit6kMpnENode_pnOPhaseIdealLoop__2_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshlI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerWcompiler_unlock_object6MpnMRegisterImpl_222rnFLabel__v_;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interpreter_sparc.o;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_I_;
-text: .text%__1cOMachEpilogNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cLklassItablebFinitialize_itable_for_interface6MpnMklassOopDesc_pnRitableMethodEntry__v_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cIRootNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHMatcherPprior_fast_lock6FpknENode__i_;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSReferenceProcessorbAenqueue_discovered_reflist6MpnHoopDesc_p2_v_;
-text: .text%__1cSReferenceProcessorbAprocess_discovered_reflist6MppnHoopDesc_pnPReferencePolicy_i_v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cKJavaThreadNreguard_stack6MpC_i_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cIUniverseWis_out_of_memory_error6FnGHandle__i_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodOis_java_method6kM_i_: nmethod.o;
-text: .text%__1cMtlsLoadPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_: connode.o;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cSbranchCon_longNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_: interpreter.o;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_: interpreter.o;
-text: .text%__1cNflagsRegFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTDebugInfoReadStream2t6MpknHnmethod_i_v_;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: ad_sparc.o;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cOloadConL13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cNloadConL0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%jio_snprintf;
-text: .text%__1cENodeGis_Phi6M_pnHPhiNode__: node.o;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cSmulI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimebAresolve_opt_virtual_call_C6FpnKJavaThread__pC_;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cRsubI_zero_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheXmark_for_deoptimization6FpnMklassOopDesc__i_;
-text: .text%__1cQcmovI_reg_gtNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cURethrowExceptionNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: callnode.o;
-text: .text%__1cKstoreBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cURethrowExceptionNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLPhaseValues2T5B6M_v_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNode2t6MpnENode_2222_v_;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cKCodeBufferPcopy_relocation6MpnICodeBlob__v_;
-text: .text%__1cKCodeBufferJcopy_code6MpnICodeBlob__v_;
-text: .text%__1cZnoG3_iRegI_64bit_safeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNRelocIteratorMcreate_index6FpnKCodeBuffer_pnJrelocInfo_4_4_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cQcmovI_reg_gtNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobWfix_relocation_at_move6Mi_v_;
-text: .text%__1cICodeBlob2t6MpkcpnKCodeBuffer_iiipnJOopMapSet_i_v_;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cOCompilerOraclePshould_break_at6FnMmethodHandle__i_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: memnode.o;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: classes.o;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interp_masm_sparc.o;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: frame.o;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIciObjectRis_instance_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cNRelocIterator2t6MpnKCodeBuffer_pC3_v_;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cTDebugInfoReadStreamLread_handle6M_nGHandle__;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cMtlsLoadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodPscopes_pcs_size6kM_i_: nmethod.o;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cHnmethodQscopes_data_size6kM_i_: nmethod.o;
-text: .text%__1cHnmethodJstub_size6kM_i_: nmethod.o;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cHnmethodOexception_size6kM_i_: nmethod.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJiRegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: phaseX.o;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cQcmovI_reg_ltNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cHMatcherLreturn_addr6kM_nHOptoRegEName__;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cIPhaseCFGQFind_Inner_Loops6M_v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: matcher.o;
-text: .text%__1cFArena2t6MI_v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cKCodeBufferGresize6Miiii_v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cIPhaseCFGOschedule_early6MrnJVectorSet_rnJNode_List_rnLBlock_Array__i_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cIPhaseCFGNschedule_late6MrnJVectorSet_rnJNode_List_rnNGrowableArray4CI___v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinbGstretch_base_pointer_live_ranges6MpnMResourceArea__i_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cJPhaseLive2T6M_v_;
-text: .text%__1cWemit_exception_handler6FrnKCodeBuffer__v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cKCodeBufferOrelocate_stubs6M_v_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMPhaseChaitin2T6M_v_;
-text: .text%__1cHMatcherWis_short_branch_offset6Mi_i_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cIPhaseCFGLRemoveEmpty6M_v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cHCompilePneed_stack_bang6kMi_i_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cGBundlePinitialize_nops6FppnIMachNode__v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: buildOopMap.o;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZCallInterpreterDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cLcmpD_ccNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGciTypeMis_classless6kM_i_: ciInstanceKlass.o;
-text: .text%__1cIMulLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitOset_pair_local6MipnENode__v_: parse2.o;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cOcompiledVFrameGis_top6kM_i_;
-text: .text%__1cRsubI_zero_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeBlobPallocation_size6FpnKCodeBuffer_ii_I_;
-text: .text%__1cQaddL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobRis_at_poll_return6MpC_i_;
-text: .text%__1cHciKlassMis_interface6M_i_: ciObjArrayKlass.o;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cObranchConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cIAddLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRcompL_reg_conNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__: codeBlob.o;
-text: .text%__1cRmethodDataOopDescKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_bytes6FpnNmethodOopDesc__i_;
-text: .text%__1cRmethodDataOopDescbGcompute_allocation_size_in_words6FpnNmethodOopDesc__i_;
-text: .text%__1cIDivINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cILoopNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cNprefetch2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cILoopNodeHsize_of6kM_I_: loopnode.o;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKCodeBuffer2t6MpCi_v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: nativeInst_sparc.o;
-text: .text%__1cIConPNodeEmake6FpC_p0_;
-text: .text%__1cIGraphKitNstore_barrier6MpnENode_22_v_;
-text: .text%__1cOcmovII_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: callnode.o;
-text: .text%__1cIciMethodRinstructions_size6M_i_;
-text: .text%__1cSmulI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: memnode.o;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperOindex_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: assembler_sparc.o;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cMindIndexOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKloadUBNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__: ciTypeArrayKlass.o;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cNloadConL0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cVCallRuntimeDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOloadConL13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZCallInterpreterDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreB0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cHMonitorGnotify6M_i_;
-text: .text%__1cNIdealLoopTreePiteration_split6MpnOPhaseIdealLoop_rnJNode_List__v_;
-text: .text%__1cOloadConL13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNRelocIteratorEnext6M_i_: compiledIC.o;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLOptoRuntimeRmultianewarray1_C6FpnMklassOopDesc_ipnKJavaThread__v_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cGThreadOis_interrupted6Fp0i_i_;
-text: .text%__1cSconvI2D_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: subnode.o;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
-text: .text%__1cQregP_to_stkPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_43ipnGThread__v_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cJArrayDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cQmodI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlass.o;
-text: .text%__1cNmethodOopDescThas_native_function6kM_i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constantPoolKlass.o;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: loopnode.o;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cURethrowExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNmethodOopDescWis_vanilla_constructor6kM_i_;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQcmovI_reg_ltNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKstoreFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQstkI_to_regFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJimmL0OperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cFParseJdo_ifnull6MnIBoolTestEmask__v_;
-text: .text%__1cQmulD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cOloadConL13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: multnode.o;
-text: .text%__1cKcmpOpFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cLRuntimeStubbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cNflagsRegFOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cTmembar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshlL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJMultiNodeUdepends_only_on_test6kM_i_: callnode.o;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: memnode.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: memnode.o;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciInstance.o;
-text: .text%__1cIciObjectJis_method6M_i_: ciInstance.o;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cLCastP2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cRbranchLoopEndNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cMMutableSpaceFclear6M_v_;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cOClearArrayNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cIGraphKitNallocate_heap6MpnENode_222pknITypeFunc_pC22ipknKTypeOopPtr__2_;
-text: .text%__1cPciInstanceKlassbBcompute_shared_has_subklass6M_i_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cMPrefetchNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQmulD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNprefetch2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKReflectionGinvoke6FnTinstanceKlassHandle_nMmethodHandle_nGHandle_inOobjArrayHandle_nJBasicType_4ipnGThread__pnHoopDesc__;
-text: .text%__1cSbranchCon_longNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cOLibraryCallKitNtry_to_inline6M_i_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cTInlineCallGeneratorJis_inline6kM_i_: library_call.o;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cIimmFOperJconstantF6kM_f_: ad_sparc_clone.o;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cbACallCompiledJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cPorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cENodeHis_Copy6kM_I_: node.o;
-text: .text%__1cZCallInterpreterDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPCountedLoopNodeNstride_is_con6kM_i_: loopTransform.o;
-text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: loopnode.o;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cSxorI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLcmpD_ccNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cRshrP_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cObranchConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLRethrowNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMMutableSpaceKinitialize6MnJMemRegion_i_v_;
-text: .text%__1cKstoreLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: loopnode.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: frame.o;
-text: .text%__1cObox_handleNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeEhash6kM_I_: classes.o;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cJBytecodesRspecial_length_at6FpC_i_;
-text: .text%__1cIimmPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: loopnode.o;
-text: .text%__1cQsubL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cOstackSlotIOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKcmpOpPOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKimmL13OperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cNobjArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cMURShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cRsubI_zero_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cJScopeDesc2t6MpknHnmethod_i_v_;
-text: .text%__1cQshlI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodNscope_desc_at6MpCi_pnJScopeDesc__;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHnmethodUnumber_of_dependents6kM_i_: nmethod.o;
-text: .text%__1cSmulI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: multnode.o;
-text: .text%__1cIGraphKitOnull_check_oop6MpnKRegionNode_pnENode_i_4_;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: compiledIC.o;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNinstanceKlassVis_same_class_package6MpnHoopDesc_pnNsymbolOopDesc__i_;
-text: .text%__1cMjniIdMapBaseHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cOcmovII_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cOMacroAssemblerEsetx6MxpnMRegisterImpl_2nJrelocInfoJrelocType__v_;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindirectOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMindirectOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cSsubL_reg_reg_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescTset_native_function6MpC_v_;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cQshlI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cHMatcherQinline_cache_reg6F_nHOptoRegEName__;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cOloadConI13NodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cPconvF2D_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cPcmpFastLockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimeKjbyte_copy6FpW1I_v_;
-text: .text%__1cRorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: frame.o;
-text: .text%__1cKcmpOpUOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQaddF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cObox_handleNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeLnmethods_do6M_v_;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cQnotemp_iRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cYinternal_word_RelocationJpack_data6M_i_;
-text: .text%__1cOcmovII_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUGenericGrowableArrayNraw_appendAll6Mpk0_v_;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYinternal_word_RelocationWfix_relocation_at_move6Mi_v_;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cFciEnv2t6MpnHJNIEnv__iii_v_;
-text: .text%__1cRsarL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: cfgnode.o;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cbLtransform_int_divide_to_long_multiply6FpnIPhaseGVN_pnENode_i_3_: divnode.o;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQmulD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerUcompiler_lock_object6MpnMRegisterImpl_222rnFLabel__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cQregF_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSingletonBlobIis_alive6kM_i_: codeBlob.o;
-text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cOcmovII_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: constMethodKlass.o;
-text: .text%__1cLcmpD_ccNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: loopopts.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: constMethodKlass.o;
-text: .text%__1cMloadConINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cScheck_phi_clipping6FpnHPhiNode_rpnHConNode_rI45rpnENode_5_i_: cfgnode.o;
-text: .text%__1cOcmovII_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeMis_SpillCopy6M_pnRMachSpillCopyNode__: ad_sparc.o;
-text: .text%__1cRshlL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQmodI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopKclone_loop6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cSxorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cbDReferenceProcessorInitializerIis_clean6kM_v_: concurrentMarkSweepGeneration.o;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cQshrI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNIdealLoopTreeNpolicy_unroll6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cNIdealLoopTreeSpolicy_range_check6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: loopTransform.o;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cTloadL_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_2_v_;
-text: .text%__1cSstring_compareNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNinstanceKlassPoop_is_instance6kM_i_: instanceRefKlass.o;
-text: .text%__1cJloadFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cLCodeletMark2t6MrpnZInterpreterMacroAssembler_pkcinJBytecodesECode__v_: interpreter.o;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cGEventsDlog6FpkcE_v_: nmethod.o;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: typeArrayKlass.o;
-text: .text%__1cOcmovII_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_and_dispatch6MpnITemplate_nITosState__v_;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cQregI_to_stkINodeHis_Copy6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%signalHandler;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cRInlineCacheBufferIis_empty6F_i_;
-text: .text%__1cUSafepointSynchronizeRis_cleanup_needed6F_i_;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cSstring_compareNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFframeRis_compiled_frame6kMpi_i_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cSconvI2D_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cJStartNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cOMacroAssemblerbBcheck_and_forward_exception6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cQshlI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_ltNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKDictionarybAis_valid_protection_domain6MiInMsymbolHandle_nGHandle_2_i_;
-text: .text%__1cJloadCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQandL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovPP_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMVM_OperationSis_cheap_allocated6kM_i_: vm_operations.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: frame.o;
-text: .text%__1cNCompileBrokerZcompilation_is_prohibited6FnMmethodHandle_i_i_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverbGruntime_resolve_interface_method6FrnICallInfo_nMmethodHandle_nLKlassHandle_nGHandle_4ipnGThread__v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNCompileBrokerQset_last_compile6FpnOCompilerThread_nMmethodHandle_ii_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorQset_entry_points6MnJBytecodesECode__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorWset_short_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cJTraceTime2t6MpkciipnMoutputStream__v_;
-text: .text%__1cIciMethodJhas_loops6kM_i_;
-text: .text%__1cSconvD2I_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cIciMethodQbreak_at_execute6M_i_;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cKScheduling2t6MpnFArena_rnHCompile__v_;
-text: .text%__1cKSchedulingMDoScheduling6M_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cFciEnvPregister_method6MpnIciMethod_iiiiiipnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler_ii_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cNCompileBrokerYcheck_compilation_result6FnMmethodHandle_iippnHnmethod__i_;
-text: .text%__1cZInterpreterMacroAssemblerMcall_VM_base6MpnMRegisterImpl_22pCii_v_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cJStealTask2t6Mi_v_;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cXjava_lang_ref_ReferenceWpending_list_lock_addr6F_ppnHoopDesc__;
-text: .text%__1cNmethodOopDescIset_code6MpnHnmethod__v_;
-text: .text%__1cQshrI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeBlobJcopy_oops6MppnI_jobject_i_v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cHnmethodSresolve_JNIHandles6M_v_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cHnmethod2t6MpnNmethodOopDesc_iiiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cHnmethodLnew_nmethod6FnMmethodHandle_iiiiiipnYDebugInformationRecorder_pnKCodeBuffer_ipnJOopMapSet_pnVExceptionHandlerTable_pnWImplicitExceptionTable_pnTExceptionRangeTable_pnQAbstractCompiler__p0_;
-text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cIimmLOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConLNodeFclone6kM_pnENode__;
-text: .text%__1cHCompileVfinal_graph_reshaping6M_i_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cIPhaseCCP2T6M_v_;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod_ii_v_;
-text: .text%__1cQmulI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cOcmovII_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXMachCallInterpreterNodePret_addr_offset6M_i_;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MiipnGOopMap__v_;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSxorI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbFunnecessary_membar_volatileNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cENodeIis_Start6M_pnJStartNode__: callnode.o;
-text: .text%__1cRshlL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_I_;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: interp_masm_sparc.o;
-text: .text%__1cMloadConDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbCCompiledCodeSafepointHandlerbDhandle_polling_page_exception6M_pC_;
-text: .text%__1cZInterpreterMacroAssemblerTdispatch_Lbyte_code6MnITosState_ppCii_v_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cFframebDsender_for_raw_compiled_frame6kMpnLRegisterMap__0_;
-text: .text%__1cIJVMStateOis_monitor_use6kMI_i_: reg_split.o;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__pC_;
-text: .text%__1cOloadConI13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSconvI2F_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cObranchConFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciByteCodeStream__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_3pnRJavaCallArguments_nGHandle_6_6_;
-text: .text%__1cNmethodOopDescWcompute_has_loops_flag6M_i_;
-text: .text%__1cQstkI_to_regFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constMethodKlass.o;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cRNativeMovConstRegIset_data6Mi_v_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cJBytecodesDdef6Fn0AECode_pkc33nJBasicType_ii1i_v_;
-text: .text%__1cQregP_to_stkPNodeHis_Copy6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cHTypePtrFempty6kM_i_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQmulD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvF2D_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOloadConI13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: exceptions.o;
-text: .text%__1cTmembar_CPUOrderNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTmembar_CPUOrderNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodKlass.o;
-text: .text%__1cSCompareAndSwapNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodKlass.o;
-text: .text%__1cGThreadVset_pending_exception6MpnHoopDesc_pkci_v_;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cFMutex2t6Mipkci_v_;
-text: .text%__1cQregI_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cSdivL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cQmulL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cSmulI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: assembler_sparc.o;
-text: .text%__1cQSystemDictionaryPresolve_or_fail6FnMsymbolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cRshlL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompile2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cQshlL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: classes.o;
-text: .text%__1cHBitDataKis_BitData6M_i_: ciMethodData.o;
-text: .text%__1cNLocationValueLis_location6kM_i_: debugInfo.o;
-text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMinINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOMacroAssemblerRload_ptr_contents6MrnHAddress_pnMRegisterImpl_i_v_: assembler_sparc.o;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cKRegionNodeJideal_reg6kM_I_: loopnode.o;
-text: .text%__1cENodeKis_PCTable6kM_pknLPCTableNode__: loopnode.o;
-text: .text%__1cENodeHis_Root6M_pnIRootNode__: loopnode.o;
-text: .text%__1cSconvI2F_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMatcherOc_return_value6Fii_nLRegPair__;
-text: .text%__1cENodeHis_Copy6kM_I_: loopnode.o;
-text: .text%__1cKloadUBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKg3RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cSsubL_reg_reg_2NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cTloadL_unalignedNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeRis_CallStaticJava6kM_pknSCallStaticJavaNode__: callnode.o;
-text: .text%__1cMregD_lowOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cTCallDynamicJavaNodeSis_CallDynamicJava6kM_pk0_: callnode.o;
-text: .text%__1cTloadL_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cObranchConFNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObox_handleNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cQmodI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cUParallelScavengeHeapEused6kM_I_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cVCallRuntimeDirectNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQxorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLOptoRuntimeOarraycopy_Type6F_pknITypeFunc__;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodKlass.o;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTbasictype2arraycopy6FnJBasicType_i_pC_;
-text: .text%__1cOLibraryCallKitQinline_arraycopy6M_i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodKlass.o;
-text: .text%__1cLcmpD_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWCallLeafNoFPDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLOptoRuntimeSnew_typeArray_Type6F_pknITypeFunc__;
-text: .text%__1cJloadINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJnew_array6MpnENode_nJBasicType_pknEType_pknMTypeKlassPtr__2_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cTmembar_CPUOrderNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRbranchLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRbranchLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTmembar_volatileNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo1RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cSxorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYinlineCallClearArrayNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYinlineCallClearArrayNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cLOptoRuntimeInew_Type6F_pknITypeFunc__;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cSbranchCon_longNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSbranchCon_longNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSbranchCon_longNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cIModINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cIGraphKitMnew_instance6MpnPciInstanceKlass__pnENode__;
-text: .text%__1cLstoreP0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMloadConLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cOcmovIL_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMNativeLookupGlookup6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cSandI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmLOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cYMachCallCompiledJavaNodePret_addr_offset6M_i_;
-text: .text%__1cQregP_to_stkPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2ipnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
-text: .text%__1cHnmethodXinterpreter_entry_point6M_pC_;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQPSIsAliveClosureLdo_object_b6MpnHoopDesc__i_: psScavenge.o;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cQdivL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cUdivL_reg_imm13_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeTnmethod_entry_point6FpnKJavaThread_pnNmethodOopDesc_pnHnmethod__pC_;
-text: .text%__1cQaddF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cPmethodDataKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cMNativeLookupLlookup_base6FnMmethodHandle_ripnGThread__pC_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cKRegionNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cSconvI2D_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cSTailCalljmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_gtNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cObox_handleNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cSReferenceProcessorZadd_to_discovered_list_mt6MppnHoopDesc_23_v_;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLstoreP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cTLoadL_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cSmulI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
-text: .text%__1cQcmovI_reg_gtNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQandI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cQmulI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cYinlineCallClearArrayNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: objArrayKlass.o;
-text: .text%__1cNobjArrayKlassZcan_be_primary_super_slow6kM_i_;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cUmulL_reg_imm13_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cSTailCalljmpIndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cRorI_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregF_to_stkINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeRis_safepoint_node6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: parse1.o;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: frame.o;
-text: .text%__1cMloadConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cNloadConP0NodeFclone6kM_pnENode__;
-text: .text%__1cSxorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJimmP0OperFclone6kM_pnIMachOper__;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cNloadConPCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciByteCodeStream_pnHciKlass_i_v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQregI_to_stkINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cIregDOperFclone6kM_pnIMachOper__;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIUniverseHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cYinternal_word_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cIregFOperFclone6kM_pnIMachOper__;
-text: .text%__1cJloadDNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQshlL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cOcmovPI_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cObox_handleNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQciByteCodeStreamPget_klass_index6M_i_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cNinstanceKlassQmethod_index_for6kMpnNmethodOopDesc_pnGThread__i_;
-text: .text%__1cNmethodOopDescVparameter_annotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cNmethodOopDescLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRtestI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cOCompiledRFrameLis_compiled6kM_i_: rframe.o;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cICodeBlobPis_runtime_stub6kM_i_: nmethod.o;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJimmU6OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cOPhaseIdealLoopJdo_unroll6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cLServiceUtilLvisible_oop6FpnHoopDesc__i_: objectMonitor_solaris.o;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cIimmIOperFclone6kM_pnIMachOper__;
-text: .text%__1cMloadConINodeFclone6kM_pnENode__;
-text: .text%__1cSmulL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cENodeFis_If6M_pnGIfNode__: ad_sparc_misc.o;
-text: .text%__1cNflagsRegFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cXvirtual_call_RelocationJpack_data6M_i_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cSconvD2I_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMonitor2t6Mipkci_v_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOtypeArrayKlassOmulti_allocate6MipiipnGThread__pnHoopDesc__;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cSReferenceProcessorbDprocess_discovered_references6M_v_;
-text: .text%__1cSReferenceProcessorQprocess_phaseJNI6M_v_;
-text: .text%__1cSReferenceProcessorbDenqueue_discovered_references6M_i_;
-text: .text%__1cSReferenceProcessorbBenqueue_discovered_reflists6MppnHoopDesc__v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cUParallelScavengeHeapTensure_parseability6M_v_;
-text: .text%__1cUParallelScavengeHeapOfill_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXTraceMemoryManagerStats2t6Mi_v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cNCollectedHeapOfill_all_tlabs6M_v_;
-text: .text%__1cNCollectedHeapTensure_parseability6M_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cXjava_lang_ref_ReferenceRpending_list_addr6F_ppnHoopDesc__;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cPGCMemoryManagerIgc_begin6M_v_;
-text: .text%__1cPGCMemoryManagerGgc_end6M_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cQaddF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshlL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cONMethodSweeperFsweep6F_v_;
-text: .text%__1cNCollectedHeapYcommon_mem_allocate_init6FIipnGThread__pnIHeapWord__: arrayKlass.o;
-text: .text%__1cTAbstractInterpreterRnotice_safepoints6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cOcmovII_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTAbstractInterpreterRignore_safepoints6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cJStoreNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cPconvF2D_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKimmU13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQshlL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUcompU_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%__1cOcmovPP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSobjArrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cLstoreC0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cSdivL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvI2F_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pCii_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: cpCacheKlass.o;
-text: .text%__1cLstoreB0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: vmThread.o;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: interp_masm_sparc.o;
-text: .text%__1cQdivL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUParallelScavengeHeapMmem_allocate6MIii_pnIHeapWord__;
-text: .text%__1cQregP_to_stkPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_gtNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cWloadConI_x43300000NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyWminor_collection_begin6M_v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerKfast_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cUPSAdaptiveSizePolicyUminor_collection_end6MnHGCCauseFCause__v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cQinstanceRefKlassbKrelease_and_notify_pending_list_lock6FipnJBasicLock__v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MII_v_;
-text: .text%__1cODeoptimizationYtrap_state_is_recompiled6Fi_i_;
-text: .text%__1cKPSYoungGenGresize6MII_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MII_v_;
-text: .text%__1cUPSAdaptiveSizePolicyPupdate_averages6MiII_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPcompute_survivor_space_size_and_threshold6MiiI_i_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cKPSScavengeQinvoke_no_policy6Fpi_i_;
-text: .text%__1cPVM_GC_OperationQgc_count_changed6kM_i_;
-text: .text%__1cKPSYoungGenRresize_generation6MII_i_;
-text: .text%__1cPVM_GC_OperationNdoit_prologue6M_i_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cNJvmtiGCMarker2t6Mi_v_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cTmembar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQjava_lang_ThreadJis_daemon6FpnHoopDesc__i_;
-text: .text%__1cVCallRuntimeDirectNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cMLinkResolverbPlinktime_resolve_interface_method_or_null6FnLKlassHandle_nMsymbolHandle_21i_nMmethodHandle__;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSCompiledStaticCallIis_clean6kM_i_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cUmulL_reg_imm13_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cLOptoRuntimeVresolve_static_call_C6FpnKJavaThread__pC_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_nHOptoRegEName__;
-text: .text%__1cTCallInterpreterNodeSis_CallInterpreter6kM_pk0_: classes.o;
-text: .text%__1cTCallInterpreterNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cHCompilebMGenerate_Compiled_To_Interpreter_Graph6MpknITypeFunc_pC_v_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cZCallInterpreterDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cQmulF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXMachCallInterpreterNodeWis_MachCallInterpreter6M_p0_: ad_sparc_misc.o;
-text: .text%__1cZCallInterpreterDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallInterpreterDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcompL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x41f00000NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cQciByteCodeStreamFtable6MnJBytecodesECode__2_;
-text: .text%__1cKimmL13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRsarL_reg_imm6NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: sharedRuntime.o;
-text: .text%__1cLcmpF_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKloadUBNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cRorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWResolveOopMapConflictsRpossible_gc_point6MpnOBytecodeStream__i_: rewriter.o;
-text: .text%__1cRsarL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmulI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMnegD_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cUdivL_reg_imm13_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOcmovIL_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_memNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cJloadSNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstkL_to_regD_0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cQshlL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOMacroAssemblerWstore_unaligned_double6MpnRFloatRegisterImpl_pnMRegisterImpl_i_v_;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQstkI_to_regFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQregP_to_stkPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cSTailCalljmpIndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSTailCalljmpIndNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cLOptoRuntimeThandle_wrong_method6FpnKJavaThread__pC_;
-text: .text%__1cOMacroAssemblerUstore_unaligned_long6MpnMRegisterImpl_2i_v_;
-text: .text%__1cSmulL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cOLibraryCallKitRinline_unsafe_CAS6MnJBasicType__i_;
-text: .text%__1cTCompareAndSwapLNode2t6MpnENode_2222_v_;
-text: .text%__1cYcompareAndSwapL_boolNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompareAndSwapNode2t6MpnENode_2222_v_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcompareAndSwapL_boolNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUPSAdaptiveSizePolicyOshould_full_GC6MI_i_;
-text: .text%__1cIPSOldGenMmax_gen_size6M_I_: psOldGen.o;
-text: .text%__1cUPSAdaptiveSizePolicyQdecaying_gc_cost6kM_d_;
-text: .text%__1cUPSAdaptiveSizePolicybDcompute_generation_free_space6MIIIIIIIi_v_;
-text: .text%__1cSmulL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKPSScavengeGinvoke6Fpi_v_;
-text: .text%__1cUPSAdaptiveSizePolicyVadjust_for_throughput6MipI1_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cSsubL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUPSAdaptiveSizePolicyZdecay_supplemental_growth6Mi_v_;
-text: .text%__1cSdivL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUParallelScavengeHeapTfailed_mem_allocate6MpiIii_pnIHeapWord__;
-text: .text%__1cbDVM_ParallelGCFailedAllocation2t6MIiiI_v_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEname6kM_pkc_: vm_operations.o;
-text: .text%__1cQaddL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cMregD_lowOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cOcmovII_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseScreate_jump_tables6MpnENode_pnLSwitchRange_4_i_;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cOcmovIL_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cRtestI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSxorI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cKstoreFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMatcherXinterpreter_arg_ptr_reg6F_nHOptoRegEName__;
-text: .text%__1cPstoreI_FregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cLstoreC0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlowOsplit_range_at6Mi_pn0AFRange__;
-text: .text%__1cNObjectMonitorEwait6MxipnGThread__v_;
-text: .text%__1cSmulI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_MonitorWait;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cNloadConPCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cQshlI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cNloadConL0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHBoxNodeGOpcode6kM_i_;
-text: .text%__1cRshrL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMflagsRegOperFclone6kM_pnIMachOper__;
-text: .text%__1cSconvI2F_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregF_to_stkINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cPstoreI_FregNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cQsubF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cbDreorder_based_on_method_index6FpnPobjArrayOopDesc_1ppnHoopDesc__v_: methodOop.o;
-text: .text%__1cQaddD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cQshlI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cSstkL_to_regD_0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cbCAbstractInterpreterGeneratorVset_vtos_entry_points6MpnITemplate_rpC44444444_v_;
-text: .text%__1cQregI_to_stkINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cQsubI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cSbranchCon_longNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cXjava_lang_ref_ReferenceOset_discovered6FpnHoopDesc_2_v_;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMLinkResolverUresolve_virtual_call6FrnICallInfo_nGHandle_nLKlassHandle_4nMsymbolHandle_54iipnGThread__v_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_I_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cSsubL_reg_reg_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNget_method_id6FpnHJNIEnv__pnH_jclass_pkc5ipnGThread__pnK_jmethodID__: jni.o;
-text: .text%__1cMjniIdSupportNto_jmethod_id6FpnNmethodOopDesc__pnK_jmethodID__;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceRefKlass.o;
-text: .text%__1cENodeGis_Mem6M_pnHMemNode__: cfgnode.o;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cLstoreF0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadINodeFclone6kM_pnENode__;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cQdivL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXconvI2D_regDHi_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cICodeBlobYcaller_must_gc_arguments6kMpnKJavaThread__i_: codeBlob.o;
-text: .text%__1cSandL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSingletonBlobbIfollow_roots_or_mark_for_unloading6MpnRBoolObjectClosure_pnKOopClosure_iri_v_: codeBlob.o;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cFParseXfetch_interpreter_state6MipknEType_pnENode__5_;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cOcmovPP_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cKstoreCNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cKloadUBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregL_to_stkLNodeHis_Copy6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUCallCompiledJavaNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cSconvD2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHCompilebMGenerate_Interpreter_To_Compiled_Graph6MpknITypeFunc__v_;
-text: .text%__1cbACallCompiledJavaDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cbACallCompiledJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSconvD2I_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbACallCompiledJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cbACallCompiledJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_return_entry_for6MnITosState_i_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_deopt_entry_for6MnITosState_i_pC_;
-text: .text%__1cSaddP_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cOcmovPP_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2D_helperNodeFclone6kM_pnENode__;
-text: .text%__1cOloadI_fregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileRmake_vm_intrinsic6MpnIciMethod_i_pnNCallGenerator__;
-text: .text%__1cOloadI_fregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCountedLoopEndNode2t6MpnENode_2ff_v_;
-text: .text%__1cQmulD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: vmThread.o;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPstoreI_FregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFTypeDJsingleton6kM_i_;
-text: .text%__1cLstoreC0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%__1cKstoreINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_ThreadMis_stillborn6FpnHoopDesc__i_;
-text: .text%__1cRorI_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cGEventsDlog6FpkcE_v_: thread.o;
-text: .text%__1cHciKlassMis_interface6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cQmulI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cVinline_cache_regPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPconvF2D_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregI_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbBinitialize_itable_for_klass6FpnMklassOopDesc__v_;
-text: .text%__1cTloadL_unalignedNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreterRT_sparc.o;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cJimmU6OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cObox_handleNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRorI_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Loop6M_pnILoopNode__: cfgnode.o;
-text: .text%__1cKloadUBNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTmembar_volatileNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cXconvI2D_regDHi_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorThas_signature_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorVhas_annotations_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cGThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cGThreadVis_jvmti_agent_thread6kM_i_: thread.o;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cENodeZcheck_for_anti_dependence6kM_i_: machnode.o;
-text: .text%__1cNloadConP0NodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTloadL_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cObox_handleNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQregI_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cMregD_lowOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2F_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%__1cRtestI_reg_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: multnode.o;
-text: .text%__1cQdivI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLPhaseValuesHlongcon6Mx_pnIConLNode__;
-text: .text%__1cQregP_to_stkPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQstkI_to_regFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregI_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQRelocationHolderEplus6kMi_0_;
-text: .text%__1cUPSMarkSweepDecoratorHcompact6Mi_v_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cTloadL_unalignedNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cQregF_to_stkINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cLLShiftLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cbFunnecessary_membar_volatileNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovII_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNiRegIsafeOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodPis_dependent_on6MpnMklassOopDesc__i_;
-text: .text%__1cTloadD_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerHpop_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cQdivD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHis_Bool6M_pnIBoolNode__: connode.o;
-text: .text%__1cKLoadPCNodeGOpcode6kM_i_;
-text: .text%__1cENodeIis_CMove6M_pnJCMoveNode__: connode.o;
-text: .text%__1cOloadConL13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_conNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassMoop_is_array6kM_i_: methodDataKlass.o;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: methodDataKlass.o;
-text: .text%__1cLcmpF_ccNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFciEnvWis_dependence_violated6FpnMklassOopDesc_pnNmethodOopDesc__i_;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cQaddD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceRefKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: instanceKlassKlass.o;
-text: .text%__1cObox_handleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cJloadINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSdivL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregP_to_stkPNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cFframeVshould_be_deoptimized6kM_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationMupdate_addrs6MrknKCodeBuffer_3_v_;
-text: .text%__1cUdivL_reg_imm13_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvD2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCMoveINodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPCallRuntimeNodeOis_CallRuntime6kM_pk0_: callnode.o;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubF_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobOis_java_method6kM_i_: codeBlob.o;
-text: .text%__1cQMachCallJavaNodeVis_MachCallStaticJava6M_pnWMachCallStaticJavaNode__: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC2i_v_;
-text: .text%__1cUmulL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQdivL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeMis_CatchProj6kM_pknNCatchProjNode__: classes.o;
-text: .text%__1cOcmovPI_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMTypeKlassPtrRcast_to_exactness6kMi_pknEType__;
-text: .text%__1cUmulL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCallGeneratorQfor_virtual_call6FpnIciMethod__p0_;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cTmembar_volatileNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cQdivD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cUVirtualCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cQmulF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: templateTable_sparc.o;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: interpreterRT_sparc.o;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSstring_compareNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYjava_lang_reflect_MethodVhas_annotations_field6F_i_;
-text: .text%__1cVshrL_reg_imm6_L2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cOloadConL13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodbFhas_parameter_annotations_field6F_i_;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodThas_signature_field6F_i_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodbChas_annotation_default_field6F_i_;
-text: .text%__1cOimmI_32_63OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cNmethodOopDescSannotation_default6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cKReflectionKnew_method6FnMmethodHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNIdealLoopTreeXpolicy_maximally_unroll6kMpnOPhaseIdealLoop__i_;
-text: .text%__1cSsubL_reg_reg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregP_to_stkPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNRelocIteratorEnext6M_i_: output.o;
-text: .text%__1cOcmovII_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cTloadD_unalignedNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQshlL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceRefKlass.o;
-text: .text%__1cObranchConFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNminI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRshlI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNminI_eRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOloadConL13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSsubD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cUdivL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmulD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cOcmovIF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUmulL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubD_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSandL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConPCNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_pkcp4_i_: arguments.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJEventMark2t6MpkcE_v_: psMarkSweep.o;
-text: .text%__1cQregP_to_stkPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCMoveNodeEmake6FpnENode_222pknEType__p0_;
-text: .text%__1cJCMoveNode2t6MpnENode_22pknEType__v_: connode.o;
-text: .text%__1cSconvI2F_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cOcmovIF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MipnMRegisterImpl__v_;
-text: .text%__1cQcmovI_reg_ltNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRtestI_reg_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cQshrL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeFclone6kM_pnENode__;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddD_regD_regDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassQfind_local_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__i_;
-text: .text%__1cQshrL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOimmI_32_63OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cSstkL_to_regD_0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUGenericGrowableArrayKraw_remove6MpknEGrET__v_;
-text: .text%__1cOloadI_fregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMnegD_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTAbstractInterpreterLdeopt_entry6FnITosState_i_pC_;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadSNodeFclone6kM_pnENode__;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cPBoundRelocationLunpack_data6MnJrelocInfoJrelocType__v_: output.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cQstkI_to_regINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQshrL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_ThreadIis_alive6FpnHoopDesc__i_;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: typeArrayKlass.o;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmulD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsarL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregI_to_stkINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFTypeFJsingleton6kM_i_;
-text: .text%__1cLconvI2BNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvD2I_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopVinsert_pre_post_loops6MpnNIdealLoopTree_rnJNode_List_i_v_;
-text: .text%__1cQaddD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregL_to_stkLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cLTypeInstPtrRcast_to_exactness6kMi_pknEType__;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cWPredictedCallGeneratorJis_inline6kM_i_: callGenerator.o;
-text: .text%__1cLcmpF_ccNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWPredictedCallGeneratorKis_virtual6kM_i_: callGenerator.o;
-text: .text%__1cNCallGeneratorSfor_predicted_call6FpnHciKlass_p03_3_;
-text: .text%__1cSconvI2F_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXconvI2D_regDHi_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObox_handleNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cOcmovPP_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSaddD_regD_regDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIVMThreadMis_VM_thread6kM_i_: vmThread.o;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQmulF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregL_to_stkLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cOcmovLI_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cOcmovLL_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cSdivL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGThreadOis_Java_thread6kM_i_: vmThread.o;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlass.o;
-text: .text%__1cFTypeDGis_nan6kM_i_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cSsubL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cQaddF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cCosNcreate_thread6FpnGThread_n0AKThreadType_I_i_;
-text: .text%_start: os_solaris.o;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cXjava_lang_reflect_FieldThas_signature_field6F_i_;
-text: .text%__1cXjava_lang_reflect_FieldVhas_annotations_field6F_i_;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cQsubD_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerTload_unaligned_long6MpnMRegisterImpl_i2_v_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%JVM_Read;
-text: .text%__1cOcmovPI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cFciEnvZcall_has_multiple_targets6FpnNinstanceKlass_nMsymbolHandle_3ri_i_;
-text: .text%__1cKReflectionJnew_field6FpnPfieldDescriptor_ipnGThread__pnHoopDesc__;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cQsubL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmodI_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cQmodI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRsarI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cLOptoRuntimeWresolve_virtual_call_C6FpnKJavaThread__pC_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cSmulD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cMloadConINodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSstring_compareNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreF0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cOJavaAssertionsHenabled6Fpkci_i_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cSsubD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cSstkL_to_regD_0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cRsarL_reg_imm6NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cENodeIis_Multi6M_pnJMultiNode__: node.o;
-text: .text%__1cNThreadServiceKadd_thread6FpnKJavaThread_i_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cUregI_to_stkLHi_1NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cNjni_functions6F_pknTJNINativeInterface___;
-text: .text%__1cCosMguard_memory6FpcI_i_;
-text: .text%__1cENodeIis_Store6kM_pknJStoreNode__: node.o;
-text: .text%__1cENodeGis_Cmp6kM_pknHCmpNode__: node.o;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC22i_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cQshrL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGParker2t6M_v_;
-text: .text%__1cIDivLNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSdivL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: interp_masm_sparc.o;
-text: .text%__1cMFlatProfilerJis_active6F_i_;
-text: .text%__1cOMacroAssemblerNload_contents6MrnHAddress_pnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cPconvI2D_memNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNimmP_pollOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRtestI_reg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cMVirtualSpaceJexpand_by6MI_i_;
-text: .text%__1cUregI_to_stkLHi_0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cOcmovIF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryQjava_mirror_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cRloadConP_pollNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPPerfDataManagerIadd_item6FpnIPerfData_i_v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%JVM_IsArrayClass;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cJloadDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorGenter26MpnGThread__v_;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cKstoreBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cOloadI_fregNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeHdel_out6Mp0_v_: generateOptoStub.o;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cKstoreLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNloadConPCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreC0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICodeHeapJexpand_by6MI_i_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cObranchConFNodeJis_Branch6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadD_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassName;
-text: .text%__1cOGenerateOopMapTmethodsig_to_effect6MpnNsymbolOopDesc_ipnNCellTypeState__i_;
-text: .text%__1cOloadI_fregNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: objArrayKlass.o;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cSaddD_regD_regDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cOcmovIF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: loopnode.o;
-text: .text%__1cQshrL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMatcherXpost_store_load_barrier6FpknENode__i_;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQstkI_to_regFNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVcompiledICHolderKlassSoop_being_unloaded6MpnRBoolObjectClosure_pnHoopDesc__i_;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOcmovPP_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cMloadConDNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLStrCompNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOMacroAssemblerVload_unaligned_double6MpnMRegisterImpl_ipnRFloatRegisterImpl__v_;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cJloadSNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cHnmethodNis_osr_method6kM_i_: nmethod.o;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQsubI_reg_regNodeFclone6kM_pnENode__;
-text: .text%JVM_Open;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cSsubL_reg_reg_2NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cICodeBlobJis_zombie6kM_i_: onStackReplacement.o;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cSmulL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cHAddress2t6Mn0AJaddr_type_i_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cIciObjectJis_method6M_i_: ciObjectFactory.o;
-text: .text%__1cNloadConPCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTLoadD_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cSstkL_to_regD_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshrI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_FreeMemory;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlass.o;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%JVM_TotalMemory;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciObjectFactory.o;
-text: .text%__1cUmulL_reg_imm13_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCodeBufferWinsert_double_constant6Md_pC_;
-text: .text%__1cTAbstractInterpreterWlayout_activation_impl6FpnNmethodOopDesc_iiiipnFframe_4i_i_;
-text: .text%__1cQdivL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciObjectOis_method_data6M_i_: ciObjectFactory.o;
-text: .text%__1cOcmovIL_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_memNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: interpreter_sparc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cQandI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cGParker2T6M_v_;
-text: .text%__1cSandL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__SLIP.DELETER__A: thread.o;
-text: .text%__1cCosOunguard_memory6FpcI_i_;
-text: .text%__1cKJavaThreadEexit6Mi_v_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cODeoptimizationYquery_update_method_data6FnQmethodDataHandle_in0ALDeoptReason_rIri4_pnLProfileData__;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cNThreadServiceNremove_thread6FpnKJavaThread_i_v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cUregI_to_stkLHi_0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cUregI_to_stkLHi_1NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLconvI2BNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRNativeMovConstRegEdata6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cMTailCallNode2t6MpnENode_222222_v_;
-text: .text%__1cQaddD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: deoptimization.o;
-text: .text%__1cPconvD2F_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNimmP_pollOperFclone6kM_pnIMachOper__;
-text: .text%__1cQdivD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbEset_method_data_pointer_offset6MpnMRegisterImpl__v_;
-text: .text%__1cSconvF2I_helperNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cJLoadPNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cRloadConP_pollNodeFclone6kM_pnENode__;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cNloadConPCNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConPCNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTOopMapForCacheEntryOreport_results6kM_i_: oopMapCache.o;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXconvI2D_regDHi_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: library_call.o;
-text: .text%__1cSandL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringbHcreate_from_platform_depended_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cRshlI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cQregL_to_stkLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: klassKlass.o;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cURethrowExceptionNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcastP2INodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOcmovLL_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cIGraphKitXinsert_mem_bar_volatile6MpnKMemBarNode_i_v_;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOLibraryCallKitYinline_native_time_funcs6Mi_i_;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cVMoveL2D_stack_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHRetDataKcell_count6M_i_: methodDataOop.o;
-text: .text%__1cTloadD_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNiRegIsafeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNloadConP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: ciTypeFlow.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: stubGenerator_sparc.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cZInterpreterMacroAssemblerFpop_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMnegD_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cKimmL13OperFclone6kM_pnIMachOper__;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cLstoreF0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cQshlL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSsubL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cOloadI_fregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cbIjava_security_AccessControlContextGcreate6FnOobjArrayHandle_inGHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cLstoreF0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUGenericGrowableArrayUclear_and_deallocate6M_v_;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cNmaxI_eRegNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cNmaxI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%JVM_NativePath;
-text: .text%__1cOMacroAssemblerNflush_windows6M_v_;
-text: .text%__1cNloadConL0NodeFclone6kM_pnENode__;
-text: .text%__1cSsubD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSReferenceProcessorHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cKg3RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVinline_cache_regPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cWloadConI_x41f00000NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstorePNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIGraphKitbAgen_stub_or_native_wrapper6MpCpkcpnIciMethod_iiiii_v_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cPconvI2D_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQaddD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cJimmL0OperFclone6kM_pnIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cVCallRuntimeDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPCallRuntimeNodeEhash6kM_I_: callnode.o;
-text: .text%__1cICallNodeSis_CallInterpreter6kM_pknTCallInterpreterNode__: callnode.o;
-text: .text%__1cOcmovPI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cMtlsLoadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJvmSymbolsHoops_do6FpnKOopClosure_i_v_;
-text: .text%__1cLcmpF_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregL_to_stkLNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cKimmI11OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSstkL_to_regD_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_gtNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regINodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovIF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLL_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cIUniverseWreinitialize_vtable_of6FpnFKlass_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MipnMRegisterImpl__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cPconvF2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: methodDataKlass.o;
-text: .text%__1cOcmovDF_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cOcmovLL_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cVMoveL2D_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cSconvF2I_helperNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHnmethodbCcan_not_entrant_be_converted6M_i_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: methodDataKlass.o;
-text: .text%__1cJloadCNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOloadI_fregNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovLL_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cWloadConI_x41f00000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpFOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLstoreC0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQregL_to_stkLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRuntimeStubQnew_runtime_stub6FpkcpnKCodeBuffer_ipnJOopMapSet_i_p0_;
-text: .text%__1cIAddFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cLcastP2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKo2RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cOcmovIF_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Close;
-text: .text%__1cSmulD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsubD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXconvI2D_regDHi_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadD_unalignedNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cQsubF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbIcompute_extra_locals_size_in_bytes6MpnMRegisterImpl_22_v_;
-text: .text%__1cLcmpF_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cPorI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUregI_to_stkLHi_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSxorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2D_memNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
-text: .text%__1cQdivI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_memNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWloadConI_x43300000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x41f00000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeGis_Con6kM_I_: loopnode.o;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: templateTable_sparc.o;
-text: .text%__1cSmulI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_: loopnode.o;
-text: .text%__1cENodeJis_MemBar6kM_pknKMemBarNode__: classes.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSmulD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotLOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cUregI_to_stkLHi_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQshlI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cPconvD2F_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cOcmovLI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cLstoreI0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cTunsafe_intrinsic_id6FpnNsymbolOopDesc_1_nNmethodOopDescLIntrinsicId__;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvD2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cPorL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cUregI_to_stkLHi_0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cKVtableStubSpd_code_size_limit6Fi_i_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSaddD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cQsubD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPP_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableGbranch6Fii_v_;
-text: .text%__1cSsubL_reg_reg_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: interpreter_sparc.o;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cJloadFNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cSdivL_reg_reg_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cObranchConFNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSconvF2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cOloadI_fregNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPstoreI_FregNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: stubGenerator_sparc.o;
-text: .text%__1cSmulL_reg_reg_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cHCompile2t6MpnFciEnv_pF_pknITypeFunc_pCpkciiii_v_;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: interp_masm_sparc.o;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cUregI_to_stkLHi_1NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regINodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitIgen_stub6MpCpkciii_v_;
-text: .text%__1cNTemplateTableOpatch_bytecode6FnJBytecodesECode_pnMRegisterImpl_4i_v_;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: typeArrayKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlass.o;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cSstkL_to_regD_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSstkL_to_regD_0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cVMoveF2I_stack_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOcmovLL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTloadL_unalignedNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cTloadL_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFMutexbLwait_for_lock_blocking_implementation6MpnKJavaThread__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSvframeArrayElementPunpack_on_stack6MiipnFframe_ii_v_;
-text: .text%__1cSconvF2I_helperNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbFtest_invocation_counter_for_mdp6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cSaddD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
-text: .text%__1cSmulL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cTloadD_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cJimmP0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cQshrI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_stack_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x43300000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cSvframeArrayElementNon_stack_size6kMiiii_i_;
-text: .text%__1cWloadConI_x41f00000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cIimmDOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Mi_v_;
-text: .text%__1cOstackSlotLOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotLOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cTloadD_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadD_unalignedNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJimmU5OperFclone6kM_pnIMachOper__;
-text: .text%__1cTAbstractInterpreterPsize_activation6FpnNmethodOopDesc_iiiii_i_;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmulD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSstkL_to_regD_0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConDNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTAbstractInterpreterQcontinuation_for6FpnNmethodOopDesc_pCiiri_3_;
-text: .text%__1cUregI_to_stkLHi_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTAbstractInterpreterRlayout_activation6FpnNmethodOopDesc_iiiipnFframe_4i_v_;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cUregI_to_stkLHi_0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: klassKlass.o;
-text: .text%JVM_GetComponentType;
-text: .text%__1cQdivI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cOcmovII_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cVMoveF2I_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICodeBlobZis_at_poll_or_poll_return6MpC_i_;
-text: .text%__1cLvframeArrayIallocate6FpnKJavaThread_ipnNGrowableArray4CpnOcompiledVFrame___pnLRegisterMap_nFframe_9A9A9A_p0_;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cLcastP2INodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: deoptimization.o;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cNloadConL0NodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cODeoptimizationScreate_vframeArray6FpnKJavaThread_nFframe_pnLRegisterMap__pnLvframeArray__;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cPconvD2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cQsubD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_DefineClass;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cOcmovPP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%__1cHBoxNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cFStateL_sub_Op_Box6MpknENode__v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCodeBufferVinsert_float_constant6Mf_pC_;
-text: .text%__1cOMacroAssemblerCbr6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: jniFastGetField_sparc.o;
-text: .text%__1cMnegD_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cQstkI_to_regINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cYinternal_word_RelocationMforce_target6MpC_v_: relocInfo.o;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cMloadConFNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cETypeJis_finite6kM_i_;
-text: .text%__1cPconvI2D_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLconvI2BNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPorL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPorL_reg_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerGif_cmp6MnJAssemblerJCondition_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cOMacroAssemblerPcasx_under_lock6MpnMRegisterImpl_22pCi_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cQsubF_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeFclone6kM_pnENode__;
-text: .text%__1cNloadRangeNodeFclone6kM_pnENode__;
-text: .text%__1cSaddL_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2L_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceRefKlass.o;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cLTypeInstPtrLmirror_type6kM_pnGciType__;
-text: .text%__1cOstackSlotIOperFclone6kM_pnIMachOper__;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_nMsymbolHandle_pkcnGHandle_6_6_;
-text: .text%__1cOcmovII_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerHbr_null6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
-text: .text%__1cFParseScan_rerun_bytecode6M_i_;
-text: .text%__1cQshrL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKExceptionsNnew_exception6FpnGThread_pnNsymbolOopDesc_pkc_nGHandle__;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstfSSFNodeHis_Copy6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHdom_lca6FpnFBlock_1_1_: gcm.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlass.o;
-text: .text%JVM_NewArray;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cGThreadRis_Watcher_thread6kM_i_: thread.o;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOcmovDF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovLI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cFParseWload_interpreter_state6MpnENode_2_v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cSconvD2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cPconvI2L_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPconvD2I_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cJCodeCacheMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure_iri_v_;
-text: .text%__1cMStartOSRNodeScalling_convention6kMpnLRegPair_I_v_;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: callnode.o;
-text: .text%__1cRCardTableModRefBSEis_a6MnKBarrierSetEName__i_: cardTableExtension.o;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cLconvP2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryMdo_unloading6FpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cPconvD2F_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cSReferenceProcessorPoops_do_statics6FpnKOopClosure__v_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cVVM_ParallelGCSystemGCEname6kM_pkc_: vm_operations.o;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cVVM_ParallelGCSystemGC2t6MI_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cOMacroAssemblerPbreakpoint_trap6M_v_;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cQAbstractCompilerMsupports_osr6M_i_: c2compiler.o;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%JVM_GC;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cKDictionaryMdo_unloading6MpnRBoolObjectClosure_pnKOopClosure__i_;
-text: .text%__1cLPSMarkSweepQinvoke_no_policy6Fpii_v_;
-text: .text%__1cLPSMarkSweepGinvoke6Fpii_v_;
-text: .text%__1cQmulL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cWloadConI_x43300000NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MInHGCCauseFCause__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cWloadConI_x41f00000NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cJPSPermGenQcompute_new_size6MI_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cQUncommonTrapBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cNExceptionBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: objArrayKlass.o;
-text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNStubGeneratorFalign6Mi_v_: stubGenerator_sparc.o;
-text: .text%__1cQregL_to_stkLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLcastP2INodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpFOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cOcmovPI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCMoveNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cQdivD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovIF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: klassKlass.o;
-text: .text%__1cQaddL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cJloadLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMloadConFNodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cMmatch_option6FpknMJavaVMOption_ppkc5i_i_: arguments.o;
-text: .text%__1cNloadConPCNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cSaddP_reg_imm13NodeFclone6kM_pnENode__;
-text: .text%__1cOstackSlotFOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%JVM_Sleep;
-text: .text%__1cHBoxNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cObox_handleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLstoreF0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceRefKlass.o;
-text: .text%__1cQstkI_to_regFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cRorI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVMoveF2I_stack_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotLOperFclone6kM_pnIMachOper__;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%JVM_Lseek;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: templateTable_sparc.o;
-text: .text%__1cNloadRangeNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPconvD2F_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cPconvF2D_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cQmulI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvF2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRmethodDataOopDescRbci_to_extra_data6Mii_pnLProfileData__;
-text: .text%__1cOcmovLI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cQregL_to_stkLNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubD_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregP_to_stkPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2D_memNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddL_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MipnMRegisterImpl_rnFLabel_2_v_;
-text: .text%__1cVMoveL2D_stack_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeIis_Catch6kM_pknJCatchNode__: loopnode.o;
-text: .text%__1cPconvD2F_regNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOLibraryCallKitXinline_string_compareTo6M_i_;
-text: .text%__1cQdivI_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cOMacroAssemblerKbr_notnull6MpnMRegisterImpl_inJAssemblerHPredict_rnFLabel__v_;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cENodeHis_Call6M_pnICallNode__: machnode.o;
-text: .text%__1cLOptoRuntimeRnew_objArray_Type6F_pknITypeFunc__;
-text: .text%__1cQaddF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cSconvF2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetEnv;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQstkI_to_regINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSstring_compareNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cVcompiledICHolderKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQandL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cHThreadsLnmethods_do6F_v_;
-text: .text%__1cKcmpOpFOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cSdivL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cObranchConFNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cOcmovIF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSaddL_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreC0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cOMacroAssemblerGmembar6MnJAssemblerQMembar_mask_bits__v_: templateTable_sparc.o;
-text: .text%__1cNTemplateTableXjvmti_post_field_access6Fiii_v_;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodLiveness.o;
-text: .text%__1cbCAbstractInterpreterGeneratorbBgenerate_result_handler_for6MnJBasicType__pC_;
-text: .text%__1cOstackSlotFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cKo2RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregI_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMloadConFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cMregD_lowOperFclone6kM_pnIMachOper__;
-text: .text%__1cJloadFNodeFclone6kM_pnENode__;
-text: .text%__1cJEventMark2t6MpkcE_v_: nmethod.o;
-text: .text%__1cCosNcommit_memory6FpcII_i_;
-text: .text%__1cJloadLNodeFclone6kM_pnENode__;
-text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cSaddI_reg_imm13NodeFclone6kM_pnENode__;
-text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cLOptoRuntimeNgenerate_stub6FpnFciEnv_pF_pknITypeFunc_pCpkciiii_8_;
-text: .text%__1cWloadConI_x43300000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cPorL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPSPromotionLABRunallocate_object6MpnHoopDesc__i_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cVMoveL2D_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cPjava_lang_ClassYcreate_basic_type_mirror6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cSmodL_reg_imm13NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cRshrI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cSsubL_reg_reg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPconvI2F_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cUdivL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_continuation_for6MnITosState__pC_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cOcmovLL_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcastP2INodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassMoop_is_klass6kM_i_: constantPoolKlass.o;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cSmulL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbCAbstractInterpreterGeneratorZgenerate_safept_entry_for6MnITosState_pC_2_;
-text: .text%__1cLcastP2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPBytecode_invokeLresult_type6kMpnGThread__nJBasicType__;
-text: .text%__1cLCastP2INodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cOloadConL13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmodL_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFTypeFJis_finite6kM_i_;
-text: .text%__1cKcmpOpFOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cPconvI2F_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cNloadConPCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x41f00000NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKScopeValueLis_location6kM_i_: debugInfo.o;
-text: .text%__1cLVtableStubsLcreate_stub6FiipnNmethodOopDesc__pC_;
-text: .text%__1cLOptoRuntimebBhandle_wrong_method_ic_miss6FpnKJavaThread__pC_;
-text: .text%__1cSmulD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubD_regD_regDNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLVtableStubsOis_entry_point6FpC_i_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cPconvD2F_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cLVtableStubsScreate_vtable_stub6Fii_pnKVtableStub__;
-text: .text%__1cVMoveF2I_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cQAbstractCompilerPsupports_native6M_i_: c2compiler.o;
-text: .text%__1cPorL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQandI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMnegD_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: typeArrayKlass.o;
-text: .text%__1cSconvF2I_helperNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_1NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cKCompiledICOis_megamorphic6kM_i_;
-text: .text%__1cVMoveF2I_stack_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cQmulI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
-text: .text%__1cQaddI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassContext;
-text: .text%__1cHCompile2t6MpnFciEnv_pnKC2Compiler_pnIciMethod__v_;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cOcmovIF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cKCodeBufferQalloc_relocation6MI_v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cWloadConI_x43300000NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKstoreFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFKlassMoop_is_array6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cVMoveL2D_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cSmulL_reg_imm13NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMulNodeGis_Mul6kM_pk0_: classes.o;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cOloadConL13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKLoadPCNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
-text: .text%__1cLstoreF0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPconvI2D_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cZInterpreterMacroAssemblerNsuper_call_VM6MpnMRegisterImpl_22pC22i_v_;
-text: .text%__1cNloadConPCNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cKimmU13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cbCAbstractInterpreterGeneratorXbang_stack_shadow_pages6Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerSnotify_method_exit6MinITosState__v_;
-text: .text%__1cSaddL_reg_imm13NodeFclone6kM_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbDunlock_if_synchronized_method6MnITosState_ii_v_;
-text: .text%__1cOtypeArrayKlassMcreate_klass6FnJBasicType_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cIGraphKitSgen_native_wrapper6MpnIciMethod__v_;
-text: .text%__1cPconvI2L_regNodeFclone6kM_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cUInterpreterGeneratorZgenerate_counter_overflow6MirnFLabel__v_;
-text: .text%__1cOcmovIL_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorbAgenerate_run_compiled_code6M_v_;
-text: .text%__1cOCompilerThreadSis_Compiler_thread6kM_i_: thread.o;
-text: .text%__1cUInterpreterGeneratorUgenerate_fixed_frame6Mi_v_;
-text: .text%__1cCosHSolarisSset_signal_handler6Fiii_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cLOptoRuntimeRresolve_call_Type6F_pknITypeFunc__;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cQregF_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: callnode.o;
-text: .text%__1cKReflectionVis_same_class_package6FpnMklassOopDesc_2_i_;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cPorL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%__1cUBytecode_tableswitchGlength6M_i_: methodDataOop.o;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: templateTable_sparc.o;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cQshlL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: interpreter.o;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cLcastP2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVMoveL2D_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MrnFLabel__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cHCompileRget_Method_invoke6M_pnIciMethod__;
-text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cHCompileWget_MethodAccessorImpl6M_pnPciInstanceKlass__;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cOPSVirtualSpaceJexpand_by6MI_i_;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKimmP13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cQstkI_to_regINodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUInterpreterGeneratorbEgenerate_asm_interpreter_entry6Mi_pC_;
-text: .text%__1cSstkL_to_regD_2NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_1NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSstkL_to_regD_0NodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTloadD_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLVtableStubsIcontains6FpC_i_;
-text: .text%__1cOloadI_fregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLconvP2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUInterpreterGeneratorbCgenerate_check_compiled_code6MrnFLabel__v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6MpnMRegisterImpl_22_v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cPconvF2D_regNodeFclone6kM_pnENode__;
-text: .text%__1cOLibraryCallKitbDis_method_invoke_or_aux_frame6MpnIJVMState__i_;
-text: .text%__1cTloadD_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cSestimate_path_freq6FpnENode__f_: loopnode.o;
-text: .text%__1cCosOreserve_memory6FIpc_1_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cSmulL_reg_imm13NodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cKstfSSFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cENodeHis_AddP6M_pnIAddPNode__: subnode.o;
-text: .text%__1cRtestI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosNcommit_memory6FpcI_i_;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%jni_GetJavaVM;
-text: .text%__1cOcmovDF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cQConstantIntValuePis_constant_int6kM_i_: debugInfo.o;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: templateTable_sparc.o;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cQdivL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciObjArrayKlass.o;
-text: .text%__1cOLibraryCallKitbBinline_native_currentThread6M_i_;
-text: .text%__1cIciObjectMis_classless6kM_i_: ciMethod.o;
-text: .text%__1cTGeneratePairingInfoOreport_results6kM_i_: ciMethod.o;
-text: .text%__1cNReservedSpaceKfirst_part6MIii_0_;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cOloadI_fregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSconvD2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cFTypeFGis_nan6kM_i_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeUdepends_only_on_test6kM_i_: classes.o;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cPstoreI_FregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQciByteCodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSpaceCounters2t6MpkciIpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cLcmpF_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cISubDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cISubFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cHThreadsDadd6FpnKJavaThread_i_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cNStubGeneratorYgenerate_throw_exception6MpkcpCi_3_: stubGenerator_sparc.o;
-text: .text%bootstrap_flush_windows;
-text: .text%__1cMloadConPNodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cQmodL_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cSmulL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: symbolKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: symbolKlass.o;
-text: .text%__1cIDivFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cKMemoryPool2t6Mpkcn0AIPoolType_IIii_v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cSsubL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cPciInstanceKlassbDcompute_shared_is_initialized6M_i_;
-text: .text%__1cQmulD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cSandL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cQmodL_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cPstoreI_FregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cSandI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTablebAload_invoke_cp_cache_entry6FipnMRegisterImpl_22ii_v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cOLibraryCallKitZinline_native_Class_query6MnIciMethodLIntrinsicId__i_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cOLibraryCallKitbNinline_native_Reflection_getCallerClass6M_i_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQaddI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cPBytecode_invokeIis_valid6kM_i_: frame.o;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cRcompL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_2_v_;
-text: .text%__1cSconvD2I_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLClassLoaderXcreate_class_path_entry6FpcnEstat_ppnOClassPathEntry__v_;
-text: .text%__1cKstfSSFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerRprofile_checkcast6MipnMRegisterImpl_2_v_;
-text: .text%__1cINegDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cOloadConL13NodeFclone6kM_pnENode__;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cPconvL2I_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstkL_to_regD_2NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableZload_field_cp_cache_entry6FipnMRegisterImpl_22i_v_;
-text: .text%__1cOMacroAssemblerMload_address6MrnHAddress_i_v_: assembler_sparc.o;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cMnegF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cQregF_to_stkINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cPorL_reg_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cPconvD2F_regNodeFclone6kM_pnENode__;
-text: .text%__1cbCAbstractInterpreterGeneratorbHgenerate_exception_handler_common6Mpkc2i_pC_;
-text: .text%__1cLconvP2BNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvP2BNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLL_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cMnegD_regNodeFclone6kM_pnENode__;
-text: .text%__1cOMacroAssemblerJfloat_cmp6MiipnRFloatRegisterImpl_2pnMRegisterImpl__v_;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODeoptimizationLUnrollBlockOsize_of_frames6kM_i_;
-text: .text%__1cFKlassNoop_is_symbol6kM_i_: instanceRefKlass.o;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cQaddD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNflagsRegLOperFclone6kM_pnIMachOper__;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cJcmpOpOperFclone6kM_pnIMachOper__;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cFTypeFFempty6kM_i_;
-text: .text%__1cLconvP2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVMoveF2I_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
-text: .text%__1cOtypeArrayKlassQarray_klass_impl6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cKstfSSFNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cPconvI2D_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cSstkL_to_regD_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstfSSFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cVMoveF2I_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHTypePtrKadd_offset6kMi_pk0_;
-text: .text%__1cOcmovLI_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKg1RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cOcmovPI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovDF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableJfloat_cmp6Fii_v_;
-text: .text%__1cQsubF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstkL_to_regD_1NodeFclone6kM_pnENode__;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_icc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNgen_new_frame6FpnOMacroAssembler_i_v_: runtime_sparc.o;
-text: .text%__1cKstfSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_sparc.o;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cQOopMapCacheEntryPfill_for_native6M_v_;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cIDivDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMloadConDNodeGis_Con6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cJArgumentsMbuild_string6Fppcpkc_v_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cOtailjmpIndNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_22_v_;
-text: .text%__1cVMoveL2D_stack_regNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJArgumentsMadd_property6Fpkc_i_;
-text: .text%__1cOtailjmpIndNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSObjectSynchronizerHinflate6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cCosHSolarisOis_sig_ignored6Fi_i_;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cLOptoRuntimeVgenerate_handler_blob6FpCi_pnNSafepointBlob__;
-text: .text%__1cKstfSSFNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerDset6MipnMRegisterImpl_rknQRelocationHolder__v_: runtime_sparc.o;
-text: .text%__1cQsubD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRT_sparc.o;
-text: .text%__1cOtailjmpIndNodeGpinned6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovIF_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNFingerprinterLfingerprint6M_X_: oopMapCache.o;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2D_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveF2I_stack_regNodeZcheck_for_anti_dependence6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreF0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
-text: .text%__1cPstoreI_FregNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSCommandLineFlagsExJboolAtPut6FnXCommandLineFlagWithType_i_v_;
-text: .text%__1cSCommandLineFlagsExKis_default6FnPCommandLineFlag__i_;
-text: .text%__1cOcmovLL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i2_v_;
-text: .text%__1cRNativeInstructionPis_ic_miss_trap6M_i_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cOMacroAssemblerDbrx6MnJAssemblerJCondition_in0BHPredict_rnFLabel__v_: stubGenerator_sparc.o;
-text: .text%__1cOCompilerThreadbCis_hidden_from_external_view6kM_i_: thread.o;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cOcmovPI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%JVM_RegisterSignal;
-text: .text%JVM_FindSignal;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%jio_vsnprintf;
-text: .text%__1cQshrL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerVincrement_mdp_data_at6MpnMRegisterImpl_i22_v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cNReservedSpaceJlast_part6MI_0_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_I_v_;
-text: .text%__1cFTypeDFempty6kM_i_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cHciKlassIis_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cIciObjectTis_type_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cLconvP2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cZInterpreterMacroAssemblerUadd_monitor_to_stack6MipnMRegisterImpl_2_v_;
-text: .text%JVM_Available;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cQshlL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMOopTaskQdDueueKinitialize6M_v_;
-text: .text%__1cMOopTaskQdDueue2t6M_v_;
-text: .text%__1cRNativeInstructionKis_illegal6M_i_;
-text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-text: .text%__1cLstoreF0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosGgetenv6Fpkcpci_i_;
-text: .text%__1cMVM_OperationNdoit_prologue6M_i_: vm_operations.o;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cKi0RegPOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cPOopTaskQdDueueSetOregister_queue6MipnMOopTaskQdDueue__v_;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_: vm_operations.o;
-text: .text%__1cNVM_DeoptimizeEname6kM_pkc_: vm_operations.o;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cSconvF2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNloadConP0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cbAconvL2D_reg_slow_fxtofNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOstackSlotFOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNTemplateTableSputfield_or_static6Fii_v_;
-text: .text%__1cOstackSlotFOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPconvF2I_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNTemplateTableSgetfield_or_static6Fii_v_;
-text: .text%__1cNTemplateTableUjvmti_post_field_mod6Fii_v_;
-text: .text%__1cHMatcherQconvL2FSupported6F_ki_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cLstoreC0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRcompL_reg_regNodeFclone6kM_pnENode__;
-text: .text%__1cUcompI_iReg_imm13NodeFclone6kM_pnENode__;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cPconvF2I_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFTypeDJis_finite6kM_i_;
-text: .text%__1cPconvL2I_regNodeFclone6kM_pnENode__;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cSconvD2I_helperNodeFclone6kM_pnENode__;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x43300000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cKcmpOpFOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPconvD2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableDldc6Fi_v_;
-text: .text%__1cSconvF2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: universe.o;
-text: .text%__1cJimmL0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLcastP2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovLL_regNodeFclone6kM_pnENode__;
-text: .text%__1cbAconvL2D_reg_slow_fxtofNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvP2BNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsubD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregF_to_stkINodeFclone6kM_pnENode__;
-text: .text%__1cSstkL_to_regD_2NodeFclone6kM_pnENode__;
-text: .text%__1cQregF_to_stkINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
-text: .text%__1cSmulD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
-text: .text%__1cSstkL_to_regD_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstkL_to_regD_0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cSmembar_releaseNodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJimmI0OperFclone6kM_pnIMachOper__;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cNloadConL0NodeJnum_opnds6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUregI_to_stkLHi_0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeFclone6kM_pnENode__;
-text: .text%__1cQsubL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cRsarI_reg_imm5NodeFclone6kM_pnENode__;
-text: .text%__1cWloadConI_x41f00000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsubI_zero_regNodeFclone6kM_pnENode__;
-text: .text%__1cXconvI2D_regDHi_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKloadUBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cOcmovLI_regNodeFclone6kM_pnENode__;
-text: .text%__1cQstkI_to_regINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUregI_to_stkLHi_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvF2INodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLOptoRuntimeIl2f_Type6F_pknITypeFunc__;
-text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MnITosState_pnMRegisterImpl_3_v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MnITosState_pnMRegisterImpl__v_;
-text: .text%__1cOLibraryCallKitVinline_fp_conversions6MnIciMethodLIntrinsicId__i_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MipnMRegisterImpl_2_v_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_native_entry6Mi_pC_;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%__1cUConstantOopReadValuePis_constant_oop6kM_i_: debugInfo.o;
-text: .text%__1cKScopeValuePis_constant_int6kM_i_: debugInfo.o;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cKklassKlassMoop_is_klass6kM_i_: arrayKlassKlass.o;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMciArrayKlassOis_array_klass6M_i_: ciTypeArrayKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cCosPuncommit_memory6FpcI_i_;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cSReferenceProcessor2t6MnJMemRegion_iii_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: jniFastGetField_sparc.o;
-text: .text%__1cRcheck_if_clipping6FpknKRegionNode_rpnGIfNode_5_i_: cfgnode.o;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cIciObjectOis_array_klass6M_i_: ciInstanceKlass.o;
-text: .text%__1cIciObjectOis_null_object6kM_i_: ciInstanceKlass.o;
-text: .text%__1cPmake_new_frames6FpnOMacroAssembler_i_v_: runtime_sparc.o;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cGatomll6Fpkcpx_i_: arguments.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: gcTaskThread.o;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: oopMapCache.o;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%__1cKCodeBufferGresize6M_v_;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cOtailjmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cNStubGenerator2t6MpnKCodeBuffer_i_v_: stubGenerator_sparc.o;
-text: .text%__1cWStubGenerator_generate6FpnKCodeBuffer_i_v_;
-text: .text%__1cRFloatRegisterImplIencoding6kMn0AFWidth__i_: interpreter_sparc.o;
-text: .text%__1cCosbCis_thread_cpu_time_supported6F_i_;
-text: .text%__1cJArgumentsXPropertyList_unique_add6FppnOSystemProperty_pkcpc_v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cUGenericGrowableArrayGgrow646Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cOMacroAssemblerDret6Mi_v_: stubGenerator_sparc.o;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cFParseDl2f6M_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cOPSVirtualSpaceKinitialize6MnNReservedSpace_I_i_;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cPorL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosScreate_main_thread6FpnGThread__i_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cUInterpreterGeneratorVrestore_native_result6M_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_nHOptoRegEName__;
-text: .text%__1cLconvP2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cbCAbstractInterpreterGeneratorYgenerate_throw_exception6M_v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cCosNset_boot_path6Fcc_i_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cCosXis_server_class_machine6F_i_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cKTypeOopPtrCeq6kMpknEType__i_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbMgenerate_ArrayIndexOutOfBounds_handler6Mpkc_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbJgenerate_StackOverflowError_handler6M_pC_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cVMoveF2I_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cRInvocationCounterMreinitialize6Fi_v_;
-text: .text%__1cKTypeOopPtrEmake6FnHTypePtrDPTR_i_pk0_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassUoop_is_instanceKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: instanceKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: instanceKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: instanceKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cLconvP2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cFParseNfetch_monitor6MipnENode_2_2_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEkind6M_nNCollectedHeapEName__: parallelScavengeHeap.o;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_normal6MnITosState__v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: parse1.o;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_expand.o;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cOisT2_libthread6F_i_;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbEset_entry_points_for_all_bytes6M_v_;
-text: .text%__1cCosHSolarisRmpss_sanity_check6F_v_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cVcheck_pending_signals6Fi_i_: os_solaris.o;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interpreter.o;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKcmpOpFOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_I_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cNReservedSpace2t6MIIipc_v_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cXLowMemoryDetectorThreadbCis_hidden_from_external_view6kM_i_: lowMemoryDetector.o;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cKJavaThreadOis_Java_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cGThreadMis_VM_thread6kM_i_: lowMemoryDetector.o;
-text: .text%__1cTloadL_unalignedNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cOBasicHashtable2t6Mii_v_: loaderConstraints.o;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassUoop_is_instanceKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassVoop_is_typeArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: klassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: klassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: klassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: klassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: klassKlass.o;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cOLibraryCallKitWinline_native_hashcode6Mii_i_;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: library_call.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cQregL_to_stkLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cHRetDataKis_RetData6M_i_: methodDataOop.o;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cKi0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKg1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFVTuneEexit6F_v_;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKvtune_init6F_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cHMatcherVfind_callee_arguments6FpnNsymbolOopDesc_ipi_pnLRegPair__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cQPSGenerationPool2t6MpnIPSOldGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cQPSGenerationPool2t6MpnJPSPermGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cUEdenMutableSpacePool2t6MpnKPSYoungGen_pnMMutableSpace_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cYSurvivorMutableSpacePool2t6MpnKPSYoungGen_pkcnKMemoryPoolIPoolType_i_v_;
-text: .text%__1cMCodeHeapPool2t6MpnICodeHeap_pkci_v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cHVM_ExitEname6kM_pkc_: vm_operations.o;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cLstoreF0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cXonStackReplacement_init6F_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTtypeArrayKlassKlassVoop_is_typeArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassUoop_is_objArrayKlass6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassQoop_is_typeArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassNoop_is_method6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cFKlassPoop_is_objArray6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassMoop_is_array6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: typeArrayKlassKlass.o;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cIUniversePcheck_alignment6FIIpkc_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cQdivD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cQsubD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQaddF_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cRsarL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cQshlI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cFKlassRoop_is_methodData6kM_i_: objArrayKlass.o;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cOcmovLI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovDF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_Socket;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cOcmovIF_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEnvBase.o;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cKstfSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVverificationType_init6F_v_;
-text: .text%__1cVverificationType_exit6F_v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlass.o;
-text: .text%__1cSmulL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cSmulI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cSuniverse_post_init6F_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: objArrayKlassKlass.o;
-text: .text%Unsafe_SetNativeLong;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%__1cFKlassNoop_is_method6kM_i_: objArrayKlassKlass.o;
-text: .text%Unsafe_FreeMemory;
-text: .text%Unsafe_PageSize;
-text: .text%__1cSobjArrayKlassKlassUoop_is_objArrayKlass6kM_i_: objArrayKlassKlass.o;
-text: .text%JVM_MaxMemory;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybDinitialize_basic_type_mirrors6FpnGThread__v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cRciArrayKlassKlassUis_array_klass_klass6M_i_: ciObjectFactory.o;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cTClassLoadingServiceVnotify_class_unloaded6FpnNinstanceKlass_i_v_;
-text: .text%__1cMFastLockNodeLis_FastLock6kM_pk0_: classes.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cLOptoRuntimeUmultianewarray1_Type6F_pknITypeFunc__;
-text: .text%__1cVRegistersForDebuggingRrestore_registers6FpnOMacroAssembler_pnMRegisterImpl__v_: assembler_sparc.o;
-text: .text%__1cVRegistersForDebuggingOsave_registers6FpnOMacroAssembler__v_: assembler_sparc.o;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cMTailJumpNode2t6MpnENode_22222_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cWResolveOopMapConflictsOreport_results6kM_i_: rewriter.o;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cENodeMis_SafePoint6M_pnNSafePointNode__: cfgnode.o;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cURecompilationMonitorbGstart_recompilation_monitor_task6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cKPSYoungGenQlimit_gen_shrink6MI_I_;
-text: .text%__1cKPSYoungGenRavailable_to_live6M_I_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_pipeline.o;
-text: .text%__1cNcarSpace_init6F_v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_IIIIIII_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_III_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cINegFNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsVprocess_settings_file6Fpkcii_i_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJArgumentsZcheck_vm_args_consistency6F_i_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsWparse_each_vm_init_arg6FpknOJavaVMInitArgs_pnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsVfinalize_vm_init_args6FpnMSysClassPath_i_i_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cNStubGeneratorbNgenerate_flush_callers_register_windows6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cHAddressQrspec_from_rtype6MnJrelocInfoJrelocType_pC_nQRelocationHolder__: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerIjumpl_to6MrnHAddress_pnMRegisterImpl_i_v_: stubGenerator_sparc.o;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbIgenerate_copy_words_aligned8_lower6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbJgenerate_copy_words_aligned8_higher6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbBgenerate_set_words_aligned86M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbCgenerate_zero_words_aligned86M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cJArgumentsbNparse_java_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cLOptoRuntimeYgenerate_arraycopy_stubs6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cLOptoRuntimeVhandle_exception_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeSfetch_monitor_Type6F_pknITypeFunc__;
-text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerPstop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_2222_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerFlushr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cJArgumentsbSparse_java_tool_options_environment_variable6FpnMSysClassPath_pi_i_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cNSharedRuntimebIinitialize_StrictMath_entry_points6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cOMacroAssemblerHcall_VM6MpnMRegisterImpl_pC222i_v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cLOptoRuntimebPgenerate_polling_page_return_handler_blob6F_v_;
-text: .text%__1cLOptoRuntimebSgenerate_polling_page_safepoint_handler_blob6F_v_;
-text: .text%__1cFKlassNoop_is_method6kM_i_: symbolKlass.o;
-text: .text%__1cLOptoRuntimebPgenerate_illegal_instruction_handler_blob6F_v_;
-text: .text%__1cLOptoRuntimebBgenerate_uncommon_trap_blob6F_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cLOptoRuntimeWfill_in_exception_blob6F_v_;
-text: .text%__1cLOptoRuntimeUsetup_exception_blob6F_v_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psAdaptiveSizePolicy.o;
-text: .text%__1cKCMoveDNodeFIdeal6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cOMacroAssemblerCfb6MnJAssemblerJCondition_in0BHPredict_pCnJrelocInfoJrelocType__v_: templateTable_sparc.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: tenuredGeneration.o;
-text: .text%__1cUPSAdaptiveSizePolicy2t6MIIIIIddI_v_;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKarrayKlassMoop_is_array6kM_i_: constantPoolKlass.o;
-text: .text%__1cFKlassPoop_is_instance6kM_i_: constantPoolKlass.o;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: constantPoolKlass.o;
-text: .text%__1cOBasicHashtable2t6Mii_v_: placeholders.o;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: templateTable_sparc.o;
-text: .text%__1cOCompilerOracleOread_from_line6Fpc_v_;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cHThreadsJcreate_vm6FpnOJavaVMInitArgs_pi_i_;
-text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_: frame.o;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cRcheck_basic_types6F_v_;
-text: .text%__1cSCommandLineFlagsExKuintxAtPut6FnXCommandLineFlagWithType_I_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cICodeHeapHreserve6MIII_i_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_: cpCacheKlass.o;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: dictionary.o;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cFframebAoops_compiled_arguments_do6MnMsymbolHandle_ipknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGen2t6MIII_v_;
-text: .text%__1cOPSVirtualSpaceJshrink_by6MI_i_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNCompileBrokerQcompilation_init6FpnQAbstractCompiler__v_;
-text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Ipkci_v_;
-text: .text%__1cIPSOldGen2t6MIIIpkci_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cOcompiler2_init6F_v_;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psPromotionLAB.o;
-text: .text%__1cNTemplateTableDret6F_v_;
--- a/make/solaris/makefiles/reorder_COMPILER2_sparcv9	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4442 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cNinstanceKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cXresource_allocate_bytes6FL_pc_;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cJiRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cNobjArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cOloadConI13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cOloadConI13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_late_post6MpnENode_pk0_v_;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cKbranchNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cHCompileNnode_bundling6MpknENode__pnGBundle__;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cFArenaIArealloc6MpvLL_1_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_: ad_sparc.o;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJloadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cJiRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cNMachIdealNodeErule6kM_I_: ad_sparc.o;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cXPipeline_Use_Cycle_Mask2L6Mi_r0_: ad_sparc_pipeline.o;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_L_: parallelScavengeHeap.o;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cOtypeArrayKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cMPipeline_UseMfull_latency6kMIrk0_I_;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cKbranchNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_sparc.o;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_sparc.o;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_: ad_sparc.o;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKoopFactoryKnew_symbol6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cMPipeline_UseJadd_usage6Mrk0_v_;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cJloadINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cKSchedulingPAddNodeToBundle6MpnENode_pknFBlock__v_;
-text: .text%__1cKSchedulingWAddNodeToAvailableList6MpnENode__v_;
-text: .text%__1cKSchedulingSChooseNodeToBundle6M_pnENode__;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cMMutableSpaceMcas_allocate6ML_pnIHeapWord__;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cJiRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6ML_pnIHeapWord__;
-text: .text%__1cJPSPermGenSallocate_permanent6ML_pnIHeapWord__;
-text: .text%__1cMMutableSpaceIallocate6ML_pnIHeapWord__;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cNflagsRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationLunpack_data6M_v_: ad_sparc.o;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cXPipeline_Use_Cycle_MaskCOr6Mrk0_v_;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cJiRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cObranchConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cMloadConINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cMflagsRegOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cPindOffset13OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cGBitMap2t6MpLL_v_;
-text: .text%__1cUcompI_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cNbranchConNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cVcompP_iRegP_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cObranchConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cKRelocationRpd_set_data_value6MpCl_v_;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cOcompU_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cKimmI13OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_sparc.o;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFArenaEgrow6ML_pv_;
-text: .text%__1cJloadBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cNbranchConNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQaddP_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSaddI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cJiRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cObranchConUNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadConI13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cQaddP_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cOloadConI13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cNflagsRegUOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cKcmpOpPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_L_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6ML_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2L_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cKCodeBuffer2t6MpCi_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRNativeInstructionQset_data64_sethi6FpCl_v_;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cOloadConI13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cOcompI_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNbranchConNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cKbranchNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTremove_useless_bool6FpnGIfNode_pnIPhaseGVN__pnENode__: ifnode.o;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cObranchConUNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc.o;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc.o;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cKSchedulingPComputeUseCount6MpknFBlock__v_;
-text: .text%__1cKSchedulingbFComputeRegisterAntidependencies6MpnFBlock__v_;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cHTypePtrHget_con6kM_l_;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cSaddP_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cPcompP_iRegPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cIMachOperIconstant6kM_l_;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cSaddI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLMachNopNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cJiRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQaddI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cFKlassNlookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKbranchNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcompU_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cLstoreI0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConUNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cENodeHget_ptr6kM_l_;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQaddP_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cRshlL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cUcompI_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cSaddP_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cPindOffset13OperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cLstoreI0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cNloadRangeNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cXmembar_release_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cVcompP_iRegP_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIAddPNodeQmach_bottom_type6FpknIMachNode__pknEType__;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cOcompU_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRSignatureIteratorSiterate_parameters6ML_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cKo0RegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cQaddI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshrI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSaddP_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_sparc.o;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cVcompP_iRegP_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__: ad_sparc.o;
-text: .text%__1cSaddP_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cNflagsRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
-text: .text%JVM_IsNaN;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__: ad_sparc.o;
-text: .text%__1cKbranchNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cMflagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cPindOffset13OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cOCallRelocationFvalue6M_pC_: ad_sparc.o;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cOcompI_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cQsubI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cRloadConP_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVcompP_iRegP_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cETypeFwiden6kMpk0_2_: type.o;
-text: .text%__1cSaddI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cCosGmalloc6FL_pv_;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cRlock_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cMloadConLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cJloadSNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cIciObjectIencoding6M_pnI_jobject__;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cUcompI_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQaddP_reg_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcompP_iRegPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMstringStreamFwrite6MpkcL_v_;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKTypeOopPtrHget_con6kM_l_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cFciEnvTget_method_by_index6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvYget_method_by_index_impl6MpnPciInstanceKlass_inJBytecodesECode__pnIciMethod__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cJloadFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshrP_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cOcompU_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cLstoreB0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cICodeHeapLheader_size6F_L_;
-text: .text%__1cNinstanceKlassSlookup_osr_nmethod6kMkpnNmethodOopDesc_i_pnHnmethod__;
-text: .text%__1cPcompP_iRegPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cIimmIOperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cQsubI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cQaddP_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_L_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cKmethodOperGmethod6kM_l_: ad_sparc.o;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cNflagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cIciSymbol2t6MnMsymbolHandle__v_;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cPsp_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRshrI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cQsubI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerEcall6MpCnJrelocInfoJrelocType__v_: ad_sparc.o;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cRshlI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSaddP_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cRshrI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cYcompareAndSwapL_boolNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cYcompareAndSwapL_boolNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cOloadConI13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cIregDOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cTStackWalkCompPolicyRcompilation_level6MnMmethodHandle_i_i_;
-text: .text%__1cRsarI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cRshlI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKbranchNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cOcompI_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNloadKlassNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFChunk2n6FLL_pv_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cHTypeIntFwiden6kMpknEType__3_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cTCreateExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cRshlI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cPcompP_iRegPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cRsarI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cRsarI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cICodeHeapSallocated_capacity6kM_L_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cKimmL13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOstackSlotLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPBytecode_invokeJsignature6kM_pnNsymbolOopDesc__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cRshrI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICHeapObj2n6FL_pv_;
-text: .text%__1cIGraphKitTset_all_memory_call6MpnENode__v_;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cKimmL13OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cPconvL2I_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQandL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrlrpknHTypePtr__pknENode__;
-text: .text%__1cJloadLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cHoopDescSslow_identity_hash6M_l_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__l_;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cLstoreP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUcompU_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cKBufferBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FL_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQsubI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_Write;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cICodeHeapIcapacity6kM_L_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_L_: memoryPool.o;
-text: .text%__1cKMemoryPoolImax_size6kM_L_: memoryPool.o;
-text: .text%JVM_RawMonitorExit;
-text: .text%JVM_RawMonitorEnter;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cRbranchLoopEndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cNCompileBrokerOcompile_method6FnMmethodHandle_i1ipkcpnGThread__pnHnmethod__;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cMloadConFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cFframeRoops_code_blob_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cOloadConI13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cSbranchCon_longNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNflagsRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cQandI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cObranchConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMtlsLoadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKcmpOpPOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cRshrP_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmPOperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cQjava_lang_StringGlength6FpnHoopDesc__i_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQmulL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cPorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cLstoreP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cQxorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHnmethodHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRloadConP_pollNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNimmP_pollOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cIregFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cRcompL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cRshrP_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cFArenaEused6kM_L_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNbranchConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cNbranchConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNbranchConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLSymbolTableFprobe6Fpkci_pnNsymbolOopDesc__;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cQandI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cSbranchCon_longNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cLRegisterMapIpd_clear6M_v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cRbranchLoopEndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cKJavaThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshrP_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cQaddL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%JVM_IsInterface;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cLsymbolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQaddL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cICodeHeapIallocate6ML_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6ML_pnJFreeBlock__;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRcompL_reg_conNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQxorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUPipeline_Use_Element2t6M_v_: output.o;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cKTypeRawPtrHget_con6kM_l_;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cMloadConLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cQconstMethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cPorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cNNativeFarCallPset_destination6MpC_v_;
-text: .text%__1cObranchConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitZset_results_for_java_call6MpnMCallJavaNode__pnENode__;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cLmethodKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
-text: .text%__1cRbranchLoopEndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvL2I_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSbranchCon_longNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFciEnvVget_constant_by_index6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cFciEnvbAget_constant_by_index_impl6MpnPciInstanceKlass_i_nKciConstant__;
-text: .text%__1cJimmU5OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSaddI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cObranchConPNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpPOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cLstoreP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQandL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cOcompU_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cRsarI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cSandI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cZresource_reallocate_bytes6FpcLL_0_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNCallGeneratorPfor_direct_call6FpnIciMethod__p0_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cTStackWalkCompPolicyYmethod_back_branch_event6MnMmethodHandle_iipnGThread__v_;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRCompilationPolicybJreset_counter_for_back_branch_event6MnMmethodHandle__v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cSandI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cJimmU6OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cJcmpOpOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cQmulL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQaddL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cIimmDOperJconstantD6kM_d_: ad_sparc_clone.o;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cMstringStream2t6ML_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJimmU5OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKimmI13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__: graphKit.o;
-text: .text%__1cObranchConUNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cKcmpOpPOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cQandL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddP_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNbranchConNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQandI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cUcompU_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cUcompU_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cKKlass_vtbl2n6FLrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cQsubL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpPOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cPconvL2I_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_InternString;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cQmulL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cRcompL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQxorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cKimmP13OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cVcompP_iRegP_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cLstoreI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cQmodI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cSandI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cKklassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cKoopFactoryRnew_instanceKlass6FiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserUcompute_oop_map_size6MnTinstanceKlassHandle_ii_i_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cSinstanceKlassKlassXallocate_instance_klass6MiiiinNReferenceType_pnGThread__pnMklassOopDesc__;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cSinstanceKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cNinstanceKlassScopy_static_fields6MpnSPSPromotionManager__v_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cFVTuneOend_class_load6F_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cFVTuneQstart_class_load6F_v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQmodI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJScopeDesc2t6MpknHnmethod_i_v_;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Ml_v_;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cOcompI_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSaddP_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cYcompareAndSwapL_boolNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cQandI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cRshlL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSharedRuntimebKexception_handler_for_return_address6FpC_1_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cOloadConL13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cQdivD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cPcompP_iRegPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRloadConP_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWconstantPoolCacheKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cSaddL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6ML_v_: jni.o;
-text: .text%__1cQaddI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cRcompL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRconstantPoolKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cQcmovI_reg_ltNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cQxorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cJcmpOpOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cKo0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_sparc.o;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPBytecode_invokeFindex6kM_i_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cRloadConP_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cRshlI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cKg1RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRshrL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_L_;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cRshrL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSxorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cNflagsRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRcompL_reg_conNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Clone;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%__1cUcompU_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cNloadConP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJcmpOpOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperOindex_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsubI_zero_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cQaddL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cRshrI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQinstanceRefKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cRshrL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRcompL_reg_conNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOloadConL13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRcmpFastUnlockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cOPhaseIdealLoopQbuild_loop_early6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_late6MrnJVectorSet_rnJNode_List_rnKNode_Stack_pk0_v_;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cMindirectOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindirectOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cYcompareAndSwapL_boolNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cIimmPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cOMachEpilogNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cQsubI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_L_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cICodeHeapMmax_capacity6kM_L_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPlocal_vsnprintf6FpcLpkcpv_i_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%jio_snprintf;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cIimmFOperJconstantF6kM_f_: ad_sparc_clone.o;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cRcompL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cQregF_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cLcmpD_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQregP_to_stkPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cLstoreB0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cNObjectMonitorHis_busy6kM_l_;
-text: .text%__1cCosRcurrent_thread_id6F_l_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fl_v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cFArena2t6ML_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLstoreB0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTresource_free_bytes6FpcL_v_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cQcmovI_reg_gtNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVCallRuntimeDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cVshrL_reg_imm6_L2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJimmU6OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cURethrowExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cKTypeOopPtrSmake_from_constant6FpnIciObject__pk0_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cTmembar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cRshrP_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cLRuntimeStubHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cFframeLnmethods_do6M_v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cNloadConL0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_conNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cQshlI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cRsubI_zero_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cObranchConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cMloadConINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cITypeLongFwiden6kMpknEType__3_;
-text: .text%__1cKcmpOpFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNflagsRegFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshrL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_ltNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cQcmovI_reg_ltNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cKcmpOpUOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQmodI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKcmpOpPOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSaddI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cPorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cRorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cSmulI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmulI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cOcmovII_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cQnotemp_iRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cPcmpFastLockNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cMloadConDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciMethodRinstructions_size6M_i_;
-text: .text%__1cRsarL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cSxorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_L_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cSstring_compareNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvL2I_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFVTuneNregister_stub6FpkcpC3_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cQandL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cPconvF2D_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerbBcheck_and_forward_exception6MpnMRegisterImpl__v_;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%JVM_IHashCode;
-text: .text%__1cQmodI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cKScheduling2t6MpnFArena_rnHCompile__v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cKSchedulingMDoScheduling6M_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cLstoreP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQmulD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cFVTuneOcreate_nmethod6FpnHnmethod__v_;
-text: .text%__1cLOopRecorderHcopy_to6MpnICodeBlob__v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cQmulL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cUParallelScavengeHeapEused6kM_L_;
-text: .text%__1cQcmovI_reg_ltNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: assembler_sparc.o;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cObranchConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cKloadUBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cRNativeMovConstRegIset_data6Ml_v_;
-text: .text%__1cQregP_to_stkPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cQregF_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cLstoreC0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKPerfMemoryFalloc6FL_pc_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cRsubI_zero_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQshlL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadConI13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cIVMThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cGThreadHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cSdivL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQshlI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cQshrI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cQaddF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cRbranchLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRbranchLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregI_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cPGCMemoryManagerIgc_begin6M_v_;
-text: .text%__1cPGCMemoryManagerGgc_end6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cONMethodSweeperFsweep6F_v_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cQmulD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cNloadConL0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cObranchConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLcmpD_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQjava_lang_StringFvalue6FpnHoopDesc__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringGoffset6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cQandI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSbranchCon_longNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSbranchCon_longNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSbranchCon_longNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cSandI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLstoreP0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQmulF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSxorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cOloadConL13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
-text: .text%__1cQmulI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MLL_v_;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MLL_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cKPSYoungGenGresize6MLL_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cSmulI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cSaddL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreB0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOcmovIL_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cQshlL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIPSOldGenMmax_gen_size6M_L_: psOldGen.o;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSxorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQcmovI_reg_gtNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPstoreI_FregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cQcmovI_reg_gtNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKimmU13OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cUcompU_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQxorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cQshrI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cTmembar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cOcmovII_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPmethodDataKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cSTailCalljmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRloadConP_pollNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreI0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovPP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cSobjArrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cOcmovII_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbAget_cache_and_index_at_bcp6MpnMRegisterImpl_2i_v_;
-text: .text%__1cYcompareAndSwapL_boolNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcompareAndSwapL_boolNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQshlL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cRsarL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregP_to_stkPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConLNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadConL13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cRorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cJloadINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQmulI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cRcompL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQcmovI_reg_gtNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cLcmpD_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryTresolve_from_stream6FnMsymbolHandle_nGHandle_2pnPClassFileStream_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOloadConL13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cQmulF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cPstoreI_FregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cSandL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%JVM_MonitorWait;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cLcmpD_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cKloadUBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLcmpF_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cRbranchLoopEndNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cSaddP_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cKstoreCNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_L_;
-text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovPP_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNflagsRegFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregP_to_stkPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreC0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cKstoreINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cQregP_to_stkPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cQRelocationHolderEplus6kMi_0_;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadSNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOloadI_fregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadI_fregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FLi_pnGThread__;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cSbranchCon_longNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreF0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cOcmovII_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cKstoreLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQshlI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6ML_v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cIimmLOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQmulD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cPconvI2L_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSsubL_reg_reg_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshlL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cOcmovII_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNimmP_pollOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cJloadINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreC0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSdivL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSsubL_reg_reg_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cUmulL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cQdivD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOimmI_32_63OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%__1cRcompL_reg_conNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cOcmovII_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQaddD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cQregI_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUmulL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cSstring_compareNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSdivL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadKlassNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQregL_to_stkLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cQaddF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cQsubL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cUdivL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovPP_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cUmulL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cRorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cQsubF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQregI_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMregD_lowOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQstkI_to_regFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQmulF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIBytecodeIset_code6MnJBytecodesECode__v_;
-text: .text%__1cQcmovI_reg_ltNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNminI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJloadDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUdivL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSsubL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQstkI_to_regFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cQregI_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cQshrL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadI_fregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsarI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSconvD2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cOcmovDF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cSmulL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
-text: .text%__1cKo1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%__1cQmulF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cSsubL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cOcmovPP_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafepointBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cQsubD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%__1cQmodI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cSdivL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmodI_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cCosScurrent_stack_size6F_L_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cQregF_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cQshlL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cOcmovPI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cJloadLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%JVM_Read;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cQaddD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cHnmethodbAmake_not_entrant_or_zombie6Mi_v_;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cSandL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cOcmovIF_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRtestI_reg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSdivL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vL_v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cOloadI_fregNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cOcmovIL_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadBNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cQsubD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%JVM_GetClassName;
-text: .text%JVM_IsArrayClass;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cPconvI2L_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cQdivL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cPconvD2F_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cLstoreF0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cJloadSNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%JVM_Open;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cSconvI2F_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMloadConDNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cQandI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cOcmovDF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cOcmovIL_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%JVM_TotalMemory;
-text: .text%JVM_FreeMemory;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cQsubI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cOcmovPI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cOcmovIF_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cOcmovIL_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cLcmpF_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvI2D_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerbEset_method_data_pointer_offset6MpnMRegisterImpl__v_;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cSandL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cNloadRangeNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cOcmovIF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cSdivL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsubL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cSmulL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cQshrL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cOloadI_fregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLL_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cHThreadsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOMacroAssemblerNflush_windows6M_v_;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cKstorePNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Ml_v_;
-text: .text%__1cQshrI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cKg3RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cLstoreF0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKimmI11OperIconstant6kM_l_: ad_sparc_clone.o;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRCompilationPolicybIreset_counter_for_invocation_event6MnMmethodHandle__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cOcmovLL_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVinline_cache_regPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVCallRuntimeDirectNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%JVM_NativePath;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cQaddD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cNloadConP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovPI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cSandL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cMtlsLoadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVMoveL2D_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cLstoreI0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MipnMRegisterImpl__v_;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cRNativeMovConstRegEdata6kM_l_;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmaxI_eRegNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cRConstantLongValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cQcmovI_reg_gtNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPorI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovPP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovLL_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpFOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSaddP_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%JVM_Close;
-text: .text%__1cOstackSlotLOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cJloadFNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbIcompute_extra_locals_size_in_bytes6MpnMRegisterImpl_22_v_;
-text: .text%__1cQsubF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvF2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOimmI_32_63OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cQregL_to_stkLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSxorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKcastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cOMacroAssemblerPbreakpoint_trap6M_v_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cSmulD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQaddD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cQdivD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNiRegIsafeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRshlI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQdivI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPP_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cSaddI_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLcmpF_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQregL_to_stkLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotLOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotLOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cSconvF2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQdivI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJimmP0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cLcmpF_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLResourceObj2n6FLn0APallocation_type__pv_;
-text: .text%__1cLcmpD_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cXconvI2D_regDHi_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcLii_2_;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQregL_to_stkLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovDF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cMregD_lowOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cObranchConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cZInterpreterMacroAssemblerbFtest_invocation_counter_for_mdp6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
-text: .text%__1cObranchConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovPP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovPI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMnegD_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cObranchConFNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cOcmovPI_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cQsubD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLconvP2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConFNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cOcmovII_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFVTuneOdelete_nmethod6FpnHnmethod__v_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cPconvD2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cOloadConL13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPorL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetComponentType;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cVMoveF2I_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cKstfSSFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvI2D_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cSmulL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cSaddL_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cKcastPPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2D_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cJloadLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cQsubF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_DefineClass;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cQsubD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cKcastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOcmovDF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cSaddL_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cNloadRangeNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKcmpOpFOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cJPSPermGenQcompute_new_size6ML_v_;
-text: .text%__1cQUncommonTrapBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cNExceptionBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MLnHGCCauseFCause__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_NewArray;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSDeoptimizationBlobHoops_do6MpnKOopClosure__v_: codeBlob.o;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%__1cJCodeCacheHoops_do6FpnKOopClosure__v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%JVM_GC;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cLstoreC0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cQaddL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQshlI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPBytecode_invokeLresult_type6kMpnGThread__nJBasicType__;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOcmovPI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cQdivI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cQmulI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregP_to_stkPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHThreadsLnmethods_do6F_v_;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cIimmDOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%__1cWloadConI_x43300000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXconvI2D_regDHi_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MipnMRegisterImpl_rnFLabel_2_v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSaddD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMnegF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPorL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvD2F_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSsubD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cPconvF2D_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cSaddD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWloadConI_x41f00000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWloadConI_x43300000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Sleep;
-text: .text%__1cLconvI2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRorI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_Lseek;
-text: .text%__1cQmulD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConL13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cSmulD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsubD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cWloadConI_x41f00000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%__1cQmulL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQmulF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cQandL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_GetEnv;
-text: .text%__1cOcmovLI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSstring_compareNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_NanoTime;
-text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cOcmovIF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cKimmU13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cJimmL0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cKstoreFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cWloadConI_x41f00000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWloadConI_x43300000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcastPPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cSmulL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cParrayKlassKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQshrI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerEfmov6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cOcmovLL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cUdivL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsubL_reg_reg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIL_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQregI_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cNloadConL0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cSmodL_reg_imm13NodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cOcmovIF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvF2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cPorL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovLI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cQaddI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreC0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKcmpOpFOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cSconvF2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cVMoveL2D_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cRshlL_reg_imm6NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRshlI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVMoveF2I_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cPconvI2F_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cOcmovIF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cObranchConFNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cLstoreC0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetClassContext;
-text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cMnegD_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cOcmovIF_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableXresolve_cache_and_index6FipnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cGEventsDlog6FpkcE_v_: compiledIC.o;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cKVtableStub2n6FLi_pv_;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cKcmpOpFOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQregF_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cQshlL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovLI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPorL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cVMoveL2D_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cOcmovLL_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%__1cODeoptimizationLUnrollBlockOsize_of_frames6kM_i_;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cQdivL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cOcmovII_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_sparc.o;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MrnFLabel__v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cKimmP13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cPstoreI_FregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRtestI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%jni_GetJavaVM;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cOloadI_fregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cSandL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%JVM_LoadLibrary;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cSdivL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSconvD2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cNSpaceCounters2t6MpkciLpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%bootstrap_flush_windows;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cSmulL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cPstoreI_FregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cLcmpF_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cOcmovLI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNReservedSpace2t6ML_v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cSsubL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cLconvP2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmodL_reg_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSandI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSmulL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQmulD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPstoreI_FregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cOloadI_fregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSconvD2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cPconvD2I_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cUcompI_iReg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cRcompL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cKstfSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cOcmovDF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cMnegF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cIimmFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOcmovLL_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstfSSFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSconvD2I_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQregF_to_stkINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLcmpD_ccNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cSconvI2D_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOcmovPI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cVMoveF2I_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cRsubI_zero_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cLconvP2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cLstoreF0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvL2I_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
-text: .text%__1cLstoreF0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveF2I_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreF0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cQsubD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cQsubF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cQshrL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pLi_v_: oopMapCache.o;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%JVM_FindSignal;
-text: .text%__1cOcmovIF_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovPI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovDF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRT_sparc.o;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_L_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorKpass_float6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cQregL_to_stkLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cKloadUBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cLconvP2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cKo2RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPstoreI_FregNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPconvI2D_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%JVM_Available;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%jio_vsnprintf;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i2_v_;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cQshlL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cOcmovLL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cWloadConI_x43300000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWloadConI_x41f00000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSconvF2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsubD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvD2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cSmulD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cQdivI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVcompiledICHolderKlassRoop_copy_contents6MpnSPSPromotionManager_pnHoopDesc__v_;
-text: .text%__1cQdivD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cQstkI_to_regINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPeriodicTask2t6ML_v_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOcmovIF_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovIF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cFParseDl2f6M_v_;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MnITosState_pnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_virtual_call6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MnITosState_pnMRegisterImpl_3_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cPfilename_to_pid6Fpkc_i_: perfMemory_solaris.o;
-text: .text%__1cSconvF2I_helperNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLconvI2BNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cOstackSlotFOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cKcmpOpFOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPconvF2I_regNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cCosHrealloc6FpvL_1_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
-text: .text%__1cOtailjmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_icc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_xcc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cbAconvL2D_reg_slow_fxtofNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cLOptoRuntimeIl2f_Type6F_pknITypeFunc__;
-text: .text%__1cOstackSlotFOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cNCompileBrokerVinit_compiler_threads6Fi_v_;
-text: .text%__1cLstoreC0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cKTypeOopPtrEmake6FnHTypePtrDPTR_i_pk0_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cOloadConL13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cKPSYoungGenRavailable_to_live6M_L_;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cQsubL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_L_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
-text: .text%__1cKPSYoungGen2t6MLLL_v_;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cSmulL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cKPSYoungGenQlimit_gen_shrink6ML_L_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cIPSOldGenOgen_size_limit6M_L_;
-text: .text%__1cIPSOldGenGresize6ML_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cKstfSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Lpkci_v_;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cIPSOldGen2t6MLLLpkci_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_L_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cKcastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cOcmovLI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKcmpOpFOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_iipc_l_: os_solaris.o;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%JVM_MaxMemory;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FL_L_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FL_L_;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cKg1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeGExpand6MpnFState_rnJNode_List__pnIMachNode__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_expand.o;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapOresize_old_gen6ML_v_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cFVTuneEexit6F_v_;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKvtune_init6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_L_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%JVM_Socket;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cKi0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cQregF_to_stkINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cNget_user_name6Fi_pc_: perfMemory_solaris.o;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cIUniversePcheck_alignment6FLLpkc_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FL_v_;
-text: .text%__1cSmmap_create_shared6FL_pc_: perfMemory_solaris.o;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cbAcreate_sharedmem_resources6Fpkc1L_i_: perfMemory_solaris.o;
-text: .text%Unsafe_PageSize;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cQshrL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cQdivD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_pipeline.o;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cQsubD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cQaddF_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_v_;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__L_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cNStubGeneratorbNgenerate_flush_callers_register_windows6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cVMoveL2D_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cVMoveF2I_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_LLL_v_;
-text: .text%__1cLconvP2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_LLLLLLL_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cPorL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_normal6MnITosState__v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cRsarL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cTConstantDoubleValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_22_v_;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cVRegistersForDebuggingRrestore_registers6FpnOMacroAssembler_pnMRegisterImpl__v_: assembler_sparc.o;
-text: .text%__1cVRegistersForDebuggingOsave_registers6FpnOMacroAssembler__v_: assembler_sparc.o;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cFStateO_sub_Op_CastPP6MpknENode__v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
-text: .text%__1cQshlI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cOMacroAssemblerPstop_subroutine6M_v_;
--- a/make/solaris/makefiles/reorder_CORE_i486	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-# reordering not support for CORE builds
--- a/make/solaris/makefiles/reorder_CORE_sparc	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-# reordering not support for CORE builds
--- a/make/solaris/makefiles/reorder_CORE_sparcv9	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-# reordering not support for CORE builds
--- a/make/solaris/makefiles/reorder_TIERED_amd64	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5377 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cECopyRpd_disjoint_words6FpnIHeapWord_2L_v_;
-text: .text%__1cSPSPromotionManagerWcopy_to_survivor_space6MpnHoopDesc__2_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQObjectStartArrayMobject_start6kMpnIHeapWord__2_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_;
-text: .text%__1cXresource_allocate_bytes6FL_pc_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cIIndexSetLalloc_block6M_pn0AIBitBlock__;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cYPSPromotionFailedClosureJdo_object6MpnHoopDesc__v_;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cENodeHdel_out6Mp0_v_;
-text: .text%__1cKRelocationLunpack_data6M_v_;
-text: .text%__1cIMachNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cETypeDcmp6Fpk02_i_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cNGrowableArray4CI_Hat_grow6MirkI_I_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cJrRegPOperEtype6kM_pknEType__;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_LI_v_;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cMloadConPNodeErule6kM_I_;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cMMutableSpaceMcas_allocate6ML_pnIHeapWord__;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cETypeFuhash6Fpk0_i_;
-text: .text%__1cJrRegIOperEtype6kM_pknEType__;
-text: .text%__1cMPhaseChaitinLskip_copies6MpnENode__2_;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cNCollectedHeapbDcheck_for_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cKjmpDirNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_;
-text: .text%__1cENodeMcisc_operand6kM_i_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHNTarjanEEVAL6M_p0_;
-text: .text%__1cNMachIdealNodeErule6kM_I_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cJloadPNodeErule6kM_I_;
-text: .text%__1cMloadConINodeErule6kM_I_;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_IrnJVectorSet__v_;
-text: .text%__1cLemit_opcode6FrnKCodeBuffer_i_v_;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cFArenaIArealloc6MpvLL_1_;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cKBranchDataKcell_count6M_i_;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cDLRGFscore6kM_d_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinMchoose_color6MrnDLRG_i_i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_L_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cMPhaseChaitinKbias_color6MrnDLRG_i_i_;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cECopyYconjoint_words_to_higher6FpnIHeapWord_2L_v_;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cJPhaseLiveGgetset6MpnFBlock__pnIIndexSet__;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cLCounterDataKcell_count6M_i_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_;
-text: .text%__1cIMachNodeSalignment_required6kM_i_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_L_pnIHeapWord__;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6ML_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2L_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_;
-text: .text%__1cIIndexSetFclear6M_v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_pnIIndexSet_rnJVectorSet__v_;
-text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2L_v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cHemit_rm6FrnKCodeBuffer_iii_v_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cJPhaseLiveKgetfreeset6M_pnIIndexSet__;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cIJumpDataKcell_count6M_i_;
-text: .text%__1cHNTarjanELINK6Mp01_v_;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cENodeRraise_bottom_type6MpknEType__v_;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cIMachNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFState2t6M_v_;
-text: .text%__1cJPhaseLiveHfreeset6MpknFBlock__v_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cHRegMaskPfind_first_pair6kM_i_;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cNPhaseRegAllocKreg2offset6kMi_i_;
-text: .text%__1cNPhaseRegAllocUreg2offset_unchecked6kMi_i_;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockXcompute_gen_kill_single6MpnQciBytecodeStream__v_;
-text: .text%__1cKjmpDirNodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_;
-text: .text%__1cRMachSafePointNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cNinstanceKlassMclass_loader6kM_pnHoopDesc__;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cNrFlagsRegOperEtype6kM_pknEType__;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cUGenericGrowableArrayMraw_allocate6Mi_pv_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cIMachNodeKconst_size6kM_i_;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%JVM_Read;
-text: .text%__1cDhpiEread6FipvI_L_;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cHemit_d86FrnKCodeBuffer_i_v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMachNodeJemit_size6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadINodeErule6kM_I_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cJrRegLOperEtype6kM_pknEType__;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKjmpConNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeFreloc6kM_i_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cRMachSpillCopyNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmIOperIconstant6kM_l_;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cJCProjNodeEhash6kM_I_;
-text: .text%__1cJMultiNodeEhash6kM_I_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSetSfind_map_at_offset6kMi_pnGOopMap__;
-text: .text%__1cICodeBlobbAoop_map_for_return_address6MpC_pnGOopMap__;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeErule6kM_I_;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_;
-text: .text%__1cGTarjanEEVAL6M_p0_;
-text: .text%__1cYexternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_;
-text: .text%__1cIMachNodeNoperand_index6kMI_i_;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cGBitMapUclear_range_of_words6MLL_v_;
-text: .text%__1cJrRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cIimmPOperEtype6kM_pknEType__;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOrFlagsRegUOperEtype6kM_pknEType__;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cNCollectedHeapbHcheck_for_non_bad_heap_word_value6MpnIHeapWord_L_v_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cHCompileRprobe_alias_cache6MpknHTypePtr__pn0APAliasCacheEntry__;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cKRegionNodeEhash6kM_I_;
-text: .text%__1cMMutableSpaceIallocate6ML_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6ML_pnIHeapWord__;
-text: .text%__1cJPSPermGenSallocate_permanent6ML_pnIHeapWord__;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_;
-text: .text%__1cGBitMap2t6MpLL_v_;
-text: .text%__1cNnew_loc_value6FpnNPhaseRegAlloc_inILocationEType__pnNLocationValue__: output.o;
-text: .text%__1cOindOffset8OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOindOffset8OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cOindOffset8OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLjmpConUNodeMideal_Opcode6kM_i_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFChunk2t6ML_v_;
-text: .text%__1cFChunk2n6FLL_pv_;
-text: .text%__1cOindOffset8OperFscale6kM_i_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cFframebCsender_for_interpreter_frame6kMpnLRegisterMap__0_;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKjmpConNodePoper_input_base6kM_I_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cMciMethodDataHdata_at6Mi_pnLProfileData__;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cHBitDataKcell_count6M_i_;
-text: .text%__1cFArenaEgrow6ML_pv_;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cJloadBNodeErule6kM_I_;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cKPSScavengeUoop_promotion_failed6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cHTypePtrLmeet_offset6kMi_i_;
-text: .text%__1cSPSPromotionManagerUoop_promotion_failed6MpnHoopDesc_pnLmarkOopDesc__2_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockIload_one6Mi_v_;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cENodeHget_int6kM_i_;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIBoolTestKcc2logical6kMpknEType__3_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cXruntime_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cNtestP_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cFBlockUneeded_for_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cIIndexSetSpopulate_free_list6F_v_;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIemit_d326FrnKCodeBuffer_i_v_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cNloadConI0NodeErule6kM_I_;
-text: .text%__1cQciBytecodeStreamMreset_to_bci6Mi_v_;
-text: .text%__1cHPhiNodeHsize_of6kM_I_;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrlrpknHTypePtr__pknENode__;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLRegisterMapFclear6M_v_;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cPloadConUL32NodeErule6kM_I_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cMciMethodDataJnext_data6MpnLProfileData__2_;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLBlock_StackXmost_frequent_successor6MpnFBlock__I_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGTarjanELINK6Mp01_v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_irknQRelocationHolder_i_v_;
-text: .text%__1cLjmpConUNodePoper_input_base6kM_I_;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cSInterpreterRuntimeLcache_entry6FpnKJavaThread__pnWConstantPoolCacheEntry__;
-text: .text%__1cOindOffset8OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__;
-text: .text%__1cNloadRangeNodeErule6kM_I_;
-text: .text%__1cNrFlagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIIndexSetJlrg_union6MIIIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cYciExceptionHandlerStreamEnext6M_v_;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cJloadSNodeErule6kM_I_;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cKjmpDirNodeHsize_of6kM_I_;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cHOopFlowNcompute_reach6MpnNPhaseRegAlloc_ipnEDict__v_;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGGCTaskKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cNGCTaskManagerWdecrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerWincrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueHdequeue6M_pnGGCTask__;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cXindIndexScaleOffsetOperJnum_edges6kM_I_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cNtestI_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cKmethodOperGmethod6kM_l_;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%__1cOindOffset8OperNbase_position6kM_i_;
-text: .text%__1cOindOffset8OperNconstant_disp6kM_i_;
-text: .text%__1cENodeHset_req6MIp0_v_;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cOcompU_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvI2L_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cLMachNopNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJchar2type6Fc_nJBasicType__;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cJrRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYCallStaticJavaDirectNodeSalignment_required6kM_i_;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKNativeCallGverify6M_v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_;
-text: .text%__1cCosGmalloc6FL_pv_;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cMvalue_of_loc6FppnHoopDesc__l_;
-text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
-text: .text%__1cRmethodDataOopDescRcompute_data_size6FpnOBytecodeStream__i_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowFBlock__2t6MpnFArena_iirk2_v_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cOcompI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cOcompU_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%JVM_GetClassModifiers;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cRAbstractAssemblerGa_byte6Mi_v_;
-text: .text%__1cJAssemblerGprefix6Mn0AGPrefix__v_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cMrax_RegPOperEtype6kM_pknEType__;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cXindIndexScaleOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cOMethodLivenessKBasicBlockWcompute_gen_kill_range6MpnQciBytecodeStream__v_;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__;
-text: .text%__1cOcompU_rRegNodeErule6kM_I_;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cETypeOget_const_type6FpnGciType__pk0_;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQciBytecodeStreamPget_field_index6M_i_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cRaddI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cKRegionNodeHhas_phi6kM_pnHPhiNode__;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_;
-text: .text%__1cWConstantPoolCacheEntryPbytecode_number6FnJBytecodesECode__i_;
-text: .text%__1cNtestP_regNodeErule6kM_I_;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cNtestI_regNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cOcompI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cOcompI_rRegNodeErule6kM_I_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cJVectorSetEgrow6MI_v_;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNArgumentCountDset6MinJBasicType__v_;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHoopDescGverify6M_v_;
-text: .text%__1cHTypePtrHget_con6kM_l_;
-text: .text%__1cMTypeKlassPtr2t6MnHTypePtrDPTR_pnHciKlass_i_v_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cYCallStaticJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cOrFlagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQciBytecodeStreamQget_method_index6M_i_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cMloadConLNodeErule6kM_I_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cJloadINodePoper_input_base6kM_I_;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cFParsePload_state_from6Mpn0AFBlock__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cRaddP_rReg_immNodePoper_input_base6kM_I_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cICHeapObj2n6FL_pv_;
-text: .text%__1cKInlineTreeJcallee_at6kMipnIciMethod__p0_;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cOCallRelocationFvalue6M_pC_;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cNloadConP0NodeErule6kM_I_;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConI0NodeMideal_Opcode6kM_i_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_;
-text: .text%__1cKjmpDirNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_;
-text: .text%__1cUThreadSafepointStateMroll_forward6Mn0AMsuspend_type__v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cJrRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__2t6MpnFArena_iirk2_v_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNtestP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNincI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinJsplit_DEF6MpnENode_pnFBlock_iIp25nNGrowableArray4CI__i_I_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cRaddP_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cNFingerprinterLfingerprint6M_L_;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cKBlock_ListGremove6MI_v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cKciTypeFlowGJsrSetJcopy_into6Mp1_v_;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_L_;
-text: .text%__1cNGrowableArray4CpnIciObject__Praw_at_put_grow6Mirk14_v_;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cJloadLNodeErule6kM_I_;
-text: .text%__1cNloadConI0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cJimmI0OperIconstant6kM_l_;
-text: .text%__1cScompI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSignatureInfoHdo_void6M_v_;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cHOopFlowFclone6Mp0i_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6ML_v_;
-text: .text%__1cPindOffset32OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPindOffset32OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cTDerivedPointerTableDadd6FppnHoopDesc_3_v_;
-text: .text%__1cFParseFBlockJinit_node6Mp0i_v_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cKjmpDirNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cMMergeMemNodeNgrow_to_match6Mpk0_v_;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cMMergeMemNodeRmake_empty_memory6F_pnENode__;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cKjmpConNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIemit_d646FrnKCodeBuffer_l_v_;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cFParseFBlockMrecord_state6Mp0_v_;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cOcompP_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_Bool6MpknENode__v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cKTypeOopPtrHget_con6kM_l_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cXindIndexScaleOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cXindIndexScaleOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cNsubI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cPindOffset32OperFscale6kM_i_;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cHTypePtrLdual_offset6kM_i_;
-text: .text%__1cNMachIdealNodePoper_input_base6kM_I_;
-text: .text%__1cSObjectSynchronizerOinflate_helper6FpnHoopDesc__pnNObjectMonitor__;
-text: .text%__1cKciTypeFlowIblock_at6Mipn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cXindIndexScaleOffsetOperFscale6kM_i_;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cNstoreImmBNodePoper_input_base6kM_I_;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cTconvI2L_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cRshrL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__;
-text: .text%__1cKciTypeFlowLStateVector2t6Mp0_v_;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOcompU_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cJimmI8OperIconstant6kM_l_;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cQUnique_Node_ListEpush6MpnENode__v_;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cQPSGenerationPoolImax_size6kM_L_;
-text: .text%__1cQPSGenerationPoolNused_in_bytes6M_L_;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cOMethodLivenessNwork_list_get6M_pn0AKBasicBlock__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cNstoreImmBNodeMideal_Opcode6kM_i_;
-text: .text%__1cNaddI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cOcompP_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMPhaseChaitinKFind_const6kMpknENode__I_;
-text: .text%__1cMPhaseChaitinKFind_const6kMI_I_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cHemit_cc6FrnKCodeBuffer_ii_v_;
-text: .text%__1cNtestI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmPOperIconstant6kM_l_;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cTleaPIdxScaleOffNodeErule6kM_I_;
-text: .text%JVM_IsNaN;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cHMatcherPc_frame_pointer6kM_i_;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cICallNodeJideal_reg6kM_I_;
-text: .text%__1cOleaPIdxOffNodeErule6kM_I_;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cOcompP_rRegNodeErule6kM_I_;
-text: .text%__1cMany_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cScompI_rReg_immNodeErule6kM_I_;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cHi2sNodeErule6kM_I_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNloadKlassNodeErule6kM_I_;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cJOopMapSetKadd_gc_map6MipnGOopMap__v_;
-text: .text%__1cNincI_rRegNodeErule6kM_I_;
-text: .text%__1cYDebugInformationRecorderNadd_safepoint6MipnGOopMap__v_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cYDebugInformationRecorderKadd_oopmap6MipnGOopMap__v_;
-text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNsubI_rRegNodeMcisc_operand6kM_i_;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cRaddI_rReg_immNodeErule6kM_I_;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cNsubI_rRegNodeErule6kM_I_;
-text: .text%__1cRaddP_rReg_immNodeErule6kM_I_;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateW_sub_Op_CallStaticJava6MpknENode__v_;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cOcompI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNaddI_rRegNodeErule6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cIGraphKitQset_saved_ex_oop6FpnNSafePointNode_pnENode__v_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Ml_v_;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorJcopy_into6kMp1_v_;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcL_v_;
-text: .text%__1cMstringStreamFwrite6MpkcL_v_;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cKciTypeFlowFBlockKsuccessors6MpnQciBytecodeStream_pn0ALStateVector_pn0AGJsrSet__pnNGrowableArray4Cp1___;
-text: .text%__1cKciTypeFlowOwork_list_next6M_pn0AFBlock__;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowJJsrRecord__2t6MpnFArena_iirk2_v_;
-text: .text%__1cNmodI_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4CpnPciInstanceKlass__2t6MpnFArena_iirk1_v_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKciTypeFlowPflow_successors6MpnNGrowableArray4Cpn0AFBlock___pn0ALStateVector__v_;
-text: .text%__1cRsalI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadFNodeErule6kM_I_;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cHi2sNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadConI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_;
-text: .text%__1cIregFOperEtype6kM_pknEType__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cOMethodLivenessNwork_list_add6Mpn0AKBasicBlock__v_;
-text: .text%__1cFParseFBlockNlocal_type_at6kMi_pknEType__;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cICodeHeapSallocated_capacity6kM_L_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%__1cLjmpConUNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_L_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FL_v_;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_;
-text: .text%__1cMVM_OperationPevaluation_mode6kM_n0AEMode__;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cOemit_d64_reloc6FrnKCodeBuffer_lnJrelocInfoJrelocType_i_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cENodeHget_ptr6kM_l_;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcompU_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQciBytecodeStreamWget_field_holder_index6M_i_;
-text: .text%__1cQciBytecodeStreamZget_declared_field_holder6M_pnPciInstanceKlass__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cNdecI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_;
-text: .text%__1cPindOffset32OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cICodeHeapIcapacity6kM_L_;
-text: .text%__1cKMemoryPoolImax_size6kM_L_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_L_;
-text: .text%__1cJcmpOpOperFccode6kM_i_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cOcompL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_p0_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cScompU_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNFingerprinterJdo_object6Mii_v_;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cKjmpConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cMloadConFNodeErule6kM_I_;
-text: .text%__1cIMachOperIconstant6kM_l_;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolImax_size6kM_L_;
-text: .text%__1cUEdenMutableSpacePoolNused_in_bytes6M_L_;
-text: .text%__1cUEdenMutableSpacePoolImax_size6kM_L_;
-text: .text%__1cYSurvivorMutableSpacePoolNused_in_bytes6M_L_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cKciTypeFlowGJsrSetNapply_control6Mp0pnQciBytecodeStream_pn0ALStateVector__v_;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cRaddI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cPloadConUL32NodeMideal_Opcode6kM_i_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__l_;
-text: .text%__1cHoopDescSslow_identity_hash6M_l_;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXindIndexScaleOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_Halt6MpknENode__v_;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_;
-text: .text%__1cNloadConI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2L_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cNprefetchwNodeMideal_Opcode6kM_i_;
-text: .text%__1cIAddINodeJideal_reg6kM_I_;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cNmulL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_;
-text: .text%__1cNaddI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLPCTableNodeHsize_of6kM_I_;
-text: .text%__1cNincI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cQciBytecodeStreamXget_method_holder_index6M_i_;
-text: .text%__1cMorI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cQciBytecodeStreambAget_declared_method_holder6M_pnHciKlass__;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cScompP_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cICodeHeapLheader_size6F_L_;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cXindIndexScaleOffsetOperNconstant_disp6kM_i_;
-text: .text%__1cSindIndexOffsetOperJnum_edges6kM_I_;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_;
-text: .text%__1cOcompI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNtestI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cNprefetchwNodePoper_input_base6kM_I_;
-text: .text%__1cTCreateExceptionNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cVExceptionHandlerTableJadd_entry6MnRHandlerTableEntry__v_;
-text: .text%__1cPsalI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cRaddP_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_;
-text: .text%__1cTconvL2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_L_;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cGIfNodeHsize_of6kM_I_;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cOcompL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cScompI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMMergeMemNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeMideal_Opcode6kM_i_;
-text: .text%__1cTleaPIdxScaleOffNodePoper_input_base6kM_I_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cOcompP_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNsubI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cPindOffset32OperNbase_position6kM_i_;
-text: .text%__1cPindOffset32OperNconstant_disp6kM_i_;
-text: .text%__1cOcompU_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cRshrL_rReg_immNodeErule6kM_I_;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cScompU_rReg_immNodeErule6kM_I_;
-text: .text%__1cKjmpDirNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpDirNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cNloadConL0NodeErule6kM_I_;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cMindIndexOperFscale6kM_i_;
-text: .text%__1cScompP_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cRandI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cTconvF2D_reg_memNodeErule6kM_I_;
-text: .text%__1cPindOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateM_sub_Op_CmpP6MpknENode__v_;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cKimmL32OperIconstant6kM_l_;
-text: .text%__1cKimmL32OperJnum_edges6kM_I_;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cLBoxLockNodeKstack_slot6FpnENode__i_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_;
-text: .text%__1cKDataLayoutKinitialize6MCHi_v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cPshrI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cOcompL_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4Cpv_Praw_at_put_grow6Mirk03_v_;
-text: .text%__1cNGrowableArray4Cl_Praw_at_put_grow6Mirkl2_v_;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEmovq6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGRFrameMset_distance6Mi_v_;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cTStackWalkCompPolicyIsenderOf6MpnGRFrame_pnNGrowableArray4C2___2_;
-text: .text%__1cGRFrameKnew_RFrame6FnFframe_pnKJavaThread_p0_4_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_;
-text: .text%__1cTconstantPoolOopDescMklass_at_put6MipnMklassOopDesc__v_;
-text: .text%__1cNFingerprinterGdo_int6M_v_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cRshrL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cFStateM_sub_Op_RegL6MpknENode__v_;
-text: .text%__1cNdecI_rRegNodeErule6kM_I_;
-text: .text%__1cKjmpConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_;
-text: .text%__1cKjmpConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fl_v_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cCosRcurrent_thread_id6F_l_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_getstatic6MpnQciBytecodeStream__v_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cNPhaseRegAllocKoffset2reg6kMi_i_;
-text: .text%__1cQjmpCon_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjmpCon_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
-text: .text%__1cTconvI2L_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CI_Praw_at_put_grow6MirkI2_v_;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cXindIndexScaleOffsetOperOindex_position6kM_i_;
-text: .text%__1cXindIndexScaleOffsetOperNbase_position6kM_i_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cRsubI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_;
-text: .text%__1cRaddI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cKTypeRawPtrHget_con6kM_l_;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cPloadConUL32NodeLbottom_type6kM_pknEType__;
-text: .text%__1cNloadConI0NodeHsize_of6kM_I_;
-text: .text%JVM_handle_solaris_signal;
-text: .text%signalHandler;
-text: .text%__1cQJNI_FastGetFieldQfind_slowcase_pc6FpC_1_;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_;
-text: .text%__1cTStackWalkCompPolicyMshouldInline6FnMmethodHandle_fi_pkc_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cNGrowableArray4CpnGciType__2t6MpnFArena_iirk1_v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cJArrayDataKcell_count6M_i_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_L_;
-text: .text%__1cSindIndexOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJcmpOpOperGnegate6M_v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cUSafepointSynchronizebDhandle_polling_page_exception6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointStatebDhandle_polling_page_exception6M_v_;
-text: .text%__1cLjmpConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKcmpOpUOperFccode6kM_i_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_;
-text: .text%__1cJloadPNodeFreloc6kM_i_;
-text: .text%__1cTno_rax_rbx_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKjmpConNodeGnegate6M_v_;
-text: .text%__1cMindirectOperFscale6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cQComputeCallStackGdo_int6M_v_;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNtestP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQjmpDir_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjmpDir_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_getfield6MpnQciBytecodeStream__v_;
-text: .text%__1cNaddI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cScompP_mem_rRegNodeErule6kM_I_;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeMideal_Opcode6kM_i_;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cOcompI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cRaddP_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__;
-text: .text%__1cLBoxLockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cMorI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMloadConPNodeFreloc6kM_i_;
-text: .text%__1cSPSPromotionManagerFreset6M_v_;
-text: .text%__1cSPSPromotionManagerKflush_labs6M_v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cNincI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cOcompP_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cHi2sNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseLinit_blocks6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cFParseNdo_all_blocks6M_v_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFArenaEused6kM_L_;
-text: .text%__1cRandI_rReg_immNodeErule6kM_I_;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cPno_rax_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pl_;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cMrax_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__;
-text: .text%__1cNsubI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cJEventMark2t6MpkcE_v_;
-text: .text%__1cNaddI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQComputeCallStackHdo_long6M_v_;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cRaddI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cKInlineTreeYcompute_callee_frequency6kMi_f_;
-text: .text%__1cKInlineTreebCbuild_inline_tree_for_callee6MpnIciMethod_pnIJVMState_i_p0_;
-text: .text%__1cRinterpretedVFrameDbcp6kM_pC_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cNsubI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOMethodLivenessKBasicBlockIload_two6Mi_v_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cNmulL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cTcompareAndSwapLNodePoper_input_base6kM_I_;
-text: .text%__1cMloadConINodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cNstoreImmINodeMideal_Opcode6kM_i_;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__;
-text: .text%__1cPstoreImmI16NodeMideal_Opcode6kM_i_;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cFStateQ_sub_Op_CreateEx6MpknENode__v_;
-text: .text%__1cRshrL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLjmpConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLjmpConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cRaddI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cNdecI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__;
-text: .text%__1cMorI_rRegNodeErule6kM_I_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cTconvL2I_reg_regNodeErule6kM_I_;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__;
-text: .text%__1cRaddL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cPsalI_rReg_1NodeErule6kM_I_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cScompU_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompP_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRegionNodeOhas_unique_phi6kM_pnHPhiNode__;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cVExceptionHandlerTableMadd_subtable6MipnNGrowableArray4Cl__22_v_;
-text: .text%__1cNandL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cNObjectMonitorHis_busy6kM_l_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cJAssemblerIcmpxchgq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cPshrI_rReg_1NodeErule6kM_I_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cIregDOperEtype6kM_pknEType__;
-text: .text%__1cTStackWalkCompPolicyPshouldNotInline6FnMmethodHandle__pkc_;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_;
-text: .text%__1cQleaPIdxScaleNodeMideal_Opcode6kM_i_;
-text: .text%__1cJcmpOpOperFequal6kM_i_;
-text: .text%__1cScompI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cRaddP_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMrep_stosNodePoper_input_base6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cIGraphKitTcreate_and_xform_if6MpnENode_2ff_pnGIfNode__;
-text: .text%__1cRaddI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cFStateM_sub_Op_CmpU6MpknENode__v_;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cNincI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cPstoreImmI16NodePoper_input_base6kM_I_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cNstoreImmBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cPloadConUL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIHaltNodeEhash6kM_I_;
-text: .text%__1cNstoreImmINodePoper_input_base6kM_I_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cOcompL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cRsubI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFStateP_sub_Op_LShiftL6MpknENode__v_;
-text: .text%__1cLjmpConUNodeGnegate6M_v_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_;
-text: .text%__1cLGCTaskQdDueueKinitialize6M_v_;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cJStealTaskEname6M_pc_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cQciBytecodeStreamMget_constant6M_nKciConstant__;
-text: .text%__1cMrep_stosNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cTsize_java_to_interp6F_I_;
-text: .text%__1cUreloc_java_to_interp6F_I_;
-text: .text%__1cQinit_input_masks6FIrnHRegMask_1_p0_: matcher.o;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cTcompareAndSwapLNodeMideal_Opcode6kM_i_;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cNCallGeneratorCtf6kM_pknITypeFunc__;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cQleaPIdxScaleNodePoper_input_base6kM_I_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cRsalI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperNbase_position6kM_i_;
-text: .text%__1cMindIndexOperOindex_position6kM_i_;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cRshrL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpCon_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpCon_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cKmethodOperJnum_edges6kM_I_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreP6MpknENode__v_;
-text: .text%__1cRshrI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNstoreImmBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstorePNodeFreloc6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQleaPIdxScaleNodeErule6kM_I_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cIGraphKitSclear_saved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cJAssemblerFtestq6MpnMRegisterImpl_2_v_;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cZresource_reallocate_bytes6FpcLL_0_;
-text: .text%__1cKstoreINodeFreloc6kM_i_;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cPshrI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMorI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cPsalI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cNmulL_rRegNodeErule6kM_I_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cScompP_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_;
-text: .text%__1cRandI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%__1cNaddI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_;
-text: .text%__1cOjmpLoopEndNodePoper_input_base6kM_I_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cNandL_rRegNodeErule6kM_I_;
-text: .text%__1cQjmpDir_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cQjmpDir_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cSindIndexOffsetOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cSindIndexOffsetOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNGrowableArray4CI_Egrow6Mi_v_;
-text: .text%__1cFStateP_sub_Op_ConvI2L6MpknENode__v_;
-text: .text%__1cNsubI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcheckCastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cILoopNodeHsize_of6kM_I_;
-text: .text%__1cSindIndexOffsetOperFscale6kM_i_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_;
-text: .text%__1cHi2bNodeErule6kM_I_;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cRjmpConU_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRjmpConU_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_;
-text: .text%__1cTleaPIdxScaleOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPsarI_rReg_1NodeErule6kM_I_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cMloadConDNodeErule6kM_I_;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNdecI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cJScopeDescJstream_at6kMi_pnTDebugInfoReadStream__;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHRetNodePoper_input_base6kM_I_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cPloadConUL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOFastUnlockNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cNaddL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cOcompL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFStateR_sub_Op_LoadRange6MpknENode__v_;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cOcompU_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNsubL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNloadRangeNodeFreloc6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cNxorI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_L_;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cUParallelScavengeHeapEused6kM_L_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cRindIndexScaleOperJnum_edges6kM_I_;
-text: .text%__1cRindIndexScaleOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSignatureInfoJdo_double6M_v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cRsalI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cMrdx_RegIOperEtype6kM_pknEType__;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cRshrI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cISubINodeJideal_reg6kM_I_;
-text: .text%__1cICodeHeapIallocate6ML_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6ML_pnJFreeBlock__;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmulL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_;
-text: .text%__1cScompU_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2t6ML_v_;
-text: .text%__1cJloadINodeFreloc6kM_i_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_two6Mi_v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cOAbstractICachePcall_flush_stub6FpCi_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__;
-text: .text%__1cEDictIdoubhash6M_v_;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cHi2sNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLimmI_16OperJnum_edges6kM_I_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddL_rReg_immNodeErule6kM_I_;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cNFingerprinterIdo_array6Mii_v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cMorI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cPsalI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cYGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUPSAdaptiveSizePolicybPeden_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cIPSOldGenMmax_gen_size6M_L_;
-text: .text%__1cUPSAdaptiveSizePolicybHclear_generation_free_space_flags6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyOeden_increment6MLI_L_;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cPshrI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cRmulI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cOMachEpilogNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKReturnNodeEhash6kM_I_;
-text: .text%__1cLlog2_intptr6Fl_i_;
-text: .text%__1cKKlass_vtbl2n6FLrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cNandL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cCosXserialize_thread_states6F_v_;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosMget_priority6FpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cGThreadMget_priority6Fpk0_nOThreadPriority__;
-text: .text%__1cCosTget_native_priority6FpknGThread_pi_nIOSReturn__;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cNtestP_regNodeFreloc6kM_i_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPsarI_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cNIdealLoopTreeNDCE_loop_body6M_v_;
-text: .text%__1cNprefetchwNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_release_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cNdecI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cMrcx_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cNaddL_rRegNodeErule6kM_I_;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cSAdaptiveSizePolicyWminor_collection_begin6M_v_;
-text: .text%__1cSAdaptiveSizePolicyUminor_collection_end6MnHGCCauseFCause__v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cNBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cGGCTaskIdestruct6M_v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MLL_v_;
-text: .text%__1cKPSYoungGenGresize6MLL_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MLL_v_;
-text: .text%__1cSAdaptiveSizePolicybIupdate_minor_pause_young_estimator6Md_v_;
-text: .text%__1cUPSAdaptiveSizePolicybGupdate_minor_pause_old_estimator6Md_v_;
-text: .text%__1cNsubL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cRsubI_rReg_memNodeErule6kM_I_;
-text: .text%__1cNandI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_;
-text: .text%__1cMorI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cRandI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cJcmpOpOperEless6kM_i_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cOcompL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cNloadKlassNodeFreloc6kM_i_;
-text: .text%__1cRshrI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__L_;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%__1cScompI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cScompI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cRaddL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKciTypeFlowLStateVectorGdo_ldc6MpnQciBytecodeStream__v_;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cNmulL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_;
-text: .text%__1cRsalL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cScompP_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cFframeWsender_for_entry_frame6kMpnLRegisterMap__0_;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmodI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cNtestL_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPloadConUL32NodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerEandq6MpnMRegisterImpl_i_v_;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcL_pnLPackageInfo__;
-text: .text%JVM_Clone;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cPsalI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_;
-text: .text%__1cKciTypeFlowLStateVectorMdo_putstatic6MpnQciBytecodeStream__v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cGEventsDlog6FpkcE_v_;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cSsafePoint_pollNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cPshrI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cNsubL_rRegNodeErule6kM_I_;
-text: .text%__1cUPSMarkSweepDecoratorVdestination_decorator6F_p0_;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cKBufferBlob2n6FLI_pv_;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_putfield6MpnQciBytecodeStream__v_;
-text: .text%__1cHnmethodNscope_desc_at6MpC_pnJScopeDesc__;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cMrdi_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cTconvL2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMrax_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSignatureInfoIdo_short6M_v_;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cNandL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MLL_v_;
-text: .text%__1cMorI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHOrINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cILRG_List2t6MI_v_;
-text: .text%__1cHMatcherLreturn_addr6kM_i_;
-text: .text%__1cSindIndexOffsetOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOMachPrologNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_;
-text: .text%__1cRaddI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cRaddI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cRmethodDataOopDescYcompute_extra_data_count6Fii_i_;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cRxorI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_2_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6ML_v_;
-text: .text%__1cTresource_free_bytes6FpcL_v_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cRindIndexScaleOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cRindIndexScaleOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cNmulL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cWandI_rReg_imm65535NodeMideal_Opcode6kM_i_;
-text: .text%__1cRjmpConU_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRjmpConU_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cSindIndexOffsetOperNconstant_disp6kM_i_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQleaPIdxScaleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateV_sub_Op_MemBarRelease6MpknENode__v_;
-text: .text%__1cOleaPIdxOffNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerDorq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cScompI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTcompareAndSwapLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorJhalf_type6FpnGciType__3_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cNaddL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNxorI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cJAssemblerEleaq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cMPhaseChaitinOcache_lrg_info6M_v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cRsarL_rReg_immNodeErule6kM_I_;
-text: .text%__1cKcmpOpUOperJnot_equal6kM_i_;
-text: .text%__1cScompU_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cScompU_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNandL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cTleaPIdxScaleOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNmulL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODataRelocationGoffset6M_i_;
-text: .text%__1cODataRelocationJset_value6MpC_v_;
-text: .text%__1cKRelocationRpd_set_data_value6MpCl_v_;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cFStateO_sub_Op_StoreB6MpknENode__v_;
-text: .text%__1cRaddL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cRandI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOleaPIdxOffNodePoper_input_base6kM_I_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHMemNodeScalculate_adr_type6FpknEType_pknHTypePtr__6_;
-text: .text%__1cRmulI_rReg_immNodeErule6kM_I_;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_;
-text: .text%__1cNaddP_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cNnegI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeErule6kM_I_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_;
-text: .text%__1cNFingerprinterHdo_long6M_v_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__;
-text: .text%__1cIAndINodeJideal_reg6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_i_v_;
-text: .text%__1cYexternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cNstoreImmBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cMFastLockNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_i_v_;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_;
-text: .text%__1cKBlock_ListGinsert6MIpnFBlock__v_;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_;
-text: .text%__1cRxorI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cScompI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_rReg_memNodeErule6kM_I_;
-text: .text%__1cKRelocationYpd_get_address_from_code6M_pC_;
-text: .text%__1cRxorI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_;
-text: .text%__1cNandL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNstoreImmBNodeFreloc6kM_i_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRsalL_rReg_immNodeErule6kM_I_;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cNaddP_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cNtestL_regNodeErule6kM_I_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cRsarI_rReg_immNodeErule6kM_I_;
-text: .text%__1cRsarL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperNbase_position6kM_i_;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cKciTypeFlowLStateVectorGdo_new6MpnQciBytecodeStream__v_;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cFStateV_sub_Op_MemBarAcquire6MpknENode__v_;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cSindIndexOffsetOperOindex_position6kM_i_;
-text: .text%__1cSindIndexOffsetOperNbase_position6kM_i_;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cNGrowableArray4Cpv_2t6MpnFArena_iirk0_v_;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_;
-text: .text%__1cNGrowableArray4Cl_2t6MpnFArena_iirkl_v_;
-text: .text%__1cNstoreImmINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMachEpilogNodeFreloc6kM_i_;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cFStateN_sub_Op_LoadL6MpknENode__v_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoHdo_char6M_v_;
-text: .text%__1cNtestU_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateQ_sub_Op_CallLeaf6MpknENode__v_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cJloadLNodeFreloc6kM_i_;
-text: .text%__1cSCallLeafDirectNodeFreloc6kM_i_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cNsubL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJAssemblerEmovq6MpnMRegisterImpl_2_v_;
-text: .text%__1cRmulL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cNandI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cRsubI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_;
-text: .text%__1cFStateS_sub_Op_FastUnlock6MpknENode__v_;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_L_;
-text: .text%__1cScompU_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsarI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cPcmovI_reg_gNodeErule6kM_I_;
-text: .text%__1cScompU_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_;
-text: .text%__1cIimmFOperJconstantF6kM_f_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__;
-text: .text%__1cHOrINodeJideal_reg6kM_I_;
-text: .text%__1cNcmovI_regNodeMcisc_operand6kM_i_;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreC6MpknENode__v_;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_;
-text: .text%__1cRaddL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMrep_stosNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXmembar_acquire_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMrcx_RegIOperEtype6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cHNTarjanDDFS6Fp0rnJVectorSet_pnOPhaseIdealLoop_pI_i_;
-text: .text%__1cHNTarjanIsetdepth6MIpI_v_;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cOPhaseIdealLoopRinit_dom_lca_tags6M_v_;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRsubI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_;
-text: .text%__1cNaddP_rRegNodeErule6kM_I_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_;
-text: .text%__1cRmulI_rReg_immNodeMcisc_operand6kM_i_;
-text: .text%__1cICodeHeapMmax_capacity6kM_L_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cRindIndexScaleOperFscale6kM_i_;
-text: .text%__1cNxorI_rRegNodeErule6kM_I_;
-text: .text%__1cFParseFBlockNstack_type_at6kMi_pknEType__;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__;
-text: .text%__1cJcmpOpOperHgreater6kM_i_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_;
-text: .text%__1cJMemRegionMintersection6kM0_0_;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRmulI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassGloader6M_pnHoopDesc__;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cLRethrowNodeEhash6kM_I_;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cSmembar_releaseNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHMatcherQinline_cache_reg6F_i_;
-text: .text%__1cbBInterpreterCodeletInterfaceRcode_size_to_size6kMi_i_;
-text: .text%__1cbBInterpreterCodeletInterfaceKinitialize6MpnEStub_i_v_;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_;
-text: .text%__1cPstoreImmI16NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIemit_d166FrnKCodeBuffer_i_v_;
-text: .text%__1cKimmI16OperIconstant6kM_l_;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cNaddL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cNaddL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_;
-text: .text%__1cPlocal_vsnprintf6FpcLpkcpnR__va_list_element__i_;
-text: .text%jio_vsnprintf;
-text: .text%__1cNstoreImmINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%jio_snprintf;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTcompareAndSwapLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cFStateR_sub_Op_SafePoint6MpknENode__v_;
-text: .text%__1cQorI_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cPsarI_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cPpoll_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsafePoint_pollNodeFreloc6kM_i_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cNFingerprinterHdo_bool6M_v_;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cNtestU_regNodeErule6kM_I_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cMrdx_RegLOperEtype6kM_pknEType__;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cINodeHash2t6Mp0_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cPcmovI_reg_gNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cIPhaseCFGDDFS6MpnGTarjan__I_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cHMatcherUvalidate_null_checks6M_v_;
-text: .text%__1cHCompileOcompute_old_SP6M_i_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cFArena2t6ML_v_;
-text: .text%__1cWNode_Backward_Iterator2t6MpnENode_rnJVectorSet_rnJNode_List_rnLBlock_Array__v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cFStateM_sub_Op_Goto6MpknENode__v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cMPhaseChaitinGde_ssa6M_v_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cGTarjanIsetdepth6MI_v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cHCompileTframe_size_in_words6kM_i_;
-text: .text%__1cOCompileWrapper2T6M_v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cNPhasePeephole2t6MpnNPhaseRegAlloc_rnIPhaseCFG__v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cHCompileQShorten_branches6MpnFLabel_ri333_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cHCompileRScheduleAndBundle6M_v_;
-text: .text%__1cOMachPrologNodeFreloc6kM_i_;
-text: .text%__1cWsize_exception_handler6F_I_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cNPhasePeepholeMdo_transform6M_v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cRsarL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cFStateM_sub_Op_CmpL6MpknENode__v_;
-text: .text%__1cJloadSNodeFreloc6kM_i_;
-text: .text%__1cFStateN_sub_Op_LoadS6MpknENode__v_;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cOCompiledRFrame2t6MnFframe_pnKJavaThread_pnGRFrame__v_;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cNxorI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRmethodDataOopDescPpost_initialize6MpnOBytecodeStream__v_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_Return6MpknENode__v_;
-text: .text%__1cHRetNodeFreloc6kM_i_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
-text: .text%__1cQleaPIdxScaleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRindIndexScaleOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cNandI_rRegNodeErule6kM_I_;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNmodI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_;
-text: .text%__1cQsalI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEcmpq6MnHAddress_i_v_;
-text: .text%__1cNloadConP0NodeFreloc6kM_i_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOMacroAssemblerKincrementq6MpnMRegisterImpl_i_v_;
-text: .text%__1cRsarI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cNprefetchwNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNprefetchwNodeFreloc6kM_i_;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cKstoreCNodeFreloc6kM_i_;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cHi2bNodeMideal_Opcode6kM_i_;
-text: .text%__1cNLocationValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_;
-text: .text%__1cNsubL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateN_sub_Op_LoadB6MpknENode__v_;
-text: .text%__1cNnegI_rRegNodeErule6kM_I_;
-text: .text%__1cNFingerprinterJdo_double6M_v_;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cKcmpOpUOperEless6kM_i_;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%__1cLBoxLockNodeEhash6kM_I_;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cWandI_rReg_imm65535NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWandI_rReg_imm65535NodeErule6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cNcmovI_regNodeErule6kM_I_;
-text: .text%__1cRsalL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNGrowableArray4CpnKInlineTree__Egrow6Mi_v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNmodL_rRegNodeErule6kM_I_;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cNxorI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLMachUEPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__;
-text: .text%__1cNtestL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_;
-text: .text%__1cHRetDataKcell_count6M_i_;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_;
-text: .text%__1cMdecI_memNodePoper_input_base6kM_I_;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cScompP_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadBNodeFreloc6kM_i_;
-text: .text%__1cUandI_rReg_imm255NodeMideal_Opcode6kM_i_;
-text: .text%__1cScompP_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorJdo_aaload6MpnQciBytecodeStream__v_;
-text: .text%__1cNaddL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsubI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cRsarL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNsubL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cRmulL_rReg_immNodeMcisc_operand6kM_i_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cFStateM_sub_Op_AddL6MpknENode__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorMdo_checkcast6MpnQciBytecodeStream__v_;
-text: .text%__1cMrax_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cNmodL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cMincI_memNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cNandI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTno_rax_rdx_RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJAssemblerGmovzwl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cRmulL_rReg_immNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%__1cRxorI_rReg_memNodeErule6kM_I_;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cRsarI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MulL6MpknENode__v_;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cNnegI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMincI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cRandL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRaddI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_;
-text: .text%__1cPcmovI_reg_lNodeErule6kM_I_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cIimmDOperJconstantD6kM_d_;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNGrowableArray4CpnIciObject__2t6MpnFArena_iirk1_v_;
-text: .text%__1cNGrowableArray4CpnIciObject__JappendAll6Mpk2_v_;
-text: .text%__1cNGrowableArray4CpnIciMethod__2t6MpnFArena_iirk1_v_;
-text: .text%__1cNGrowableArray4CpnHciKlass__2t6MpnFArena_iirk1_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cNGrowableArray4CpnPciReturnAddress__2t6MpnFArena_iirk1_v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cIJVMStateNmonitor_depth6kM_i_;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cFStateQ_sub_Op_FastLock6MpknENode__v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvD2I_reg_regNodeErule6kM_I_;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cLVtableStubsPstub_containing6FpC_pnKVtableStub__;
-text: .text%__1cNFingerprinterIdo_float6M_v_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUjmpLoopEnd_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUjmpLoopEnd_shortNodeMideal_Opcode6kM_i_;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_;
-text: .text%__1cNcmovI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdecI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMrax_RegLOperEtype6kM_pknEType__;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__;
-text: .text%__1cNtestP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmovI_reg_gNodeHtwo_adr6kM_I_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNxorI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cMstoreSSPNodeMideal_Opcode6kM_i_;
-text: .text%__1cINodeHashIround_up6FI_I_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cRaddP_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cRaddI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cSInterpreterCodeletKinitialize6MpkcnJBytecodesECode__v_;
-text: .text%__1cNxorI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNaddP_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cOloadConL32NodeErule6kM_I_;
-text: .text%__1cHi2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cNandI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cOleaPIdxOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cNtestU_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cQshrI_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cKloadUBNodeErule6kM_I_;
-text: .text%__1cQsalL_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cPstoreImmI16NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cRmulL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cPcmovI_reg_lNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethod2n6FLi_pv_;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cFParseQjump_if_fork_int6MpnENode_2nIBoolTestEmask__pnGIfNode__;
-text: .text%__1cWandI_rReg_imm65535NodeHtwo_adr6kM_I_;
-text: .text%__1cINodeHashUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileWprint_compile_messages6M_v_;
-text: .text%__1cQsalI_rReg_CLNodeErule6kM_I_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cIciMethodRbuild_method_data6MnMmethodHandle__v_;
-text: .text%__1cSstring_compareNodeErule6kM_I_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cScompI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cOcompI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNsubL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cWpoll_return_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cPsalL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHMatcherbDinterpreter_frame_pointer_reg6F_i_;
-text: .text%__1cQorI_rReg_immNodeErule6kM_I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cRmulI_rReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cJChunkPoolMfree_all_but6ML_v_;
-text: .text%__1cRsalL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cNdecL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOemit_d64_reloc6FrnKCodeBuffer_lrknQRelocationHolder_i_v_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeSalignment_required6kM_i_;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__;
-text: .text%__1cQorI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_L_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cNdivL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cScompL_rReg_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cNGrowableArray4CL_Efind6kMrkL_i_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cKPerfMemoryFalloc6FL_pc_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_LL_v_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cPcmovI_reg_gNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cOjmpLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_ReleaseStringUTFChars: jni.o;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cFStateW_sub_Op_CountedLoopEnd6MpknENode__v_;
-text: .text%__1cNFingerprinterIdo_short6M_v_;
-text: .text%__1cJAssemblerEincq6MpnMRegisterImpl__v_;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cScompU_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cNtestL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cWCallLeafNoFPDirectNodeFreloc6kM_i_;
-text: .text%__1cFStateU_sub_Op_CallLeafNoFP6MpknENode__v_;
-text: .text%JVM_FindLibraryEntry;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__;
-text: .text%__1cNmodI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRxorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRmulI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMachOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cIMachOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cNandI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNnegI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateS_sub_Op_ClearArray6MpknENode__v_;
-text: .text%__1cIXorINodeJideal_reg6kM_I_;
-text: .text%__1cMrep_stosNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_StoreL6MpknENode__v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreLNodeFreloc6kM_i_;
-text: .text%__1cMstoreSSPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRsubI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cScompU_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNFingerprinterHdo_char6M_v_;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNGrowableArray4CpnHoopDesc__Uclear_and_deallocate6M_v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cNGrowableArray4CpnJNode_List__Egrow6Mi_v_;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MLnHGCCauseFCause__v_;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cNGrowableArray4CpnFKlass__Uclear_and_deallocate6M_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cLPSMarkSweepPallocate_stacks6F_v_;
-text: .text%__1cLPSMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase36F_v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cLPSMarkSweepbAreset_millis_since_last_gc6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cJPSPermGenQcompute_new_size6ML_v_;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQorI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cNandI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPstoreImmI16NodeFreloc6kM_i_;
-text: .text%__1cPstoreImmI16NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cIPSOldGenOgen_size_limit6M_L_;
-text: .text%__1cUPSAdaptiveSizePolicybQpromo_increment_with_supplement_aligned_up6ML_L_;
-text: .text%__1cUParallelScavengeHeapOresize_old_gen6ML_v_;
-text: .text%__1cUPSAdaptiveSizePolicyPpromo_increment6MLI_L_;
-text: .text%__1cWandI_rReg_imm65535NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPSOldGenGresize6ML_v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cKarrayKlassOset_alloc_size6MI_v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cNstoreImmINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cNcmovI_regNodeHtwo_adr6kM_I_;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cIGraphKitbKcombine_and_pop_all_exception_states6M_pnNSafePointNode__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cFStateP_sub_Op_Rethrow6MpknENode__v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_;
-text: .text%__1cNdecL_rRegNodeErule6kM_I_;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_;
-text: .text%__1cNstoreImmINodeFreloc6kM_i_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cURethrowExceptionNodeFreloc6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateX_sub_Op_CompareAndSwapL6MpknENode__v_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_;
-text: .text%__1cTcompareAndSwapLNodeFreloc6kM_i_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOcompP_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cMmulD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cPcmpD_cc_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKciTypeFlowLStateVectorEtrap6MpnQciBytecodeStream_pnHciKlass_i_v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Ml_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cRxorI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cISubLNodeJideal_reg6kM_I_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cRsalL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cNaddP_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cNcmovI_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cPcmpD_cc_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cTconvF2D_reg_memNodePoper_input_base6kM_I_;
-text: .text%__1cNdivL_rRegNodeErule6kM_I_;
-text: .text%__1cRmulL_rReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cQsalL_rReg_CLNodeErule6kM_I_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cRxorI_rReg_immNodeErule6kM_I_;
-text: .text%__1cZCallDynamicJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cPcmovI_reg_lNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cNcmovP_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQorI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cUjmpLoopEnd_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cUjmpLoopEnd_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPCountedLoopNodeGstride6kM_pnENode__;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cNnegI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLencode_copy6FrnKCodeBuffer_ii_v_;
-text: .text%__1cPcmpD_cc_regNodeMcisc_operand6kM_i_;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_;
-text: .text%__1cPcmpD_cc_regNodeErule6kM_I_;
-text: .text%__1cNtestU_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_rReg_immNodeErule6kM_I_;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_;
-text: .text%__1cRxorI_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTno_rax_rdx_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQsalI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRxorI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cOloadConL32NodeMideal_Opcode6kM_i_;
-text: .text%__1cNGrowableArray4Cpv_Egrow6Mi_v_;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cNGrowableArray4Cl_Egrow6Mi_v_;
-text: .text%__1cLResourceObj2n6FLn0APallocation_type__pv_;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cScompL_rReg_immNodeErule6kM_I_;
-text: .text%__1cQshrI_rReg_CLNodeErule6kM_I_;
-text: .text%__1cFStateT_sub_Op_ThreadLocal6MpknENode__v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cMmulF_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRandL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUandI_rReg_imm255NodeErule6kM_I_;
-text: .text%__1cRmulL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNaddP_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHMatcherbAinterpreter_method_oop_reg6F_i_;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cIMulINodeJideal_reg6kM_I_;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cFParseTjump_if_always_fork6Mii_v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cQComputeCallStackIdo_float6M_v_;
-text: .text%__1cKciTypeFlowLStateVectorLdo_newarray6MpnQciBytecodeStream__v_;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmovI_reg_lNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cNFingerprinterHdo_byte6M_v_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cMmulD_immNodeErule6kM_I_;
-text: .text%__1cMaddF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRxorI_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cNdecL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMrsi_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRindIndexScaleOperNconstant_disp6kM_i_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cNtestI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cOleaPIdxOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cNmulI_rRegNodeErule6kM_I_;
-text: .text%__1cNGrowableArray4Ci_Uclear_and_deallocate6M_v_;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIModINodeJideal_reg6kM_I_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cPshrL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKmul_hiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEnegq6MpnMRegisterImpl__v_;
-text: .text%__1cNmodL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOjmpLoopEndNodeGnegate6M_v_;
-text: .text%__1cQorI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPsalL_rReg_1NodeErule6kM_I_;
-text: .text%__1cPcmpD_cc_immNodeErule6kM_I_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cUandI_rReg_imm255NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cPno_rax_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMrdx_RegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmulI_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cbFunnecessary_membar_volatileNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnOMethodLivenessKBasicBlock__Egrow6Mi_v_;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cNdivL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotPOperFscale6kM_i_;
-text: .text%__1cNmulI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cPsarL_rReg_2NodeErule6kM_I_;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMaddF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__;
-text: .text%__1cTconvD2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMstoreSSPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreBNodeFreloc6kM_i_;
-text: .text%__1cQshrI_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cRandL_rReg_immNodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cKmul_hiNodeErule6kM_I_;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6ML_v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cILogDNodeGOpcode6kM_i_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cHi2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLimmI_24OperJnum_edges6kM_I_;
-text: .text%__1cRxorI_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPsalI_rReg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cXPipeline_Use_Cycle_Mask2t6MI_v_;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cIciMethodOresolve_invoke6MpnHciKlass_2_p0_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPsalL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cZCallDynamicJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cFStateX_sub_Op_CallDynamicJava6MpknENode__v_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cIMinINodeJideal_reg6kM_I_;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTconvI2F_reg_regNodeErule6kM_I_;
-text: .text%__1cNcmovP_regNodeErule6kM_I_;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%JVM_MonitorWait;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cUPSMarkSweepDecoratorbDadvance_destination_decorator6F_v_;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_2_v_;
-text: .text%__1cTconvF2D_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMstoreSSPNodeErule6kM_I_;
-text: .text%__1cOloadConL32NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpUOperFequal6kM_i_;
-text: .text%__1cHRegMask2t6M_v_;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cNGrowableArray4Ci_2t6MpnFArena_iirki_v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cJAssemblerFcmovq6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cMmulD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_MinI6MpknENode__v_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cScompL_rReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cUandI_rReg_imm255NodeHtwo_adr6kM_I_;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_2_v_;
-text: .text%__1cNGrowableArray4CpnIciObject__Egrow6Mi_v_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cPcmpD_cc_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cMdecI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_;
-text: .text%__1cQsalL_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Ml_v_;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddI_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cMmulF_immNodeErule6kM_I_;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cOjmpLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FLi_pnGThread__;
-text: .text%__1cMrax_RegIOperEtype6kM_pknEType__;
-text: .text%__1cOjmpLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateW_sub_Op_MemBarVolatile6MpknENode__v_;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cMincI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcLii_2_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cOloadConL32NodeLbottom_type6kM_pknEType__;
-text: .text%__1cRxorI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMmulD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovP_regNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJScopeDescTdecode_scope_values6Mi_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQsalI_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cPsarL_rReg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cIimmIOperJnum_edges6kM_I_;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CpnKciTypeFlowFBlock__Gremove6Mrk2_v_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cMnegD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cMdivD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsarL_rReg_63NodeErule6kM_I_;
-text: .text%__1cRsubL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_L_;
-text: .text%__1cRsubL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cNstoreImmPNodeMideal_Opcode6kM_i_;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cQComputeCallStackHdo_char6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cMaddF_regNodeErule6kM_I_;
-text: .text%__1cNdecL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMdecI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFStateN_sub_Op_LoadF6MpknENode__v_;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNaddI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGbswapl6MpnMRegisterImpl__v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cMincI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cTconvD2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerHpop_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cMelapsedTimer2t6M_v_;
-text: .text%__1cMdivD_immNodeErule6kM_I_;
-text: .text%__1cTconvI2D_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cPcmpD_cc_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMaddD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cNdivI_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUandI_rReg_imm255NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNdivL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cKcastPPNodePoper_input_base6kM_I_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadDNodeErule6kM_I_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cPsarL_rReg_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cMmulD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulF_memNodePoper_input_base6kM_I_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cMaddF_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cQshrL_rReg_CLNodeMideal_Opcode6kM_i_;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRaddI_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cMmulF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cQsarL_rReg_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cPcmpF_cc_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_;
-text: .text%__1cPcmpD_cc_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMlogD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvL2FNodeGOpcode6kM_i_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cMPipeline_Use2t6MIIIpnUPipeline_Use_Element__v_;
-text: .text%__1cKstorePNodeErule6kM_I_;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_;
-text: .text%__1cMstoreSSPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSMachBreakpointNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRsubL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNtestU_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPsalL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cNmodL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvF2D_reg_regNodeErule6kM_I_;
-text: .text%__1cQsalI_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_rReg_memNodeErule6kM_I_;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMaddF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRxorI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MLL_v_;
-text: .text%__1cRaddL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%JVM_IsArrayClass;
-text: .text%__1cJAssemblerEsbbq6MnHAddress_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJAssemblerEaddq6MnHAddress_i_v_;
-text: .text%JVM_GetClassName;
-text: .text%__1cTconvF2D_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cNmulI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cRsubL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRaddL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cPshrL_rReg_1NodeErule6kM_I_;
-text: .text%__1cQshrI_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_RegD6MpknENode__v_;
-text: .text%__1cQorI_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cJAssemblerEaddq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%JVM_Open;
-text: .text%__1cHRegMask2t6Miiiiiii_v_;
-text: .text%__1cNsubI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPsarL_rReg_2NodeHtwo_adr6kM_I_;
-text: .text%__1cQConstantIntValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cFStateM_sub_Op_ConD6MpknENode__v_;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%__1cPcmpF_cc_regNodeMcisc_operand6kM_i_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cMmulF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateM_sub_Op_RegF6MpknENode__v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovP_regNodeHtwo_adr6kM_I_;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cScompL_rReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvF2D_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMTailCallNode2t6MpnENode_222222_v_;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cSTailCalljmpIndNodeFreloc6kM_i_;
-text: .text%__1cOloadConL32NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeErule6kM_I_;
-text: .text%__1cLvframeArrayRregister_location6kMi_pC_;
-text: .text%__1cQorI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateQ_sub_Op_TailCall6MpknENode__v_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cMaddD_immNodeErule6kM_I_;
-text: .text%__1cPshrL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cMaddF_immNodeErule6kM_I_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cFStateM_sub_Op_MaxI6MpknENode__v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cCosScurrent_stack_size6F_L_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cJloadFNodeFreloc6kM_i_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cKstoreFNodeFreloc6kM_i_;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_;
-text: .text%__1cNcmovL_memNodeErule6kM_I_;
-text: .text%__1cFStateO_sub_Op_StoreF6MpknENode__v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cNcmovL_regNodeMcisc_operand6kM_i_;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cTconvL2D_reg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNdivI_rRegNodeErule6kM_I_;
-text: .text%__1cNdecL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNGrowableArray4CpknEType__2t6MpnFArena_iirk2_v_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cJAssemblerExorq6MpnMRegisterImpl_2_v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cOcmovI_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cMsubD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cPcmpF_cc_regNodeErule6kM_I_;
-text: .text%__1cNmodI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconvL2D_reg_memNodePoper_input_base6kM_I_;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cMmulF_immNodeHtwo_adr6kM_I_;
-text: .text%__1cQsarL_rReg_63NodeHtwo_adr6kM_I_;
-text: .text%__1cMsubF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvI2L_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cTconvF2I_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cRandI_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cRandI_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%JVM_NativePath;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodTinc_decompile_count6M_v_;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cMResourceMarkNreset_to_mark6M_v_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cMmulD_regNodeErule6kM_I_;
-text: .text%__1cMdivD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vL_v_;
-text: .text%__1cPcmpD_cc_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2D_reg_regNodeErule6kM_I_;
-text: .text%__1cNcmovL_memNodePoper_input_base6kM_I_;
-text: .text%__1cNdivL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpD_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateT_sub_Op_CallRuntime6MpknENode__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_;
-text: .text%__1cKcastPPNodeHtwo_adr6kM_I_;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cMsubD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsalL_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cVCallRuntimeDirectNodeFreloc6kM_i_;
-text: .text%__1cIGraphKitIset_jvms6MpnIJVMState__v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cOsalI_mem_1NodePoper_input_base6kM_I_;
-text: .text%__1cMLinkResolverbEresolve_interface_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cMrdi_RegIOperEtype6kM_pknEType__;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cPsalL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMResourceMark2t6M_v_;
-text: .text%__1cQshrI_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescVdecode_monitor_values6Mi_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cOMacroAssemblerKincrementl6MpnMRegisterImpl_i_v_;
-text: .text%__1cFframebCinterpreter_frame_set_locals6Mpl_v_;
-text: .text%__1cFframebHinterpreter_frame_set_monitor_end6MpnPBasicObjectLock__v_;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cFframebCinterpreter_frame_set_method6MpnNmethodOopDesc__v_;
-text: .text%__1cMmulF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cFframebBinterpreter_frame_sender_sp6kM_pl_;
-text: .text%__1cMaddF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cKstoreINodeErule6kM_I_;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cPcmovI_reg_gNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cODeoptimizationVtrap_state_add_reason6Fii_i_;
-text: .text%__1cDhpiFclose6Fi_i_;
-text: .text%__1cJMemRegionFminus6kM0_0_;
-text: .text%__1cMmulD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovL_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerWupdate_mdp_by_constant6MpnMRegisterImpl_i_v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__;
-text: .text%__1cTconvI2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2F_reg_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%JVM_Close;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQshrL_rReg_CLNodeErule6kM_I_;
-text: .text%__1cTconvF2D_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cOcmovI_regUNodeMcisc_operand6kM_i_;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cKcastPPNodeErule6kM_I_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cJAssemblerGmovslq6MpnMRegisterImpl_2_v_;
-text: .text%__1cRandI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRConstantLongValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cMsubD_regNodeErule6kM_I_;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cNmulI_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLRuntimeStub2n6FLI_pv_;
-text: .text%__1cMmulF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbFloadConL_0x6666666666666667NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConL32NodeHsize_of6kM_I_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cRaddL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cNdecI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_ConF6MpknENode__v_;
-text: .text%__1cMloadConFNodeHsize_of6kM_I_;
-text: .text%__1cPsarL_rReg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsarL_rReg_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPoldgetTimeNanos6F_x_;
-text: .text%__1cKmul_hiNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cTconvI2D_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationRgather_statistics6Fn0ALDeoptReason_n0ALDeoptAction_nJBytecodesECode__v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cOcmovI_regUNodeErule6kM_I_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cXpartialSubtypeCheckNodeMideal_Opcode6kM_i_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLvframeArrayZdeallocate_monitor_chunks6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cMmulD_memNodePoper_input_base6kM_I_;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cOcompL_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cMaddF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_;
-text: .text%__1cLconvI2BNodeErule6kM_I_;
-text: .text%__1cTconvF2I_reg_regNodeErule6kM_I_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddL_mem_rRegNodePoper_input_base6kM_I_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cMmulL_memNodePoper_input_base6kM_I_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cMaddF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cMincL_memNodePoper_input_base6kM_I_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cMmulL_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMaddD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKloadUBNodeFreloc6kM_i_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cMmulD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cSCardTableExtensionbEresize_covered_region_by_start6MnJMemRegion__v_;
-text: .text%__1cQshrL_rReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddL_mem_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMlogD_regNodeErule6kM_I_;
-text: .text%__1cNmulI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMdecI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsalL_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKemit_break6FrnKCodeBuffer__v_;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cMsubF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMdecI_memNodeFreloc6kM_i_;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cNstoreImmPNodePoper_input_base6kM_I_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cTconvL2F_reg_regNodeMcisc_operand6kM_i_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cFStateM_sub_Op_CmpD6MpknENode__v_;
-text: .text%__1cKcastPPNodeMideal_Opcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cPshrL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cbCcatch_cleanup_fix_all_inputs6FpnENode_11_v_: lcm.o;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNdivI_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetComponentType;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_;
-text: .text%__1cJAssemblerEsbbq6MpnMRegisterImpl_i_v_;
-text: .text%__1cNcmovL_memNodeMideal_Opcode6kM_i_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%jni_EnsureLocalCapacity: jni.o;
-text: .text%__1cMaddF_memNodePoper_input_base6kM_I_;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%JVM_NewArray;
-text: .text%JVM_FreeMemory;
-text: .text%JVM_TotalMemory;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cMincI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cMmulF_memNodeErule6kM_I_;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cRaddL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTconvL2F_reg_regNodeErule6kM_I_;
-text: .text%__1cKPSYoungGenLpost_resize6M_v_;
-text: .text%__1cNcmovL_regNodeErule6kM_I_;
-text: .text%__1cRandI_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMincL_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cSInterpreterRuntimeJnote_trap6FpnKJavaThread_ipnGThread__v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cIModLNodeJideal_reg6kM_I_;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cMaddF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_DivL6MpknENode__v_;
-text: .text%__1cTconvL2D_reg_memNodeErule6kM_I_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cFStateP_sub_Op_ConvF2D6MpknENode__v_;
-text: .text%__1cMmulL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cMincI_memNodeFreloc6kM_i_;
-text: .text%__1cPcmpF_cc_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMsubF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMsubF_memNodePoper_input_base6kM_I_;
-text: .text%__1cTconvF2D_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_DefineClass;
-text: .text%__1cMaddF_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerEshrq6MpnMRegisterImpl_i_v_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cTleaPIdxScaleOffNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cOsalI_mem_1NodeMideal_Opcode6kM_i_;
-text: .text%__1cMmulF_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cTconvD2F_reg_regNodeMcisc_operand6kM_i_;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cTconvF2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cTconvF2D_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovD_regUNodeMideal_Opcode6kM_i_;
-text: .text%__1cMsubD_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cPshrL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_immNodeErule6kM_I_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cNcmovL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOcmovD_regUNodeErule6kM_I_;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cMorL_rRegNodeMideal_Opcode6kM_i_;
-text: .text%__1cTconvD2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompL_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cXpartialSubtypeCheckNodeErule6kM_I_;
-text: .text%__1cOstackSlotDOperEtype6kM_pknEType__;
-text: .text%__1cLloadSSDNodeErule6kM_I_;
-text: .text%__1cMsubD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%__1cTconvF2D_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cMloadConFNodeKconst_size6kM_i_;
-text: .text%__1cMorL_rRegNodeMcisc_operand6kM_i_;
-text: .text%__1cMmulD_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cMaddD_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_;
-text: .text%__1cMloadConFNodeFreloc6kM_i_;
-text: .text%__1cILogDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cNstoreImmPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_;
-text: .text%__1cMlogD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMaddD_regNodeMcisc_operand6kM_i_;
-text: .text%__1cMaddD_regNodeErule6kM_I_;
-text: .text%__1cScompL_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_;
-text: .text%__1cJimmP0OperIconstant6kM_l_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%JVM_GetClassContext;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cMsubF_regNodeErule6kM_I_;
-text: .text%__1cRsubL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cTconvL2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMmulF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeMideal_Opcode6kM_i_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cJAssemblerFcmovq6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMmulD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMaddF_immNodeHtwo_adr6kM_I_;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cTconvL2D_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeErule6kM_I_;
-text: .text%__1cVMoveL2D_reg_stackNodeMideal_Opcode6kM_i_;
-text: .text%__1cFStateM_sub_Op_MulD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_ModL6MpknENode__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cQshrL_rReg_CLNodeHtwo_adr6kM_I_;
-text: .text%__1cKJavaThreadbOcheck_special_condition_for_native_trans6Fp0_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__;
-text: .text%__1cMnegF_regNodeErule6kM_I_;
-text: .text%__1cMsubF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvD2F_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cXpartialSubtypeCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_;
-text: .text%__1cKcastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMmulD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNmulI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cScompL_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_data_at6MpnMRegisterImpl_i2_v_;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cMmulF_regNodeErule6kM_I_;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_;
-text: .text%__1cFStateM_sub_Op_MulF6MpknENode__v_;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cMloadConDNodeHsize_of6kM_I_;
-text: .text%__1cOcmovI_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cMaddD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cMloadConDNodeKconst_size6kM_i_;
-text: .text%__1cLConvL2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOstackSlotDOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cTconvF2D_reg_memNodeFreloc6kM_i_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMloadConDNodeFreloc6kM_i_;
-text: .text%JVM_Lseek;
-text: .text%__1cPsarL_rReg_1NodeErule6kM_I_;
-text: .text%__1cPsarL_rReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotDOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cMmulF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMlogD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_AddF6MpknENode__v_;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cFStateP_sub_Op_StrComp6MpknENode__v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cScompL_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cPcmpF_cc_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_;
-text: .text%__1cQmulI_mem_immNodePoper_input_base6kM_I_;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cJAssemblerEsubq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%jni_GetEnv;
-text: .text%JVM_NanoTime;
-text: .text%__1cRmulI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cQmulI_mem_immNodeMideal_Opcode6kM_i_;
-text: .text%__1cJAssemblerFpushq6MnHAddress__v_;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_;
-text: .text%__1cPcmpD_cc_immNodeKconst_size6kM_i_;
-text: .text%__1cMorL_rRegNodeErule6kM_I_;
-text: .text%__1cScompP_rReg_memNodePoper_input_base6kM_I_;
-text: .text%__1cScompP_rReg_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cNdivI_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorOdo_null_assert6MpnHciKlass__v_;
-text: .text%__1cMsubD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_;
-text: .text%__1cNGrowableArray4CpnGciType__Egrow6Mi_v_;
-text: .text%__1cMdivD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cPcmpD_cc_immNodeFreloc6kM_i_;
-text: .text%__1cMmulD_memNodeErule6kM_I_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cMmulF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cNTemplateTableQvolatile_barrier6FnJAssemblerQMembar_mask_bits__v_;
-text: .text%__1cVMoveL2D_reg_stackNodeErule6kM_I_;
-text: .text%__1cRsalI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__;
-text: .text%__1cKPSYoungGenRavailable_to_live6M_L_;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNcmovL_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSstore_to_stackslot6FrnKCodeBuffer_iii_v_;
-text: .text%__1cQshrL_rReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_;
-text: .text%__1cMmulD_immNodeFreloc6kM_i_;
-text: .text%__1cQmulI_mem_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cRaddI_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMlogD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCardTableModRefBSYcommitted_unique_to_self6kMinJMemRegion__1_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cFStateN_sub_Op_LoadD6MpknENode__v_;
-text: .text%__1cTconvL2F_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cPcmpF_cc_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKPSYoungGenUavailable_to_min_gen6M_L_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cKPSYoungGenQlimit_gen_shrink6ML_L_;
-text: .text%__1cTconvI2D_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_ConvI2F6MpknENode__v_;
-text: .text%__1cMmulD_immNodeKconst_size6kM_i_;
-text: .text%__1cMmulF_immNodeFreloc6kM_i_;
-text: .text%__1cJloadBNodeHsize_of6kM_I_;
-text: .text%__1cOcompI_rRegNodeHsize_of6kM_I_;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cJloadPNodeHsize_of6kM_I_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cNcmovL_regNodeHtwo_adr6kM_I_;
-text: .text%__1cLloadSSDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cVVM_ParallelGCSystemGC2t6MIInHGCCauseFCause__v_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cMsubD_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOcmovI_regUNodeHtwo_adr6kM_I_;
-text: .text%__1cMaddD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerGmovsbl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMorL_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cQmulI_mem_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKimmL10OperJnum_edges6kM_I_;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cMsubD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cRsubI_rReg_memNodeHsize_of6kM_I_;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%JVM_GC;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cIPSOldGenGexpand6ML_v_;
-text: .text%__1cIPSOldGenXexpand_and_cas_allocate6ML_pnIHeapWord__;
-text: .text%__1cPsarL_rReg_1NodeHtwo_adr6kM_I_;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cMsubF_regNodeHtwo_adr6kM_I_;
-text: .text%__1cRaddL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cVMoveL2D_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompP_rReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOGenerateOopMapGdo_jsr6Mi_v_;
-text: .text%__1cMmulF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOcmovD_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovL_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMmulF_immNodeKconst_size6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cMdecI_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cJloadDNodeFreloc6kM_i_;
-text: .text%__1cMincL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cTconvD2F_reg_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cMmulD_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMsubF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovI_regUNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cMsubF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJMemRegion2t6M_v_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_;
-text: .text%__1cHnmethodVinvalidate_osr_method6M_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOBasicHashtable2t6Mii_v_;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cMdivD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_Sleep;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOstackSlotIOperFscale6kM_i_;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cLloadSSINodeErule6kM_I_;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLConvL2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_;
-text: .text%__1cRandI_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%jni_GetJavaVM: jni.o;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cNGrowableArray4CpnIPerfData__Praw_at_put_grow6Mirk14_v_;
-text: .text%__1cFciEnvOrecord_failure6Mpkc_v_;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOstackSlotDOperFscale6kM_i_;
-text: .text%__1cOstackSlotDOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cOcmovI_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvD2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvF2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvL2F_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cTconvL2D_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXpartialSubtypeCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cRaddI_rReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cScompP_rReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cMsubF_memNodeErule6kM_I_;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cNdivI_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_;
-text: .text%__1cFframebFset_interpreter_frame_sender_sp6Mpl_v_;
-text: .text%__1cPsarL_rReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cMaddF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cNSpaceCounters2t6MpkciLpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cOcompiledVFrameUresolve_monitor_lock6kMnILocation__pnJBasicLock__;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_;
-text: .text%__1cMorL_rRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cMaddD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__;
-text: .text%__1cZCompiledArgumentOopFinderDset6MinJBasicType__v_;
-text: .text%__1cNstoreImmPNodeFreloc6kM_i_;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cNReservedSpace2t6ML_v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%Unsafe_GetNativeByte;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cFStateP_sub_Op_ConvD2I6MpknENode__v_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cINegDNodeJideal_reg6kM_I_;
-text: .text%__1cTconvF2D_reg_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_;
-text: .text%__1cNandI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pLi_v_;
-text: .text%__1cMsubF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMmulL_memNodeFreloc6kM_i_;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cFStateM_sub_Op_NegD6MpknENode__v_;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cNstoreImmPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivINodeJideal_reg6kM_I_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cMaddF_memNodeErule6kM_I_;
-text: .text%__1cOcmovD_regUNodeHtwo_adr6kM_I_;
-text: .text%__1cMaddF_memNodeHtwo_adr6kM_I_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cMorL_rRegNodeHtwo_adr6kM_I_;
-text: .text%__1cOMacroAssemblerNpop_CPU_state6M_v_;
-text: .text%__1cOMacroAssemblerOpush_CPU_state6M_v_;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cOMacroAssemblerMpop_IU_state6M_v_;
-text: .text%__1cOMacroAssemblerNpush_IU_state6M_v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cTconvL2D_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cRaddL_rReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMaddF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVMoveF2I_reg_stackNodeErule6kM_I_;
-text: .text%__1cJAssemblerEandq6MpnMRegisterImpl_2_v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRComputeEntryStackJdo_double6M_v_;
-text: .text%__1cMaddD_regNodeHtwo_adr6kM_I_;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cMsubD_immNodeHtwo_adr6kM_I_;
-text: .text%__1cKPSScavengeZclean_up_failed_promotion6F_v_;
-text: .text%JVM_Available;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJAssemblerFimulq6MpnMRegisterImpl_2_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cKPSYoungGenOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cISubDNodeJideal_reg6kM_I_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cMmulI_memNodePoper_input_base6kM_I_;
-text: .text%__1cNGrowableArray4CpnLmarkOopDesc__Uclear_and_deallocate6M_v_;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cRaddL_rReg_memNodeErule6kM_I_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRaddL_rReg_memNodeHtwo_adr6kM_I_;
-text: .text%__1cMmulF_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cMaddF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cVMoveF2I_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerHfxrstor6MnHAddress__v_;
-text: .text%__1cJAssemblerGfxsave6MnHAddress__v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cNGCTaskManagerGthread6MI_pnMGCTaskThread__;
-text: .text%__1cRConstantLongValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cMmulD_memNodeHtwo_adr6kM_I_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cNcmovL_memNodeHtwo_adr6kM_I_;
-text: .text%__1cFStateM_sub_Op_AddD6MpknENode__v_;
-text: .text%__1cMmulI_memNodeMideal_Opcode6kM_i_;
-text: .text%__1cScompL_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cLloadSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cMmulI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcmovD_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cNnegI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cFStateP_sub_Op_ConvI2D6MpknENode__v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cJCodeCachebCmake_marked_nmethods_zombies6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cFStateM_sub_Op_CmpF6MpknENode__v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cJAssemblerGmovzbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cILogDNodeJideal_reg6kM_I_;
-text: .text%__1cRaddL_mem_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMincL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cNcmovL_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cMmulD_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cMaddF_immNodeKconst_size6kM_i_;
-text: .text%__1cVMoveL2D_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvbNArrayIndexOutOfBoundsException_instance6M_pnKciInstance__;
-text: .text%__1cMsubD_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddF_immNodeFreloc6kM_i_;
-text: .text%__1cMaddD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMaddD_immNodeFreloc6kM_i_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cMaddD_immNodeKconst_size6kM_i_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cOsalI_mem_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSPSPromotionManager2t6M_v_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cMsubF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cFStateM_sub_Op_SubF6MpknENode__v_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cKstoreBNodeErule6kM_I_;
-text: .text%__1cKVtableStub2n6FLi_pv_;
-text: .text%__1cJAssemblerEdecq6MpnMRegisterImpl__v_;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_L_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cJTimeStamp2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_2i_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorKpass_float6M_v_;
-text: .text%__1cISubFNodeJideal_reg6kM_I_;
-text: .text%__1cNGrowableArray4CpnIPerfData__Egrow6Mi_v_;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_;
-text: .text%__1cFStateM_sub_Op_LogD6MpknENode__v_;
-text: .text%__1cLloadSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_SubD6MpknENode__v_;
-text: .text%JVM_RegisterSignal;
-text: .text%JVM_FindSignal;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cMorL_rRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cLloadSSDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJArgumentsObuild_jvm_args6Fpkc_v_;
-text: .text%__1cOLibraryCallKitMpop_math_arg6M_pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cMVM_OperationNdoit_epilogue6M_v_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cRaddI_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cQmulI_mem_immNodeFreloc6kM_i_;
-text: .text%__1cNincI_rRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__;
-text: .text%__1cUConstantOopReadValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cRaddI_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdivD_immNodeKconst_size6kM_i_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cNGrowableArray4CpnTDerivedPointerEntry__Egrow6Mi_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_;
-text: .text%__1cCosHrealloc6FpvL_1_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cNstoreImmBNodeErule6kM_I_;
-text: .text%__1cNstoreImmINodeErule6kM_I_;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cNGrowableArray4CpnNmethodOopDesc__Egrow6Mi_v_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cNGrowableArray4CpC_Egrow6Mi_v_;
-text: .text%__1cNGrowableArray4CL_Egrow6Mi_v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Lpkci_v_;
-text: .text%__1cIPSOldGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cQAgentLibraryList2t6M_v_;
-text: .text%__1cMmulF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerGmovsbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerGmovswl6MpnMRegisterImpl_2_v_;
-text: .text%__1cRaddL_mem_rRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJAssemblerGmovzwl6MpnMRegisterImpl_2_v_;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cJAssemblerEcmpq6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFidivq6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cJAssemblerEcdqq6M_v_;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerDorq6MnHAddress_i_v_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cJAssemblerFxaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cNGCTaskManagerKset_thread6MIpnMGCTaskThread__v_;
-text: .text%__1cJAssemblerHldmxcsr6MnHAddress__v_;
-text: .text%__1cKcastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPeriodicTask2t6ML_v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cEMIN24CL_6FTA0_0_;
-text: .text%__1cRCardTableModRefBSbCpar_chunk_heapword_alignment6F_L_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cOMacroAssemblerPcorrected_idivq6MpnMRegisterImpl__i_;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivD6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2F6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2D6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvF2I6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvD2F6MpknENode__v_;
-text: .text%__1cScompP_rReg_memNodeFreloc6kM_i_;
-text: .text%__1cKCastPPNodeJideal_reg6kM_I_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconvL2D_reg_memNodeFreloc6kM_i_;
-text: .text%__1cMdivD_immNodeFreloc6kM_i_;
-text: .text%__1cMmulF_memNodeFreloc6kM_i_;
-text: .text%__1cMaddF_memNodeFreloc6kM_i_;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKciTypeFlowLStateVectorRdo_multianewarray6MpnQciBytecodeStream__v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cNSafepointBlob2n6FLI_pv_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_;
-text: .text%__1cLConvL2FNodeJideal_reg6kM_I_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cJAssemblerEshrq6MpnMRegisterImpl__v_;
-text: .text%__1cMsubF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cJAssemblerEsubq6MnHAddress_i_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cMmulD_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cKNoopGCTaskQcreate_on_c_heap6F_p0_;
-text: .text%__1cJAssemblerFxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerFxchgq6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJAssemblerIcmpxchgl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cQRelocationHolder2t6M_v_;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cJArgumentsSset_bytecode_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cJAssemblerHclflush6MnHAddress__v_;
-text: .text%__1cOAbstractICacheKinitialize6F_v_;
-text: .text%__1cLGCTaskQdDueueQcreate_on_c_heap6F_p0_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cYGCAdaptivePolicyCounters2t6MpkciipnSAdaptiveSizePolicy__v_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cJAssemblerHstmxcsr6MnHAddress__v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_LLL_v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_LLLLLLL_v_;
-text: .text%__1cHOrLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: adaptiveSizePolicy.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKmethods_do6FpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cOMacroAssemblerKdecrementl6MpnMRegisterImpl_i_v_;
-text: .text%__1cKcastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cNMemoryServicebFadd_parallel_scavenge_heap_info6FpnUParallelScavengeHeap__v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cNMemoryServiceXadd_psYoung_memory_pool6FpnKPSYoungGen_pnNMemoryManager_4_v_;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl_3_v_;
-text: .text%__1cFJNIidKdeallocate6Fp0_v_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cYVM_Version_StubGeneratorTgenerate_getPsrInfo6M_pC_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNMemoryServiceVadd_psOld_memory_pool6FpnIPSOldGen_pnNMemoryManager__v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cKPSYoungGenUset_space_boundaries6MLL_v_;
-text: .text%__1cKPSYoungGenbGcompute_initial_space_boundaries6M_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_L_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_L_v_;
-text: .text%__1cKPSYoungGen2t6MLLL_v_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cNMemoryServiceWadd_psPerm_memory_pool6FpnJPSPermGen_pnNMemoryManager__v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_;
-text: .text%__1cIPSOldGen2t6MLLLpkci_v_;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_LLLLpkci_v_;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cSInterpreterRuntimeYthrow_ClassCastException6FpnKJavaThread_pnHoopDesc__v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cKDictionaryKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cKDictionaryKfree_entry6MpnPDictionaryEntry__v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cFStateQ_sub_Op_TailJump6MpknENode__v_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cFStateL_sub_Op_OrL6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_NegF6MpknENode__v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cFStateP_sub_Op_MoveL2D6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cFStateO_sub_Op_CastPP6MpknENode__v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cTConstantDoubleValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FL_v_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_L_;
-text: .text%__1cOtailjmpIndNodeFreloc6kM_i_;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFciEnvXget_or_create_exception6MrpnI_jobject_nMsymbolHandle__pnKciInstance__;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cNGrowableArray4CpnIPerfData__JappendAll6Mpk2_v_;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cMmulD_memNodeFreloc6kM_i_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cMsubD_immNodeFreloc6kM_i_;
-text: .text%__1cMsubF_memNodeFreloc6kM_i_;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cFParseWprofile_null_checkcast6M_v_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cOsalI_mem_1NodeFreloc6kM_i_;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cMmulI_memNodeFreloc6kM_i_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cMincL_memNodeFreloc6kM_i_;
-text: .text%__1cRaddL_mem_rRegNodeFreloc6kM_i_;
-text: .text%__1cRaddL_mem_rRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMincL_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cNcmovL_memNodeFreloc6kM_i_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%JVM_MaxMemory;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cOsalI_mem_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%JVM_Socket;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNGrowableArray4CpnIciMethod__Egrow6Mi_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_L_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cNGrowableArray4CpnPJvmtiRawMonitor__Uclear_and_deallocate6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cbCTwoGenerationCollectorPolicyMrem_set_name6M_nJGenRemSetEName__;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cIUniversePcheck_alignment6FLLpkc_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%Unsafe_PageSize;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_iipc_l_: os_solaris.o;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_;
-text: .text%__1cNExceptionBlob2n6FLI_pv_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNExceptionBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cQUncommonTrapBlob2n6FLI_pv_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQUncommonTrapBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cSDeoptimizationBlob2n6FLI_pv_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: cmsAdaptiveSizePolicy.o;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cCosZset_memory_serialize_page6FpC_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FL_L_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FL_L_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cMsubD_immNodeKconst_size6kM_i_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_;
-text: .text%__1cNcmovL_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNSharedRuntimebBgenerate_class_cast_message6FpnKJavaThread_pkc_pc_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__L_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cJAssemblerDorq6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsarq6MpnMRegisterImpl__v_;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEshlq6MpnMRegisterImpl__v_;
-text: .text%__1cNStubGeneratorQgenerate_initial6M_v_;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_;
-text: .text%__1cNStubGeneratorMgenerate_all6M_v_;
-text: .text%__1cNStubGeneratorSgenerate_d2l_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_d2i_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_f2l_fixup6M_pC_;
-text: .text%__1cNStubGeneratorSgenerate_f2i_fixup6M_pC_;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cNStubGeneratorTgenerate_verify_oop6M_pC_;
-text: .text%__1cNStubGeneratorVgenerate_verify_mxcsr6M_pC_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
--- a/make/solaris/makefiles/reorder_TIERED_i486	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4461 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIIndexSetLalloc_block6M_pn0AIBitBlock__;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cMPhaseChaitinLskip_copies6MpnENode__2_;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cDLRGFscore6kM_d_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cHNTarjanEEVAL6M_p0_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_IrnJVectorSet__v_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cPDictionaryEntrybDprotection_domain_set_oops_do6MpnKOopClosure__v_: dictionary.o;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cJPhaseLiveGgetset6MpnFBlock__pnIIndexSet__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cJPhaseLiveLadd_liveout6MpnFBlock_pnIIndexSet_rnJVectorSet__v_;
-text: .text%__1cMMutableSpaceMcas_allocate6MI_pnIHeapWord__;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cLemit_opcode6FrnKCodeBuffer_i_v_;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cJPhaseLiveKgetfreeset6M_pnIIndexSet__;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cHemit_rm6FrnKCodeBuffer_iii_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_I_: parallelScavengeHeap.o;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cHNTarjanELINK6Mp01_v_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cJPhaseLiveHfreeset6MpknFBlock__v_;
-text: .text%__1cENodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cFState2t6M_v_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cHemit_d86FrnKCodeBuffer_i_v_;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cRSignatureIteratorGexpect6Mc_v_;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cJAssemblerOlocate_operand6FpCn0AMWhichOperand__1_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cKRelocationSpd_address_in_code6M_ppC_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cPciObjectFactoryEfind6MpnHoopDesc_pnNGrowableArray4CpnIciObject____i_;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cLSymbolTableGlookup6MipkciI_pnNsymbolOopDesc__;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cRMachSpillCopyNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMachNodeJemit_size6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cJeRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cJHashtableLhash_symbol6Fpkci_I_: symbolTable.o;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cGTarjanEEVAL6M_p0_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cOoop_RelocationJoop_value6M_pnHoopDesc__;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6MpnIHeapWord_22_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cOindOffset8OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cNsymbolOopDescLas_C_string6kMpci_1_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cJPSPermGenSallocate_permanent6MI_pnIHeapWord__;
-text: .text%__1cMMutableSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6MI_pnIHeapWord__;
-text: .text%__1cHCompileRprobe_alias_cache6MpknHTypePtr__pn0APAliasCacheEntry__;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cIMachNodeNoperand_index6kMI_i_;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNCollectedHeapMobj_allocate6FnLKlassHandle_ipnGThread__pnHoopDesc__: instanceKlass.o;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cGBitMap2t6MpII_v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cIIndexSetSpopulate_free_list6F_v_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cMciMethodDataHdata_at6Mi_pnLProfileData__;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockIload_one6Mi_v_;
-text: .text%__1cIemit_d326FrnKCodeBuffer_i_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrLmeet_offset6kMi_i_;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFChunk2t6MI_v_;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cFChunk2k6Fpv_v_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIBoolTestKcc2logical6kMpknEType__3_;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cFBlockUneeded_for_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cKNativeCallLdestination6kM_pC_;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cRSignatureIteratorTcheck_signature_end6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrirpknHTypePtr__pknENode__;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIIndexSetFclear6M_v_: chaitin.o;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cLBlock_StackXmost_frequent_successor6MpnFBlock__I_;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGTarjanELINK6Mp01_v_;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cYDebugInformationRecorderWserialize_scope_values6MpnNGrowableArray4CpnKScopeValue____i_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cMciMethodDataJnext_data6MpnLProfileData__2_;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cJeRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_irknQRelocationHolder_i_v_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cFChunkEchop6M_v_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cNeFlagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKDictionaryJget_entry6MiInMsymbolHandle_nGHandle__pnPDictionaryEntry__;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPciObjectFactoryNfind_non_perm6MpnHoopDesc__rpn0ANNonPermObject__;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJCodeCacheFalive6FpnICodeBlob__2_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJchar2type6Fc_nJBasicType__: fieldType.o;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cHOopFlowNcompute_reach6MpnNPhaseRegAlloc_ipnEDict__v_;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cRInvocationCounterJset_state6Mn0AFState__v_;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLMachNopNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cOPhaseIdealLoopOidom_no_update6kMpnENode__2_: loopTransform.o;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cRmethodDataOopDescTbytecode_cell_count6FnJBytecodesECode__i_;
-text: .text%__1cRmethodDataOopDescRcompute_data_size6FpnOBytecodeStream__i_;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXindIndexScaleOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cMLinkResolverYlookup_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cKTypeOopPtrHget_con6kM_i_;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cKRegionNodeHhas_phi6kM_pnHPhiNode__;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cJAssemblerJemit_data6MirknQRelocationHolder_i_v_;
-text: .text%__1cRInterpreterOopMapLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cOeFlagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cJVectorSetEgrow6MI_v_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cETypeOget_const_type6FpnGciType__pk0_;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cITypeLong2t6Mxxi_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cPciObjectFactoryNinit_ident_of6MpnIciObject__v_;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cYDebugInformationRecorderYserialize_monitor_values6MpnNGrowableArray4CpnMMonitorValue____i_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_: spaceCounters.o;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cHTypePtrHget_con6kM_i_;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cJAssemblerJemit_data6MinJrelocInfoJrelocType_i_v_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMLinkResolverNresolve_klass6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cKjmpDirNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cRNativeInstructionFwrote6Mi_v_;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cWConstantPoolCacheEntryGverify6kMpnMoutputStream__v_;
-text: .text%__1cJeRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cGOopMapJheap_size6kM_i_;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cPciObjectFactoryGinsert6MipnIciObject_pnNGrowableArray4C2___v_;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cYCallStaticJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cMTypeKlassPtr2t6MnHTypePtrDPTR_pnHciKlass_i_v_;
-text: .text%JVM_IsNaN;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cFParsePload_state_from6Mpn0AFBlock__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cNtestP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cOcompU_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTciConstantPoolCacheEfind6Mi_i_;
-text: .text%__1cKciTypeFlowGJsrSetJcopy_into6Mp1_v_;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cJMarkSweepNpreserve_mark6FpnHoopDesc_pnLmarkOopDesc__v_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%JVM_CurrentThread;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cLOopMapCacheIentry_at6kMi_pnQOopMapCacheEntry__;
-text: .text%__1cOGenerateOopMapKcheck_type6MnNCellTypeState_1_v_;
-text: .text%__1cMMergeMemNodeNgrow_to_match6Mpk0_v_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cNSharedRuntimeDf2i6Ff_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cMMergeMemNodeRmake_empty_memory6F_pnENode__;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cFciEnvXget_field_by_index_impl6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cKBlock_ListGremove6MI_v_;
-text: .text%__1cECopyXconjoint_words_to_lower6FpnIHeapWord_2I_v_: block.o;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_16MnJBytecodesECode__v_;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cHOopFlowFclone6Mp0i_v_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cMPhaseChaitinJsplit_DEF6MpnENode_pnFBlock_iIp25nNGrowableArray4CI__i_I_;
-text: .text%__1cLStringTableGlookup6MipHiI_pnHoopDesc__;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cFStateM_sub_Op_Bool6MpknENode__v_;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKjmpDirNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cFParseFBlockJinit_node6Mp0i_v_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cNtestI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cWConstantPoolCacheEntryOset_bytecode_26MnJBytecodesECode__v_;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cKjmpConNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cOGenerateOopMapFppop16MnNCellTypeState__v_;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHTypePtrLdual_offset6kM_i_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cGGCTaskKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerWdecrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cNGCTaskManagerWincrement_busy_workers6M_I_;
-text: .text%__1cLGCTaskQdDueueHdequeue6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cFParseFBlockMrecord_state6Mp0_v_;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cPFieldAccessInfoDset6MnLKlassHandle_nMsymbolHandle_iinJBasicType_nLAccessFlags__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFframebFinterpreter_frame_monitor_begin6kM_pnPBasicObjectLock__;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlowIblock_at6Mipn0AGJsrSet_n0AMCreateOption__pn0AFBlock__;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKciTypeFlowLStateVector2t6Mp0_v_;
-text: .text%__1cOMethodLivenessNwork_list_get6M_pn0AKBasicBlock__;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cRInterpreterOopMapKinitialize6M_v_;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cOcompI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHemit_cc6FrnKCodeBuffer_ii_v_;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cXAdaptiveWeightedAverageYcompute_adaptive_average6Mff_f_;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cFframebDinterpreter_frame_monitor_end6kM_pnPBasicObjectLock__;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cQSystemDictionaryKfind_class6FiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cOcompU_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadConI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cMoutputStreamPupdate_position6MpkcI_v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cITypeLongEmake6Fx_pk0_;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cHOopFlowNbuild_oop_map6MpnENode_ipnNPhaseRegAlloc_pi_pnGOopMap__;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMachOperIconstant6kM_i_;
-text: .text%__1cRaddI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFStateW_sub_Op_CallStaticJava6MpknENode__v_;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cLklassVtableNput_method_at6MpnNmethodOopDesc_i_v_;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cGOopMapHcopy_to6MpC_v_;
-text: .text%__1cOGenerateOopMapGppush16MnNCellTypeState__v_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cLas_TosState6FnJBasicType__nITosState__: cpCacheOop.o;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cKInlineTreeJcallee_at6kMipnIciMethod__p0_;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%__1cYCallStaticJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cKciTypeFlowLStateVectorJcopy_into6kMp1_v_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowOwork_list_next6M_pn0AFBlock__;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cLanyRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOMethodLivenessNwork_list_add6Mpn0AKBasicBlock__v_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitQset_saved_ex_oop6FpnNSafePointNode_pnENode__v_;
-text: .text%__1cKciTypeFlowPflow_successors6MpnNGrowableArray4Cpn0AFBlock___pn0ALStateVector__v_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cRshrI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFParseFBlockNlocal_type_at6kMi_pknEType__;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cNaddI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLStringTableGintern6FnGHandle_pHipnGThread__pnHoopDesc__;
-text: .text%__1cLStringTableLhash_string6FpHi_i_;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cVLoaderConstraintTableWfind_loader_constraint6MnMsymbolHandle_nGHandle__ppnVLoaderConstraintEntry__;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRindIndexScaleOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cLjmpConUNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cOemit_d32_reloc6FrnKCodeBuffer_inJrelocInfoJrelocType_i_v_;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cKjmpConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cNsubI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOcompI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cRSignatureIteratorSskip_optional_size6M_v_;
-text: .text%__1cOGenerateOopMapSget_basic_block_at6kMi_pnKBasicBlock__;
-text: .text%__1cJleaP8NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cKTypeRawPtrHget_con6kM_i_;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cQindOffset32XOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cMPhaseChaitinKFind_const6kMI_I_;
-text: .text%__1cMPhaseChaitinKFind_const6kMpknENode__I_;
-text: .text%__1cOPhaseIdealLoopSget_ctrl_no_update6kMpnENode__2_: loopTransform.o;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cTemit_java_to_interp6FrnKCodeBuffer__v_;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_Halt6MpknENode__v_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cWThreadLocalAllocBufferVinitialize_statistics6M_v_;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cTStackWalkCompPolicyIsenderOf6MpnGRFrame_pnNGrowableArray4C2___2_;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cGRFrameMset_distance6Mi_v_;
-text: .text%__1cGRFrameKnew_RFrame6FnFframe_pnKJavaThread_kp0_4_;
-text: .text%__1cWThreadLocalAllocBufferGresize6M_v_;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cUThreadSafepointStateHrestart6M_v_;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cScompP_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_kpnGRFrame__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSindIndexOffsetOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cKDataLayoutKinitialize6MCHi_v_;
-text: .text%__1cNincI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cMnabxRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cIciSymbolJmake_impl6Fpkc_p0_;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cNloadConI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNtestI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKEntryPointFentry6kMnITosState__pC_;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cTStackWalkCompPolicyMshouldInline6FnMmethodHandle_fi_pkc_;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cVExceptionHandlerTableJadd_entry6MnRHandlerTableEntry__v_;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTCreateExceptionNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cFStateM_sub_Op_CmpP6MpknENode__v_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cJAssemblerEmovl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cLnaxRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cJFieldTypeSskip_optional_size6FpnNsymbolOopDesc_pi_v_;
-text: .text%__1cQjmpCon_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKjmpDirNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cKjmpDirNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLeAXRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cNaddI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cNtestP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cQleaPIdxScaleNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNgetTimeMillis6F_x_;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_i_v_;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerDjcc6Mn0AJCondition_rnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cHi2sNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cNdecI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKjmpConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKjmpConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLencode_Copy6FrnKCodeBuffer_ii_v_;
-text: .text%__1cQjmpDir_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cLjmpConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cSconstMethodOopDescbEchecked_exceptions_length_addr6kM_pH_;
-text: .text%__1cLBoxLockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJxRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cNsubI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cLStatSamplerLsample_data6FpnMPerfDataList__v_;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cLStatSamplerOcollect_sample6F_v_;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cMPeriodicTaskMtime_to_wait6F_I_: thread.o;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_Write;
-text: .text%__1cDhpiFwrite6FipkvI_I_: jvm.o;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cRsalI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompU_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cJAssemblerKemit_arith6MiipnMRegisterImpl_2_v_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cJloadPNodeFreloc6kM_i_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cZload_long_indOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cRinterpretedVFrameDbcp6kM_pC_;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cFArenaEused6kM_I_;
-text: .text%__1cFParseNdo_all_blocks6M_v_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFParseLinit_blocks6M_v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cTStackWalkCompPolicyPshouldNotInline6FnMmethodHandle__pkc_;
-text: .text%__1cRaddI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cFArena2T6M_v_;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cScompU_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cPJavaCallWrapper2t6MnMmethodHandle_nGHandle_pnJJavaValue_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cRJavaCallArgumentsKparameters6M_pi_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPJavaCallWrapper2T6M_v_;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cMLinkResolverXresolve_klass_no_update6FrnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapCpp6MpnNCellTypeState_2_v_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKInlineTreeYcompute_callee_frequency6kMi_f_;
-text: .text%__1cKInlineTreebCbuild_inline_tree_for_callee6MpnIciMethod_pnIJVMState_i_p0_;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cJAssemblerElock6M_v_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cRandI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cPshlI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRalign_code_offset6Fi_I_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%__1cMLinkResolverVresolve_invokespecial6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cONMethodSweeperPprocess_nmethod6FpnHnmethod__v_;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cOMethodLivenessKBasicBlockIload_two6Mi_v_;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cFStateQ_sub_Op_CreateEx6MpknENode__v_;
-text: .text%__1cLjmpConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLjmpConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%__1cTJvmtiEventCollectorYunset_jvmti_thread_state6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHMemNodeScalculate_adr_type6FpknEType_pknHTypePtr__6_;
-text: .text%__1cFStateM_sub_Op_CmpU6MpknENode__v_;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cNstoreImmBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cOcompI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cTleaPIdxScaleOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMorI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cKRegionNodeOhas_unique_phi6kM_pnHPhiNode__;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cScompP_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cRitableMethodEntryKinitialize6MpnNmethodOopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cQinit_input_masks6FIrnHRegMask_1_p0_: matcher.o;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cFStateO_sub_Op_StoreP6MpknENode__v_;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPCountedLoopNodeDphi6kM_pnENode__: cfgnode.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cQjmpCon_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpCon_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNstoreImmPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cNstoreImmBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_2_v_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cJleaP8NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompU_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cFStateM_sub_Op_RegL6MpknENode__v_;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cRshrI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cScompP_mem_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cLeCXRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cScompI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUreloc_java_to_interp6F_I_;
-text: .text%__1cTsize_java_to_interp6F_I_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cScompU_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_I_;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cQjmpDir_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjmpDir_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%__1cNCallGeneratorCtf6kM_pknITypeFunc__;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cMeADXRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cOGenerateOopMapNrestore_state6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSloadL_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cRjmpConU_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cPsarI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNCollectedHeapYpermanent_array_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: oopFactory.o;
-text: .text%__1cOGenerateOopMapHset_var6MinNCellTypeState__v_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cMLinkResolverUresolve_invokestatic6FrnICallInfo_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cXcmpL_reg_flags_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cFStateR_sub_Op_LoadRange6MpknENode__v_;
-text: .text%__1cOcompU_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNRelocIteratorJset_limit6MpC_v_;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cVjava_lang_ClassLoaderGparent6FpnHoopDesc__2_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitSclear_saved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cKstoreINodeFreloc6kM_i_;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cPcheckCastPPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_i_v_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cFframebHnext_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cNIdealLoopTreeNDCE_loop_body6M_v_;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cJAssemblerEleal6MpnMRegisterImpl_nHAddress__v_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybAcompute_loader_lock_object6FnGHandle_pnGThread__1_;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cWflagsReg_long_LTGEOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNloadRangeNodeFreloc6kM_i_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJrelocInfoKset_format6Mi_v_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cQVMOperationQdDueueSqueue_remove_front6Mi_pnMVM_Operation__;
-text: .text%__1cMorI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cScompI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cSPSPromotionManagerFreset6M_v_;
-text: .text%__1cSPSPromotionManagerKflush_labs6M_v_;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cICodeHeapPfollowing_block6MpnJFreeBlock__2_;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cNtestP_regNodeFreloc6kM_i_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cNsubI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQleaPIdxScaleNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_two6Mi_v_;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cJloadINodeFreloc6kM_i_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cLklassVtableVinitialize_from_super6MnLKlassHandle__i_;
-text: .text%__1cLklassVtableOcopy_vtable_to6MpnLvtableEntry__v_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cOMachEpilogNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cRaddI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cPindOffset32OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cUDebugInfoWriteStreamMwrite_handle6MpnI_jobject__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cRaddI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%JVM_InternString;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cXmembar_release_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cEDictIdoubhash6M_v_;
-text: .text%__1cUinitialize_hashtable6FppnLNameSigHash__v_;
-text: .text%__1cScompU_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cKstorePNodeFreloc6kM_i_;
-text: .text%__1cNincI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cQSystemDictionaryRupdate_dictionary6FiIiInTinstanceKlassHandle_nGHandle_pnGThread__v_;
-text: .text%__1cPTwoOopHashtableMcompute_hash6MnMsymbolHandle_nGHandle__I_: dictionary.o;
-text: .text%__1cQSystemDictionaryQfind_placeholder6FiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cKDictionaryJnew_entry6MIpnMklassOopDesc_pnHoopDesc__pnPDictionaryEntry__;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cRandI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cPRoundDoubleNodeGOpcode6kM_i_;
-text: .text%__1cRsarI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_i_v_;
-text: .text%__1cLklassVtableQfill_in_mirandas6Mri_v_;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cLregFPR1OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNstoreImmBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_2_v_;
-text: .text%__1cTjava_lang_ThrowableNset_backtrace6FpnHoopDesc_2_v_;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cTClassLoadingServiceScompute_class_size6FpnNinstanceKlass__I_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cNinstanceKlassbBdo_local_static_fields_impl6FnTinstanceKlassHandle_pFpnPfieldDescriptor_pnGThread__v5_v_;
-text: .text%__1cLklassVtableQget_num_mirandas6FpnMklassOopDesc_pnPobjArrayOopDesc_4_i_;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cQSystemDictionaryQadd_to_hierarchy6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cPClassFileParserYcheck_super_class_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRfind_shared_class6FnMsymbolHandle__pnMklassOopDesc__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cNnegI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cQPackageHashtableMcompute_hash6Mpkci_I_: classLoader.o;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cMloadConPNodeFreloc6kM_i_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cNmulL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPshrI_eReg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYmulI_imm_RShift_highNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cRshrI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cRaddL_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNaddI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQPackageHashtableJget_entry6MiIpkcI_pnLPackageInfo__: classLoader.o;
-text: .text%__1cLClassLoaderOlookup_package6Fpkc_pnLPackageInfo__;
-text: .text%__1cLeDIRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cQVMOperationQdDueueNqueue_oops_do6MipnKOopClosure__v_;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%__1cRsalI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNloadKlassNodeFreloc6kM_i_;
-text: .text%__1cFStateV_sub_Op_MemBarRelease6MpknENode__v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_oop6MpnMRegisterImpl_nITosState__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cLeSIRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%signalHandler;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassRclass_initializer6M_pnNmethodOopDesc__;
-text: .text%__1cNinstanceKlassbOset_initialization_state_and_notify_impl6FnTinstanceKlassHandle_n0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassbJset_initialization_state_and_notify6Mn0AKClassState_pnGThread__v_;
-text: .text%__1cNinstanceKlassWcall_class_initializer6MpnGThread__v_;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQVMOperationQdDueueLremove_next6M_pnMVM_Operation__;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_i_v_;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKBufferBlob2t6Mpkci_v_;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cNaddL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKBufferBlob2n6FII_pv_;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cScompP_mem_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLGCTaskQdDueueKinitialize6M_v_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cICodeHeapTmark_segmap_as_used6MII_v_;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNxorI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNandL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cILRG_List2t6MI_v_;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cOMachPrologNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNstoreImmPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRmethodDataOopDescYcompute_extra_data_count6Fii_i_;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cSshrL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPstoreImmI16NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIemit_d166FrnKCodeBuffer_i_v_;
-text: .text%__1cJAssemblerEmovl6MnHAddress_i_v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cKciTypeFlowLStateVectorJhalf_type6FpnGciType__3_: ciTypeFlow.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%__1cRjmpConU_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cRjmpConU_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateO_sub_Op_StoreB6MpknENode__v_;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cNdecI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cICodeHeapLmerge_right6MpnJFreeBlock__v_;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cMPhaseChaitinOcache_lrg_info6M_v_;
-text: .text%__1cJScopeDescJstream_at6kMi_pnTDebugInfoReadStream__;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cWflagsReg_long_EQdDNEOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cSsafePoint_pollNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cXvirtual_call_RelocationJfirst_oop6M_pC_;
-text: .text%__1cXvirtual_call_RelocationJoop_limit6M_pC_;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_CallLeaf6MpknENode__v_;
-text: .text%__1cHi2sNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRNativeGeneralJumpQjump_destination6kM_pC_;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cScompP_eReg_immNodeFreloc6kM_i_;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cWflagsReg_long_LEGTOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSThreadLocalStorageTpd_getTlsAccessMode6F_n0AQpd_tlsAccessMode__;
-text: .text%__1cOMacroAssemblerKget_thread6MpnMRegisterImpl__v_;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cFStateS_sub_Op_FastUnlock6MpknENode__v_;
-text: .text%__1cSstore_to_stackslot6FrnKCodeBuffer_iii_v_;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cMnadxRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMvalue_of_loc6FppnHoopDesc__i_;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cTcompareAndSwapLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNstoreImmPNodeFreloc6kM_i_;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNstoreImmBNodeFreloc6kM_i_;
-text: .text%JVM_Clone;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVeADXRegL_low_onlyOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cMeBCXRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRsubI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cPshlI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cICodeHeapPadd_to_freelist6MpnJHeapBlock__v_;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cNminI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNsubI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cMorI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cFStateO_sub_Op_StoreC6MpknENode__v_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cScompU_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cTleaPIdxScaleOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNSharedRuntimeQfind_callee_info6FpnKJavaThread_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cSCallLeafDirectNodeFreloc6kM_i_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cFStateV_sub_Op_MemBarAcquire6MpknENode__v_;
-text: .text%__1cOMachEpilogNodeFreloc6kM_i_;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cXmembar_acquire_lockNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEtemp6F_pnMRegisterImpl__;
-text: .text%__1cPstoreImmI16NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerDjmp6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXcmpL_reg_flags_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNandL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNincI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cNxorI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cKBlock_ListGinsert6MIpnFBlock__v_;
-text: .text%__1cECopyYconjoint_words_to_higher6FpnIHeapWord_2I_v_: block.o;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNaddL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_I_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cHNTarjanIsetdepth6MIpI_v_;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%__1cHNTarjanDDFS6Fp0rnJVectorSet_pnOPhaseIdealLoop_pI_i_;
-text: .text%__1cOPhaseIdealLoopRinit_dom_lca_tags6M_v_;
-text: .text%__1cSmembar_acquireNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimePset_bcp_and_mdp6FpCpnKJavaThread__v_;
-text: .text%__1cTjava_lang_ThrowableQclear_stacktrace6FpnHoopDesc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSshlL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cLPcDescCacheLadd_pc_desc6MpnGPcDesc__v_;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateN_sub_Op_LoadL6MpknENode__v_;
-text: .text%__1cJAssemblerEcmpl6MnHAddress_i_v_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cUParallelScavengeHeapEused6kM_I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cOMacroAssemblerSload_unsigned_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cLeAXRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cRsubI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNaddI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOJNIHandleBlockMweak_oops_do6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cQVMOperationQdDueueHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollectorXoops_do_for_all_threads6FpnKOopClosure__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNstoreImmINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%jio_vsnprintf;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRsalI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerDjmp6MnHAddress__v_;
-text: .text%jio_snprintf;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOjmpLoopEndNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cOleaPIdxOffNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cPGlobalTLABStatsKinitialize6M_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cRaddL_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cPVM_GC_OperationZacquire_pending_list_lock6M_v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cPVM_GC_OperationbKrelease_and_notify_pending_list_lock6M_v_;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cNmodI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cUSafepointSynchronizeQdo_cleanup_tasks6F_v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerKverify_FPU6MinITosState__v_;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cIVMThreadSevaluate_operation6MpnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueGunlink6MpnMVM_Operation__v_;
-text: .text%__1cQVMOperationQdDueueOqueue_add_back6MipnMVM_Operation__v_;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cQVMOperationQdDueueGinsert6MpnMVM_Operation_2_v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cScompI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cNBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cGGCTaskIdestruct6M_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MII_v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cKPSYoungGenGresize6MII_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MII_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cPGlobalTLABStatsHpublish6M_v_;
-text: .text%__1cJloadSNodeFreloc6kM_i_;
-text: .text%__1cMrep_stosNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateN_sub_Op_LoadS6MpknENode__v_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cNstoreImmINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINodeHash2t6Mp0_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cOJNIHandleBlockRrebuild_free_list6M_v_;
-text: .text%__1cFStateM_sub_Op_Goto6MpknENode__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cIPhaseCFGDDFS6MpnGTarjan__I_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cWNode_Backward_Iterator2t6MpnENode_rnJVectorSet_rnJNode_List_rnLBlock_Array__v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cGTarjanIsetdepth6MI_v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cHMatcherUvalidate_null_checks6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cMPhaseChaitinGde_ssa6M_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cFArena2t6MI_v_;
-text: .text%__1cWsize_exception_handler6F_I_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cOCompileWrapper2T6M_v_;
-text: .text%__1cNPhasePeepholeMdo_transform6M_v_;
-text: .text%__1cHCompileTframe_size_in_words6kM_i_;
-text: .text%__1cNPhasePeephole2t6MpnNPhaseRegAlloc_rnIPhaseCFG__v_;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cHCompileQShorten_branches6MpnFLabel_ri333_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cHCompileRScheduleAndBundle6M_v_;
-text: .text%__1cUPSAdaptiveSizePolicybPeden_increment_with_supplement_aligned_up6MI_I_;
-text: .text%__1cUPSAdaptiveSizePolicyOeden_increment6MII_I_;
-text: .text%__1cOMachPrologNodeFreloc6kM_i_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cIPSOldGenMmax_gen_size6M_I_: psOldGen.o;
-text: .text%__1cUPSAdaptiveSizePolicybHclear_generation_free_space_flags6M_v_;
-text: .text%__1cRmethodDataOopDescPpost_initialize6MpnOBytecodeStream__v_;
-text: .text%__1cNmulL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_Return6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cHRetNodeFreloc6kM_i_;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheNalive_nmethod6FpnICodeBlob__pnHnmethod__;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cOcompP_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_CmpL6MpknENode__v_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cSmembar_releaseNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNandL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNdecI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cJloadLNodeFreloc6kM_i_;
-text: .text%__1cRxorI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRaddI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cNsubL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRxorI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_SafePoint6MpknENode__v_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsafePoint_pollNodeFreloc6kM_i_;
-text: .text%__1cNandI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHi2sNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cKStoreDNodeGOpcode6kM_i_;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cNstoreImmINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRaddI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cTcompareAndSwapLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSloadL_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUjmpLoopEnd_shortNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEfrom6F_pnMRegisterImpl__;
-text: .text%__1cTDerivedPointerTableDadd6FppnHoopDesc_3_v_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cKstoreCNodeFreloc6kM_i_;
-text: .text%__1cJOopMapSetMgrow_om_data6M_v_;
-text: .text%__1cScompP_mem_eRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cKReflectionDbox6FpnGjvalue_nJBasicType_pnGThread__pnHoopDesc__;
-text: .text%__1cJAssemblerDret6Mi_v_;
-text: .text%__1cJAssemblerEcall6MrnFLabel_nJrelocInfoJrelocType__v_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cTshrL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateQ_sub_Op_FastLock6MpknENode__v_;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPshlI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYmulI_imm_RShift_highNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseFBlockNstack_type_at6kMi_pknEType__;
-text: .text%__1cFStateN_sub_Op_LoadB6MpknENode__v_;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMorI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLMachUEPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRsarI_eReg_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIJVMStateNmonitor_depth6kM_i_: graphKit.o;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPsarI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_i_v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cScompP_mem_eRegNodeFreloc6kM_i_;
-text: .text%__1cNtestU_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateP_sub_Op_ConvI2L6MpknENode__v_;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cQciTypeArrayKlassJmake_impl6FnJBasicType__p0_;
-text: .text%__1cJloadBNodeFreloc6kM_i_;
-text: .text%__1cKJavaThreadJframes_do6MpFpnFframe_pknLRegisterMap__v_v_;
-text: .text%__1cKEntryPoint2t6MpC11111111_v_;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cRmulI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%__1cPstoreImmI16NodeFreloc6kM_i_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVloadConL_low_onlyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCompileBrokerNallocate_task6F_pnLCompileTask__;
-text: .text%__1cMCompileQdDueueDadd6MpnLCompileTask__v_;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cMCompileQdDueueDget6M_pnLCompileTask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cSCompileTaskWrapper2t6MpnLCompileTask__v_;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cFStateM_sub_Op_MulL6MpknENode__v_;
-text: .text%__1cLCompileTaskEfree6M_v_;
-text: .text%__1cSCompileTaskWrapper2T6M_v_;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cNCompileBrokerJfree_task6FpnLCompileTask__v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cNCompileBrokerVpush_jni_handle_block6F_v_;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNCompileBrokerUpop_jni_handle_block6F_v_;
-text: .text%__1cECopyQpd_fill_to_words6FpnIHeapWord_II_v_: arrayKlass.o;
-text: .text%__1cNaddP_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cRxorI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompP_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLloadSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNandI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%__1cPshrI_eReg_1NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNnegI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cINodeHashIround_up6FI_I_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%JVM_IHashCode;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cOcompiledVFrameScreate_stack_value6kMpnKScopeValue__pnKStackValue__;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorCto6F_pnMRegisterImpl__;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%__1cNmaxI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_AddL6MpknENode__v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_i_v_;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cOjmpLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateW_sub_Op_CountedLoopEnd6MpknENode__v_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cKNativeJumpbEcheck_verified_entry_alignment6FpC1_v_;
-text: .text%__1cFStateU_sub_Op_CallLeafNoFP6MpknENode__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNLocationValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cJAssemblerEmovl6MpnMRegisterImpl_2_v_;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cNCompileBrokerRassign_compile_id6FnMmethodHandle_i_I_;
-text: .text%__1cNsubL_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cJAssemblerLemit_farith6Miii_v_;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cNminI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOCompiledRFrame2t6MnFframe_pnKJavaThread_kpnGRFrame__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cMelapsedTimerDadd6M0_v_;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cICodeHeapMinsert_after6MpnJFreeBlock_2_v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cHnmethod2n6FIi_pv_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cQorI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6MnMmethodHandle__v_;
-text: .text%__1cHCompileWprint_compile_messages6M_v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cINodeHashUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cJAssemblerEincl6MpnMRegisterImpl__v_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cXcmpL_reg_flags_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryKinitialize6F_v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cJAssemblerFffree6Mi_v_;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cOGenerateOopMapIppop_any6Mi_v_;
-text: .text%__1cXroundDouble_mem_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cIPerfDataMcreate_entry6MnJBasicType_II_v_;
-text: .text%__1cIPerfData2T6M_v_;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%__1cXcmpL_reg_flags_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cNdivL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cPCountedLoopNodeGstride6kM_pnENode__: loopTransform.o;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cQsalI_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSshrL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJleaP8NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cFStateS_sub_Op_ClearArray6MpknENode__v_;
-text: .text%__1cMrep_stosNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cNtestP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cUjmpLoopEnd_shortNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cUjmpLoopEnd_shortNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHi2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_StoreL6MpknENode__v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreLNodeFreloc6kM_i_;
-text: .text%__1cPRoundDoubleNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cScompP_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cRmulI_eReg_immNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cPDictionaryEntryVadd_protection_domain6MpnHoopDesc__v_;
-text: .text%__1cRxorI_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cLregDPR1OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cJAssemblerSemit_arith_operand6MipnMRegisterImpl_nHAddress_i_v_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cMNativeLookupNpure_jni_name6FnMmethodHandle__pc_;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cScompU_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerGfstp_d6MnHAddress__v_;
-text: .text%__1cQleaPIdxScaleNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cRsubI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNcmovI_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cNstoreImmINodeFreloc6kM_i_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cRsarI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeFreloc6kM_i_;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cPsarI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateP_sub_Op_Rethrow6MpknENode__v_;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cZget_mirror_from_signature6FnMmethodHandle_pnPSignatureStream_pnGThread__pnHoopDesc__;
-text: .text%__1cURethrowExceptionNodeFreloc6kM_i_;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl_i_v_;
-text: .text%__1cKJavaThreadLgc_prologue6M_v_;
-text: .text%__1cRaddL_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerKverify_oop6MpnMRegisterImpl_pkc_v_;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cKJavaThreadLgc_epilogue6M_v_;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cMstoreSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cKReflectionTget_exception_types6FnMmethodHandle_pnGThread__nOobjArrayHandle__;
-text: .text%__1cOstackSlotDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cOleaPIdxOffNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddL_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Mi_v_;
-text: .text%__1cPstoreImmI16NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOcmpD_cc_P6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRandI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorEmove6Mii_v_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cNmodL_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cFParseQjump_if_fork_int6MpnENode_2nIBoolTestEmask__pnGIfNode__;
-text: .text%__1cOcompP_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRLowMemoryDetectorbLdetect_low_memory_for_collected_pools6F_v_: arrayKlass.o;
-text: .text%__1cNCollectedHeapOarray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: arrayKlass.o;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRxorI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cLloadSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cNaddL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSshlL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOGenerateOopMapXdo_return_monitor_check6M_v_;
-text: .text%__1cQsalL_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPshrI_eReg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%__1cNnegI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_i_v_;
-text: .text%__1cTsarL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerGfstp_s6MnHAddress__v_;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cNmodI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateX_sub_Op_CompareAndSwapL6MpknENode__v_;
-text: .text%__1cSloadL_volatileNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cNtestU_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSloadL_volatileNodeFreloc6kM_i_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cJAssemblerDhlt6M_v_;
-text: .text%__1cYcmpL_zero_flags_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQshrI_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cTconvD2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateT_sub_Op_ThreadLocal6MpknENode__v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF_vc_v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorDbox6Mii_v_;
-text: .text%__1cPRoundDoubleNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cPRoundDoubleNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodePcompute_padding6kMi_i_;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cOmulIS_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcinMsymbolHandle_4nGHandle_6_v_;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cRandI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cJChunkPoolMfree_all_but6MI_v_: allocation.o;
-text: .text%__1cNxorI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_MonitorWait;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cSleaP_eReg_immINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftL6MpknENode__v_;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_i_v_;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerEnegl6MpnMRegisterImpl__v_;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cQmulD_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNtestI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_I_;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cNmaxI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cQorI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVloadConL_low_onlyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPshlI_eReg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_SetClassSigners;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cNsubL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRmulI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cCosbBthread_local_storage_at_put6Fipv_v_;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%get_thread;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cRsubI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cTshrL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorVdestination_decorator6F_p0_;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%JVM_GetClassCPTypes;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%__1cKstoreBNodeFreloc6kM_i_;
-text: .text%__1cPconvI2F_SSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cMdecI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%__1cXSignatureHandlerLibraryLset_handler6FpnKCodeBuffer__pC_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cFJNIidEfind6Mi_p0_;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cRsubL_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cFStateM_sub_Op_RegD6MpknENode__v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cTcmovII_reg_LEGTNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEcmpl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRxorI_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNcmovI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandL_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateM_sub_Op_MinI6MpknENode__v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMstoreSSPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cLloadSSDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXroundDouble_mem_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cNaddP_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cPciObjectFactoryPinsert_non_perm6Mrpn0ANNonPermObject_pnHoopDesc_pnIciObject__v_;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cOcmpD_cc_P6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl_i_v_;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateN_sub_Op_LoadF6MpknENode__v_;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cOGenerateOopMapKpp_new_ref6MpnNCellTypeState_i_v_;
-text: .text%__1cFParseTjump_if_always_fork6Mii_v_;
-text: .text%__1cFStateW_sub_Op_MemBarVolatile6MpknENode__v_;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cPconvI2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cNmodI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateP_sub_Op_LShiftL6MpknENode__v_;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%__1cMVirtualSpaceQuncommitted_size6kM_I_;
-text: .text%__1cJAssemblerFfld_d6MnHAddress__v_;
-text: .text%__1cJloadFNodeFreloc6kM_i_;
-text: .text%__1cMincI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cNinstanceKlassSregister_finalizer6FpnPinstanceOopDesc_pnGThread__2_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cQsalI_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNdivI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cNandI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMmulD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cJAssemblerEaddl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cNmulI_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cNdivL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cRsubL_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cQshrL_eReg_CLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cNcmovP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQorI_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMdecI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cOmulF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOjmpLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cOjmpLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cFStateX_sub_Op_CallDynamicJava6MpknENode__v_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cZCallDynamicJavaDirectNodeFreloc6kM_i_;
-text: .text%__1cTcmovII_reg_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEdecl6MpnMRegisterImpl__v_;
-text: .text%__1cVLoaderConstraintTableYextend_loader_constraint6MpnVLoaderConstraintEntry_nGHandle_pnMklassOopDesc__v_;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cVLoaderConstraintTablebHensure_loader_constraint_capacity6MpnVLoaderConstraintEntry_i_v_;
-text: .text%__1cQOopMapCacheEntryFflush6M_v_;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cQOopMapCacheEntryTdeallocate_bit_mask6M_v_;
-text: .text%__1cQOopMapCacheEntryRallocate_bit_mask6M_v_;
-text: .text%__1cICodeHeapTmark_segmap_as_free6MII_v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cNsubI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTcmovII_reg_LEGTNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cJAssemblerFfld_s6MnHAddress__v_;
-text: .text%__1cNxorI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cMincI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cFStateM_sub_Op_ConD6MpknENode__v_;
-text: .text%__1cNmodL_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNaddI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosHSolarisKvm_signals6F_pnIsigset_t__;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cTOopMapForCacheEntry2t6MnMmethodHandle_ipnQOopMapCacheEntry__v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cGICStubIfinalize6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cCosHSolarisRunblocked_signals6F_pnIsigset_t__;
-text: .text%__1cJStubQdDueueMremove_first6M_v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cPRoundDoubleNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cDhpiEread6FipvI_I_: jvm.o;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cMstoreSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%JVM_Read;
-text: .text%__1cOJavaAssertionsNmatch_package6Fpkc_pn0AKOptionList__;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cRaddL_eReg_memNodeFreloc6kM_i_;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cOJavaAssertionsLmatch_class6Fpkc_pn0AKOptionList__: javaAssertions.o;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%__1cLConvL2FNodeGOpcode6kM_i_;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cUThreadSafepointState2t6MpnKJavaThread__v_;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cKJavaThreadYcreate_stack_guard_pages6M_v_;
-text: .text%__1cOaddF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cKJavaThreadRthread_main_inner6M_v_;
-text: .text%__1cKReflectionbFbasic_type_mirror_to_basic_type6FpnHoopDesc_pnGThread__nJBasicType__;
-text: .text%__1cJAssemblerFcmovl6Mn0AJCondition_pnMRegisterImpl_3_v_;
-text: .text%__1cSleaP_eReg_immINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cNSharedRuntimeEdsin6Fd_d_;
-text: .text%__1cNSharedRuntimeEdcos6Fd_d_;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cNdecI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTconvF2I_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEsbbl6MnHAddress_i_v_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%JVM_IsArrayClass;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cSMachBreakpointNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQshrI_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_GetClassName;
-text: .text%__1cSsarL_eReg_1_31NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cFJNIid2t6MpnMklassOopDesc_ip0_v_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_RegF6MpknENode__v_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cNinstanceKlassPjni_id_for_impl6FnTinstanceKlassHandle_i_pnFJNIid__;
-text: .text%__1cKRelocationYpd_get_address_from_code6M_pC_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNtestU_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%JVM_Open;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%JVM_StartThread;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cGICStubLdestination6kM_pC_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cQmulI_mem_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cScompI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapMdo_checkcast6M_v_;
-text: .text%__1cQmulI_mem_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_TotalMemory;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%JVM_FreeMemory;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTshlL_eReg_32_63NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvI2F_SSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJScopeDescTdecode_scope_values6Mi_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cQorI_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRmulI_imm_highNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cKloadUBNodeFreloc6kM_i_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cFStateT_sub_Op_RoundDouble6MpknENode__v_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cTcmovII_reg_EQdDNENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cFStateQ_sub_Op_TailCall6MpknENode__v_;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSTailCalljmpIndNodeFreloc6kM_i_;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cFStateO_sub_Op_StoreF6MpknENode__v_;
-text: .text%__1cQaddD_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTsarL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cNaddP_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%__1cMstoreSSPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRandI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cRCardTableModRefBSPclear_MemRegion6MnJMemRegion__v_;
-text: .text%__1cRInlineCacheBufferLnew_ic_stub6F_pnGICStub__;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cGICStubIset_stub6MpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cQorI_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHi2bNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cNmulI_eRegNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%__1cMsubD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cNminI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cFStateM_sub_Op_MaxI6MpknENode__v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cTcmovII_reg_LTGENodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cSPerfStringConstant2t6MnJCounterNS_pkc3_v_;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%__1cOMacroAssemblerFleave6M_v_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%JVM_NativePath;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cVLoaderConstraintTableJnew_entry6MIpnNsymbolOopDesc_pnMklassOopDesc_ii_pnVLoaderConstraintEntry__;
-text: .text%__1cFStateT_sub_Op_CallRuntime6MpknENode__v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cQsalI_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeFreloc6kM_i_;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%__1cNandI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOmulF24_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cRandL_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOaddF24_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cNcmovP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cKstoreFNodeFreloc6kM_i_;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerWupdate_mdp_by_constant6MpnMRegisterImpl_i_v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i_v_;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSaddD_reg_roundNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReflectionTunbox_for_primitive6FpnHoopDesc_pnGjvalue_pnGThread__nJBasicType__;
-text: .text%__1cMloadConDNodeFreloc6kM_i_;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMdecI_memNodeFreloc6kM_i_;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMdecI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulF24_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationVtrap_state_add_reason6Fii_i_;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pF3_v3_v_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRuntimeStub2n6FII_pv_;
-text: .text%__1cLloadSSDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQsalL_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cPoldgetTimeNanos6F_x_: os_solaris.o;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJOperation__v4_v_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl_i_v_;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cFStateN_sub_Op_LoadD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_MulD6MpknENode__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%JVM_Close;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOmulIS_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerFtestl6MpnMRegisterImpl_i_v_;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cMsubD_regNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cTcmovII_reg_EQdDNENodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cFStateM_sub_Op_CmpD6MpknENode__v_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cJAssemblerEmovb6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_only6MnITosState__v_;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cGICStubKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cTcmovII_reg_LEGTNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXcmpL_reg_flags_LTGENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKemit_break6FrnKCodeBuffer__v_;
-text: .text%__1cQshrI_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_i_v_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cQorl_eReg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cVMoveL2D_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateO_sub_Op_StoreD6MpknENode__v_;
-text: .text%__1cPmovI_nocopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsYis_supported_jni_version6Fi_C_;
-text: .text%__1cFStateM_sub_Op_ConF6MpknENode__v_;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cIci2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOmulF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cTcmovII_reg_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQorI_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cFframebHinterpreter_frame_set_monitor_end6MpnPBasicObjectLock__v_;
-text: .text%__1cOstoreF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFframebBinterpreter_frame_sender_sp6kM_pi_;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescVdecode_monitor_values6Mi_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cTconvD2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFframebCinterpreter_frame_set_locals6Mpi_v_;
-text: .text%__1cFframebCinterpreter_frame_set_method6MpnNmethodOopDesc__v_;
-text: .text%__1cSInterpreterRuntimeJnote_trap6FpnKJavaThread_ipnGThread__v_;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRmulI_imm_highNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cRsubL_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cFStateP_sub_Op_ConvF2D6MpknENode__v_;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cFStateM_sub_Op_DivL6MpknENode__v_;
-text: .text%__1cNTemplateTableLindex_check6FpnMRegisterImpl_2_v_;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%Unsafe_DefineClass1;
-text: .text%JVM_GetComponentType;
-text: .text%JVM_DefineClass;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cNmodI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerGfrstor6MnHAddress__v_;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cSObjectSynchronizerOinflate_helper6FpnHoopDesc__pnNObjectMonitor__: synchronizer.o;
-text: .text%__1cSdivD_reg_roundNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase26F_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase36F_v_;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cLPSMarkSweepRmark_sweep_phase46F_v_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cLPSMarkSweepbAreset_millis_since_last_gc6F_v_;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MInHGCCauseFCause__v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%__1cLPSMarkSweepPallocate_stacks6F_v_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cMdivD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLPSMarkSweepRdeallocate_stacks6F_v_;
-text: .text%__1cRInlineCacheBufferOinit_next_stub6F_v_;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cMincI_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQSystemDictionaryYalways_strong_classes_do6FpnKOopClosure__v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cJPSPermGenQcompute_new_size6MI_v_;
-text: .text%__1cZInterpreterMacroAssemblerYprofile_not_taken_branch6MpnMRegisterImpl__v_;
-text: .text%__1cHi2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryPplaceholders_do6FpnKOopClosure__v_;
-text: .text%__1cFStateM_sub_Op_ModL6MpknENode__v_;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%__1cTleaPIdxScaleOffNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFn0AJCondition__v4_v_;
-text: .text%__1cMincI_memNodeFreloc6kM_i_;
-text: .text%__1cOaddF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNcmovI_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJStubQdDueueMremove_first6Mi_v_;
-text: .text%__1cSsarL_eReg_1_31NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_NewArray;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOcmpF_cc_P6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cFStateM_sub_Op_MulF6MpknENode__v_;
-text: .text%__1cTconvF2I_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTshlL_eReg_32_63NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cSmulF24_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cFStateP_sub_Op_ConvD2I6MpknENode__v_;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cPconvI2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cOcmovI_regUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cScompP_eReg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cSaddF24_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%JVM_GC;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cXpartialSubtypeCheckNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cQinitialize_class6FnMsymbolHandle_pnGThread__v_: thread.o;
-text: .text%__1cRfind_field_offset6FpnI_jobject_ipnGThread__i_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cLStatSamplerTget_system_property6FpkcpnGThread__2_;
-text: .text%__1cPconvL2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cQConstantIntValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_22pC_v_;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateP_sub_Op_StrComp6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvI2F6MpknENode__v_;
-text: .text%__1cOMacroAssemblerPempty_FPU_stack6M_v_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%__1cSmulF24_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddD_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cScompP_eReg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTcmovII_reg_EQdDNENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cLvframeArrayZdeallocate_monitor_chunks6M_v_;
-text: .text%__1cOstoreF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNcmovI_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cImulINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_data_at6MpnMRegisterImpl_i2_v_;
-text: .text%__1cQsalL_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMsubD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYcmpL_zero_flags_LTGENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableRlocals_index_wide6FpnMRegisterImpl__v_;
-text: .text%__1cSmulF24_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosHSolarisVcleanup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6F_pnKJavaThread__;
-text: .text%__1cQmulI_mem_immNodeFreloc6kM_i_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_Sleep;
-text: .text%JVM_Lseek;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cHnmethodVmark_as_seen_on_stack6M_v_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cQmulD_reg_immNodeFreloc6kM_i_;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cCosHSolarisTsetup_interruptible6FpnKJavaThread__v_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cODeoptimizationRgather_statistics6Fn0ALDeoptReason_n0ALDeoptAction_nJBytecodesECode__v_;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cOMacroAssemblerFenter6M_v_;
-text: .text%Unsafe_GetNativeByte;
-text: .text%__1cOMacroAssemblerNpop_FPU_state6M_v_;
-text: .text%__1cPconvL2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%JVM_NanoTime;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cJAssemblerFpushl6MnHAddress__v_;
-text: .text%jni_GetEnv;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGICStubFclear6M_v_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cKstoreDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMloadConFNodeFreloc6kM_i_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCi_v_;
-text: .text%__1cHTypePtrKadd_offset6kMi_pk0_;
-text: .text%__1cFStateP_sub_Op_ConvI2D6MpknENode__v_;
-text: .text%__1cJAssemblerEmovw6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cQshrL_eReg_CLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFStateM_sub_Op_AddF6MpknENode__v_;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cJAssemblerExorl6MpnMRegisterImpl_i_v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cOsubF24_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstoreF_immNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cKstoreDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRaddI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWroundFloat_mem_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNstoreImmPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cPmovI_nocopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerFfwait6M_v_;
-text: .text%__1cJAssemblerKrepne_scan6M_v_;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cNcmovL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cImulINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cOcmpF_cc_P6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLvframeArrayRregister_location6kMi_pC_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cRaddI_mem_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddF24_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSstoreD_roundedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMdivD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMmulD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cJAssemblerFtestb6MpnMRegisterImpl_i_v_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cJAssemblerMemit_arith_b6MiipnMRegisterImpl_i_v_;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cNaddP_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachOperNbase_position6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerGf2ieee6M_v_;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cOtypeArrayKlassNexternal_name6FnJBasicType__pkc_;
-text: .text%JVM_GetClassContext;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cNdivI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJAssemblerHfincstp6M_v_;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cOMacroAssemblerEfpop6M_v_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cOGenerateOopMapGdo_jsr6Mi_v_;
-text: .text%__1cZInterpreterMacroAssemblerbGget_unsigned_2_byte_index_at_bcp6MpnMRegisterImpl_i_v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerOpush_FPU_state6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerRcall_VM_leaf_base6MpCi_v_;
-text: .text%__1cZInterpreterMacroAssemblerGd2ieee6M_v_;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cSmulF24_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSaddF24_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOcmovI_regUNodeQuse_cisc_RegMask6M_v_;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cJAssemblerEsubl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFStateM_sub_Op_AddD6MpknENode__v_;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cOPhaseIdealLoopTdo_maximally_unroll6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cJAssemblerGfnsave6MnHAddress__v_;
-text: .text%__1cMdecI_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cJloadDNodeFreloc6kM_i_;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cSaddF24_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cQorl_eReg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%__1cSaddD_reg_roundNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvL2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFframebFset_interpreter_frame_sender_sp6Mpi_v_;
-text: .text%__1cRmulI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovI_regUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cOMacroAssemblerEfcmp6MpnMRegisterImpl__v_;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cOsubF24_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWroundFloat_mem_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%jni_GetJavaVM;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%__1cOstoreF_immNodeFreloc6kM_i_;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cJAssemblerGfild_d6MnHAddress__v_;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cRaddL_eReg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerEincl6MnHAddress__v_;
-text: .text%__1cXpartialSubtypeCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_mem_eRegNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerQload_signed_byte6MpnMRegisterImpl_nHAddress__i_;
-text: .text%__1cPconvL2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKciTypeFlowLStateVectorOdo_null_assert6MpnHciKlass__v_;
-text: .text%__1cPconvL2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIci2bNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cQmulD_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJAssemblerHfucomip6Mi_v_;
-text: .text%__1cFciEnvbNArrayIndexOutOfBoundsException_instance6M_pnKciInstance__;
-text: .text%__1cRsalI_eReg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cTconvI2F_SSF_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRaddD_reg_imm1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cNSpaceCounters2t6MpkciIpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cSaddF24_reg_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cPmovP_nocopyNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cIcp2bNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cLVtableStubsPstub_containing6FpC_pnKVtableStub__;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%__1cFStateP_sub_Op_ConvF2I6MpknENode__v_;
-text: .text%__1cQshrL_eReg_CLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNCellTypeStateImake_any6Fi_0_: generateOopMap.o;
-text: .text%__1cJAssemblerEmovb6MnHAddress_i_v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cJAssemblerFfinit6M_v_;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerSstore_check_part_26MpnMRegisterImpl__v_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cVMoveF2I_reg_stackNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSmulF24_reg_immNodeFreloc6kM_i_;
-text: .text%__1cLloadSSINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerSstore_check_part_16MpnMRegisterImpl__v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cFStateM_sub_Op_DivD6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNGCTaskManagerGthread6MI_pnMGCTaskThread__;
-text: .text%__1cFStateM_sub_Op_SubD6MpknENode__v_;
-text: .text%__1cSmulF24_reg_memNodeFreloc6kM_i_;
-text: .text%__1cScompP_eReg_memNodeFreloc6kM_i_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateM_sub_Op_NegD6MpknENode__v_;
-text: .text%__1cJlog2_long6Fx_i_: divnode.o;
-text: .text%__1cQaddD_reg_immNodeFreloc6kM_i_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNcmovI_memNodeFreloc6kM_i_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%__1cNdivI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cImulINodeFreloc6kM_i_;
-text: .text%__1cNmulI_eRegNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cLClassLoaderLadd_to_list6FpnOClassPathEntry__v_;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMstoreSSINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerLstore_check6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cJAssemblerEcmpb6MnHAddress_i_v_;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerEdecl6MnHAddress__v_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cMNativeLookupNlong_jni_name6FnMmethodHandle__pc_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcompP_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cFciEnvOrecord_failure6Mpkc_v_;
-text: .text%__1cJAssemblerEfld16M_v_;
-text: .text%__1cJAssemblerFfld_x6MnHAddress__v_;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJAssemblerHfistp_d6MnHAddress__v_;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJAssemblerFimull6MpnMRegisterImpl_2_v_;
-text: .text%__1cRInvocationCounterDdef6Fn0AFState_ipFnMmethodHandle_pnGThread__pC_v_;
-text: .text%__1cFciEnvXget_or_create_exception6MrpnI_jobject_nMsymbolHandle__pnKciInstance__;
-text: .text%__1cMPerfDataList2t6Mi_v_;
-text: .text%__1cLloadSSINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRaddI_mem_eRegNodeFreloc6kM_i_;
-text: .text%__1cUInterpreterGeneratorTgenerate_math_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cSCardTableExtensionbEresize_covered_region_by_start6MnJMemRegion__v_;
-text: .text%__1cJArgumentsObuild_jvm_args6Fpkc_v_;
-text: .text%__1cJAssemblerFfmulp6Mi_v_;
-text: .text%__1cNcmovL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_22_v_;
-text: .text%__1cRaddI_mem_eRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_FindSignal;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%JVM_RegisterSignal;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cSaddF24_reg_memNodeQuse_cisc_RegMask6M_v_;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cJAssemblerEandl6MpnMRegisterImpl_2_v_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%__1cJAssemblerEcdql6M_v_;
-text: .text%__1cUInterpreterGeneratorbDgenerate_stack_overflow_check6M_v_;
-text: .text%__1cRCardTableModRefBSbCfind_covering_region_by_base6MpnIHeapWord__i_;
-text: .text%__1cRCardTableModRefBSbAlargest_prev_committed_end6kMi_pnIHeapWord__;
-text: .text%__1cMSysClassPathNreset_item_at6Mi_v_: arguments.o;
-text: .text%__1cFStateM_sub_Op_CmpF6MpknENode__v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cJAssemblerDorl6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cJAssemblerGfmul_d6MnHAddress__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl__v_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNandI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cNSafepointBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cNSafepointBlob2n6FII_pv_;
-text: .text%__1cQmulD_reg_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTconvI2F_SSF_memNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_I_v_;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cSPSPromotionManager2t6M_v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveF2I_reg_stackNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddF24_reg_memNodeFreloc6kM_i_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cSdivD_reg_roundNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cPmovP_nocopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cIci2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_rnFLabel__v_;
-text: .text%JVM_Available;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_2i_v_;
-text: .text%__1cPmovI_nocopyNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIci2bNodeIpipeline6kM_pknIPipeline__;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cIcp2bNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJAssemblerGfild_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfstp_d6Mi_v_;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cNTemplateTableUinvokevirtual_helper6FpnMRegisterImpl_22_v_;
-text: .text%__1cJAssemblerEfxch6Mi_v_;
-text: .text%__1cJAssemblerFfprem6M_v_;
-text: .text%__1cJAssemblerJfnstsw_ax6M_v_;
-text: .text%__1cJAssemblerEsahf6M_v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cJAssemblerEfchs6M_v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cSaddF24_reg_immNodeFreloc6kM_i_;
-text: .text%__1cJAssemblerEfabs6M_v_;
-text: .text%__1cJStubQdDueueOregister_queue6Fp0_v_;
-text: .text%__1cOMacroAssemblerPcorrected_idivl6MpnMRegisterImpl__i_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cRsubI_eReg_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cFStateL_sub_Op_OrL6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_SubF6MpknENode__v_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cFStateP_sub_Op_MoveL2D6MpknENode__v_;
-text: .text%__1cNincI_eRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cKGCStatInfo2t6Mi_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cJAssemblerEaddl6MnHAddress_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFidivl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEmull6MnHAddress__v_;
-text: .text%__1cJAssemblerDorl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerEsarl6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEshll6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerFshrdl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEshrl6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cJAssemblerEfldz6M_v_;
-text: .text%__1cJAssemblerFfld_s6Mi_v_;
-text: .text%__1cJAssemblerFfst_s6MnHAddress__v_;
-text: .text%__1cJAssemblerFfst_d6MnHAddress__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2F6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2D6MpknENode__v_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cFStateP_sub_Op_ConvD2F6MpknENode__v_;
-text: .text%__1cHnmethodVinvalidate_osr_method6M_v_;
-text: .text%__1cQAgentLibraryList2t6M_v_: arguments.o;
-text: .text%__1cJAssemblerEmovb6MpnMRegisterImpl_nHAddress__v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cNmulI_eRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cIPSOldGenOgen_size_limit6M_I_;
-text: .text%__1cIPSOldGenGresize6MI_v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerWdispatch_only_noverify6MnITosState__v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cZInterpreterMacroAssemblerPset_mdp_flag_at6MpnMRegisterImpl_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MpnMRegisterImpl__v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MpnMRegisterImpl_2_v_;
-text: .text%__1cIPSOldGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Ipkci_v_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cUPSAdaptiveSizePolicybQpromo_increment_with_supplement_aligned_up6MI_I_;
-text: .text%__1cUPSAdaptiveSizePolicyPpromo_increment6MII_I_;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cOMacroAssemblerFfremr6MpnMRegisterImpl__v_;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKReflectionbFbasic_type_arrayklass_to_mirror6FpnMklassOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cNGCTaskManagerKset_thread6MIpnMGCTaskThread__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%__1cLConvL2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cCosVatomic_xchg_bootstrap6Fipoi_i_;
-text: .text%__1cUParallelScavengeHeapOresize_old_gen6MI_v_;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%Unsafe_SetNativeLong;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cIUniversePinitialize_heap6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cIUniverseYcompute_base_vtable_size6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cQVMOperationQdDueue2t6M_v_;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%Unsafe_PageSize;
-text: .text%__1cNTemplateTableDret6F_v_;
-text: .text%Unsafe_FreeMemory;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNCollectedHeapYlarge_typearray_allocate6FnLKlassHandle_iipnGThread__pnHoopDesc__: typeArrayKlass.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cIVMThreadEloop6M_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cKVM_VersionWget_processor_features6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cHVM_ExitNset_vm_exited6F_i_;
-text: .text%__1cHVM_ExitbJwait_for_threads_in_native_to_block6F_i_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cNWatcherThread2t6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadFstart6F_v_;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cLVtableStubsKinitialize6F_v_;
-text: .text%__1cIVMThread2t6M_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cIUniversePcheck_alignment6FIIpkc_v_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cFJNIidKdeallocate6Fp0_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cRInlineCacheBufferKinitialize6F_v_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cICodeHeapFclear6M_v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerUdispatch_only_normal6MnITosState__v_;
-text: .text%__1cZInterpreterMacroAssemblerSsuper_call_VM_leaf6MpCpnMRegisterImpl_33_v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cKDictionaryKfree_entry6MpnPDictionaryEntry__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cFStateQ_sub_Op_TailJump6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_NegF6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cODeoptimizationTload_class_by_index6FnSconstantPoolHandle_i_v_;
-text: .text%__1cODeoptimizationTload_class_by_index6FnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cUConstantOopReadValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cNCellTypeStateLmake_bottom6F_0_: generateOopMap.o;
-text: .text%__1cNCellTypeStateImake_top6F_0_: generateOopMap.o;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cKNoopGCTaskQcreate_on_c_heap6F_p0_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cLGCTaskQdDueueQcreate_on_c_heap6F_p0_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cXSignatureHandlerLibraryQset_handler_blob6F_pC_;
-text: .text%JVM_MaxMemory;
-text: .text%JVM_Halt;
-text: .text%JVM_InitProperties;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cKJNIHandlesKinitialize6F_v_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%lookupDirectBufferClasses: jni.o;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cRJvmtiEventEnabledFclear6M_v_;
-text: .text%__1cRJvmtiEventEnabled2t6M_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_Socket;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectPcompute_offsets6F_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cQprint_statistics6F_v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGeneratorXgenerate_abstract_entry6M_pC_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%__1cLJavaClassesPcompute_offsets6F_v_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cZsun_misc_AtomicLongCSImplPcompute_offsets6F_v_;
-text: .text%__1cPjava_nio_BufferPcompute_offsets6F_v_;
-text: .text%__1cQjava_lang_SystemPcompute_offsets6F_v_;
-text: .text%__1cbIjava_security_AccessControlContextPcompute_offsets6F_v_;
-text: .text%__1cYsun_reflect_ConstantPoolPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cJAssemblerEmull6MpnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerEadcl6MpnMRegisterImpl_i_v_;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJAssemblerEsbbl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerLextend_sign6MpnMRegisterImpl_2_v_;
-text: .text%__1cJAssemblerFfaddp6Mi_v_;
-text: .text%__1cJAssemblerGfdivrp6Mi_v_;
-text: .text%__1cJAssemblerHfdivr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerHfdivr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfmul_s6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_d6MnHAddress__v_;
-text: .text%__1cJAssemblerHfsubr_s6MnHAddress__v_;
-text: .text%__1cJAssemblerGfadd_d6MnHAddress__v_;
-text: .text%__1cJAssemblerGfadd_s6MnHAddress__v_;
-text: .text%__1cJAssemblerFfsqrt6M_v_;
-text: .text%__1cJAssemblerEfcos6M_v_;
-text: .text%__1cJAssemblerEfsin6M_v_;
-text: .text%__1cJAssemblerEsetb6Mn0AJCondition_pnMRegisterImpl__v_;
-text: .text%__1cJAssemblerEsubl6MnHAddress_i_v_;
-text: .text%__1cJAssemblerFshldl6MpnMRegisterImpl_2_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cHi2sNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHi2bNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTconvI2F_SSF_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQmulD_reg_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOtailjmpIndNodeFreloc6kM_i_;
-text: .text%__1cTconvI2F_SSF_memNodeFreloc6kM_i_;
-text: .text%__1cQmulD_reg_memNodeFreloc6kM_i_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsMget_property6Fpkc_2_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPath2T6M_v_;
-text: .text%__1cMSysClassPath2t6Mpkc_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_III_v_;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_IIIIIII_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cJCodeCacheKinitialize6F_v_;
-text: .text%__1cNExceptionBlob2n6FII_pv_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNExceptionBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cQUncommonTrapBlob2n6FII_pv_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cQUncommonTrapBlob2t6MpnKCodeBuffer_ipnJOopMapSet_i_v_;
-text: .text%__1cSDeoptimizationBlob2n6FII_pv_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cOCompilerOraclePparse_from_file6F_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_;
-text: .text%__1cOMacroAssemblerQsign_extend_byte6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerRsign_extend_short6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerIlcmp2int6MpnMRegisterImpl_222_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerElmul6Mii_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerGc2bool6MpnMRegisterImpl__v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpCpnMRegisterImpl_3_v_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cSDeoptimizationBlob2t6MpnKCodeBuffer_ipnJOopMapSet_iiii_v_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cPClassFileParserYjava_lang_Class_fix_post6Mpi_v_;
-text: .text%__1cPClassFileParserXjava_lang_Class_fix_pre6MpnOobjArrayHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cQRelocationHolder2t6M_v_: relocInfo.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cLStatSamplerKinitialize6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cSReferenceProcessorMinit_statics6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cKPSYoungGenUset_space_boundaries6MII_v_;
-text: .text%__1cKPSYoungGenbGcompute_initial_space_boundaries6M_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGen2t6MIII_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cIPSOldGen2t6MIIIpkci_v_;
-text: .text%__1cLStatSamplerUcreate_misc_perfdata6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cMStubRoutinesLinitialize26F_v_;
-text: .text%__1cMStubRoutinesLinitialize16F_v_;
-text: .text%__1cLStatSamplerXcreate_sampled_perfdata6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cNMemoryServicebFadd_parallel_scavenge_heap_info6FpnUParallelScavengeHeap__v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cNMemoryServiceXadd_psYoung_memory_pool6FpnKPSYoungGen_pnNMemoryManager_4_v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cNMemoryServiceWadd_psPerm_memory_pool6FpnJPSPermGen_pnNMemoryManager__v_;
-text: .text%__1cNMemoryServiceVadd_psOld_memory_pool6FpnIPSOldGen_pnNMemoryManager__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cJTimeStamp2t6M_v_: management.o;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementEinit6F_v_;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_I_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cNdefaultStreamEinit6M_v_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKPerfMemoryHdestroy6F_v_;
-text: .text%__1cKPerfMemoryKinitialize6F_v_;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cMPerfDataListFclone6M_p0_;
-text: .text%__1cMPerfDataList2t6Mp0_v_;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosHSolarisWinitialize_system_info6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
--- a/make/solaris/makefiles/reorder_TIERED_sparc	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4358 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cCosOjavaTimeMillis6F_x_;
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cXresource_allocate_bytes6FI_pc_;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cNSharedRuntimeElmul6Fxx_x_;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cJiRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cOloadConI13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOloadConI13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cKbranchNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHCompileNnode_bundling6MpknENode__pnGBundle__;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cFArenaIArealloc6MpvII_1_;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_: ad_sparc.o;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cNMachIdealNodeErule6kM_I_: ad_sparc.o;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cNSharedRuntimeDl2f6Fx_f_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cJiRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cXPipeline_Use_Cycle_Mask2L6Mi_r0_: ad_sparc_pipeline.o;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_sparc.o;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJloadINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_sparc.o;
-text: .text%__1cKbranchNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_sparc.o;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cUParallelScavengeHeapVlarge_typearray_limit6M_I_: parallelScavengeHeap.o;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cMPipeline_UseMfull_latency6kMIrk0_I_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_: ad_sparc.o;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cMloadConPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cMPipeline_UseJadd_usage6Mrk0_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cJiRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cKSchedulingWAddNodeToAvailableList6MpnENode__v_;
-text: .text%__1cKSchedulingSChooseNodeToBundle6M_pnENode__;
-text: .text%__1cKSchedulingPAddNodeToBundle6MpnENode_pknFBlock__v_;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cMMutableSpaceIallocate6MI_pnIHeapWord__;
-text: .text%__1cJPSPermGenSallocate_permanent6MI_pnIHeapWord__;
-text: .text%__1cUParallelScavengeHeapWpermanent_mem_allocate6MI_pnIHeapWord__;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMutableSpaceMcas_allocate6MI_pnIHeapWord__;
-text: .text%__1cNflagsRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cXPipeline_Use_Cycle_MaskCOr6Mrk0_v_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cKTypeAryPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cMflagsRegOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cObranchConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cPindOffset13OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cUcompI_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cKRelocationRpd_set_data_value6MpCi_v_;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cVcompP_iRegP_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cNbranchConNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGBitMap2t6MpII_v_;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cKimmI13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cObranchConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cJloadBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cSaddP_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_sparc.o;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cLTypeInstPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOcompU_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cJiRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cOloadConI13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOloadConI13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cJiRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cQaddP_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cRshlI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cKcmpOpPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKTypeRawPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cMloadConINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFArenaEgrow6MI_pv_;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cQaddP_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cKRelocationLunpack_data6M_v_: relocInfo.o;
-text: .text%__1cNflagsRegUOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cObranchConUNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cOcompI_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cOloadConI13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cKbranchNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cSaddI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cKSchedulingbFComputeRegisterAntidependencies6MpnFBlock__v_;
-text: .text%__1cKSchedulingPComputeUseCount6MpknFBlock__v_;
-text: .text%__1cHTypePtrHget_con6kM_i_;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc.o;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc.o;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cQaddI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConUNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNCollectedHeapXallocate_from_tlab_slow6FpnGThread_I_pnIHeapWord__;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cWThreadLocalAllocBufferEfill6MpnIHeapWord_2I_v_;
-text: .text%__1cUParallelScavengeHeapRallocate_new_tlab6MI_pnIHeapWord__;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cUcompI_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLMachNopNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cSaddP_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cKbranchNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachOperIconstant6kM_i_;
-text: .text%__1cWMutableSpaceUsedHelperLtake_sample6M_x_: spaceCounters.o;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cPcompP_iRegPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cCosPelapsed_counter6F_x_;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_CurrentThread;
-text: .text%__1cENodeHget_ptr6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cXmembar_release_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cOcompU_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cSaddP_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPindOffset13OperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cUcompI_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVcompP_iRegP_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cNSharedRuntimeElrem6Fxx_x_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cKo0RegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cSaddI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConUNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cVcompP_iRegP_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRSignatureIteratorSiterate_parameters6MX_v_;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cLstoreI0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQaddI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRshrI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cOcompU_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJiRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNflagsRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMflagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__: ad_sparc.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_sparc.o;
-text: .text%__1cRshlI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cQregF_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
-text: .text%__1cRshlI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSaddP_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cMloadConDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKTypeOopPtrHget_con6kM_i_;
-text: .text%__1cQsubI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cOcompI_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPindOffset13OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cRlock_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVcompP_iRegP_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompI_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cMloadConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cRshrI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cSaddI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cOcompI_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cJloadSNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cMstringStreamFwrite6MpkcI_v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRloadConP_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cPcompP_iRegPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cQsubI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cCosGmalloc6FI_pv_;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cIimmPOperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cIregDOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICodeHeapLheader_size6F_I_;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cLstoreB0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cJloadFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cMVirtualSpaceOcommitted_size6kM_I_;
-text: .text%__1cOcompU_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cPcompP_iRegPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPsp_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cRshrP_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeLongEmake6Fxxi_pk0_;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreB0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIimmIOperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cNSharedRuntimeEldiv6Fxx_x_;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQsubI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKmethodOperGmethod6kM_i_: ad_sparc.o;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cRloadConP_pollNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cNflagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cRshrI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cQaddI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYCallStaticJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cPorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKbranchNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKbranchNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConI13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cQandL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQaddL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cQmulL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cTCreateExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreB0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cITypeLongEmake6Fx_pk0_;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cKimmI13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cNloadConP0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cRsarI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cQxorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNflagsRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cQsubI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cRshrI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cPcompP_iRegPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cOstackSlotLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cICodeHeapSallocated_capacity6kM_I_;
-text: .text%__1cICHeapObj2n6FI_pv_;
-text: .text%__1cQsubL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cKTypeRawPtrHget_con6kM_i_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cPconvL2I_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIimmLOperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cSHighResTimeSamplerLtake_sample6M_x_: statSampler.o;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cMPeriodicTaskOreal_time_tick6FI_v_;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cQandL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMachNodeRget_base_and_disp6kMrirpknHTypePtr__pknENode__;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRbranchLoopEndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%JVM_Write;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cSbranchCon_longNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cUcompU_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cMTypeKlassPtrKadd_offset6kMi_pknHTypePtr__;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cSandI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cICodeHeapIcapacity6kM_I_;
-text: .text%__1cMCodeHeapPoolNused_in_bytes6M_I_: memoryPool.o;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cOCallRelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cHoopDescSslow_identity_hash6M_i_;
-text: .text%__1cSObjectSynchronizerXidentity_hash_value_for6FnGHandle__i_;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cOloadConI13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMtlsLoadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cQandI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cRcompL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cObranchConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cJcmpOpOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cQxorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKcmpOpPOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cObranchConPNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cSaddL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cMloadConLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cSmembar_releaseNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJimmU5OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSbranchCon_longNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNbranchConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cRsarI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFArenaEused6kM_I_;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cMloadConINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNbranchConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNbranchConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQandL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cRshrP_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQandI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFChunk2n6FII_pv_;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cRcompL_reg_conNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRshrP_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cMloadConFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQaddL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cQdivD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cPorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cICodeHeapIallocate6MI_pv_;
-text: .text%__1cICodeHeapPsearch_freelist6MI_pnJFreeBlock__;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cUPipeline_Use_Element2t6M_v_: output.o;
-text: .text%__1cRshrL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNimmP_pollOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cRloadConP_pollNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cLRegisterMapIpd_clear6M_v_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cLstoreP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cQmulL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrP_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cSconvI2D_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cUcompI_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
-text: .text%__1cSbranchCon_longNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYcompareAndSwapL_boolNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJimmU5OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cKcmpOpPOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConPNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvL2I_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cQxorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cPconvL2I_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cQandL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cJcmpOpOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cSandI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cObranchConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshlL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cZresource_reallocate_bytes6FpcII_0_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cIimmDOperJconstantD6kM_d_: ad_sparc_clone.o;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cSaddI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRshlI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cMstringStream2t6MI_v_;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cNbranchConNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cKcmpOpPOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cOcompU_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cKKlass_vtbl2n6FIrnLKlassHandle_ipnGThread__pv_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cRsarI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompU_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUcompU_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cKimmP13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cVcompP_iRegP_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cRcompL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cQxorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cSandI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRcompL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKcmpOpPOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQmodI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cYcompareAndSwapL_boolNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cLstoreP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cQmulD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cQsubL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cQandI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cFframeZinterpreter_frame_set_bcx6Mi_v_;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cSaddL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshrL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cQmodI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcompL_reg_conNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMnegF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cMloadConDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cQaddI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQcmovI_reg_ltNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsubI_zero_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHiterate6MX_v_: jni.o;
-text: .text%__1cbBjava_lang_ref_SoftReferenceFclock6F_x_;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNflagsRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cSaddP_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cKg1RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKo0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_sparc.o;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cRshrL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJtimestamp6FpnHoopDesc__x_;
-text: .text%__1cPcompP_iRegPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSxorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cQshlI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%JVM_Clone;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompU_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cLcmpD_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cNloadConP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cLstoreB0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRshrI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cQsubI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cRcompL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshlL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCallLeafDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cRcompL_reg_conNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcompareAndSwapL_boolNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshlI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKPSYoungGenNused_in_bytes6kM_I_;
-text: .text%__1cOMachEpilogNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cMVirtualSpaceNreserved_size6kM_I_;
-text: .text%__1cICodeHeapMmax_capacity6kM_I_;
-text: .text%__1cRsubI_zero_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cNflagsRegFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cPlocal_vsnprintf6FpcIpkcpv_i_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cOloadConL13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%jio_snprintf;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cSmulI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cQcmovI_reg_gtNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cQcmovI_reg_ltNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cFArena2t6MI_v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cRsubI_zero_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cObranchConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTresource_free_bytes6FpcI_v_;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cRcompL_reg_conNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSmulI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperOindex_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: assembler_sparc.o;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cMindIndexOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cNloadConL0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cVCallRuntimeDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreB0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cSconvI2D_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cQregP_to_stkPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cJTimeStampSticks_since_update6kM_x_;
-text: .text%__1cQmodI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cURethrowExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQcmovI_reg_ltNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cJimmL0OperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cOloadConL13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNObjectMonitorHis_busy6kM_i_;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cTmembar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cIimmFOperJconstantF6kM_f_: ad_sparc_clone.o;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cCosRcurrent_thread_id6F_i_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cJttyLockerbCbreak_tty_lock_for_safepoint6Fi_v_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cPorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cRshrP_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cObranchConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cIimmPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQsubL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKcmpOpPOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKimmL13OperJconstantL6kM_x_: ad_sparc_clone.o;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cQshlI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindirectOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMindirectOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cSsubL_reg_reg_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cPconvF2D_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQaddF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cRsubI_zero_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cQnotemp_iRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cOcmovII_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cRsarL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cOcmovII_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQmodI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cSxorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cKManagementJtimestamp6F_x_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cQshrI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cTloadL_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_2_v_;
-text: .text%__1cSstring_compareNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cOcmovII_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
-text: .text%__1cSmulI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%signalHandler;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cSconvI2D_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cOMacroAssemblerbBcheck_and_forward_exception6MpnMRegisterImpl__v_;
-text: .text%__1cQcmovI_reg_ltNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cCosRelapsed_frequency6F_x_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cKScheduling2t6MpnFArena_rnHCompile__v_;
-text: .text%__1cKSchedulingMDoScheduling6M_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cQmulI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cOcmovII_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cKPSYoungGenRcapacity_in_bytes6kM_I_;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cOloadConI13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cRNativeMovConstRegIset_data6Mi_v_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQmulD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cQregI_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cSdivL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cKPerfMemoryFalloc6FI_pc_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cQmulL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cRshlL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cObranchConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKloadUBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLcmpD_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cRbranchLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cUParallelScavengeHeapEused6kM_I_;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQmulF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQxorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLcmpD_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRbranchLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRbranchLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cSxorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cSbranchCon_longNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSbranchCon_longNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSbranchCon_longNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cLstoreP0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cSandI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmLOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cQregP_to_stkPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cQdivL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cSconvI2D_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cSTailCalljmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_gtNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLstoreP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cTLoadL_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cSmulI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
-text: .text%__1cQcmovI_reg_gtNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorSlong_initial_value6kM_x_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQandI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cQmulI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cWCallLeafNoFPDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cMloadConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cSxorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSaddL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cLstoreI0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cRtestI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJimmU6OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cSmulL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cNflagsRegFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbBjava_lang_ref_SoftReferenceJset_clock6Fx_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cQaddF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cOcmovII_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cKimmU13OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQshlL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUcompU_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%__1cOcmovPP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreC0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cLstoreB0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_gtNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_young_gen6MII_v_;
-text: .text%__1cKPSYoungGenGresize6MII_v_;
-text: .text%__1cKPSYoungGenNresize_spaces6MII_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cTmembar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cTloadL_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cQmulF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cKimmL13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLcmpF_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cRorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmulI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cJloadSNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQregP_to_stkPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cYcompareAndSwapL_boolNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPSOldGenMmax_gen_size6M_I_: psOldGen.o;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cSdivL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cQaddL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cMregD_lowOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cOcmovII_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cOcmovIL_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cPstoreI_FregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cLstoreC0NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_MonitorWait;
-text: .text%__1cSObjectSynchronizerEwait6FnGHandle_xpnGThread__v_;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cQshlI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cNloadConL0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshrL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cQsubF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cQaddD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongVariable__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cQsubI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cSbranchCon_longNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cUParallelScavengeHeapIcapacity6kM_I_;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cSsubL_reg_reg_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cLstoreF0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cSandL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cOcmovPP_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cKstoreCNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSThreadLocalStoragebBget_thread_via_cache_slowly6FIi_pnGThread__;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cKloadUBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvD2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cOloadI_fregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadI_fregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPstoreI_FregNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%__1cKstoreINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cQmulI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQregI_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIgenerate6MX_v_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cJimmU6OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cQsubI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cOcmovII_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTloadL_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSharedRuntimeDd2l6Fd_x_;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQregI_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cMregD_lowOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2F_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cQdivI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cQregP_to_stkPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQstkI_to_regFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregI_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQRelocationHolderEplus6kMi_0_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovII_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTloadD_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOloadConL13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_conNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cSconvD2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cJloadINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSdivL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZCallDynamicJavaDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQdivL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUdivL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUmulL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cQdivD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cQmulF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSstring_compareNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVshrL_reg_imm6_L2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cOloadConL13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cOimmI_32_63OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cQshlL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRshlI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOloadConL13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cUdivL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cUmulL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregP_to_stkPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cOcmovIF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_ltNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSsubL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQshrL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQshrI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOimmI_32_63OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOloadI_fregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cQdivL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsarL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregL_to_stkLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cSconvI2F_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cOcmovPP_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cCosScurrent_stack_size6F_I_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cSdivL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cSsubL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%JVM_Read;
-text: .text%__1cOcmovPI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cQsubL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cQmodI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRsarI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNloadKlassNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreF0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cQshrL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cPconvI2D_memNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNimmP_pollOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRtestI_reg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cKJavaThread2t6MpFp0pnGThread__vI_v_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%JVM_IsArrayClass;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnPPerfLongCounter__;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cKstoreBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cKstoreLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cTloadD_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassName;
-text: .text%__1cOloadI_fregNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cOcmovIF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovIL_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOcmovPP_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cJloadSNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_Open;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cSmulL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cQjava_lang_ThreadJstackSize6FpnHoopDesc__x_;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cTLoadD_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cQshrI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_FreeMemory;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%JVM_TotalMemory;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovIL_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_memNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cQandI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRNativeMovConstRegEdata6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cQaddD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cQdivD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbEset_method_data_pointer_offset6MpnMRegisterImpl__v_;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cOcmovIL_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSandL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cQregL_to_stkLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cTloadD_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNiRegIsafeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNloadConP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMnegD_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSsubL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cOloadI_fregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cLstoreF0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%JVM_NativePath;
-text: .text%__1cOMacroAssemblerNflush_windows6M_v_;
-text: .text%__1cSsubD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cKg3RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVinline_cache_regPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKstorePNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cPconvI2D_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cOcmovPI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cMtlsLoadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLcmpF_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVCallRuntimeDirectNodeKmethod_set6Mi_v_;
-text: .text%__1cKimmI11OperIconstant6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQcmovI_reg_gtNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLstoreP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovIF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLL_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MipnMRegisterImpl__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cOcmovLL_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cVMoveL2D_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cOcmovLL_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cWloadConI_x41f00000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpFOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLstoreC0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQregL_to_stkLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Close;
-text: .text%__1cSmulD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsubD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXconvI2D_regDHi_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfDataManagerUcreate_long_constant6FnJCounterNS_pkcnIPerfDataFUnits_xpnGThread__pnQPerfLongConstant__;
-text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cQsubF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbIcompute_extra_locals_size_in_bytes6MpnMRegisterImpl_22_v_;
-text: .text%__1cLcmpF_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cPorI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSxorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2D_memNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWloadConI_x43300000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x41f00000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQdivI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSmulD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotLOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQshlI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cJloadDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cOcmovLI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cCosHSolarisKmmap_chunk6FpcIii_2_;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cLstoreI0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cQsubD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPP_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cJloadFNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cObranchConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cObranchConFNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSconvF2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cObranchConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLcmpD_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cLResourceObj2n6FIn0APallocation_type__pv_;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTloadL_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOcmovLL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTloadL_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cXconvI2D_regDHi_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerbFtest_invocation_counter_for_mdp6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cSaddD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
-text: .text%__1cSmulL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cTloadD_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cJimmP0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cQshrI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x43300000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cWloadConI_x41f00000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cIimmDOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFframeZinterpreter_frame_set_mdx6Mi_v_;
-text: .text%__1cOstackSlotLOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotLOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cTloadD_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmulD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%JVM_GetComponentType;
-text: .text%__1cQdivI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cOcmovII_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cVMoveF2I_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cPconvD2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cQsubD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_DefineClass;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cOcmovPP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegD_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cQstkI_to_regINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cPconvI2D_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPorL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cSaddL_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2L_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cOcmovII_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%JVM_NewArray;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOcmovDF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovLI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cPconvI2L_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cLconvP2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cOMacroAssemblerPbreakpoint_trap6M_v_;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%JVM_GC;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cQmulL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUPSAdaptiveSizePolicyUmajor_collection_end6MInHGCCauseFCause__v_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cJPSPermGenQcompute_new_size6MI_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregL_to_stkLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpFOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cOcmovPI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovIF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cQaddL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cJloadLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%JVM_Sleep;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQstkI_to_regFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cRorI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%JVM_Lseek;
-text: .text%__1cNloadRangeNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPconvD2F_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cPconvF2D_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvF2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovLI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cQregP_to_stkPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MipnMRegisterImpl_rnFLabel_2_v_;
-text: .text%__1cQstkI_to_regINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQaddF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cSconvF2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetEnv;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQstkI_to_regINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%JVM_NanoTime;
-text: .text%__1cCosNjavaTimeNanos6F_x_;
-text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cQandL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKcmpOpFOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cSdivL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cObranchConFNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cOcmovIF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSaddL_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreC0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cOstackSlotFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cKo2RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregI_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cWloadConI_x43300000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cPorL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cVMoveL2D_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cRshrI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cSsubL_reg_reg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cUdivL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cOcmovLL_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cSmulL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOloadConL13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKcmpOpFOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cOcmovDF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKVtableStub2n6FIi_pv_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cPconvD2F_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cVMoveF2I_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cPorL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQandI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMnegD_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cQmulD_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cQmulI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassContext;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cOcmovIF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKstoreFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVMoveL2D_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cOloadConL13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cLstoreF0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPconvI2D_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cKimmU13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cOcmovIL_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cQregF_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cPorL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cQshlL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cVMoveL2D_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MrnFLabel__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKimmP13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cPstoreI_FregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTloadD_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOloadI_fregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLconvP2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cTloadD_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cRtestI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%jni_GetJavaVM;
-text: .text%__1cOcmovDF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cQdivL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cNReservedSpace2t6MI_v_;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cOloadI_fregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSconvD2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cPstoreI_FregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSpaceCounters2t6MpkciIpnMMutableSpace_pnSGenerationCounters__v_;
-text: .text%__1cLcmpF_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%bootstrap_flush_windows;
-text: .text%__1cSdivL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cSmulL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cSsubL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cQmulD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cSandL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cPstoreI_FregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cSandI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cRcompL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSconvD2I_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cPconvL2I_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cMnegF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregF_to_stkINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cOcmovLL_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODeoptimizationLUnrollBlockOsize_of_frames6kM_i_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cQaddD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cLconvP2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVMoveF2I_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cKstfSSFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cVMoveF2I_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHTypePtrKadd_offset6kMi_pk0_;
-text: .text%__1cOcmovLI_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovPI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovDF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_icc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cKstfSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_sparc.o;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cQsubD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRT_sparc.o;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovIF_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2D_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLstoreF0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
-text: .text%__1cPstoreI_FregNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i2_v_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cOcmovPI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%JVM_RegisterSignal;
-text: .text%JVM_FindSignal;
-text: .text%__1cTMaskFillerForNative2t6MnMmethodHandle_pIi_v_: oopMapCache.o;
-text: .text%jio_vsnprintf;
-text: .text%__1cQshrL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cOPSVirtualSpace2t6MnNReservedSpace_I_v_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cLconvP2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%JVM_Available;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cQshlL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-text: .text%__1cLstoreF0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cOstackSlotFOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cLstoreC0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cMPeriodicTask2t6MI_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x43300000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cKcmpOpFOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPconvD2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cSconvF2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJimmL0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cSaddD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsubD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregF_to_stkINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
-text: .text%__1cSmulD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cWloadConI_x41f00000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKloadUBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cQstkI_to_regINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLOptoRuntimeIl2f_Type6F_pknITypeFunc__;
-text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MnITosState_pnMRegisterImpl_3_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MnITosState_pnMRegisterImpl__v_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cCosHrealloc6FpvI_1_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cOtailjmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cFParseDl2f6M_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cPorL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cUInterpreterGeneratorVrestore_native_result6M_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cLconvP2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cVMoveF2I_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_normal6MnITosState__v_;
-text: .text%__1cJTimeStampMmilliseconds6kM_x_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_expand.o;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cJTimeStampJupdate_to6Mx_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cNpriocntl_stub6FinGidtype_lipc_l_: os_solaris.o;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKcmpOpFOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cUParallelScavengeHeapMmax_capacity6kM_I_;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cNReservedSpaceUpage_align_size_down6FI_I_;
-text: .text%__1cNReservedSpaceYallocation_align_size_up6FI_I_;
-text: .text%__1cTloadL_unalignedNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementWrecord_vm_startup_time6Fxx_v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cQregL_to_stkLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cKi0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKg1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cLstoreF0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cIUniversePcheck_alignment6FIIpkc_v_;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cQdivD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cQsubD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQaddF_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cRsarL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cQshlI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cOcmovLI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovDF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_Socket;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cOcmovIF_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cKstfSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cSmulL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cSmulI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%Unsafe_SetNativeLong;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%Unsafe_FreeMemory;
-text: .text%Unsafe_PageSize;
-text: .text%JVM_MaxMemory;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cVRegistersForDebuggingRrestore_registers6FpnOMacroAssembler_pnMRegisterImpl__v_: assembler_sparc.o;
-text: .text%__1cVRegistersForDebuggingOsave_registers6FpnOMacroAssembler__v_: assembler_sparc.o;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cRCardTableModRefBSbBct_max_alignment_constraint6F_I_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cKPSYoungGenQlimit_gen_shrink6MI_I_;
-text: .text%__1cKPSYoungGenRavailable_to_live6M_I_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_pipeline.o;
-text: .text%__1cUAdjoiningGenerations2t6MnNReservedSpace_IIIIIII_v_;
-text: .text%__1cWAdjoiningVirtualSpaces2t6MnNReservedSpace_III_v_;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cNStubGeneratorbNgenerate_flush_callers_register_windows6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerPstop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_2222_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerFlushr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_: frame.o;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cJGenRemSetYmax_alignment_constraint6Fn0AEName__I_;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cKPerfMemoryUcreate_memory_region6FI_v_;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cKPSYoungGenKinitialize6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGenYinitialize_virtual_space6MnNReservedSpace_I_v_;
-text: .text%__1cKPSYoungGen2t6MIII_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cJPSPermGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cIPSOldGenKinitialize6MnNReservedSpace_Ipkci_v_;
-text: .text%__1cIPSOldGen2t6MIIIpkci_v_;
-text: .text%__1cIPSOldGen2t6MnNReservedSpace_IIIIpkci_v_;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cNTemplateTableDret6F_v_;
--- a/make/solaris/makefiles/reorder_TIERED_sparcv9	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4207 +0,0 @@
-data = R0x2000;
-text = LOAD ?RXO;
-
-
-text: .text%__1cQIndexSetIteratorQadvance_and_next6M_I_;
-text: .text%__1cNinstanceKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNinstanceKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOtypeArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOtypeArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIPhaseIFGIadd_edge6MII_i_;
-text: .text%__1cQIndexSetIterator2t6MpnIIndexSet__v_;
-text: .text%__1cENodeEjvms6kM_pnIJVMState__;
-text: .text%__1cIIndexSetWalloc_block_containing6MI_pn0AIBitBlock__;
-text: .text%__1cETypeDcmp6Fkpk03_i_;
-text: .text%__1cENodeHlatency6MI_I_;
-text: .text%__1cHRegMaskJis_bound16kM_i_;
-text: .text%__1cDff16FI_i_;
-text: .text%__1cHRegMaskESize6kM_I_;
-text: .text%__1cENodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2R6MI_rnDSet__;
-text: .text%__1cHRegMaskJis_bound26kM_i_;
-text: .text%__1cIMachNodeGOpcode6kM_i_;
-text: .text%__1cJiRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIIndexSetKinitialize6MI_v_;
-text: .text%__1cITypeNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPClassFileStreamGget_u26MpnGThread__H_;
-text: .text%__1cKTypeOopPtrFklass6kM_pnHciKlass__: type.o;
-text: .text%__1cETypeFuhash6Fkpk0_i_;
-text: .text%__1cQIndexSetIteratorEnext6M_I_: chaitin.o;
-text: .text%__1cENodeIout_grow6MI_v_;
-text: .text%__1cOloadConI13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeHadd_req6Mp0_v_;
-text: .text%__1cJMarkSweepUAdjustPointerClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cNobjArrayKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNobjArrayKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOloadConI13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeKmatch_edge6kMI_I_;
-text: .text%__1cINodeHashQhash_find_insert6MpnENode__2_;
-text: .text%__1cHPhiNodeGOpcode6kM_i_;
-text: .text%__1cKbranchNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIProjNodeGOpcode6kM_i_;
-text: .text%__1cETypeIhashcons6M_pk0_;
-text: .text%__1cMPhaseChaitinTinterfere_with_live6MIpnIIndexSet__v_;
-text: .text%__1cWNode_Backward_IteratorEnext6M_pnENode__;
-text: .text%__1cNIdealLoopTreeJis_member6kMpk0_i_;
-text: .text%__1cMMachCallNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHCompileNnode_bundling6MpknENode__pnGBundle__;
-text: .text%__1cGIfNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopYsplit_if_with_blocks_pre6MpnENode__2_;
-text: .text%__1cOPhaseIdealLoopZsplit_if_with_blocks_post6MpnENode__v_;
-text: .text%__1cIUniverseMnon_oop_word6F_pv_;
-text: .text%__1cDLRGOcompute_degree6kMr0_i_;
-text: .text%__1cIConINodeGOpcode6kM_i_;
-text: .text%__1cETypeEmeet6kMpk0_2_;
-text: .text%__1cENode2t6MI_v_;
-text: .text%__1cRMachSpillCopyNodeJideal_reg6kM_I_: ad_sparc.o;
-text: .text%__1cIPipelineXfunctional_unit_latency6kMIpk0_I_;
-text: .text%__1cWPSScavengeRootsClosureGdo_oop6MppnHoopDesc__v_: psTasks.o;
-text: .text%__1cLsymbolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJCProjNodeNis_block_proj6kM_pknENode__: cfgnode.o;
-text: .text%__1cKIfTrueNodeGOpcode6kM_i_;
-text: .text%__1cNRelocIteratorTadvance_over_prefix6M_v_;
-text: .text%__1cIMachNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPhaseIFGQeffective_degree6kMI_i_;
-text: .text%__1cWConstantPoolCacheEntryPfollow_contents6M_v_;
-text: .text%__1cWConstantPoolCacheEntryPadjust_pointers6M_v_;
-text: .text%__1cIAddPNodeGOpcode6kM_i_;
-text: .text%__1cIPhaseIFGJre_insert6MI_v_;
-text: .text%__1cIPhaseIFGLremove_node6MI_pnIIndexSet__;
-text: .text%__1cKNode_ArrayGinsert6MIpnENode__v_;
-text: .text%__1cHTypeIntEhash6kM_i_;
-text: .text%__1cLsymbolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cLsymbolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMPhaseIterGVNNtransform_old6MpnENode__2_;
-text: .text%__1cDfh16FI_i_;
-text: .text%__1cNMachIdealNodeErule6kM_I_: ad_sparc.o;
-text: .text%__1cIIndexSetKfree_block6MI_v_;
-text: .text%__1cWShouldNotReachHereNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cLIfFalseNodeGOpcode6kM_i_;
-text: .text%__1cSCallStaticJavaNodeGOpcode6kM_i_;
-text: .text%__1cENodeEhash6kM_I_;
-text: .text%__1cOPhaseIdealLoopEsort6MpnNIdealLoopTree_2_2_;
-text: .text%__1cMMachProjNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ArrayCopy;
-text: .text%__1cOtypeArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cPjava_lang_ClassLas_klassOop6FpnHoopDesc__pnMklassOopDesc__;
-text: .text%__1cHConNodeGOpcode6kM_i_;
-text: .text%__1cMPhaseIterGVNWadd_users_to_worklist06MpnENode__v_;
-text: .text%__1cMMachProjNodeGOpcode6kM_i_;
-text: .text%__1cJiRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cXPipeline_Use_Cycle_Mask2L6Mi_r0_: ad_sparc_pipeline.o;
-text: .text%__1cIBoolNodeGOpcode6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cENodeEgrow6MI_v_;
-text: .text%__1cIciObjectEhash6M_i_;
-text: .text%__1cKRegionNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopUbuild_loop_tree_impl6MpnENode_i_i_;
-text: .text%__1cJMarkSweepSMarkAndPushClosureGdo_oop6MppnHoopDesc__v_: markSweep.o;
-text: .text%__1cRMachSpillCopyNodeLbottom_type6kM_pknEType__: ad_sparc.o;
-text: .text%__1cOPhaseIdealLoopOget_early_ctrl6MpnENode__2_;
-text: .text%__1cIIndexSetKinitialize6MIpnFArena__v_;
-text: .text%__1cLmethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cIPhaseGVNJtransform6MpnENode__2_;
-text: .text%__1cOoop_RelocationLunpack_data6M_v_;
-text: .text%__1cRmethodDataOopDescHdata_at6Mi_pnLProfileData__;
-text: .text%__1cPJavaFrameAnchorNmake_walkable6MpnKJavaThread__v_;
-text: .text%__1cENodeNis_block_proj6kM_pk0_;
-text: .text%__1cNRelocIteratorFreloc6M_pnKRelocation__;
-text: .text%__1cIProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQconstMethodKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cPClassFileStreamGget_u16MpnGThread__C_;
-text: .text%__1cLTypeInstPtrEhash6kM_i_;
-text: .text%__1cYCallStaticJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOPhaseIdealLoopThas_local_phi_input6MpnENode__2_;
-text: .text%__1cJloadINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRMachSpillCopyNodeLout_RegMask6kM_rknHRegMask__: ad_sparc.o;
-text: .text%__1cKbranchNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMachProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMMachProjNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cRMachSpillCopyNodeKin_RegMask6kMI_rknHRegMask__: ad_sparc.o;
-text: .text%__1cbAfinal_graph_reshaping_impl6FpnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cOtypeArrayKlassIallocate6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cIPhaseCCPOtransform_once6MpnENode__2_;
-text: .text%__1cGciTypeEmake6FnJBasicType__p0_;
-text: .text%__1cKoopFactoryNnew_typeArray6FnJBasicType_ipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cENodeFclone6kM_p0_;
-text: .text%__1cITypeNodeEhash6kM_I_;
-text: .text%__1cMPipeline_UseMfull_latency6kMIrk0_I_;
-text: .text%__1cRMachSpillCopyNodePoper_input_base6kM_I_: ad_sparc.o;
-text: .text%__1cENodeKmatch_edge6kMI_I_;
-text: .text%__1cQconstMethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLmethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQconstMethodKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cOPhaseIdealLoopZremix_address_expressions6MpnENode__2_;
-text: .text%__1cSInterpreterRuntimeInewarray6FpnKJavaThread_nJBasicType_i_v_;
-text: .text%__1cICallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cOPhaseIdealLoopNget_late_ctrl6MpnENode_2_2_;
-text: .text%JVM_CurrentTimeMillis;
-text: .text%__1cENodeIIdentity6MpnOPhaseTransform__p0_;
-text: .text%__1cIPipelinePoperand_latency6kMIpk0_I_;
-text: .text%__1cKTypeAryPtrEhash6kM_i_;
-text: .text%__1cETypeFxmeet6kMpk0_2_;
-text: .text%__1cILRG_ListGextend6MII_v_;
-text: .text%__1cJVectorSet2F6kMI_i_;
-text: .text%__1cENodeQIdeal_DU_postCCP6MpnIPhaseCCP__p0_;
-text: .text%__1cIProjNodeEhash6kM_I_;
-text: .text%__1cIAddINodeGOpcode6kM_i_;
-text: .text%__1cIIndexSet2t6Mp0_v_;
-text: .text%__1cRmethodDataOopDescJnext_data6MpnLProfileData__2_;
-text: .text%__1cITypeNodeJideal_reg6kM_I_;
-text: .text%__1cYCallStaticJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMloadConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cENodeHsize_of6kM_I_;
-text: .text%__1cICmpPNodeGOpcode6kM_i_;
-text: .text%__1cKNode_ArrayGremove6MI_v_;
-text: .text%__1cHPhiNodeEhash6kM_I_;
-text: .text%__1cLSymbolTableGlookup6FpkcipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cKmethodOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cJStartNodeLbottom_type6kM_pknEType__;
-text: .text%__1cHTypeIntFxmeet6kMpknEType__3_;
-text: .text%__1cIProjNodeLbottom_type6kM_pknEType__;
-text: .text%__1cPciObjectFactoryDget6MpnHoopDesc__pnIciObject__;
-text: .text%__1cILocationIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cICmpINodeGOpcode6kM_i_;
-text: .text%Unsafe_CompareAndSwapLong;
-text: .text%__1cNCatchProjNodeGOpcode6kM_i_;
-text: .text%__1cQUnique_Node_ListGremove6MpnENode__v_;
-text: .text%__1cENode2t6Mp0_v_;
-text: .text%__1cNLocationValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cFframeVinterpreter_frame_bcp6kM_pC_;
-text: .text%__1cTCreateExceptionNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileStreamHskip_u16MipnGThread__v_;
-text: .text%__1cHRegMaskMSmearToPairs6M_v_;
-text: .text%__1cMPhaseIterGVNVadd_users_to_worklist6MpnENode__v_;
-text: .text%__1cMloadConPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassLfind_method6FpnPobjArrayOopDesc_pnNsymbolOopDesc_4_pnNmethodOopDesc__;
-text: .text%__1cMPipeline_UseJadd_usage6Mrk0_v_;
-text: .text%__1cIAddPNodeKmatch_edge6kMI_I_;
-text: .text%__1cJiRegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cGIfNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGcmpkey6Fpkv1_i_;
-text: .text%__1cMMergeMemNodeGOpcode6kM_i_;
-text: .text%__1cFframeYinterpreter_frame_method6kM_pnNmethodOopDesc__;
-text: .text%__1cIParmNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserRverify_legal_utf86MpkCipnGThread__v_;
-text: .text%__1cHTypeIntEmake6Fiii_pk0_;
-text: .text%__1cENodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNsymbolOopDescLas_C_string6kM_pc_;
-text: .text%__1cKSchedulingWAddNodeToAvailableList6MpnENode__v_;
-text: .text%__1cKSchedulingSChooseNodeToBundle6M_pnENode__;
-text: .text%__1cKSchedulingPAddNodeToBundle6MpnENode_pknFBlock__v_;
-text: .text%__1cICallNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cTconstantPoolOopDescNklass_at_impl6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cJLoadPNodeGOpcode6kM_i_;
-text: .text%__1cIMachNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNflagsRegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHPhiNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMMachTypeNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJCatchNodeGOpcode6kM_i_;
-text: .text%__1cIJVMStateLdebug_start6kM_I_;
-text: .text%__1cENodeHdel_req6MI_v_;
-text: .text%__1cRSignatureIterator2t6MnMsymbolHandle__v_;
-text: .text%__1cOAbstractICachePinvalidate_word6FpC_v_;
-text: .text%__1cFBlockIis_Empty6kM_i_;
-text: .text%__1cOThreadCritical2T6M_v_;
-text: .text%__1cOThreadCritical2t6M_v_;
-text: .text%method_compare: methodOop.o;
-text: .text%__1cICodeHeapKfind_start6kMpv_1_;
-text: .text%__1cETypeEhash6kM_i_;
-text: .text%__1cRNativeInstructionLset_long_at6Mii_v_;
-text: .text%__1cIAddPNodeLbottom_type6kM_pknEType__;
-text: .text%__1cJCProjNodeEhash6kM_I_: classes.o;
-text: .text%__1cIHaltNodeGOpcode6kM_i_;
-text: .text%__1cFStateRMachNodeGenerator6MipnHCompile__pnIMachNode__;
-text: .text%__1cHMatcherKReduceInst6MpnFState_irpnENode__pnIMachNode__;
-text: .text%__1cICmpUNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopbIdom_lca_for_get_late_ctrl_internal6MpnENode_22_2_;
-text: .text%__1cXPipeline_Use_Cycle_MaskCOr6Mrk0_v_;
-text: .text%__1cILoadNodeEhash6kM_I_;
-text: .text%__1cKHandleMarkKinitialize6MpnGThread__v_;
-text: .text%__1cKHandleMark2T6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cMPhaseIterGVNZremove_globally_dead_node6MpnENode__v_;
-text: .text%__1cWShouldNotReachHereNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cILoadNodeLbottom_type6kM_pknEType__;
-text: .text%JVM_ReleaseUTF;
-text: .text%__1cJloadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJTypeTupleEhash6kM_i_;
-text: .text%__1cMflagsRegOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cObranchConPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryMnew_objArray6FpnMklassOopDesc_ipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassRallocate_objArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cMOopMapStreamJfind_next6M_v_;
-text: .text%__1cFDictI2i6M_v_;
-text: .text%__1cKNode_ArrayEgrow6MI_v_;
-text: .text%__1cHTypeIntEmake6Fi_pk0_;
-text: .text%__1cRAbstractAssembler2t6MpnKCodeBuffer__v_;
-text: .text%__1cJloadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeLbottom_type6kM_pknEType__: memnode.o;
-text: .text%__1cSInterpreterRuntimeJanewarray6FpnKJavaThread_pnTconstantPoolOopDesc_ii_v_;
-text: .text%__1cOPSPromotionLABKinitialize6MnJMemRegion__v_;
-text: .text%__1cJMultiNodeIproj_out6kMI_pnIProjNode__;
-text: .text%__1cPindOffset13OperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cUcompI_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cODataRelocationJset_value6MpC_v_: relocInfo.o;
-text: .text%__1cKCastPPNodeGOpcode6kM_i_;
-text: .text%__1cOoop_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cOoop_RelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cPSignatureStreamEnext6M_v_;
-text: .text%__1cLLShiftINodeGOpcode6kM_i_;
-text: .text%__1cMPhaseChaitinSuse_prior_register6MpnENode_I2pnFBlock_rnJNode_List_6_i_;
-text: .text%__1cGIfNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGBitMapJset_union6M0_v_;
-text: .text%__1cIConPNodeGOpcode6kM_i_;
-text: .text%__1cJLoadINodeGOpcode6kM_i_;
-text: .text%JVM_GetMethodIxExceptionTableLength;
-text: .text%__1cOJNIHandleBlockPallocate_handle6MpnHoopDesc__pnI_jobject__;
-text: .text%__1cPClassFileParserUassemble_annotations6MpCi1ipnGThread__nPtypeArrayHandle__;
-text: .text%__1cNSharedRuntimeDd2i6Fd_i_;
-text: .text%__1cVcompP_iRegP_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeEhash6kM_I_: classes.o;
-text: .text%__1cNbranchConNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOoop_RelocationSfix_oop_relocation6M_v_;
-text: .text%__1cRSignatureIteratorSiterate_parameters6M_v_;
-text: .text%__1cIAddPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPClassFileStreamGget_u46MpnGThread__I_;
-text: .text%__1cMMachCallNodeLbottom_type6kM_pknEType__;
-text: .text%__1cFParsePdo_one_bytecode6M_v_;
-text: .text%__1cFParseNdo_exceptions6M_v_;
-text: .text%__1cHPhiNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cHMatcherKmatch_tree6MpknENode__pnIMachNode__;
-text: .text%__1cMPhaseIterGVNKis_IterGVN6M_p0_: phaseX.o;
-text: .text%__1cCosVcurrent_stack_pointer6F_pC_;
-text: .text%__1cEDict2F6kMpkv_pv_;
-text: .text%__1cKRegionNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cENodeIdestruct6M_v_;
-text: .text%__1cMCreateExNodeGOpcode6kM_i_;
-text: .text%__1cIBoolNodeEhash6kM_I_;
-text: .text%__1cNinstanceKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLTypeInstPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKNode_ArrayFclear6M_v_;
-text: .text%__1cObranchConPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIProjNodeHsize_of6kM_I_;
-text: .text%__1cTconstantPoolOopDescWsignature_ref_index_at6Mi_i_;
-text: .text%__1cMloadConINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cJloadBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHhashptr6Fpkv_i_;
-text: .text%__1cMMachHaltNodeEjvms6kM_pnIJVMState__;
-text: .text%__1cHhashkey6Fpkv_i_;
-text: .text%__1cMPhaseChaitinHnew_lrg6MpknENode_I_v_;
-text: .text%__1cIJVMStateJdebug_end6kM_I_;
-text: .text%__1cIPhaseIFGMtest_edge_sq6kMII_i_;
-text: .text%__1cJloadPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHSubNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cRSignatureIteratorSiterate_returntype6M_v_;
-text: .text%__1cSaddP_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMachNodeHtwo_adr6kM_I_: ad_sparc.o;
-text: .text%__1cNSafePointNodeHsize_of6kM_I_;
-text: .text%__1cHCmpNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPcheckCastPPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNLoadRangeNodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENode2t6Mp011_v_;
-text: .text%__1cJStoreNodeKmatch_edge6kMI_I_;
-text: .text%__1cOPSPromotionLABFflush6M_v_;
-text: .text%__1cQResultTypeFinderDset6MinJBasicType__v_: bytecode.o;
-text: .text%__1cOBytecodeStreamEnext6M_nJBytecodesECode__: generateOopMap.o;
-text: .text%__1cOcompU_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescLresult_type6kM_nJBasicType__;
-text: .text%__1cICodeHeapJnext_free6kMpnJHeapBlock__pv_;
-text: .text%__1cICodeHeapLblock_start6kMpv_pnJHeapBlock__;
-text: .text%__1cICodeHeapKnext_block6kMpnJHeapBlock__2_;
-text: .text%__1cSCountedLoopEndNodeGOpcode6kM_i_;
-text: .text%__1cPciInstanceKlassGloader6M_pnHoopDesc__;
-text: .text%__1cPcheckCastPPNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCellTypeStateFmerge6kM0i_0_;
-text: .text%__1cMPhaseIterGVNMsubsume_node6MpnENode_2_v_;
-text: .text%__1cILoadNodeKmatch_edge6kMI_I_;
-text: .text%__1cJloadINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNExceptionMark2T6M_v_;
-text: .text%__1cNExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cITypeLongEhash6kM_i_;
-text: .text%__1cJHashtableJnew_entry6MIpnHoopDesc__pnOHashtableEntry__;
-text: .text%__1cJiRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKJNIHandlesKmake_local6FpnHJNIEnv__pnHoopDesc__pnI_jobject__;
-text: .text%__1cPciInstanceKlassRprotection_domain6M_pnHoopDesc__;
-text: .text%__1cOloadConI13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOloadConI13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cObranchConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKStoreINodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRSignatureIterator2t6MpnNsymbolOopDesc__v_;
-text: .text%__1cJiRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKRegionNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKstorePNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cJrelocInfoNfinish_prefix6Mph_p0_;
-text: .text%__1cQaddP_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTAbstractInterpreterLmethod_kind6FnMmethodHandle__n0AKMethodKind__;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode_i_i_;
-text: .text%__1cIBoolNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLCounterDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cHRegMaskMClearToPairs6M_v_;
-text: .text%__1cRshlI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMachOperDreg6kMpnNPhaseRegAlloc_pknENode__i_;
-text: .text%__1cNPhaseCoalesceRcombine_these_two6MpnENode_2_v_;
-text: .text%__1cKcmpOpPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cMloadConINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinLinsert_proj6MpnFBlock_IpnENode_I_v_;
-text: .text%__1cILoadNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJStoreNodeLbottom_type6kM_pknEType__;
-text: .text%__1cIBoolNodeLbottom_type6kM_pknEType__: subnode.o;
-text: .text%__1cNSafePointNodeSset_next_exception6Mp0_v_;
-text: .text%__1cQaddP_reg_regNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIHaltNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPCheckCastPPNodeGOpcode6kM_i_;
-text: .text%__1cKStorePNodeGOpcode6kM_i_;
-text: .text%__1cNflagsRegUOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cNinstanceKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cPcheckCastPPNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRInvocationCounterEinit6M_v_;
-text: .text%__1cKNode_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cTconstantPoolOopDescNklass_name_at6Mi_pnNsymbolOopDesc__;
-text: .text%__1cXPhaseAggressiveCoalesceIcoalesce6MpnFBlock__v_;
-text: .text%__1cFBlockScall_catch_cleanup6MrnLBlock_Array__v_;
-text: .text%__1cObranchConUNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescRname_ref_index_at6Mi_i_;
-text: .text%__1cIAddINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cHRetNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cKRegionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstorePNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMObjectLocker2T6M_v_;
-text: .text%__1cOcompI_iRegNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cICallNodeIIdentity6MpnOPhaseTransform__pnENode__: callnode.o;
-text: .text%__1cMURShiftINodeGOpcode6kM_i_;
-text: .text%__1cRmethodDataOopDescPinitialize_data6MpnOBytecodeStream_i_i_;
-text: .text%__1cNRelocIteratorKset_limits6MpC1_v_;
-text: .text%__1cIRootNodeGOpcode6kM_i_;
-text: .text%__1cOloadConI13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cILoadNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTCreateExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_ConI6MpknENode__v_;
-text: .text%__1cPcheckCastPPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubINodeGOpcode6kM_i_;
-text: .text%__1cNbranchConNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJTypeTupleEmake6FIppknEType__pk0_;
-text: .text%__1cJTypeTupleGfields6FI_ppknEType__;
-text: .text%__1cENodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLSymbolTableJbasic_add6MipCiIpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cLsymbolKlassPallocate_symbol6MpCipnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSinstanceKlassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cRAbstractAssemblerEbind6MrnFLabel__v_;
-text: .text%__1cKbranchNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHPhiNodeIadr_type6kM_pknHTypePtr__: cfgnode.o;
-text: .text%__1cHAddNodeEhash6kM_I_;
-text: .text%__1cENodeRdisconnect_inputs6Mp0_i_;
-text: .text%__1cPsplit_flow_path6FpnIPhaseGVN_pnHPhiNode__pnENode__: cfgnode.o;
-text: .text%__1cSaddI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJFieldTypeKbasic_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cHConNodeEhash6kM_I_;
-text: .text%__1cLLShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescIbci_from6kMpC_i_;
-text: .text%__1cOMachReturnNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNidealize_test6FpnIPhaseGVN_pnGIfNode__3_: ifnode.o;
-text: .text%__1cITypeNodeHsize_of6kM_I_;
-text: .text%__1cNSafePointNodeLbottom_type6kM_pknEType__: callnode.o;
-text: .text%__1cTconstantPoolOopDescSklass_at_if_loaded6FnSconstantPoolHandle_i_pnMklassOopDesc__;
-text: .text%__1cJloadINodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassModifiers;
-text: .text%__1cJCodeCacheJfind_blob6Fpv_pnICodeBlob__;
-text: .text%__1cNSafePointNodeOnext_exception6kM_p0_;
-text: .text%JVM_GetClassAccessFlags;
-text: .text%__1cLklassItable2t6MnTinstanceKlassHandle__v_;
-text: .text%__1cIsplit_if6FpnGIfNode_pnMPhaseIterGVN__pnENode__: ifnode.o;
-text: .text%__1cHTypeAryEhash6kM_i_;
-text: .text%__1cPfieldDescriptorKinitialize6MpnMklassOopDesc_i_v_;
-text: .text%__1cJMultiNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJCProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPPerfLongVariantGsample6M_v_;
-text: .text%__1cJStoreNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseChaitinMyank_if_dead6MpnENode_pnFBlock_pnJNode_List_6_i_;
-text: .text%__1cJCatchNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIMachOperNconstant_disp6kM_i_;
-text: .text%__1cIMachOperFscale6kM_i_;
-text: .text%__1cENode2t6Mp0111_v_;
-text: .text%__1cFPhase2t6Mn0ALPhaseNumber__v_;
-text: .text%__1cNCompileBrokerLmaybe_block6F_v_;
-text: .text%__1cFBlockOcode_alignment6M_I_;
-text: .text%__1cNinstanceKlassGitable6kM_pnLklassItable__;
-text: .text%__1cLciSignatureLreturn_type6kM_pnGciType__;
-text: .text%__1cFStateM_sub_Op_RegP6MpknENode__v_;
-text: .text%JVM_GetCPMethodSignatureUTF;
-text: .text%__1cFChunkJnext_chop6M_v_;
-text: .text%__1cMMergeMemNodeEhash6kM_I_;
-text: .text%__1cKSchedulingbFComputeRegisterAntidependencies6MpnFBlock__v_;
-text: .text%__1cKSchedulingPComputeUseCount6MpknFBlock__v_;
-text: .text%__1cNinstanceKlassRprotection_domain6M_pnHoopDesc__: instanceKlass.o;
-text: .text%__1cIMachNodePcompute_padding6kMi_i_: ad_sparc.o;
-text: .text%__1cIMachNodeSalignment_required6kM_i_: ad_sparc.o;
-text: .text%__1cMPhaseChaitinSget_spillcopy_wide6MpnENode_2I_2_;
-text: .text%__1cYDebugInformationRecorderTcreate_scope_values6MpnNGrowableArray4CpnKScopeValue____pnKDebugToken__;
-text: .text%__1cWstatic_stub_RelocationLunpack_data6M_v_;
-text: .text%__1cQaddI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cObranchConUNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFBlockJfind_node6kMpknENode__I_;
-text: .text%__1cUArgumentSizeComputerDset6MinJBasicType__v_: frame.o;
-text: .text%__1cHCmpNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWThreadLocalAllocBufferXclear_before_allocation6M_v_;
-text: .text%__1cHTypePtrEhash6kM_i_;
-text: .text%__1cNinstanceKlassRallocate_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cSObjectSynchronizerKslow_enter6FnGHandle_pnJBasicLock_pnGThread__v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2t6M_v_;
-text: .text%__1cYNoJvmtiVMObjectAllocMark2T6M_v_;
-text: .text%__1cFBlockLfind_remove6MpknENode__v_;
-text: .text%__1cIIndexSetJlrg_union6MIIkIpknIPhaseIFG_rknHRegMask__I_;
-text: .text%__1cKMemBarNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cUcompI_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbAcheck_method_accessability6FnLKlassHandle_11nMmethodHandle_pnGThread__v_;
-text: .text%__1cNObjectMonitorEexit6MpnGThread__v_;
-text: .text%__1cIimmPOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLMachNopNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cVCompressedWriteStream2t6Mi_v_;
-text: .text%__1cNObjectMonitorFenter6MpnGThread__v_;
-text: .text%__1cENodeKreplace_by6Mp0_v_;
-text: .text%__1cSObjectSynchronizerJslow_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cMMergeMemNodePiteration_setup6Mpk0_v_;
-text: .text%__1cKDictionaryEfind6MiInMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cRMachSpillCopyNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKRegionNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJStoreNodeEhash6kM_I_;
-text: .text%__1cSaddP_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitJclone_map6M_pnNSafePointNode__;
-text: .text%__1cKIfTrueNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRMemBarReleaseNodeGOpcode6kM_i_;
-text: .text%__1cKbranchNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGPcDescHreal_pc6kMpknHnmethod__pC_;
-text: .text%__1cRPSOldPromotionLABFflush6M_v_;
-text: .text%__1cTconstantPoolOopDescMklass_ref_at6MipnGThread__pnMklassOopDesc__;
-text: .text%__1cPcompP_iRegPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeGOpcode6kM_i_;
-text: .text%__1cIciObjectJset_ident6MI_v_;
-text: .text%__1cKJNIHandlesKmake_local6FpnHoopDesc__pnI_jobject__;
-text: .text%__1cKTypeRawPtrEhash6kM_i_;
-text: .text%__1cIBoolNodeKmatch_edge6kMI_I_: subnode.o;
-text: .text%__1cMMergeMemNodePset_base_memory6MpnENode__v_;
-text: .text%__1cLIfFalseNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cGBitMapOset_difference6M0_v_;
-text: .text%__1cNSafePointNodeEjvms6kM_pnIJVMState__: callnode.o;
-text: .text%__1cOoop_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cMMergeMemNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetMethodIxLocalsCount;
-text: .text%__1cNloadRangeNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_CurrentThread;
-text: .text%__1cRcmpFastUnlockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAndINodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserYverify_legal_method_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cENodeHins_req6MIp0_v_;
-text: .text%__1cMPhaseChaitinFUnion6MpknENode_3_v_;
-text: .text%__1cMloadConLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHAddNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKRelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cKstoreINodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOFastUnlockNodeGOpcode6kM_i_;
-text: .text%__1cITypeNodeDcmp6kMrknENode__I_;
-text: .text%__1cIHaltNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKstorePNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpUOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciObject2t6MnGHandle__v_;
-text: .text%__1cNSafePointNodeKmatch_edge6kMI_I_;
-text: .text%__1cIMachOperOindex_position6kM_i_;
-text: .text%__1cXmembar_release_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2L6MI_rnDSet__;
-text: .text%__1cOcompU_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMergeMemNodeJmemory_at6kMI_pnENode__;
-text: .text%__1cSaddP_reg_imm13NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPindOffset13OperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cWShouldNotReachHereNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjectFactoryRcreate_new_object6MpnHoopDesc__pnIciObject__;
-text: .text%__1cUcompI_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVcompP_iRegP_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverZcheck_klass_accessability6FnLKlassHandle_1pnGThread__v_;
-text: .text%__1cIJVMStateIof_depth6kMi_p0_;
-text: .text%__1cRconstantPoolKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cMciMethodDataLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cRMemBarAcquireNodeGOpcode6kM_i_;
-text: .text%__1cKo0RegPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cSaddI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cObranchConUNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJVectorSet2t6MpnFArena__v_;
-text: .text%__1cKTypeAryPtrFxmeet6kMpknEType__3_;
-text: .text%__1cVcompP_iRegP_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICallNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cJTraceTime2T6M_v_;
-text: .text%__1cITypeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPcheckCastPPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemBarNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconstMethodOopDescZset_inlined_tables_length6Miii_v_;
-text: .text%__1cNmethodOopDescbAcompute_size_of_parameters6MpnGThread__v_;
-text: .text%__1cSconstMethodOopDescLobject_size6Fiiii_i_;
-text: .text%__1cLmethodKlassIallocate6MnRconstMethodHandle_nLAccessFlags_pnGThread__pnNmethodOopDesc__;
-text: .text%__1cMMergeMemNodeNset_memory_at6MIpnENode__v_;
-text: .text%__1cLstoreI0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoHdo_void6M_v_: bytecode.o;
-text: .text%__1cQaddI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENode2t6Mp01_v_;
-text: .text%__1cNinstanceKlassKfind_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cKstoreINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRshrI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_AddP6MpknENode__v_;
-text: .text%__1cTCreateExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeFuncEhash6kM_i_;
-text: .text%__1cLBoxLockNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMTypeKlassPtrEhash6kM_i_;
-text: .text%__1cMCallLeafNodeGOpcode6kM_i_;
-text: .text%__1cSCallLeafDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2pknEType_pknHTypePtr__p0_;
-text: .text%__1cOcompU_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJiRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNflagsRegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHOrINodeGOpcode6kM_i_;
-text: .text%__1cXmembar_acquire_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodClassNameUTF;
-text: .text%__1cMloadConDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMflagsRegOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLProfileDataPfollow_contents6M_v_: ciMethodData.o;
-text: .text%__1cLProfileDataPadjust_pointers6M_v_: ciMethodData.o;
-text: .text%__1cFStateM_sub_Op_RegI6MpknENode__v_;
-text: .text%__1cKklassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cFKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cJMarkSweepXrevisit_weak_klass_link6FpnFKlass__v_;
-text: .text%__1cKklassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cWconstantPoolCacheKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cHCompileYout_preserve_stack_slots6F_I_;
-text: .text%__1cIGraphKitLclean_stack6Mi_v_;
-text: .text%__1cKStoreBNodeGOpcode6kM_i_;
-text: .text%__1cLklassVtableToop_adjust_pointers6M_v_;
-text: .text%__1cLklassVtableToop_follow_contents6M_v_;
-text: .text%__1cSconstMethodOopDescbBcompressed_linenumber_table6kM_pC_;
-text: .text%__1cJlabelOperFlabel6kM_pnFLabel__: ad_sparc.o;
-text: .text%__1cLciSignatureHtype_at6kMi_pnGciType__;
-text: .text%__1cIMachNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cIMachOperMdisp_as_type6kM_pknHTypePtr__: ad_sparc.o;
-text: .text%__1cRshlI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_IsNaN;
-text: .text%__1cNloadRangeNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKbranchNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeGOpcode6kM_i_;
-text: .text%__1cQregF_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeDcmp6kMrk0_I_;
-text: .text%__1cHTypeIntFxdual6kM_pknEType__;
-text: .text%__1cMmerge_region6FpnKRegionNode_pnIPhaseGVN__pnENode__: cfgnode.o;
-text: .text%__1cJAssemblerOpatched_branch6Fiii_i_;
-text: .text%__1cJAssemblerSbranch_destination6Fii_i_;
-text: .text%__1cRshlI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cENodeIadd_prec6Mp0_v_;
-text: .text%__1cLBoxLockNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPSignatureStreamJas_symbol6MpnGThread__pnNsymbolOopDesc__;
-text: .text%__1cSaddP_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWMachCallStaticJavaNodePret_addr_offset6M_i_;
-text: .text%__1cITypeFuncEmake6FpknJTypeTuple_3_pk0_;
-text: .text%__1cMloadConDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSCallLeafDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQsubI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIRootNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJloadLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverZcheck_field_accessability6FnLKlassHandle_11rnPfieldDescriptor_pnGThread__v_;
-text: .text%__1cJLoadBNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapHinterp16MpnOBytecodeStream__v_;
-text: .text%__1cSvframeStreamCommonEnext6M_v_;
-text: .text%__1cIAddINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIRootNodeNis_block_proj6kM_pknENode__: classes.o;
-text: .text%__1cMMergeMemNode2t6MpnENode__v_;
-text: .text%__1cOcompI_iRegNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachSafePointNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cJloadINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPindOffset13OperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cPindOffset13OperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cICmpPNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHMemNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cIGraphKitQkill_dead_locals6M_v_;
-text: .text%__1cCosMvm_page_size6F_i_;
-text: .text%__1cRlock_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVcompP_iRegP_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompI_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNSignatureInfoJdo_object6Mii_v_: bytecode.o;
-text: .text%__1cRconstantPoolKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassUadjust_static_fields6M_v_;
-text: .text%__1cRconstantPoolKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cLklassItableToop_adjust_pointers6M_v_;
-text: .text%__1cNinstanceKlassUfollow_static_fields6M_v_;
-text: .text%__1cLklassItableToop_follow_contents6M_v_;
-text: .text%__1cSinstanceKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cNinstanceKlassXfollow_weak_klass_links6MpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSinstanceKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cNSafePointNodeGOpcode6kM_i_;
-text: .text%__1cJLoadPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMPhaseChaitinPset_was_spilled6MpnENode__v_;
-text: .text%__1cYDebugInformationRecorderVcreate_monitor_values6MpnNGrowableArray4CpnMMonitorValue____pnKDebugToken__;
-text: .text%__1cMloadConPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKit2t6MpnIJVMState__v_;
-text: .text%__1cPconvI2L_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQPreserveJVMState2T6M_v_;
-text: .text%__1cRshrI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWconstantPoolCacheKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cWconstantPoolCacheKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cTCreateExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_release_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvI2LNodeGOpcode6kM_i_;
-text: .text%__1cITypeLongFxmeet6kMpknEType__3_;
-text: .text%__1cNinstanceKlassKinitialize6MpnGThread__v_;
-text: .text%__1cFParseMmerge_common6Mpn0AFBlock_i_v_;
-text: .text%__1cPciInstanceKlassYunique_concrete_subklass6M_p0_;
-text: .text%__1cLBoxLockNodeHsize_of6kM_I_;
-text: .text%__1cOPhaseIdealLoopIset_idom6MpnENode_2I_v_;
-text: .text%JVM_GetCPFieldClassNameUTF;
-text: .text%__1cSaddI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNLoadKlassNodeGOpcode6kM_i_;
-text: .text%__1cRcmpFastUnlockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPciInstanceKlassLfield_cache6M_pnTciConstantPoolCache__;
-text: .text%__1cFciEnvSget_field_by_index6MpnPciInstanceKlass_i_pnHciField__;
-text: .text%__1cOcompI_iRegNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNmethodOopDescIbcp_from6kMi_pC_;
-text: .text%__1cICmpINodeDsub6kMpknEType_3_3_;
-text: .text%__1cLRShiftINodeGOpcode6kM_i_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6MipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cSCallLeafDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcheckCastPPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopQconditional_move6MpnENode__2_;
-text: .text%__1cJStoreNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cITypeFuncEmake6FpnIciMethod__pk0_;
-text: .text%__1cOGenerateOopMapEpush6MnNCellTypeState__v_;
-text: .text%__1cJloadSNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKStoreCNodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapRdo_exception_edge6MpnOBytecodeStream__v_;
-text: .text%__1cOGenerateOopMapDpop6M_nNCellTypeState__;
-text: .text%__1cHRetNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverMresolve_pool6FrnLKlassHandle_rnMsymbolHandle_42nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cMLinkResolverOresolve_invoke6FrnICallInfo_nGHandle_nSconstantPoolHandle_inJBytecodesECode_pnGThread__v_;
-text: .text%__1cIBoolNodeJideal_reg6kM_I_: subnode.o;
-text: .text%__1cHCmpNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRloadConP_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvNlookup_method6MpnNinstanceKlass_2pnNsymbolOopDesc_4nJBytecodesECode__pnNmethodOopDesc__;
-text: .text%__1cKDictionaryKfind_class6MiInMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cPcompP_iRegPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNloadRangeNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCatchProjNodeLbottom_type6kM_pknEType__: cfgnode.o;
-text: .text%__1cNCatchProjNodeHsize_of6kM_I_: cfgnode.o;
-text: .text%__1cFStateK_sub_Op_If6MpknENode__v_;
-text: .text%__1cTciConstantPoolCacheDget6Mi_pv_;
-text: .text%__1cSInterpreterRuntimeMmonitorenter6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cSInterpreterRuntimePresolve_get_put6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cQsubI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXmembar_acquire_lockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPCountedLoopNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeLmonitorexit6FpnKJavaThread_pnPBasicObjectLock__v_;
-text: .text%__1cIAndLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitOset_all_memory6MpnENode__v_;
-text: .text%__1cQSystemDictionarybEresolve_instance_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cVjava_lang_ClassLoaderbBnon_reflection_class_loader6FpnHoopDesc__2_;
-text: .text%__1cFParseFBlockKinit_graph6Mp0_v_;
-text: .text%__1cMTypeKlassPtrEmake6FnHTypePtrDPTR_pnHciKlass_i_pk0_;
-text: .text%__1cKRelocationLspec_simple6FnJrelocInfoJrelocType__nQRelocationHolder__;
-text: .text%__1cSInterpreterRuntimeOresolve_invoke6FpnKJavaThread_nJBytecodesECode__v_;
-text: .text%__1cIGraphKitTadd_exception_state6MpnNSafePointNode__v_;
-text: .text%__1cIregDOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKstoreINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cWConstantPoolCacheEntryKset_method6MnJBytecodesECode_nMmethodHandle_i_v_;
-text: .text%__1cNloadRangeNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseMdo_one_block6M_v_;
-text: .text%__1cOPhaseIdealLoopRregister_new_node6MpnENode_2_v_;
-text: .text%__1cLstoreB0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIJVMStateLdebug_depth6kM_I_;
-text: .text%__1cENodeNadd_req_batch6Mp0I_v_;
-text: .text%__1cKciTypeFlowLStateVectorOpush_translate6MpnGciType__v_;
-text: .text%__1cJloadFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPVirtualCallDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIMachNodeOpipeline_class6F_pknIPipeline__;
-text: .text%__1cQSystemDictionarybCfind_instance_or_array_klass6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPhaseGVNUtransform_no_reclaim6MpnENode__2_;
-text: .text%__1cIAddLNodeGOpcode6kM_i_;
-text: .text%__1cLLShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOMethodLivenessKBasicBlockJpropagate6Mp0_v_;
-text: .text%__1cKciTypeFlowGJsrSet2t6MpnFArena_i_v_;
-text: .text%__1cHMatcherKmatch_sfpt6MpnNSafePointNode__pnIMachNode__;
-text: .text%__1cMFastLockNodeGOpcode6kM_i_;
-text: .text%__1cLConvL2INodeGOpcode6kM_i_;
-text: .text%__1cIXorINodeGOpcode6kM_i_;
-text: .text%__1cOcompU_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKTypeAryPtrFklass6kM_pnHciKlass__;
-text: .text%__1cIGraphKitbDtransfer_exceptions_into_jvms6M_pnIJVMState__;
-text: .text%__1cLTypeInstPtrFxdual6kM_pknEType__;
-text: .text%__1cNLoadRangeNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFBlockKsched_call6MrnHMatcher_rnLBlock_Array_IrnJNode_List_pipnMMachCallNode_rnJVectorSet__I_;
-text: .text%__1cSsafePoint_pollNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeHsize_of6kM_I_;
-text: .text%__1cRInterpretedRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cIGraphKitJsync_jvms6kM_pnIJVMState__;
-text: .text%__1cICmpUNodeDsub6kMpknEType_3_3_;
-text: .text%__1cEUTF8Hstrrchr6FpWiW_1_;
-text: .text%__1cPcompP_iRegPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPsp_ptr_RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cPClassFileParserbCverify_legal_field_signature6MnMsymbolHandle_1pnGThread__v_;
-text: .text%__1cPClassFileParserXverify_legal_field_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cLBoxLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNloadKlassNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPMethodNameUTF;
-text: .text%__1cMtlsLoadPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreB0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHBitDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cURethrowExceptionNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionarybOfind_constrained_instance_or_array_klass6FnMsymbolHandle_nGHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQsubI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFKlassIsubklass6kM_p0_;
-text: .text%__1cNinstanceKlassbBallocate_permanent_instance6MpnGThread__pnPinstanceOopDesc__;
-text: .text%__1cXInterpreterFrameClosureJoffset_do6Mi_v_: frame.o;
-text: .text%__1cTconstantPoolOopDescOstring_at_impl6FnSconstantPoolHandle_ipnGThread__pnHoopDesc__;
-text: .text%__1cEUTF8Sconvert_to_unicode6FpkcpHi_v_;
-text: .text%__1cIMulLNodeGOpcode6kM_i_;
-text: .text%__1cKReturnNodeKmatch_edge6kMI_I_;
-text: .text%__1cGOopMap2t6Mii_v_;
-text: .text%__1cNloadConP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadSNodeGOpcode6kM_i_;
-text: .text%__1cLPCTableNodeLbottom_type6kM_pknEType__;
-text: .text%__1cKBranchDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cMCreateExNodeKmatch_edge6kMI_I_: classes.o;
-text: .text%__1cRloadConP_pollNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJCodeCacheEnext6FpnICodeBlob__2_;
-text: .text%__1cRcmpFastUnlockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeGOpcode6kM_i_;
-text: .text%__1cMciMethodDataLhas_trap_at6MpnLProfileData_i_i_;
-text: .text%__1cPThreadLocalNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeGOpcode6kM_i_;
-text: .text%__1cNinstanceKlassPinitialize_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cTconstantPoolOopDescbBbasic_type_for_signature_at6Mi_nJBasicType__;
-text: .text%__1cNflagsRegUOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cMloadConINodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeEhash6kM_I_;
-text: .text%__1cEUTF8Ounicode_length6Fpkci_i_;
-text: .text%__1cHCompileTProcess_OopMap_Node6MpnIMachNode_i_v_;
-text: .text%__1cNCallGenerator2t6MpnIciMethod__v_;
-text: .text%__1cKCompiledIC2t6MpnKRelocation__v_;
-text: .text%__1cKCompiledICOic_destination6kM_pC_;
-text: .text%__1cHTypeAryFxmeet6kMpknEType__3_;
-text: .text%__1cICallNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cLStringTableGintern6FpnNsymbolOopDesc_pnGThread__pnHoopDesc__;
-text: .text%__1cNsymbolOopDescKas_unicode6kMri_pH_;
-text: .text%__1cPmethodDataKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cKciTypeFlowQadd_to_work_list6Mpn0AFBlock__v_;
-text: .text%__1cKciTypeFlowKflow_block6Mpn0AFBlock_pn0ALStateVector_pn0AGJsrSet__v_;
-text: .text%__1cEUTF8Enext6FpkcpH_pc_;
-text: .text%__1cJVectorSetFClear6M_v_;
-text: .text%__1cHCompileSflatten_alias_type6kMpknHTypePtr__3_;
-text: .text%__1cCosEfree6Fpv_v_;
-text: .text%__1cRshrI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYciExceptionHandlerStreamFcount6M_i_;
-text: .text%__1cKciTypeFlowFBlockScompute_exceptions6M_v_;
-text: .text%__1cIPhaseIFGFUnion6MII_v_;
-text: .text%__1cYCallStaticJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cILoopNodeGOpcode6kM_i_;
-text: .text%__1cICmpLNodeGOpcode6kM_i_;
-text: .text%__1cOPhaseIdealLoopGspinup6MpnENode_2222pnLsmall_cache__2_;
-text: .text%__1cQaddI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindIndexOperJnum_edges6kM_I_: ad_sparc.o;
-text: .text%__1cIConLNodeGOpcode6kM_i_;
-text: .text%JVM_GetCPFieldSignatureUTF;
-text: .text%__1cENodeLnonnull_req6kM_p0_;
-text: .text%__1cYCallStaticJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMelapsedTimerFstart6M_v_;
-text: .text%__1cMelapsedTimerEstop6M_v_;
-text: .text%__1cMURShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopOfind_use_block6MpnENode_22222_2_;
-text: .text%__1cOPhaseIdealLoopKhandle_use6MpnENode_2pnLsmall_cache_22222_v_;
-text: .text%jni_DeleteLocalRef: jni.o;
-text: .text%__1cIGraphKit2t6M_v_;
-text: .text%__1cMoutputStreamDput6Mc_v_;
-text: .text%__1cIGraphKitNset_map_clone6MpnNSafePointNode__v_;
-text: .text%__1cRInterpretedRFrameEinit6M_v_;
-text: .text%__1cHMulNodeEhash6kM_I_;
-text: .text%__1cENodeJset_req_X6MIp0pnMPhaseIterGVN__v_;
-text: .text%__1cJLoadINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cINodeHashLhash_insert6MpnENode__v_;
-text: .text%__1cKstoreCNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeLbottom_type6kM_pknEType__;
-text: .text%__1cKJNIHandlesKmake_local6FpnGThread_pnHoopDesc__pnI_jobject__;
-text: .text%__1cKstoreCNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddPNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringbBcreate_tenured_from_unicode6FpHipnGThread__nGHandle__;
-text: .text%__1cKoopFactoryXnew_permanent_charArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cKMemBarNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cGvframe2t6MpknFframe_pknLRegisterMap_pnKJavaThread__v_;
-text: .text%__1cLRegisterMap2t6Mpk0_v_;
-text: .text%__1cXmembar_acquire_lockNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIciSymbolEmake6Fpkc_p0_;
-text: .text%__1cPorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGPcDesc2t6Miii_v_;
-text: .text%__1cHCompileKalias_type6MpnHciField__pn0AJAliasType__;
-text: .text%__1cGvframeKnew_vframe6FpknFframe_pknLRegisterMap_pnKJavaThread__p0_;
-text: .text%__1cPconvI2L_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIciMethodRget_flow_analysis6M_pnKciTypeFlow__;
-text: .text%__1cWCallLeafNoFPDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_acquireNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKbranchNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cKbranchNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOloadConI13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetObjectField: jni.o;
-text: .text%__1cSMemBarCPUOrderNodeGOpcode6kM_i_;
-text: .text%__1cJFieldTypeOget_array_info6FpnNsymbolOopDesc_pip2pnGThread__nJBasicType__;
-text: .text%__1cQandL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cWstatic_stub_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cQaddL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPmethodDataKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cPmethodDataKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cJloadBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cYcompareAndSwapL_boolNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cOPhaseIdealLoopIsink_use6MpnENode_2_v_;
-text: .text%__1cIGraphKitOreplace_in_map6MpnENode_2_v_;
-text: .text%__1cNinstanceKlassLfind_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cHCompileKTracePhase2T6M_v_;
-text: .text%__1cMPhaseChaitinLclone_projs6MpnFBlock_IpnENode_4rI_i_;
-text: .text%__1cIJVMState2t6MpnIciMethod_p0_v_;
-text: .text%__1cIHaltNode2t6MpnENode_2_v_;
-text: .text%__1cLOptoRuntimeSuncommon_trap_Type6F_pknITypeFunc__;
-text: .text%__1cJloadLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsafePoint_pollNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cINodeHashJhash_find6MpknENode__p1_;
-text: .text%__1cQmulL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMethodLivenessKBasicBlock2t6Mp0ii_v_;
-text: .text%__1cOMethodLivenessKBasicBlockQcompute_gen_kill6MpnIciMethod__v_;
-text: .text%__1cOGenerateOopMapFppush6MpnNCellTypeState__v_;
-text: .text%__1cJTypeTupleKmake_range6FpnLciSignature__pk0_;
-text: .text%__1cJTypeTupleLmake_domain6FpnPciInstanceKlass_pnLciSignature__pk0_;
-text: .text%__1cSmembar_acquireNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMWarmCallInfoKalways_hot6F_p0_;
-text: .text%__1cTCreateExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreB0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMtlsLoadPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBoxLockNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cHciFieldPinitialize_from6MpnPfieldDescriptor__v_;
-text: .text%__1cKimmI13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cJloadBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIGraphKitZadd_exception_states_from6MpnIJVMState__v_;
-text: .text%__1cMPhaseChaitinNFind_compress6MpknENode__I_;
-text: .text%__1cQSystemDictionaryEfind6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cHPhiNodeEmake6FpnENode_2_p0_;
-text: .text%__1cNCatchProjNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cWCallLeafNoFPDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodTcall_profile_at_bci6Mi_nNciCallProfile__;
-text: .text%__1cIProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cLklassVtableIindex_of6kMpnNmethodOopDesc_i_i_;
-text: .text%__1cFParseMprofile_call6MpnENode__v_;
-text: .text%__1cFciEnvbTget_instance_klass_for_declared_method_holder6FpnHciKlass__pnPciInstanceKlass__;
-text: .text%__1cIGraphKitWround_double_arguments6MpnIciMethod__v_;
-text: .text%__1cIGraphKitTround_double_result6MpnIciMethod__v_;
-text: .text%__1cFParseHdo_call6M_v_;
-text: .text%__1cNloadConP0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHMulNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMPhaseIterGVNJtransform6MpnENode__2_;
-text: .text%__1cSsafePoint_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadSNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKarrayKlassLobject_size6kMi_i_;
-text: .text%__1cKMemBarNodeEhash6kM_I_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKjava_super6kM_pnMklassOopDesc__: instanceKlass.o;
-text: .text%__1cMLinkResolverVresolve_invokevirtual6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKMemoryPoolYrecord_peak_memory_usage6M_v_;
-text: .text%__1cMURShiftLNodeGOpcode6kM_i_;
-text: .text%__1cIGraphKitUmake_exception_state6MpnENode__pnNSafePointNode__;
-text: .text%__1cLProfileDataOtranslate_from6Mp0_v_: ciMethodData.o;
-text: .text%__1cRsarI_reg_imm5NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLBuildCutout2t6MpnIGraphKit_pnENode_ff_v_;
-text: .text%__1cTCompareAndSwapLNodeGOpcode6kM_i_;
-text: .text%__1cQxorI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMMergeMemNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cNflagsRegLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cQsubI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKarrayKlassGvtable6kM_pnLklassVtable__;
-text: .text%__1cRshrI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQCallLeafNoFPNodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateM_sub_Op_ConP6MpknENode__v_;
-text: .text%__1cIGraphKitMsaved_ex_oop6FpnNSafePointNode__pnENode__;
-text: .text%__1cISubINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPciInstanceKlassFsuper6M_p0_;
-text: .text%__1cIBoolNodeHsize_of6kM_I_;
-text: .text%__1cSobjArrayKlassKlassIoop_size6kMpnHoopDesc__i_: objArrayKlassKlass.o;
-text: .text%__1cPcompP_iRegPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadPNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFframebGinterpreter_callee_receiver_addr6MnMsymbolHandle__ppnHoopDesc__;
-text: .text%__1cNSignatureInfoGdo_int6M_v_: bytecode.o;
-text: .text%__1cOstackSlotLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKInlineTreeMok_to_inline6MpnIciMethod_pnIJVMState_rnNciCallProfile_pnMWarmCallInfo__8_;
-text: .text%__1cOGenerateOopMapbAget_basic_block_containing6kMi_pnKBasicBlock__;
-text: .text%__1cQsubL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWCallLeafNoFPDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFTypeDEhash6kM_i_;
-text: .text%__1cJStartNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%jni_ExceptionOccurred: jni.o;
-text: .text%__1cKciTypeFlowLStateVectorStype_meet_internal6FpnGciType_3p0_3_;
-text: .text%__1cMloadConINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cGIfNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cPconvL2I_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_GetByteArrayRegion: jni.o;
-text: .text%__1cHCompileFstart6kM_pnJStartNode__;
-text: .text%__1cPStatSamplerTaskEtask6M_v_: statSampler.o;
-text: .text%__1cQPlaceholderTableKfind_entry6MiInMsymbolHandle_nGHandle__pnNsymbolOopDesc__;
-text: .text%__1cIParmNodeJideal_reg6kM_I_;
-text: .text%__1cQandL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQSystemDictionarybBresolve_array_class_or_null6FnMsymbolHandle_nGHandle_2pnGThread__pnMklassOopDesc__;
-text: .text%__1cIregFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cRbranchLoopEndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cGRFrame2t6MnFframe_pnKJavaThread_kp0_v_;
-text: .text%jni_GetArrayLength: jni.o;
-text: .text%__1cPciInstanceKlassUget_canonical_holder6Mi_p0_;
-text: .text%__1cJloadLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClearArrayNodeGOpcode6kM_i_;
-text: .text%__1cPClassFileParserbDverify_legal_method_signature6MnMsymbolHandle_1pnGThread__i_;
-text: .text%__1cVCompressedWriteStreamEgrow6M_v_;
-text: .text%JVM_Write;
-text: .text%__1cLciSignature2t6MpnHciKlass_pnIciSymbol__v_;
-text: .text%__1cIciMethod2t6MnMmethodHandle__v_;
-text: .text%__1cIHaltNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cWShouldNotReachHereNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque1NodeGOpcode6kM_i_;
-text: .text%__1cSbranchCon_longNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstoreCNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHAddNodePadd_of_identity6kMpknEType_3_3_;
-text: .text%__1cUcompU_iReg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_RawMonitorEnter;
-text: .text%JVM_RawMonitorExit;
-text: .text%__1cOMachReturnNodeKin_RegMask6kMI_rknHRegMask__;
-text: .text%__1cWShouldNotReachHereNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cETypeRget_typeflow_type6FpnGciType__pk0_;
-text: .text%__1cOJNIHandleBlockNrelease_block6Fp0pnGThread__v_;
-text: .text%__1cRcmpFastUnlockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXinitialize_static_field6FpnPfieldDescriptor_pnGThread__v_: classFileParser.o;
-text: .text%__1cURethrowExceptionNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOJNIHandleBlockOallocate_block6FpnGThread__p0_;
-text: .text%__1cNSignatureInfoHdo_bool6M_v_: bytecode.o;
-text: .text%__1cSandI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIAddINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cLTypeInstPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cMloadConLNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFParseFmerge6Mi_v_;
-text: .text%__1cNSafePointNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJTypeTupleFxdual6kM_pknEType__;
-text: .text%__1cNLoadKlassNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cPorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeGOpcode6kM_i_;
-text: .text%__1cJloadSNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcmpFastLockNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMCodeHeapPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cFArena2T6M_v_;
-text: .text%__1cKMemBarNodeFmatch6MpknIProjNode_pknHMatcher__pnENode__;
-text: .text%__1cLPCTableNodeEhash6kM_I_;
-text: .text%__1cHConNodeLout_RegMask6kM_rknHRegMask__: classes.o;
-text: .text%__1cXPhaseAggressiveCoalesceYinsert_copy_with_overlap6MpnFBlock_pnENode_II_v_;
-text: .text%__1cOloadConI13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMtlsLoadPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMPhaseChaitinNFind_compress6MI_I_;
-text: .text%__1cMindIndexOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cFStateN_sub_Op_LoadP6MpknENode__v_;
-text: .text%__1cFframeVinterpreter_frame_bci6kM_i_;
-text: .text%__1cNGCTaskManagerIget_task6MI_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueGremove6M_pnGGCTask__;
-text: .text%__1cLGCTaskQdDueueHenqueue6MpnGGCTask__v_;
-text: .text%__1cNGCTaskManagerPnote_completion6MI_v_;
-text: .text%__1cQandI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIGraphKitHjava_bc6kM_nJBytecodesECode__;
-text: .text%__1cIGraphKitNbuiltin_throw6MnODeoptimizationLDeoptReason_pnENode__v_;
-text: .text%__1cOGenerateOopMapHget_var6Mi_nNCellTypeState__;
-text: .text%__1cRinterpretedVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%jni_GetSuperclass: jni.o;
-text: .text%__1cJJavaCallsLcall_helper6FpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cCosUos_exception_wrapper6FpFpnJJavaValue_pnMmethodHandle_pnRJavaCallArguments_pnGThread__v2468_v_;
-text: .text%__1cTAbstractInterpreterbFsize_top_interpreter_activation6FpnNmethodOopDesc__i_;
-text: .text%__1cIMulINodeGOpcode6kM_i_;
-text: .text%__1cRcompL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadKlassNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGGCTask2t6M_v_;
-text: .text%__1cJloadSNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIJumpDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cObranchConPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cITypeFuncFxdual6kM_pknEType__;
-text: .text%__1cFStateM_sub_Op_CmpI6MpknENode__v_;
-text: .text%__1cJcmpOpOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cGciType2t6MnLKlassHandle__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMindirectOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSPSPromotionManagerbBgc_thread_promotion_manager6Fi_p0_;
-text: .text%__1cQxorI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIregFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cKcmpOpPOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cNloadKlassNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHPhiNodeMslice_memory6kMpknHTypePtr__p0_;
-text: .text%__1cPCheckCastPPNodeJideal_reg6kM_I_: connode.o;
-text: .text%__1cObranchConPNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICHeapObj2k6Fpv_v_;
-text: .text%__1cSaddL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRmethodDataOopDescJbci_to_dp6Mi_pC_;
-text: .text%__1cMloadConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInvocationCounterJset_carry6M_v_;
-text: .text%__1cFArena2t6M_v_;
-text: .text%__1cRInterpreterOopMapLiterate_oop6MpnNOffsetClosure__v_;
-text: .text%__1cRInterpreterOopMap2T6M_v_;
-text: .text%__1cLOopMapCacheGlookup6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNinstanceKlassImask_for6MnMmethodHandle_ipnRInterpreterOopMap__v_;
-text: .text%__1cNmethodOopDescImask_for6MipnRInterpreterOopMap__v_;
-text: .text%__1cRInterpreterOopMap2t6M_v_;
-text: .text%__1cISubINodeDsub6kMpknEType_3_3_;
-text: .text%__1cFParseOreturn_current6MpnENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMMonitorValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cMloadConLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJStoreNodeSIdeal_masked_input6MpnIPhaseGVN_I_pnENode__;
-text: .text%jni_GetPrimitiveArrayCritical: jni.o;
-text: .text%jni_ReleasePrimitiveArrayCritical: jni.o;
-text: .text%__1cPconvI2L_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNMemoryServiceXtrack_memory_pool_usage6FpnKMemoryPool__v_;
-text: .text%__1cSmembar_releaseNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPciInstanceKlass2t6MnLKlassHandle__v_;
-text: .text%__1cLOpaque1NodeEhash6kM_I_;
-text: .text%__1cJStoreNodeZIdeal_sign_extended_input6MpnIPhaseGVN_i_pnENode__;
-text: .text%__1cSbranchCon_longNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapGppload6MpnNCellTypeState_i_v_;
-text: .text%__1cSmembar_releaseNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNbranchConNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFciEnvVnotice_inlined_method6MpnIciMethod__v_;
-text: .text%__1cFKlassTarray_klass_or_null6Mi_pnMklassOopDesc__;
-text: .text%__1cZCallDynamicJavaDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJMultiNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKStoreLNodeGOpcode6kM_i_;
-text: .text%__1cbBopt_virtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cTconstantPoolOopDescbCklass_ref_at_if_loaded_check6FnSconstantPoolHandle_ipnGThread__pnMklassOopDesc__;
-text: .text%__1cHciField2t6MpnPciInstanceKlass_i_v_;
-text: .text%__1cNloadKlassNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOJNIHandleBlockHoops_do6MpnKOopClosure__v_;
-text: .text%__1cOGenerateOopMapJdo_method6Miiii_v_;
-text: .text%__1cRsarI_reg_imm5NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreP0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeKmatch_edge6kMI_I_;
-text: .text%__1cFTypeFEhash6kM_i_;
-text: .text%__1cFStateM_sub_Op_AddI6MpknENode__v_;
-text: .text%__1cOParseGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cFParseQcreate_entry_map6M_pnNSafePointNode__;
-text: .text%__1cFParseLbuild_exits6M_v_;
-text: .text%__1cFParseIdo_exits6M_v_;
-text: .text%__1cFParse2t6MpnIJVMState_pnIciMethod_f_v_;
-text: .text%__1cIBoolNodeDcmp6kMrknENode__I_;
-text: .text%__1cFParsePdo_method_entry6M_v_;
-text: .text%__1cNCallGeneratorKfor_inline6FpnIciMethod_f_p0_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2t6M_v_;
-text: .text%__1cbGJvmtiVMObjectAllocEventCollector2T6M_v_;
-text: .text%__1cRciVirtualCallDataOtranslate_from6MpnLProfileData__v_;
-text: .text%jni_IsSameObject: jni.o;
-text: .text%__1cMloadConINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNbranchConNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cNbranchConNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQandL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciObjectFklass6M_pnHciKlass__;
-text: .text%__1cPThreadLocalNodeGOpcode6kM_i_;
-text: .text%__1cZPhaseConservativeCoalesceKupdate_ifg6MIIpnIIndexSet_2_v_;
-text: .text%__1cZPhaseConservativeCoalesceMunion_helper6MpnENode_2II222pnFBlock_I_v_;
-text: .text%__1cOMethodLivenessKBasicBlockJstore_one6Mi_v_;
-text: .text%__1cIIndexSetEswap6Mp0_v_;
-text: .text%__1cHTypeAryEmake6FpknEType_pknHTypeInt__pk0_;
-text: .text%__1cPClassFileParserbCverify_legal_class_modifiers6MipnGThread__v_;
-text: .text%__1cKTypeAryPtrFxdual6kM_pknEType__;
-text: .text%__1cLAccessFlagsPatomic_set_bits6Mi_v_;
-text: .text%__1cQComputeCallStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cNinstanceKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKstoreBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCastPPNodeQIdeal_DU_postCCP6MpnIPhaseCCP__pnENode__;
-text: .text%__1cKstorePNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOPhaseIdealLoopOsplit_thru_phi6MpnENode_2i_2_;
-text: .text%__1cENodeGOpcode6kM_i_;
-text: .text%__1cQandI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciMethodbBinterpreter_call_site_count6Mi_i_;
-text: .text%__1cGBitMapIset_from6M0_v_;
-text: .text%__1cTconstantPoolOopDescbDresolve_string_constants_impl6FnSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cHSubNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cTCallDynamicJavaNodeGOpcode6kM_i_;
-text: .text%__1cKstoreBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cILoadNodeDcmp6kMrknENode__I_;
-text: .text%__1cIciObject2t6M_v_;
-text: .text%__1cSconstMethodOopDescZchecked_exceptions_length6kM_i_;
-text: .text%__1cRcompL_reg_conNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileXin_preserve_stack_slots6M_I_;
-text: .text%__1cPciObjectFactoryUget_empty_methodData6M_pnMciMethodData__;
-text: .text%__1cMciMethodData2t6M_v_;
-text: .text%__1cHOrINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFframeLreal_sender6kMpnLRegisterMap__0_;
-text: .text%__1cGRFrameGcaller6M_p0_;
-text: .text%__1cPCheckCastPPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJJavaCallsEcall6FpnJJavaValue_nMmethodHandle_pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cXmembar_release_lockNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJloadINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cXJNI_ArgumentPusherVaArgKget_object6M_v_: jni.o;
-text: .text%__1cMloadConFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMCreateExNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQaddL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMCreateExNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cISubINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFKlassQset_next_sibling6MpnMklassOopDesc__v_;
-text: .text%__1cQdivD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNCatchProjNodeDcmp6kMrknENode__I_;
-text: .text%__1cKTypeOopPtrEhash6kM_i_;
-text: .text%__1cIMinINodeGOpcode6kM_i_;
-text: .text%__1cMURShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKTypeRawPtrFxmeet6kMpknEType__3_;
-text: .text%JVM_GetMethodIxModifiers;
-text: .text%__1cIMulLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPconvI2L_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLLShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTCreateExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_IsInterface;
-text: .text%__1cPorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIDivINodeGOpcode6kM_i_;
-text: .text%__1cOGenerateOopMapTmerge_state_into_bb6MpnKBasicBlock__v_;
-text: .text%__1cLOpaque1NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cNloadRangeNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLRShiftLNodeGOpcode6kM_i_;
-text: .text%__1cJCodeCacheIallocate6Fi_pnICodeBlob__;
-text: .text%__1cSCountedLoopEndNodeKstride_con6kM_i_;
-text: .text%__1cUPipeline_Use_Element2t6M_v_: output.o;
-text: .text%__1cRshrL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHCompileSregister_intrinsic6MpnNCallGenerator__v_;
-text: .text%__1cNSCMemProjNodeGOpcode6kM_i_;
-text: .text%__1cNimmP_pollOperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cRloadConP_pollNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQinstanceRefKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cQinstanceRefKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cOGenerateOopMapUreachable_basicblock6Fp0ipi_v_;
-text: .text%__1cPciInstanceKlassLfind_method6MpnIciSymbol_2_pnIciMethod__;
-text: .text%__1cXvirtual_call_RelocationLunpack_data6M_v_;
-text: .text%__1cFciEnvRfind_system_klass6MpnIciSymbol__pnHciKlass__;
-text: .text%__1cLRegisterMapIpd_clear6M_v_;
-text: .text%__1cHUNICODEHas_utf86FpHi_pc_;
-text: .text%__1cLstoreP0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cParrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cParrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cIGraphKitYcombine_exception_states6MpnNSafePointNode_2_v_;
-text: .text%__1cQmulL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconstMethodOopDescYchecked_exceptions_start6kM_pnXCheckedExceptionElement__;
-text: .text%__1cPClassFileParserYparse_checked_exceptions6MpHInSconstantPoolHandle_pnGThread__1_;
-text: .text%__1cKstoreLNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQConstantIntValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cSconvI2D_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPClassFileStreamHskip_u26MipnGThread__v_;
-text: .text%__1cUcompI_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerNverify_thread6M_v_;
-text: .text%__1cSbranchCon_longNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHnmethodVcleanup_inline_caches6M_v_;
-text: .text%__1cTciConstantPoolCacheGinsert6Mipv_v_;
-text: .text%__1cIAddLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFStateO_sub_Op_StoreI6MpknENode__v_;
-text: .text%__1cKHandleAreaHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHciField2t6MpnPfieldDescriptor__v_;
-text: .text%__1cRSignatureIterator2t6MpnGThread_pnNsymbolOopDesc__v_;
-text: .text%__1cMloadConLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cYcompareAndSwapL_boolNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFKlassMnext_sibling6kM_p0_;
-text: .text%__1cKDictionaryStry_get_next_class6M_pnMklassOopDesc__;
-text: .text%__1cNinstanceKlassKmethods_do6MpFpnNmethodOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryStry_get_next_class6F_pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cSobjArrayKlassKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%__1cJimmU5OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLBlock_ArrayEgrow6MI_v_;
-text: .text%__1cYinternal_word_RelocationLunpack_data6M_v_;
-text: .text%__1cKcmpOpPOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConPNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cUvisit_all_interfaces6FpnPobjArrayOopDesc_pnXInterfaceVisiterClosure__v_;
-text: .text%__1cLBoxLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPcmpFastLockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHRetNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvL2I_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKoopFactoryTnew_system_objArray6FipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cbDcatch_cleanup_find_cloned_def6FpnFBlock_pnENode_1rnLBlock_Array_i_3_: lcm.o;
-text: .text%__1cQxorI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOClearArrayNodeKmatch_edge6kMI_I_;
-text: .text%__1cPconvL2I_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadSNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSFixupMirrorClosureJdo_object6MpnHoopDesc__v_: universe.o;
-text: .text%__1cFStateP_sub_Op_LShiftI6MpknENode__v_;
-text: .text%__1cQandL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPSignatureStreamRas_symbol_or_null6M_pnNsymbolOopDesc__;
-text: .text%__1cKoopFactoryYnew_permanent_shortArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cIGraphKitbBset_arguments_for_java_call6MpnMCallJavaNode__v_;
-text: .text%__1cIGraphKitJpush_node6MnJBasicType_pnENode__v_: callGenerator.o;
-text: .text%__1cNSignatureInfoIdo_array6Mii_v_: bytecode.o;
-text: .text%__1cJcmpOpOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cMloadConPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_SetObjectArrayElement: jni.o;
-text: .text%__1cSandI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPThreadLocalNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNSafePointNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cObranchConUNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshlL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRCardTableModRefBSPdirty_MemRegion6MnJMemRegion__v_;
-text: .text%__1cLConvL2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOAbstractICacheQinvalidate_range6FpCi_v_;
-text: .text%__1cKstorePNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMaxINodeGOpcode6kM_i_;
-text: .text%__1cTDirectCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cMWarmCallInfoLalways_cold6F_p0_;
-text: .text%__1cIimmDOperJconstantD6kM_d_: ad_sparc_clone.o;
-text: .text%__1cIPhaseIFGEinit6MI_v_;
-text: .text%__1cJPhaseLiveHcompute6MI_v_;
-text: .text%__1cMLinkResolverbCresolve_virtual_call_or_null6FnLKlassHandle_1nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cSaddI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFTypeDEmake6Fd_pk0_;
-text: .text%__1cPThreadRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cPThreadRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRshlI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConDNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFStateN_sub_Op_LoadI6MpknENode__v_;
-text: .text%__1cIMachOperEtype6kM_pknEType__;
-text: .text%JVM_GetCPClassNameUTF;
-text: .text%__1cKBufferBlobGcreate6Fpkci_p0_;
-text: .text%__1cKcmpOpUOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cObranchConUNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetStringLength: jni.o;
-text: .text%__1cMLinkResolverbBresolve_static_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cLConvI2LNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cJloadPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMoutputStream2t6Mi_v_;
-text: .text%__1cMstringStreamJas_string6M_pc_;
-text: .text%__1cMstringStream2T6M_v_;
-text: .text%__1cIGraphKitMreset_memory6M_pnENode__;
-text: .text%__1cZCallDynamicJavaDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKstorePNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cENodeMsetup_is_top6M_v_;
-text: .text%__1cIGotoNodeGOpcode6kM_i_;
-text: .text%__1cPfieldDescriptorRint_initial_value6kM_i_;
-text: .text%__1cNbranchConNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapLbb_mark_fct6Fp0ipi_v_;
-text: .text%__1cKcmpOpPOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cSInterpreterRuntimeE_new6FpnKJavaThread_pnTconstantPoolOopDesc_i_v_;
-text: .text%__1cKReturnNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOGenerateOopMapRsigchar_to_effect6McipnNCellTypeState__2_;
-text: .text%__1cOGenerateOopMapIdo_field6Miiii_v_;
-text: .text%__1cJloadINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_releaseNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cSaddL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_i_v_;
-text: .text%__1cEDict2T6M_v_;
-text: .text%__1cKBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cLOopRecorder2t6MpnFArena__v_;
-text: .text%__1cRClassPathZipEntryLopen_stream6Mpkc_pnPClassFileStream__;
-text: .text%__1cMLinkResolverbCresolve_special_call_or_null6FnLKlassHandle_nMsymbolHandle_21_nMmethodHandle__;
-text: .text%__1cIModINodeGOpcode6kM_i_;
-text: .text%__1cRInterpretedRFrame2t6MnFframe_pnKJavaThread_nMmethodHandle__v_;
-text: .text%__1cKJavaThreadQlast_java_vframe6MpnLRegisterMap__pnKjavaVFrame__;
-text: .text%__1cTStackWalkCompPolicyVfindTopInlinableFrame6MpnNGrowableArray4CpnGRFrame____2_;
-text: .text%__1cTStackWalkCompPolicyXmethod_invocation_event6MnMmethodHandle_pnGThread__v_;
-text: .text%__1cISubLNodeGOpcode6kM_i_;
-text: .text%__1cKciTypeFlow2t6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%__1cKciTypeFlowPget_start_state6M_pkn0ALStateVector__;
-text: .text%__1cKciTypeFlowHdo_flow6M_v_;
-text: .text%__1cKciTypeFlowKflow_types6M_v_;
-text: .text%__1cKciTypeFlowKmap_blocks6M_v_;
-text: .text%__1cMloadConPNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTconstantPoolOopDescbCverify_constant_pool_resolve6FnSconstantPoolHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cIciMethodJload_code6M_v_;
-text: .text%__1cMciMethodDataJload_data6M_v_;
-text: .text%__1cIGraphKitTuse_exception_state6MpnNSafePointNode__pnENode__;
-text: .text%__1cOcompU_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIGraphKitGmemory6MI_pnENode__;
-text: .text%__1cIHaltNodeEhash6kM_I_: classes.o;
-text: .text%__1cFKlassQup_cast_abstract6M_p0_;
-text: .text%__1cKReturnNodeEhash6kM_I_: classes.o;
-text: .text%__1cPClassFileParserXverify_legal_class_name6MnMsymbolHandle_pnGThread__v_;
-text: .text%__1cPjava_lang_ClassNcreate_mirror6FnLKlassHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cIAndINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMciMethodData2t6MnQmethodDataHandle__v_;
-text: .text%__1cIAndINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cLOpaque2NodeGOpcode6kM_i_;
-text: .text%__1cOClearArrayNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNmethodOopDescbEfast_exception_handler_bci_for6MnLKlassHandle_ipnGThread__i_;
-text: .text%__1cSInterpreterRuntimebFexception_handler_for_exception6FpnKJavaThread_pnHoopDesc__pC_;
-text: .text%__1cOPhaseIdealLoopPis_counted_loop6MpnENode_pnNIdealLoopTree__2_;
-text: .text%__1cQComputeCallStackHdo_void6M_v_: generateOopMap.o;
-text: .text%__1cFKlassRinitialize_supers6MpnMklassOopDesc_pnGThread__v_;
-text: .text%__1cFKlassVbase_create_klass_oop6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__pnMklassOopDesc__;
-text: .text%__1cQjava_lang_StringLutf8_length6FpnHoopDesc__i_;
-text: .text%jni_GetStringUTFLength: jni.o;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc_ii_pc_;
-text: .text%jni_GetStringUTFRegion: jni.o;
-text: .text%__1cFKlassRbase_create_klass6FrnLKlassHandle_irknKKlass_vtbl_pnGThread__1_;
-text: .text%__1cHUNICODELutf8_length6FpHi_i_;
-text: .text%__1cQPlaceholderTableMremove_entry6MiInMsymbolHandle_nGHandle__v_;
-text: .text%__1cKstoreBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreINodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQSystemDictionaryTload_instance_class6FnMsymbolHandle_nGHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cRsarI_reg_imm5NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cUcompU_iReg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHAddNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cUcompU_iReg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKPerfStringKset_string6Mpkc_v_;
-text: .text%__1cQjava_lang_StringRas_unicode_string6FpnHoopDesc_ri_pH_;
-text: .text%JVM_InternString;
-text: .text%__1cLStringTableGintern6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cCosGrandom6F_l_;
-text: .text%__1cVcompP_iRegP_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKoopFactoryXnew_permanent_byteArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cRcompL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRMachNullCheckNodeLout_RegMask6kM_rknHRegMask__: machnode.o;
-text: .text%__1cSTailCalljmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cIGraphKitPpush_pair_local6Mi_v_: parse2.o;
-text: .text%__1cICodeHeapKdeallocate6Mpv_v_;
-text: .text%__1cJCodeCacheEfree6FpnICodeBlob__v_;
-text: .text%__1cKTypeRawPtrEmake6FpC_pk0_;
-text: .text%jni_SetIntField: jni.o;
-text: .text%__1cNIdealLoopTreeMcounted_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cKBufferBlobEfree6Fp0_v_;
-text: .text%__1cPconvL2I_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPciObjectFactoryMvm_symbol_at6Fi_pnIciSymbol__;
-text: .text%__1cKDictionaryJadd_klass6MnMsymbolHandle_nGHandle_nLKlassHandle__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWImplicitExceptionTableGappend6MII_v_;
-text: .text%__1cRMachNullCheckNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLProfileDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_: ciMethodData.o;
-text: .text%__1cQxorI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNIdealLoopTreeVadjust_loop_exit_prob6MpnOPhaseIdealLoop__v_;
-text: .text%__1cNinstanceKlassVadd_dependent_nmethod6MpnHnmethod__v_;
-text: .text%__1cSandI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIPhaseIFGISquareUp6M_v_;
-text: .text%__1cLklassVtableMget_mirandas6FpnNGrowableArray4CpnNmethodOopDesc___pnMklassOopDesc_pnPobjArrayOopDesc_8_v_;
-text: .text%__1cKCodeBuffer2T6M_v_;
-text: .text%__1cQPSGenerationPoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cLOpaque1NodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cMURShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRcompL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXAdaptiveWeightedAverageGsample6Mf_v_;
-text: .text%__1cFKlassWappend_to_sibling_list6M_v_;
-text: .text%__1cQSystemDictionarySjava_system_loader6F_pnHoopDesc__;
-text: .text%__1cFKlassMset_subklass6MpnMklassOopDesc__v_;
-text: .text%__1cOGenerateOopMapLmerge_state6Fp0ipi_v_;
-text: .text%__1cMTypeKlassPtrFxdual6kM_pknEType__;
-text: .text%__1cQSystemDictionaryVdefine_instance_class6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cPClassFileParserbBcheck_final_method_override6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cJCodeCachebKnumber_of_nmethods_with_dependencies6F_i_;
-text: .text%__1cNinstanceKlassQinit_implementor6M_v_;
-text: .text%__1cPClassFileStream2t6MpCipc_v_;
-text: .text%__1cNinstanceKlassSprocess_interfaces6MpnGThread__v_;
-text: .text%__1cNinstanceKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNinstanceKlassWdo_local_static_fields6MpFpnPfieldDescriptor_pnGThread__v4_v_;
-text: .text%__1cPClassFileParserMsort_methods6MnOobjArrayHandle_111pnGThread__nPtypeArrayHandle__;
-text: .text%__1cFKlassKsuperklass6kM_pnNinstanceKlass__;
-text: .text%__1cPClassFileParserbBparse_constant_pool_entries6MnSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cPClassFileParserTparse_constant_pool6MpnGThread__nSconstantPoolHandle__;
-text: .text%__1cPClassFileParserbDcompute_transitive_interfaces6MnTinstanceKlassHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cIUniverseTflush_dependents_on6FnTinstanceKlassHandle__v_;
-text: .text%__1cLklassItableZsetup_itable_offset_table6FnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbCcheck_super_interface_access6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassQeager_initialize6MpnGThread__v_;
-text: .text%__1cPClassFileParserVset_precomputed_flags6MnTinstanceKlassHandle__v_;
-text: .text%__1cPClassFileParserbAparse_classfile_attributes6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKcmpOpPOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMPhaseIterGVNIoptimize6M_v_;
-text: .text%__1cOPhaseTransform2t6MnFPhaseLPhaseNumber__v_;
-text: .text%__1cISubINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassOset_alloc_size6MI_v_: instanceKlass.o;
-text: .text%__1cNinstanceKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlass.o;
-text: .text%__1cHMemNodeHsize_of6kM_I_;
-text: .text%__1cSThreadProfilerMark2T6M_v_;
-text: .text%__1cLClassLoaderOload_classfile6FnMsymbolHandle_pnGThread__nTinstanceKlassHandle__;
-text: .text%__1cJEventMark2t6MpkcE_v_: classLoader.o;
-text: .text%__1cSThreadProfilerMark2t6Mn0AGRegion__v_;
-text: .text%__1cQSystemDictionaryRload_shared_class6FnTinstanceKlassHandle_nGHandle_pnGThread__1_;
-text: .text%__1cPClassFileParserbKparse_classfile_sourcefile_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cQmodI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRShiftINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKCMoveINodeGOpcode6kM_i_;
-text: .text%__1cLLShiftLNodeGOpcode6kM_i_;
-text: .text%__1cYcompareAndSwapL_boolNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMtlsLoadPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateQ_sub_Op_URShiftI6MpknENode__v_;
-text: .text%__1cKcmpOpUOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cObranchConUNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cQaddP_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapJinterp_bb6MpnKBasicBlock__v_;
-text: .text%__1cOGenerateOopMapQnext_bb_start_pc6MpnKBasicBlock__i_;
-text: .text%__1cLklassVtableYadd_new_mirandas_to_list6FpnNGrowableArray4CpnNmethodOopDesc___pnPobjArrayOopDesc_6pnMklassOopDesc__v_;
-text: .text%__1cIRewriterHrewrite6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNinstanceKlassNrewrite_class6MpnGThread__v_;
-text: .text%__1cYconstantPoolCacheOopDescKinitialize6MrnIintArray__v_;
-text: .text%JVM_GetMethodIxSignatureUTF;
-text: .text%JVM_GetMethodIxMaxStack;
-text: .text%JVM_GetMethodIxArgsSize;
-text: .text%JVM_GetMethodIxByteCodeLength;
-text: .text%JVM_GetMethodIxExceptionIndexes;
-text: .text%JVM_GetMethodIxByteCode;
-text: .text%JVM_GetMethodIxExceptionsCount;
-text: .text%__1cLstoreP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHCmpNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMPhaseChaitinSbuild_ifg_physical6MpnMResourceArea__I_;
-text: .text%__1cWCountInterfacesClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cQmulD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKoopFactoryWnew_permanent_intArray6FipnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cPClassFileParserVparse_exception_table6MIInSconstantPoolHandle_pnGThread__nPtypeArrayHandle__;
-text: .text%__1cNPhaseCoalescePcoalesce_driver6M_v_;
-text: .text%__1cLBuildCutout2T6M_v_;
-text: .text%__1cNloadConL0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConP0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cJimmP0OperEtype6kM_pknEType__: ad_sparc_clone.o;
-text: .text%__1cLstoreI0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPCheckCastPPNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSObjectSynchronizerJnotifyall6FnGHandle_pnGThread__v_;
-text: .text%__1cHNTarjanICOMPRESS6M_v_;
-text: .text%__1cNRelocIteratorTlocs_and_index_size6Fii_i_;
-text: .text%__1cQsubL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcompI_iRegNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLklassItableTcompute_itable_size6FnOobjArrayHandle__i_;
-text: .text%__1cQandI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIXorINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cRmethodDataOopDescLbci_to_data6Mi_pnLProfileData__;
-text: .text%__1cMnegF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLstoreI0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTOopMapForCacheEntryZfill_stackmap_for_opcodes6MpnOBytecodeStream_pnNCellTypeState_4i_v_;
-text: .text%__1cSaddL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshrL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cILoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cHMatcherLfind_shared6MpnENode__v_;
-text: .text%__1cJStartNodeHsize_of6kM_I_;
-text: .text%__1cHMatcherFxform6MpnENode_i_2_;
-text: .text%__1cEDict2t6MpFpkv2_ipF2_ipnFArena_i_v_;
-text: .text%__1cRInterpretedRFrameKtop_vframe6kM_pnKjavaVFrame__: rframe.o;
-text: .text%__1cQmodI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRinterpretedVFrameDbci6kM_i_;
-text: .text%__1cIAndINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNinstanceKlassbBcall_class_initializer_impl6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cNloadRangeNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRcompL_reg_conNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMLinkResolverbHlookup_instance_method_in_klasses6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cMnegF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSharedRuntimebWnative_method_throw_unsatisfied_link_error_entry6F_pC_;
-text: .text%__1cOMethodLivenessQcompute_liveness6M_v_;
-text: .text%__1cOMethodLiveness2t6MpnFArena_pnIciMethod__v_;
-text: .text%__1cOMethodLivenessNinit_gen_kill6M_v_;
-text: .text%__1cOMethodLivenessSpropagate_liveness6M_v_;
-text: .text%__1cOMethodLivenessRinit_basic_blocks6M_v_;
-text: .text%__1cIGraphKitHopt_iff6MpnENode_2_2_;
-text: .text%__1cLRShiftINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJTimeStampGupdate6M_v_;
-text: .text%__1cRmethodDataOopDescKmileage_of6FpnNmethodOopDesc__i_;
-text: .text%__1cMloadConDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQarray_addressing6MnJBasicType_ippknEType__pnENode__;
-text: .text%__1cNloadConP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPCountedLoopNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cIProjNodeJideal_reg6kM_I_;
-text: .text%__1cQaddI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQcmovI_reg_ltNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsubI_zero_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperFequal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cHCompilebAvarargs_C_out_slots_killed6kM_I_;
-text: .text%__1cOPhaseIdealLoopQset_subtree_ctrl6MpnENode__v_;
-text: .text%__1cWstatic_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cNflagsRegLOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cYciExceptionHandlerStreamPcount_remaining6M_i_;
-text: .text%__1cFParseXcatch_inline_exceptions6MpnNSafePointNode__v_;
-text: .text%__1cNobjArrayKlassKcopy_array6MpnMarrayOopDesc_i2iipnGThread__v_;
-text: .text%__1cKcmpOpUOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%JVM_GetFieldIxModifiers;
-text: .text%__1cRScavengeRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cRScavengeRootsTaskEname6M_pc_: psTasks.o;
-text: .text%JVM_IsConstructorIx;
-text: .text%__1cPJavaCallWrapperHoops_do6MpnKOopClosure__v_;
-text: .text%__1cFframeNoops_entry_do6MpnKOopClosure_pknLRegisterMap__v_;
-text: .text%__1cSaddP_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassTarray_klass_or_null6M_pnMklassOopDesc__;
-text: .text%__1cKNativeCallXset_destination_mt_safe6MpC_v_;
-text: .text%__1cUBytecode_tableswitchOdest_offset_at6kMi_i_;
-text: .text%__1cPciObjArrayKlassNelement_klass6M_pnHciKlass__;
-text: .text%__1cKg1RegIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSvframeStreamCommonZsecurity_get_caller_frame6Mi_v_;
-text: .text%__1cUjni_invoke_nonstatic6FpnHJNIEnv__pnJJavaValue_pnI_jobject_nLJNICallType_pnK_jmethodID_pnSJNI_ArgumentPusher_pnGThread__v_: jni.o;
-text: .text%__1cIAndINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cIAndINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cTMachCallRuntimeNodePret_addr_offset6M_i_;
-text: .text%__1cLConvL2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKo0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cIregDOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNmethodOopDescTverified_code_entry6M_pC_;
-text: .text%__1cNSharedRuntimeXfind_callee_info_helper6FpnKJavaThread_rnMvframeStream_rnJBytecodesECode_rnICallInfo_pnGThread__nGHandle__;
-text: .text%__1cLRethrowNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSPSKeepAliveClosureGdo_oop6MppnHoopDesc__v_: psScavenge.o;
-text: .text%__1cFParseFBlockRsuccessor_for_bci6Mi_p1_;
-text: .text%__1cVPreserveExceptionMark2T6M_v_;
-text: .text%__1cVPreserveExceptionMark2t6MrpnGThread__v_;
-text: .text%__1cHRetNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIRootNodeFValue6kMpnOPhaseTransform__pknEType__: classes.o;
-text: .text%__1cMoutputStreamFprint6MpkcE_v_;
-text: .text%__1cOGenerateOopMapKcopy_state6MpnNCellTypeState_2_v_;
-text: .text%__1cHCompileQsync_stack_slots6kM_i_;
-text: .text%__1cHMulNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJLoadFNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoHdo_long6M_v_: bytecode.o;
-text: .text%__1cHPhiNodeDcmp6kMrknENode__I_;
-text: .text%__1cHOrINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cSTailCalljmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKMemoryPoolHoops_do6MpnKOopClosure__v_;
-text: .text%__1cKstoreINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileStreamGget_u86MpnGThread__X_;
-text: .text%__1cLMachNopNodeMideal_Opcode6kM_i_: ad_sparc.o;
-text: .text%__1cLMachNopNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopNreorg_offsets6MpnNIdealLoopTree__v_;
-text: .text%__1cRshrL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescVset_signature_handler6MpC_v_;
-text: .text%__1cPcompP_iRegPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSxorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopRsplit_thru_region6MpnENode_2_2_;
-text: .text%__1cIAndLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cbAPSEvacuateFollowersClosureHdo_void6M_v_: psScavenge.o;
-text: .text%jni_ExceptionCheck: jni.o;
-text: .text%__1cIAndLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cJCodeCacheMfind_nmethod6Fpv_pnHnmethod__;
-text: .text%__1cOPhaseIdealLoopMdominated_by6MpnENode_2_v_;
-text: .text%__1cQshlI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseNthrow_to_exit6MpnNSafePointNode__v_;
-text: .text%__1cVConstantOopWriteValueIwrite_on6MpnUDebugInfoWriteStream__v_;
-text: .text%__1cJVectorSetGslamin6Mrk0_v_;
-text: .text%JVM_Clone;
-text: .text%__1cRAbstractAssemblerFflush6M_v_;
-text: .text%__1cITypeLongFxdual6kM_pknEType__;
-text: .text%__1cIJumpDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cKCompiledIC2t6MpnKNativeCall__v_;
-text: .text%__1cOstackSlotLOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cURethrowExceptionNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOpaque2NodeEhash6kM_I_;
-text: .text%__1cJloadFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompU_iReg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUEdenMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cYSurvivorMutableSpacePoolQget_memory_usage6M_nLMemoryUsage__;
-text: .text%__1cLOptoRuntimeJstub_name6FpC_pkc_;
-text: .text%__1cHOrINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cICmpLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cHPhiNodeKmake_blank6FpnENode_2_p0_;
-text: .text%__1cXJNI_ArgumentPusherVaArgIget_long6M_v_: jni.o;
-text: .text%__1cIMulINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cOMachEpilogNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateM_sub_Op_SubI6MpknENode__v_;
-text: .text%__1cFframeRretrieve_receiver6MpnLRegisterMap__pnHoopDesc__;
-text: .text%__1cPBytecode_invokeNstatic_target6MpnGThread__nMmethodHandle__;
-text: .text%__1cNloadKlassNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cMTailCallNodeKmatch_edge6kMI_I_;
-text: .text%jni_NewObject: jni.o;
-text: .text%__1cIPhaseIFGYCompute_Effective_Degree6M_v_;
-text: .text%__1cHMemNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cXmembar_release_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cJNode_ListEyank6MpnENode__v_;
-text: .text%__1cMPhaseChaitinISimplify6M_v_;
-text: .text%__1cNIdealLoopTreeIset_nest6MI_i_;
-text: .text%__1cIMulLNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cMStartOSRNodeGOpcode6kM_i_;
-text: .text%__1cSCallLeafDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cLcmpD_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJcmpOpOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cKciTypeFlowPflow_exceptions6MpnNGrowableArray4Cpn0AFBlock___pnNGrowableArray4CpnPciInstanceKlass___pn0ALStateVector__v_;
-text: .text%__1cKType_ArrayEgrow6MI_v_;
-text: .text%__1cNloadConP0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cXmembar_release_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshrL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMURShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cMLinkResolverOresolve_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMemBarVolatileNodeGOpcode6kM_i_;
-text: .text%__1cLstoreB0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cRshrI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_StringOas_utf8_string6FpnHoopDesc__pc_;
-text: .text%__1cNSafePointNodeLpop_monitor6M_v_;
-text: .text%__1cMPhaseChaitinVfind_base_for_derived6MppnENode_2rI_2_;
-text: .text%__1cLOptoRuntimebAcomplete_monitor_exit_Type6F_pknITypeFunc__;
-text: .text%__1cOstackSlotIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIGraphKitNshared_unlock6MpnENode_2_v_;
-text: .text%__1cFStateT_sub_Op_CheckCastPP6MpknENode__v_;
-text: .text%__1cQsubI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFKlassDLCA6Mp0_1_;
-text: .text%__1cKTypeRawPtrEmake6FnHTypePtrDPTR__pk0_;
-text: .text%__1cHciKlassVleast_common_ancestor6Mp0_1_;
-text: .text%__1cOPhaseIdealLoopPbuild_loop_tree6M_v_;
-text: .text%__1cRcompL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRshlL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMindirectOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindirectOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNSafePointNodeMpush_monitor6MpknMFastLockNode__v_;
-text: .text%__1cSCallLeafDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cJLoadBNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPCountedLoopNodeJinit_trip6kM_pnENode__: cfgnode.o;
-text: .text%__1cRcompL_reg_conNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPcheckCastPPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOGenerateOopMapGdo_ldc6Mii_v_;
-text: .text%__1cJCMoveNodeLis_cmove_id6FpnOPhaseTransform_pnENode_44pnIBoolNode__4_;
-text: .text%__1cKTypeAryPtrQcast_to_ptr_type6kMnHTypePtrDPTR__pknEType__;
-text: .text%__1cOPhaseIdealLoopKDominators6M_v_;
-text: .text%jni_NewGlobalRef: jni.o;
-text: .text%__1cTciConstantPoolCache2t6MpnFArena_i_v_;
-text: .text%__1cIAndINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cYcompareAndSwapL_boolNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMPhaseChaitinFSplit6MI_I_;
-text: .text%__1cMPhaseChaitinHcompact6M_v_;
-text: .text%__1cZPhaseConservativeCoalesce2t6MrnMPhaseChaitin__v_;
-text: .text%__1cMPhaseChaitinZcompress_uf_map_for_nodes6M_v_;
-text: .text%__1cZPhaseConservativeCoalesceGverify6M_v_;
-text: .text%__1cRcmpFastUnlockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQshlI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cXmembar_release_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMachEpilogNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKCompiledICSset_to_monomorphic6MrknOCompiledICInfo__v_;
-text: .text%__1cJloadFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIRootNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cJLoadLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle__v_;
-text: .text%__1cTjava_lang_ThrowableTfill_in_stack_trace6FnGHandle_pnGThread__v_;
-text: .text%__1cFframeZinterpreter_frame_set_bcp6MpC_v_;
-text: .text%JVM_FillInStackTrace;
-text: .text%__1cKJavaThreadGactive6F_p0_;
-text: .text%__1cKstoreFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringOchar_converter6FnGHandle_HHpnGThread__1_;
-text: .text%__1cRsubI_zero_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHTypePtrFxmeet6kMpknEType__3_;
-text: .text%__1cNflagsRegFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cIMinINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cFParseWensure_phis_everywhere6M_v_;
-text: .text%__1cLRethrowNodeEhash6kM_I_: classes.o;
-text: .text%__1cIDivLNodeGOpcode6kM_i_;
-text: .text%__1cNDispatchTableJset_entry6MirnKEntryPoint__v_;
-text: .text%__1cNmethodOopDescVclear_native_function6M_v_;
-text: .text%__1cOloadConL13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%jio_snprintf;
-text: .text%__1cMloadConINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSSetupItableClosureEdoit6MpnMklassOopDesc_i_v_: klassVtable.o;
-text: .text%__1cSmulI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_NewLocalRef: jni.o;
-text: .text%__1cIMulDNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeGOpcode6kM_i_;
-text: .text%__1cQcmovI_reg_gtNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPClassFileParserbNparse_classfile_inner_classes_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__H_;
-text: .text%__1cKStoreFNodeGOpcode6kM_i_;
-text: .text%__1cLConvD2INodeGOpcode6kM_i_;
-text: .text%__1cIAddLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cMURShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKReturnNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_DeleteGlobalRef: jni.o;
-text: .text%__1cVPatchingRelocIteratorIpostpass6M_v_;
-text: .text%__1cVPatchingRelocIteratorHprepass6M_v_;
-text: .text%__1cRAbstractAssemblerOcode_fill_byte6F_i_;
-text: .text%__1cIAndLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cIAndLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cJOopMapSet2t6M_v_;
-text: .text%__1cNSCMemProjNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_GetCPMethodModifiers;
-text: .text%jni_GetObjectArrayElement: jni.o;
-text: .text%__1cFParseKarray_load6MnJBasicType__v_;
-text: .text%jni_SetLongField: jni.o;
-text: .text%__1cHGCCauseJto_string6Fn0AFCause__pkc_;
-text: .text%__1cJOopMapSetHcopy_to6MpC_v_;
-text: .text%__1cQjava_lang_ThreadRset_thread_status6FpnHoopDesc_n0AMThreadStatus__v_;
-text: .text%__1cJOopMapSetJheap_size6kM_i_;
-text: .text%__1cNSafePointNodeKgrow_stack6MpnIJVMState_I_v_;
-text: .text%__1cIJVMState2t6Mi_v_;
-text: .text%__1cIAndLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIAndLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cJLoadSNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMMachProjNodeHsize_of6kM_I_: classes.o;
-text: .text%__1cOPhaseIdealLoopUsplit_if_with_blocks6MrnJVectorSet_rnKNode_Stack__v_;
-text: .text%__1cNinstanceKlassPadd_implementor6MpnMklassOopDesc__v_;
-text: .text%__1cLOopRecorderIoop_size6M_i_;
-text: .text%__1cYDebugInformationRecorderJdata_size6M_i_;
-text: .text%__1cYDebugInformationRecorderIpcs_size6M_i_;
-text: .text%__1cOPhaseIdealLoopOset_early_ctrl6MpnENode__v_;
-text: .text%__1cHnmethodKtotal_size6kM_i_;
-text: .text%__1cbFunnecessary_membar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMloadConLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParseNadd_safepoint6M_v_;
-text: .text%__1cOPhaseTransform2t6Mp0nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6Mp0_v_;
-text: .text%__1cQcmovI_reg_ltNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXPhaseAggressiveCoalesceGverify6M_v_: coalesce.o;
-text: .text%__1cHCompilebBregister_library_intrinsics6M_v_;
-text: .text%__1cXPhaseAggressiveCoalesceNinsert_copies6MrnHMatcher__v_;
-text: .text%__1cNPhaseRegAlloc2t6MIrnIPhaseCFG_rnHMatcher_pF_v_v_;
-text: .text%__1cIPhaseCFGJbuild_cfg6M_I_;
-text: .text%__1cHCompileEInit6Mi_v_;
-text: .text%__1cVExceptionHandlerTable2t6Mi_v_;
-text: .text%__1cMPhaseChaitin2t6MIrnIPhaseCFG_rnHMatcher__v_;
-text: .text%__1cMPhaseChaitinRRegister_Allocate6M_v_;
-text: .text%__1cHCompileTset_cached_top_node6MpnENode__v_;
-text: .text%__1cHMatcherZnumber_of_saved_registers6F_i_;
-text: .text%__1cNPhaseRegAllocTpd_preallocate_hook6M_v_;
-text: .text%__1cLBlock_Array2t6MpnFArena__v_: block.o;
-text: .text%__1cMPhaseChaitinMreset_uf_map6MI_v_;
-text: .text%__1cMPhaseChaitinRbuild_ifg_virtual6M_v_;
-text: .text%__1cIPhaseCFGQGlobalCodeMotion6MrnHMatcher_IrnJNode_List__v_;
-text: .text%__1cHMatcherTFixup_Save_On_Entry6M_v_;
-text: .text%__1cHMatcherPinit_spill_mask6MpnENode__v_;
-text: .text%__1cHCompileICode_Gen6M_v_;
-text: .text%__1cUDebugInfoWriteStream2t6MpnYDebugInformationRecorder_i_v_;
-text: .text%__1cHMatcherVinit_first_stack_mask6M_v_;
-text: .text%__1cFArenaNmove_contents6Mp0_1_;
-text: .text%__1cFArenaRdestruct_contents6M_v_;
-text: .text%__1cIPhaseIFG2t6MpnFArena__v_;
-text: .text%__1cFDictIFreset6MpknEDict__v_;
-text: .text%__1cHMatcherFmatch6M_v_;
-text: .text%__1cHMatcher2t6MrnJNode_List__v_;
-text: .text%__1cIPhaseCFGVschedule_pinned_nodes6MrnJVectorSet__v_;
-text: .text%__1cETypeKInitialize6FpnHCompile__v_;
-text: .text%__1cIPhaseCFGYEstimate_Block_Frequency6M_v_;
-text: .text%__1cYDebugInformationRecorder2t6MpnLOopRecorder__v_;
-text: .text%__1cOCompileWrapper2t6MpnHCompile__v_;
-text: .text%__1cIPhaseCFGKDominators6M_v_;
-text: .text%__1cIPhaseCFG2t6MpnFArena_pnIRootNode_rnHMatcher__v_;
-text: .text%__1cJPhaseLive2t6MrknIPhaseCFG_rnILRG_List_pnFArena__v_;
-text: .text%__1cHCompileYinit_scratch_buffer_blob6M_v_;
-text: .text%__1cOMachPrologNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHCompileTFillExceptionTables6MIpI1pnFLabel__v_;
-text: .text%__1cMPhaseChaitinbApost_allocate_copy_removal6M_v_;
-text: .text%__1cHCompileGOutput6M_v_;
-text: .text%__1cWImplicitExceptionTableIset_size6MI_v_;
-text: .text%__1cHCompileMBuildOopMaps6M_v_;
-text: .text%__1cLdo_liveness6FpnNPhaseRegAlloc_pnIPhaseCFG_pnKBlock_List_ipnFArena_pnEDict__v_: buildOopMap.o;
-text: .text%__1cMPhaseChaitinMfixup_spills6M_v_;
-text: .text%__1cNPhaseRegAllocPalloc_node_regs6Mi_v_;
-text: .text%__1cHCompileLFill_buffer6M_v_;
-text: .text%__1cVCallRuntimeDirectNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNSignatureInfoJdo_double6M_v_: bytecode.o;
-text: .text%__1cENodeHrm_prec6MI_v_;
-text: .text%__1cHRetNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRPrivilegedElementKinitialize6MpnMvframeStream_pnHoopDesc_p0pnGThread__v_;
-text: .text%JVM_DoPrivileged;
-text: .text%__1cRsubI_zero_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHRetNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIConDNodeGOpcode6kM_i_;
-text: .text%__1cObranchConFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbDbuild_interpreter_method_data6FnMmethodHandle_pnGThread__v_;
-text: .text%__1cRcompL_reg_conNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNMemoryManagerHoops_do6MpnKOopClosure__v_;
-text: .text%__1cPconvL2I_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFciEnvKcompile_id6M_I_;
-text: .text%__1cPmethodDataKlassIallocate6MnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cKoopFactoryOnew_methodData6FnMmethodHandle_pnGThread__pnRmethodDataOopDesc__;
-text: .text%__1cIAndLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cVshrL_reg_imm6_L2INodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvL2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSmulI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosXthread_local_storage_at6Fi_pv_;
-text: .text%__1cMindIndexOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperOindex_position6kM_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cOMacroAssemblerWbang_stack_with_offset6Mi_v_: assembler_sparc.o;
-text: .text%__1cRAbstractAssemblerbDgenerate_stack_overflow_check6Mi_v_;
-text: .text%__1cMindIndexOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cNloadKlassNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFStateR_sub_Op_LoadKlass6MpknENode__v_;
-text: .text%__1cGTarjanICOMPRESS6M_v_;
-text: .text%__1cKstoreCNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cICmpDNodeGOpcode6kM_i_;
-text: .text%__1cNloadConL0NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cOPhaseIdealLoopOplace_near_use6kMpnENode__2_;
-text: .text%__1cVCallRuntimeDirectNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreB0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSInterpreterRuntimeOprofile_method6FpnKJavaThread_pC_i_;
-text: .text%__1cMURShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cJloadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOopMapCacheLoop_iterate6MpnKOopClosure__v_;
-text: .text%__1cLRShiftINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMachNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLOpaque2NodeLbottom_type6kM_pknEType__: connode.o;
-text: .text%__1cSconvI2D_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUPSGenerationCountersKupdate_all6M_v_: psGenerationCounters.o;
-text: .text%__1cQComputeCallStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cQregP_to_stkPNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapHppstore6MpnNCellTypeState_i_v_;
-text: .text%__1cQmodI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulINodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cURethrowExceptionNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIAddLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQcmovI_reg_ltNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreB0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSaddI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIModINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKklassKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cJcmpOpOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cJimmI0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFStateM_sub_Op_ConL6MpknENode__v_;
-text: .text%__1cOloadConL13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassNameUTF;
-text: .text%__1cKloadUBNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIXorINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cFStateM_sub_Op_AndI6MpknENode__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKcmpOpFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cTmembar_volatileNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFStateL_sub_Op_OrI6MpknENode__v_;
-text: .text%__1cJCmpL3NodeGOpcode6kM_i_;
-text: .text%JVM_FindLoadedClass;
-text: .text%__1cIMulLNodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulLNodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cVAdaptivePaddedAverageGsample6Mf_v_;
-text: .text%__1cIConFNodeGOpcode6kM_i_;
-text: .text%__1cSmembar_acquireNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeGOpcode6kM_i_;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectIoverride6FpnHoopDesc__C_;
-text: .text%__1cQLibraryIntrinsicIgenerate6MpnIJVMState__2_;
-text: .text%__1cLRShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKTypeRawPtrFxdual6kM_pknEType__;
-text: .text%__1cNloadConL0NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cFTypeFEmake6Ff_pk0_;
-text: .text%__1cIimmFOperJconstantF6kM_f_: ad_sparc_clone.o;
-text: .text%__1cEUTF8Ounicode_length6Fpkc_i_;
-text: .text%__1cUSafepointSynchronizeFblock6FpnKJavaThread__v_;
-text: .text%__1cOGenerateOopMapJppdupswap6Mipkc_v_;
-text: .text%__1cSmembar_acquireNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cPorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPhaseCFGOinsert_goto_at6MII_v_;
-text: .text%__1cSThreadLocalStoragePget_thread_slow6F_pnGThread__;
-text: .text%__1cPCallRuntimeNodeGOpcode6kM_i_;
-text: .text%__1cJcmpOpOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cMindIndexOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cMindIndexOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%JVM_FindClassFromClass;
-text: .text%__1cObranchConFNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorFclazz6FpnHoopDesc__2_;
-text: .text%__1cbDjava_lang_reflect_ConstructorEslot6FpnHoopDesc__i_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cKReflectionSinvoke_constructor6FpnHoopDesc_nOobjArrayHandle_pnGThread__2_;
-text: .text%JVM_NewInstanceFromConstructor;
-text: .text%__1cFParseFBlockMadd_new_path6M_i_;
-text: .text%__1cIimmPOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQsubL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJloadBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLConvF2DNodeGOpcode6kM_i_;
-text: .text%__1cLConvI2DNodeGOpcode6kM_i_;
-text: .text%__1cSciExceptionHandlerLcatch_klass6M_pnPciInstanceKlass__;
-text: .text%__1cMloadConFNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKcmpOpPOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLRShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSTailCalljmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cGIfNodeMdominated_by6MpnENode_pnMPhaseIterGVN__v_;
-text: .text%__1cOcompiledVFrame2t6MpknFframe_pknLRegisterMap_pnKJavaThread_pnJScopeDesc__v_;
-text: .text%__1cQshlI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapJdo_astore6Mi_v_;
-text: .text%__1cbFunnecessary_membar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cULinearLeastSquareFitGupdate6Mdd_v_;
-text: .text%__1cOoop_RelocationIoop_addr6M_ppnHoopDesc__;
-text: .text%__1cKstoreCNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreCNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJcmpOpOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cXmembar_acquire_lockNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPfieldDescriptorUstring_initial_value6kMpnGThread__pnHoopDesc__;
-text: .text%__1cMloadConLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIMaxINodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMindirectOperNconstant_disp6kM_i_: ad_sparc.o;
-text: .text%__1cMindirectOperNbase_position6kM_i_: ad_sparc.o;
-text: .text%__1cIAddLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cMindirectOperFscale6kM_i_: ad_sparc.o;
-text: .text%__1cYinternal_word_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cSsubL_reg_reg_2NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_NewString: jni.o;
-text: .text%__1cLConvL2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQjava_lang_StringXcreate_oop_from_unicode6FpHipnGThread__pnHoopDesc__;
-text: .text%__1cKoopFactoryNnew_charArray6FpkcpnGThread__pnQtypeArrayOopDesc__;
-text: .text%__1cOcompiledVFrameEcode6kM_pnHnmethod__;
-text: .text%__1cIGraphKitMnext_monitor6M_i_;
-text: .text%__1cLBoxLockNode2t6Mi_v_;
-text: .text%__1cPconvF2D_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLOptoRuntimebBcomplete_monitor_enter_Type6F_pknITypeFunc__;
-text: .text%__1cIGraphKitLshared_lock6MpnENode__pnMFastLockNode__;
-text: .text%__1cNloadConP0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRorI_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperEless6kM_i_: ad_sparc_clone.o;
-text: .text%__1cQaddF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRLowMemoryDetectorWdetect_after_gc_memory6FpnKMemoryPool__v_;
-text: .text%lwp_mutex_init: os_solaris.o;
-text: .text%__1cRsubI_zero_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadGthread6FpnHoopDesc__pnKJavaThread__;
-text: .text%__1cQnotemp_iRegIOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cITemplateIbytecode6kM_nJBytecodesECode__;
-text: .text%__1cODataRelocationGoffset6M_i_: relocInfo.o;
-text: .text%__1cYinternal_word_RelocationFvalue6M_pC_: relocInfo.o;
-text: .text%__1cCosPhint_no_preempt6F_v_;
-text: .text%__1cOcmovII_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMulLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulINodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cPciObjectFactory2t6MpnFArena_i_v_;
-text: .text%__1cRsarL_reg_imm6NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFciEnvWget_method_from_handle6MpnI_jobject__pnIciMethod__;
-text: .text%__1cSstring_compareNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFciEnv2T6M_v_;
-text: .text%__1cIGraphKitNgen_checkcast6MpnENode_2p2_2_;
-text: .text%__1cMMergeMemNodeIadr_type6kM_pknHTypePtr__: memnode.o;
-text: .text%__1cJcmpOpOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cGvframeDtop6kM_p0_;
-text: .text%__1cOCompiledRFrameEinit6M_v_;
-text: .text%__1cXmembar_acquire_lockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadSNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cVCallRuntimeDirectNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPcmpFastLockNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQciTypeArrayKlassEmake6FnJBasicType__p0_;
-text: .text%__1cIXorINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIGraphKitRgen_subtype_check6MpnENode_2_2_;
-text: .text%__1cOMacroAssemblerLsave_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cOcmovII_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseGdo_new6M_v_;
-text: .text%__1cIimmIOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cQmodI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2LNodeJideal_reg6kM_I_: classes.o;
-text: .text%jni_GetObjectClass: jni.o;
-text: .text%__1cSxorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerFalign6Mi_v_;
-text: .text%__1cRappend_interfaces6FnOobjArrayHandle_ripnPobjArrayOopDesc__v_;
-text: .text%__1cIPSOldGenPupdate_counters6M_v_;
-text: .text%__1cQshrI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFForteNregister_stub6FpkcpC3_v_;
-text: .text%__1cNinstanceKlassbFlookup_method_in_all_interfaces6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cTloadL_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJloadLNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOMacroAssemblerVreset_last_Java_frame6M_v_;
-text: .text%__1cOMacroAssemblerTset_last_Java_frame6MpnMRegisterImpl_2_v_;
-text: .text%__1cSstring_compareNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotIOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cINodeHash2t6MpnFArena_I_v_;
-text: .text%__1cPconvI2L_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseTransform2t6MpnFArena_nFPhaseLPhaseNumber__v_;
-text: .text%__1cLPhaseValues2t6MpnFArena_I_v_;
-text: .text%__1cJStubQdDueueGcommit6Mi_v_;
-text: .text%__1cJStubQdDueueHrequest6Mi_pnEStub__;
-text: .text%__1cOcmovII_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMacroAssemblerKsave_frame6Mi_v_;
-text: .text%__1cSmulI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOPhaseIdealLoopVclone_up_backedge_goo6MpnENode_22_2_;
-text: .text%__1cITemplateKinitialize6MinITosState_1pFi_vi_v_;
-text: .text%__1cITemplateIgenerate6MpnZInterpreterMacroAssembler__v_;
-text: .text%JVM_FindClassFromClassLoader;
-text: .text%JVM_FindClassFromBootLoader;
-text: .text%signalHandler;
-text: .text%__1cTtypeArrayKlassKlassIoop_size6kMpnHoopDesc__i_: typeArrayKlassKlass.o;
-text: .text%JVM_handle_solaris_signal;
-text: .text%__1cQjava_lang_ThreadRget_thread_status6FpnHoopDesc__n0AMThreadStatus__;
-text: .text%__1cNSignatureInfoIdo_float6M_v_: bytecode.o;
-text: .text%__1cFStateM_sub_Op_AndL6MpknENode__v_;
-text: .text%__1cKConv2BNodeGOpcode6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerZcheck_and_handle_popframe6MpnMRegisterImpl__v_;
-text: .text%JVM_IHashCode;
-text: .text%__1cSconvI2D_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStartNodeJideal_reg6kM_I_: callnode.o;
-text: .text%__1cOMacroAssemblerbBcheck_and_forward_exception6MpnMRegisterImpl__v_;
-text: .text%__1cQcmovI_reg_ltNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQandL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLPhaseValuesKis_IterGVN6M_pnMPhaseIterGVN__: phaseX.o;
-text: .text%__1cMLinkResolverXresolve_invokeinterface6FrnICallInfo_nGHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKC2CompilerOcompile_method6MpnFciEnv_pnIciMethod_i_v_;
-text: .text%JVM_GetClassLoader;
-text: .text%__1cNCompileBrokerZinvoke_compiler_on_method6FpnLCompileTask__v_;
-text: .text%__1cFStateP_sub_Op_ConvL2I6MpknENode__v_;
-text: .text%__1cOPhaseIdealLoopLdo_split_if6MpnENode__v_;
-text: .text%__1cLAccessFlagsRatomic_clear_bits6Mi_v_;
-text: .text%__1cKScheduling2t6MpnFArena_rnHCompile__v_;
-text: .text%__1cKSchedulingMDoScheduling6M_v_;
-text: .text%__1cNCompileBrokerScollect_statistics6FpnOCompilerThread_nMelapsedTimer_pnLCompileTask__v_;
-text: .text%__1cFciEnvbOcheck_for_system_dictionary_modification6MpnIciMethod__v_;
-text: .text%__1cSCardTableExtensionbAscavenge_contents_parallel6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager_I_v_;
-text: .text%__1cRframe_gc_prologue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeMpd_gc_epilog6M_v_;
-text: .text%__1cMelapsedTimerHseconds6kM_d_;
-text: .text%__1cJStealTaskEname6M_pc_: psTasks.o;
-text: .text%__1cRframe_gc_epilogue6FpnFframe_pknLRegisterMap__v_: thread.o;
-text: .text%__1cFframeLgc_epilogue6M_v_;
-text: .text%__1cFframeLgc_prologue6M_v_;
-text: .text%__1cTOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cJStealTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cTOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerMnote_release6MI_v_;
-text: .text%__1cMciMethodDataStrap_recompiled_at6MpnLProfileData__i_;
-text: .text%__1cJloadLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmembar_acquireNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmembar_acquireNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYDebugInformationRecorderHcopy_to6MpnHnmethod__v_;
-text: .text%__1cVExceptionHandlerTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cJCodeCacheGcommit6FpnICodeBlob__v_;
-text: .text%__1cHnmethodQcopy_scopes_data6MpCi_v_;
-text: .text%__1cFciEnvVnum_inlined_bytecodes6kM_i_;
-text: .text%__1cWImplicitExceptionTableHcopy_to6MpnHnmethod__v_;
-text: .text%__1cIciMethodRbuild_method_data6M_v_;
-text: .text%__1cHCompileIOptimize6M_v_;
-text: .text%__1cHCompileLFinish_Warm6M_v_;
-text: .text%__1cbAfinal_graph_reshaping_walk6FrnKNode_Stack_pnENode_rnUFinal_Reshape_Counts__v_: compile.o;
-text: .text%__1cHCompileLInline_Warm6M_i_;
-text: .text%__1cSPhaseRemoveUseless2t6MpnIPhaseGVN_pnQUnique_Node_List__v_;
-text: .text%__1cJStartNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKInlineTreeWbuild_inline_tree_root6F_p0_;
-text: .text%__1cHCompileRbuild_start_state6MpnJStartNode_pknITypeFunc__pnIJVMState__;
-text: .text%__1cIPhaseCCPHanalyze6M_v_;
-text: .text%__1cIPhaseCCPMdo_transform6M_v_;
-text: .text%__1cIPhaseCCPJtransform6MpnENode__2_;
-text: .text%__1cIPhaseCCP2t6MpnMPhaseIterGVN__v_;
-text: .text%__1cHCompileVidentify_useful_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cHCompileUremove_useless_nodes6MrnQUnique_Node_List__v_;
-text: .text%__1cQUnique_Node_ListUremove_useless_nodes6MrnJVectorSet__v_;
-text: .text%__1cMPhaseIterGVN2t6MpnIPhaseGVN__v_;
-text: .text%__1cMPhaseIterGVN2t6Mp0_v_;
-text: .text%__1cQmulI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableKtransition6FnITosState_1_v_;
-text: .text%__1cHCompileNreturn_values6MpnIJVMState__v_;
-text: .text%__1cOcmovII_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOMachEpilogNodeQsafepoint_offset6kM_i_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_epilog6MnITosState_i_v_;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_prolog6MnITosState_i_v_;
-text: .text%__1cIModINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFStateP_sub_Op_RShiftI6MpknENode__v_;
-text: .text%__1cRsarI_reg_imm5NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%lwp_cond_init: os_solaris.o;
-text: .text%__1cTmembar_volatileNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cXmembar_acquire_lockNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cNSafepointBlobbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cOloadConI13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadSNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeGOpcode6kM_i_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnRJavaCallArguments_pnGThread__v_;
-text: .text%__1cFStateO_sub_Op_Binary6MpknENode__v_;
-text: .text%__1cKBinaryNodeGOpcode6kM_i_;
-text: .text%__1cNSignatureInfoIdo_short6M_v_: bytecode.o;
-text: .text%__1cLBoxLockNodeDcmp6kMrknENode__I_;
-text: .text%__1cSCompiledStaticCallSset_to_interpreted6MnMmethodHandle_pC_v_;
-text: .text%__1cSCompiledStaticCallJfind_stub6M_pC_;
-text: .text%__1cFParsebLincrement_and_test_invocation_counter6Mi_v_;
-text: .text%__1cSsafePoint_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMTailCallNodeGOpcode6kM_i_;
-text: .text%__1cSInterpreterRuntimeTprepare_native_call6FpnKJavaThread_pnNmethodOopDesc__v_;
-text: .text%__1cXSignatureHandlerLibraryDadd6FnMmethodHandle__v_;
-text: .text%__1cSsafePoint_pollNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNobjArrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cPClassFileParserUverify_constantvalue6MiinSconstantPoolHandle_pnGThread__v_;
-text: .text%__1cZInterpreterMacroAssemblerNdispatch_next6MnITosState_i_v_;
-text: .text%__1cIMulFNodeGOpcode6kM_i_;
-text: .text%__1cISubLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQmulD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNSCMemProjNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSThreadLocalStorageGthread6F_pnGThread__: assembler_sparc.o;
-text: .text%jni_SetByteArrayRegion: jni.o;
-text: .text%__1cQregI_to_stkINodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringPcreate_from_str6FpkcpnGThread__nGHandle__;
-text: .text%__1cSdivL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFStateM_sub_Op_XorI6MpknENode__v_;
-text: .text%__1cHTypePtrEmake6FnETypeFTYPES_n0ADPTR_i_pk0_;
-text: .text%__1cCosLelapsedTime6F_d_;
-text: .text%__1cKScopeValueJread_from6FpnTDebugInfoReadStream__p0_;
-text: .text%__1cKPerfMemoryMmark_updated6F_v_;
-text: .text%__1cSobjArrayKlassKlassbCallocate_objArray_klass_impl6FnYobjArrayKlassKlassHandle_inLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cIPerfData2t6MnJCounterNS_pkcn0AFUnits_n0ALVariability__v_;
-text: .text%__1cLStrCompNodeKmatch_edge6kMI_I_;
-text: .text%__1cQmulL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cILocation2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cKJavaThreadZsecurity_get_caller_class6Mi_pnMklassOopDesc__;
-text: .text%jni_ReleaseStringUTFChars;
-text: .text%jni_GetStringUTFChars: jni.o;
-text: .text%__1cSobjArrayKlassKlassXallocate_objArray_klass6MinLKlassHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cFParseLarray_store6MnJBasicType__v_;
-text: .text%__1cSInterpreterRuntimeNquicken_io_cc6FpnKJavaThread__v_;
-text: .text%__1cSInterpreterRuntimeXthrow_pending_exception6FpnKJavaThread__v_;
-text: .text%JVM_IsInterrupted;
-text: .text%__1cLLShiftLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNSignatureInfoHdo_char6M_v_: bytecode.o;
-text: .text%JVM_FindLibraryEntry;
-text: .text%__1cWConstantPoolCacheEntrySset_interface_call6MnMmethodHandle_i_v_;
-text: .text%__1cLklassItableUcompute_itable_index6FpnNmethodOopDesc__i_;
-text: .text%__1cRshlL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQshlL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPconvF2D_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLRShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSstring_compareNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerEstop6Mpkc_v_;
-text: .text%__1cObranchConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKloadUBNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddP_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLcmpD_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLLShiftLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cbIjava_lang_reflect_AccessibleObjectMset_override6FpnHoopDesc_C_v_;
-text: .text%__1cXJNI_ArgumentPusherVaArgHget_int6M_v_: jni.o;
-text: .text%__1cRbranchLoopEndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cIDivINodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cQmulF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQxorI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWCallLeafNoFPDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLcmpD_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJloadINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbBopt_virtual_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cNTemplateTableDdef6FnJBytecodesECode_inITosState_3pFi_vi_v_;
-text: .text%__1cIMinINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cKarrayKlassKjava_super6kM_pnMklassOopDesc__;
-text: .text%__1cOClearArrayNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cRbranchLoopEndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRbranchLoopEndNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cLMachUEPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cCosTnative_java_library6F_pv_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cSInterpreterRuntimeOmultianewarray6FpnKJavaThread_pi_v_;
-text: .text%__1cSxorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cMPhaseChaitinGSelect6M_I_;
-text: .text%__1cFParseSjump_switch_ranges6MpnENode_pnLSwitchRange_4i_v_;
-text: .text%__1cSbranchCon_longNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSbranchCon_longNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSbranchCon_longNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cCosYprint_jni_name_suffix_on6FpnMoutputStream_i_v_;
-text: .text%__1cCosYprint_jni_name_prefix_on6FpnMoutputStream_i_v_;
-text: .text%__1cLstoreP0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cFParseTprofile_switch_case6Mi_v_;
-text: .text%__1cSandI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIimmLOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cFParseOmerge_new_path6Mi_v_;
-text: .text%__1cQregP_to_stkPNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_StringScreate_from_symbol6FnMsymbolHandle_pnGThread__nGHandle__;
-text: .text%__1cSmembar_releaseNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewByteArray: jni.o;
-text: .text%__1cQdivL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_53pnGThread__v_;
-text: .text%__1cQSystemDictionarybAvalidate_protection_domain6FnTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cKDictionaryVadd_protection_domain6MiInTinstanceKlassHandle_nGHandle_2pnGThread__v_;
-text: .text%__1cFParseLdo_newarray6MnJBasicType__v_;
-text: .text%__1cNmethodOopDescKklass_name6kM_pnNsymbolOopDesc__;
-text: .text%__1cSconvI2D_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLstoreP0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMciArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cSmembar_releaseNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIPerfLong2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability__v_;
-text: .text%__1cKarrayKlassXbase_create_array_klass6FrknKKlass_vtbl_inLKlassHandle_pnGThread__nQarrayKlassHandle__;
-text: .text%__1cKarrayKlassbBcomplete_create_array_klass6FnQarrayKlassHandle_nLKlassHandle_pnGThread__v_;
-text: .text%__1cSTailCalljmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_gtNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetMethodIxExceptionTableEntry;
-text: .text%__1cIDivINodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLstoreP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQstkI_to_regFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLRethrowNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKloadUBNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cHCompileSrethrow_exceptions6MpnIJVMState__v_;
-text: .text%__1cURethrowExceptionNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLRethrowNode2t6MpnENode_22222_v_;
-text: .text%__1cTLoadL_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cSmulI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerZget_2_byte_integer_at_bcp6MipnMRegisterImpl_2n0ALsignedOrNot_n0AKsetCCOrNot__v_;
-text: .text%__1cQcmovI_reg_gtNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cURethrowExceptionNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubLNodeDsub6kMpknEType_3_3_;
-text: .text%__1cPciObjArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cJLoadINodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQandI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNobjArrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cQmulI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParsePmerge_exception6Mi_v_;
-text: .text%__1cLStrCompNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlass.o;
-text: .text%__1cNloadConP0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_ReleaseStringCritical: jni.o;
-text: .text%__1cJCMoveNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_GetStringCritical: jni.o;
-text: .text%__1cHciKlassSsuper_check_offset6M_I_;
-text: .text%__1cPciObjArrayKlassGloader6M_pnHoopDesc__: ciObjArrayKlass.o;
-text: .text%__1cWCallLeafNoFPDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cPICStubInterfaceRcode_size_to_size6kMi_i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceKinitialize6MpnEStub_i_v_: icBuffer.o;
-text: .text%__1cMloadConFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMadjust_check6FpnENode_11iipnMPhaseIterGVN__v_: ifnode.o;
-text: .text%__1cJScopeDescGsender6kM_p0_;
-text: .text%__1cSxorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameGsender6kM_pnGvframe__;
-text: .text%__1cZInterpreterMacroAssemblerDpop6MnITosState__v_;
-text: .text%__1cQPlaceholderTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cXJvmtiCurrentBreakpointsHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNMemoryServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cNThreadServiceHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQSystemDictionaryRpreloaded_oops_do6FpnKOopClosure__v_;
-text: .text%__1cLJvmtiExportHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKJNIHandlesMweak_oops_do6FpnRBoolObjectClosure_pnKOopClosure__v_;
-text: .text%__1cSObjectSynchronizerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cMFlatProfilerHoops_do6FpnKOopClosure__v_;
-text: .text%__1cOPhaseIdealLoopOadd_constraint6MiipnENode_22p23_v_;
-text: .text%__1cKManagementHoops_do6FpnKOopClosure__v_;
-text: .text%__1cKstoreBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSaddL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQSystemDictionaryRnumber_of_classes6F_i_;
-text: .text%__1cQComputeCallStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cLstoreI0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFframeIpatch_pc6MpnGThread_pC_v_;
-text: .text%__1cRtestI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cNmethodOopDescbGresolved_checked_exceptions_impl6Fp0pnGThread__nOobjArrayHandle__;
-text: .text%__1cFParseMdo_checkcast6M_v_;
-text: .text%__1cOCompiledRFrameKtop_method6kM_nMmethodHandle__: rframe.o;
-text: .text%__1cKReflectionTget_parameter_types6FnMmethodHandle_ippnHoopDesc_pnGThread__nOobjArrayHandle__;
-text: .text%__1cRtestI_reg_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovIL_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cHRegMask2t6M_v_: matcher.o;
-text: .text%__1cOGenerateOopMapIcopy_cts6MpnNCellTypeState_2_i_;
-text: .text%__1cNObjectMonitorGEnterI6MpnGThread__v_;
-text: .text%__1cSmulL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPstoreI_FregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLcmpD_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXMachCallDynamicJavaNodePret_addr_offset6M_i_;
-text: .text%__1cNflagsRegFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cXvirtual_call_RelocationEtype6M_nJrelocInfoJrelocType__: relocInfo.o;
-text: .text%__1cPPerfDataManagerMcounter_name6Fpkc2_pc_;
-text: .text%__1cIModLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMloadConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cbAPSGCAdaptivePolicyCountersbBupdate_counters_from_policy6M_v_;
-text: .text%__1cXTraceMemoryManagerStats2T6M_v_;
-text: .text%__1cQSystemDictionaryHoops_do6FpnKOopClosure__v_;
-text: .text%__1cQLRUMaxHeapPolicy2t6M_v_;
-text: .text%__1cUParallelScavengeHeapQresize_all_tlabs6M_v_;
-text: .text%__1cUParallelScavengeHeapPupdate_counters6M_v_;
-text: .text%__1cUParallelScavengeHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cVLoaderConstraintTableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cTDerivedPointerTablePupdate_pointers6F_v_;
-text: .text%__1cNCollectedHeapbFaccumulate_statistics_all_tlabs6M_v_;
-text: .text%__1cNCollectedHeapQresize_all_tlabs6M_v_;
-text: .text%__1cMTypeKlassPtrFxmeet6kMpknEType__3_;
-text: .text%__1cKPSYoungGenPupdate_counters6M_v_;
-text: .text%__1cWThreadLocalAllocBufferbFaccumulate_statistics_before_gc6F_v_;
-text: .text%__1cWThreadLocalAllocBufferQresize_all_tlabs6F_v_;
-text: .text%__1cRLowMemoryDetectorRdetect_low_memory6F_v_;
-text: .text%__1cNMemoryServiceStrack_memory_usage6F_v_;
-text: .text%__1cbAPSGCAdaptivePolicyCountersPupdate_counters6M_v_;
-text: .text%__1cTDerivedPointerTableFclear6F_v_;
-text: .text%__1cKDictionaryHoops_do6MpnKOopClosure__v_;
-text: .text%__1cORuntimeServiceWrecord_safepoint_begin6F_v_;
-text: .text%__1cSObjectSynchronizerVdeflate_idle_monitors6F_v_;
-text: .text%__1cMCounterDecayFdecay6F_v_;
-text: .text%__1cCosbCmake_polling_page_unreadable6F_v_;
-text: .text%__1cRInlineCacheBufferUupdate_inline_caches6F_v_;
-text: .text%__1cLConvI2FNodeGOpcode6kM_i_;
-text: .text%__1cORuntimeServicebDrecord_safepoint_synchronized6F_v_;
-text: .text%__1cQaddF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUSafepointSynchronizeFbegin6F_v_;
-text: .text%__1cKarrayKlassTallocate_arrayArray6MiipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cCosbAmake_polling_page_readable6F_v_;
-text: .text%__1cUSafepointSynchronizeDend6F_v_;
-text: .text%__1cOcmovII_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cORuntimeServiceUrecord_safepoint_end6F_v_;
-text: .text%__1cQshlL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUcompU_iReg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetCallerClass;
-text: .text%__1cNSignatureInfoHdo_byte6M_v_: bytecode.o;
-text: .text%__1cOcmovPP_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKstoreBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLstoreC0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cTloadL_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cICmpFNodeGOpcode6kM_i_;
-text: .text%__1cOstackSlotPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregF_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJLoadDNodeGOpcode6kM_i_;
-text: .text%__1cQmulD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_IsAssignableFrom: jni.o;
-text: .text%jni_GetFieldID: jni.o;
-text: .text%__1cJLoadPNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cLstoreB0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cHTypeAryFxdual6kM_pknEType__;
-text: .text%__1cMtlsLoadPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIVMThreadHexecute6FpnMVM_Operation__v_;
-text: .text%__1cCosMget_priority6FkpknGThread_rnOThreadPriority__nIOSReturn__;
-text: .text%__1cGThreadMget_priority6Fkpk0_nOThreadPriority__;
-text: .text%__1cMVM_OperationIevaluate6M_v_;
-text: .text%__1cMVM_OperationSset_calling_thread6MpnGThread_nOThreadPriority__v_;
-text: .text%__1cCosTget_native_priority6FkpknGThread_pi_nIOSReturn__;
-text: .text%__1cMnegD_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_gtNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGGCTask2t6Mn0AEKindEkind__v_;
-text: .text%__1cNGCTaskManagerVrelease_all_resources6M_v_;
-text: .text%__1cLGCTaskQdDueueHenqueue6Mp0_v_;
-text: .text%__1cSCardTableExtensionRscavenge_contents6MpnQObjectStartArray_pnMMutableSpace_pnIHeapWord_pnSPSPromotionManager__v_;
-text: .text%__1cUWaitForBarrierGCTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cNGCTaskManagerIadd_list6MpnLGCTaskQdDueue__v_;
-text: .text%__1cHThreadsZcreate_thread_roots_tasks6FpnLGCTaskQdDueue__v_;
-text: .text%__1cUWaitForBarrierGCTaskGcreate6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIdestruct6M_v_;
-text: .text%__1cSObjectSynchronizerJfast_exit6FpnHoopDesc_pnJBasicLock_pnGThread__v_;
-text: .text%__1cSPSPromotionManagerNpost_scavenge6F_v_;
-text: .text%__1cNBarrierGCTaskOdo_it_internal6MpnNGCTaskManager_I_v_;
-text: .text%__1cNJvmtiGCMarker2T6M_v_;
-text: .text%__1cUWaitForBarrierGCTaskHdestroy6Fp0_v_;
-text: .text%__1cLGCTaskQdDueueGcreate6F_p0_;
-text: .text%__1cSPSPromotionManagerMpre_scavenge6F_v_;
-text: .text%__1cZSerialOldToYoungRootsTaskFdo_it6MpnNGCTaskManager_I_v_;
-text: .text%__1cQinstanceRefKlassZacquire_pending_list_lock6FpnJBasicLock__v_;
-text: .text%__1cZSerialOldToYoungRootsTaskEname6M_pc_: psTasks.o;
-text: .text%__1cKPSYoungGenLswap_spaces6M_v_;
-text: .text%__1cSPSPromotionManagerbBvm_thread_promotion_manager6F_p0_;
-text: .text%__1cUWaitForBarrierGCTaskIwait_for6M_v_;
-text: .text%__1cPVM_GC_OperationNdoit_epilogue6M_v_;
-text: .text%__1cNMonitorSupplyHreserve6F_pnHMonitor__;
-text: .text%__1cNMonitorSupplyHrelease6FpnHMonitor__v_;
-text: .text%__1cUWaitForBarrierGCTaskEname6M_pc_: gcTaskManager.o;
-text: .text%__1cTmembar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cVLoaderConstraintTableWfind_constrained_klass6MnMsymbolHandle_nGHandle__pnMklassOopDesc__;
-text: .text%__1cTloadL_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQComputeCallStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cMURShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSCompiledStaticCallNcompute_entry6FnMmethodHandle_rnOStaticCallInfo__v_;
-text: .text%__1cPClassFileParserbJparse_classfile_signature_attribute6MnSconstantPoolHandle_nTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cKstoreBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSCompiledStaticCallDset6MrknOStaticCallInfo__v_;
-text: .text%__1cOGenerateOopMapXreplace_all_CTS_matches6MnNCellTypeState_1_v_;
-text: .text%__1cFframeZinterpreter_frame_set_mdp6MpC_v_;
-text: .text%__1cZInterpreterMacroAssemblerIpush_ptr6MpnMRegisterImpl__v_;
-text: .text%__1cISubLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cIciMethodRinterpreter_entry6M_pC_;
-text: .text%__1cQmulF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPconvF2D_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadBNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%jni_SetBooleanField: jni.o;
-text: .text%__1cKimmL13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLcmpF_ccNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cLRuntimeStubbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_: codeBlob.o;
-text: .text%__1cRorI_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_reg_imm6NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQmulI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_object6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_i6MpnMRegisterImpl__v_;
-text: .text%__1cPClassFileParserbBcheck_illegal_static_method6FnTinstanceKlassHandle_pnGThread__v_;
-text: .text%__1cLLShiftLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQComputeCallStackJdo_double6M_v_: generateOopMap.o;
-text: .text%__1cJloadSNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRloadConP_pollNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNObjectMonitorHRecycle6M_v_;
-text: .text%__1cNSharedRuntimeSfind_callee_method6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cJloadDNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQstkI_to_regFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQregP_to_stkPNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_i6MpnMRegisterImpl__v_;
-text: .text%__1cIMaxINodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cNSharedRuntimeTreresolve_call_site6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cYcompareAndSwapL_boolNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNSCMemProjNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIProjNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKExceptionsK_throw_msg6FpnGThread_pkcipnNsymbolOopDesc_4_v_;
-text: .text%__1cSdivL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cbDVM_ParallelGCFailedAllocationEdoit6M_v_;
-text: .text%__1cQaddL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPadd_derived_oop6FppnHoopDesc_2_v_: oopMap.o;
-text: .text%__1cMregD_lowOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cHOrINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cOMethodLivenessKBasicBlockFsplit6Mi_p1_;
-text: .text%__1cOcmovII_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cENodeEgetd6kM_d_;
-text: .text%__1cOcmovIL_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTAbstractInterpreterSBasicType_as_index6FnJBasicType__i_;
-text: .text%__1cZInterpreterMacroAssemblerGpush_f6MpnRFloatRegisterImpl__v_;
-text: .text%__1cIciObject2t6MpnHciKlass__v_;
-text: .text%__1cPjava_lang_ClassQprimitive_mirror6FnJBasicType__pnHoopDesc__;
-text: .text%__1cKExceptionsL_throw_args6FpnGThread_pkcinMsymbolHandle_5pnRJavaCallArguments__v_;
-text: .text%__1cPstoreI_FregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCMovePNodeGOpcode6kM_i_;
-text: .text%__1cLstoreC0NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_MonitorWait;
-text: .text%__1cIAddLNodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cHciKlass2t6MpnIciSymbol_p0_v_;
-text: .text%__1cGciType2t6MpnHciKlass__v_;
-text: .text%__1cQshlI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQdivD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cFParseSjump_if_false_fork6MpnGIfNode_ii_v_;
-text: .text%__1cNloadConL0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRshrL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUciInstanceKlassKlassEmake6F_p0_;
-text: .text%__1cENode2t6Mp0111111_v_;
-text: .text%__1cIDivLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cZInterpreterMacroAssemblerGpush_d6MpnRFloatRegisterImpl__v_;
-text: .text%__1cFParseRarray_store_check6M_v_;
-text: .text%__1cQsubF_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIciSymbolHbyte_at6Mi_i_;
-text: .text%__1cKCompiledICSset_ic_destination6MpC_v_;
-text: .text%__1cQaddD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosTset_native_priority6FpnGThread_i_nIOSReturn__;
-text: .text%__1cQset_lwp_priority6Fiii_i_;
-text: .text%__1cQjava_lang_StringTcreate_oop_from_str6FpkcpnGThread__pnHoopDesc__;
-text: .text%jni_NewStringUTF: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerGpush_l6MpnMRegisterImpl__v_;
-text: .text%__1cQsubI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerXget_constant_pool_cache6MpnMRegisterImpl__v_;
-text: .text%__1cSbranchCon_longNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cKcmpOpUOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPciInstanceKlassNloader_handle6M_pnI_jobject__;
-text: .text%__1cPciInstanceKlassYprotection_domain_handle6M_pnI_jobject__;
-text: .text%__1cNmethodOopDescKjmethod_id6M_pnK_jmethodID__;
-text: .text%__1cSsubL_reg_reg_2NodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_DefineClassWithSource;
-text: .text%__1cLstoreF0NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_SetClassSigners;
-text: .text%__1cKCompiledICMset_to_clean6M_v_;
-text: .text%__1cSandL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRbranchLoopEndNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cLRShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJMarkSweepSFollowStackClosureHdo_void6M_v_: markSweep.o;
-text: .text%__1cFParseWcheck_interpreter_type6MpnENode_pknEType_rpnNSafePointNode__2_;
-text: .text%__1cOcmovPP_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSThreadLocalStorageSset_thread_in_slot6FpnGThread__v_;
-text: .text%get_thread;
-text: .text%__1cKstoreCNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSThreadLocalStorageKset_thread6FpnGThread__v_;
-text: .text%jni_CallIntMethod: jni.o;
-text: .text%__1cSThreadLocalStorageNpd_set_thread6FpnGThread__v_;
-text: .text%__1cKloadUBNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvD2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMulDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSaddP_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIAddDNodeGOpcode6kM_i_;
-text: .text%__1cOloadI_fregNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOloadI_fregNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cCosJyield_all6Fi_v_;
-text: .text%__1cKstoreLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKstoreLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPstoreI_FregNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassMethodsCount;
-text: .text%__1cKstoreINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JVM_GetClassFieldsCount;
-text: .text%__1cLconvI2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetClassCPEntriesCount;
-text: .text%JVM_GetClassCPTypes;
-text: .text%__1cQmulI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOMacroAssemblerKverify_FPU6Mipkc_v_;
-text: .text%__1cbCfind_class_from_class_loader6FpnHJNIEnv__nMsymbolHandle_CnGHandle_3CpnGThread__pnH_jclass__;
-text: .text%__1cQjava_lang_ThreadKset_thread6FpnHoopDesc_pnKJavaThread__v_;
-text: .text%__1cIAddFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQregI_to_stkINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_5pnGThread__v_;
-text: .text%__1cXSignatureHandlerLibraryOpd_set_handler6FpC_v_;
-text: .text%JVM_IsPrimitiveClass;
-text: .text%__1cJimmU6OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOPhaseIdealLoopUpeeled_dom_test_elim6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cIDivDNodeGOpcode6kM_i_;
-text: .text%__1cQsubI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLStringTableJbasic_add6MinGHandle_pHiIpnGThread__pnHoopDesc__;
-text: .text%__1cIModLNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%jni_FindClass: jni.o;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cOMacroAssemblerOstore_argument6MpnMRegisterImpl_rnIArgument__v_: interpreterRT_sparc.o;
-text: .text%__1cFParseHdo_irem6M_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorGcreate6FpnGThread__nGHandle__;
-text: .text%__1cKReflectionPnew_constructor6FnMmethodHandle_pnGThread__pnHoopDesc__;
-text: .text%__1cOcmovII_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cTloadL_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJStubQdDueueRrequest_committed6Mi_pnEStub__;
-text: .text%__1cRInlineCacheBufferRic_stub_code_size6F_i_;
-text: .text%__1cFStateP_sub_Op_RShiftL6MpknENode__v_;
-text: .text%__1cPICStubInterfaceEsize6kMpnEStub__i_: icBuffer.o;
-text: .text%__1cPICStubInterfaceIfinalize6MpnEStub__v_: icBuffer.o;
-text: .text%__1cOGenerateOopMapOdo_monitorexit6Mi_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cQregI_to_stkINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRorI_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOGenerateOopMapLmonitor_pop6M_nNCellTypeState__;
-text: .text%__1cMregD_lowOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cLConvD2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2F_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHMonitor2T6M_v_;
-text: .text%__1cFTypeDFxmeet6kMpknEType__3_;
-text: .text%__1cFMutex2T6M_v_;
-text: .text%lwp_cond_destroy: os_solaris.o;
-text: .text%lwp_mutex_destroy: os_solaris.o;
-text: .text%__1cQdivI_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cVcompiledICHolderKlassIoop_size6kMpnHoopDesc__i_;
-text: .text%__1cQregP_to_stkPNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQstkI_to_regFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregI_to_stkINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQRelocationHolderEplus6kMi_0_;
-text: .text%__1cUPSMarkSweepDecoratorPadjust_pointers6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorKprecompact6M_v_;
-text: .text%__1cQjava_lang_ThreadLthreadGroup6FpnHoopDesc__2_;
-text: .text%__1cHCompileQgrow_alias_types6M_v_;
-text: .text%__1cISubLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovII_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNinstanceKlassKlink_class6MpnGThread__v_;
-text: .text%__1cKloadUBNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cTloadD_unalignedNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cJLoadFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOloadConL13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRcompL_reg_conNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQaddF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cICmpDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKsplit_once6FpnMPhaseIterGVN_pnENode_333_v_: cfgnode.o;
-text: .text%__1cLLShiftLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cJCMoveNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cOPhaseIdealLoopOdo_range_check6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cSconvD2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitPdstore_rounding6MpnENode__2_;
-text: .text%__1cJloadINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSdivL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRloadConP_pollNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cZCallDynamicJavaDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSconvD2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZCallDynamicJavaDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQdivL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cUdivL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUmulL_reg_imm13_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUVirtualCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cNObjectMonitor2t6M_v_;
-text: .text%__1cIMulINodeKadd_opcode6kM_i_: classes.o;
-text: .text%__1cIMulINodeKmul_opcode6kM_i_: classes.o;
-text: .text%__1cQdivD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJCmpD3NodeGOpcode6kM_i_;
-text: .text%__1cJloadDNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMinINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOBasicHashtableJnew_entry6MI_pnTBasicHashtableEntry__;
-text: .text%__1cQmulF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_MonitorNotify;
-text: .text%__1cFBlockNset_next_call6MpnENode_rnJVectorSet_rnLBlock_Array__v_;
-text: .text%__1cSObjectSynchronizerGnotify6FnGHandle_pnGThread__v_;
-text: .text%__1cXNativeSignatureIteratorJdo_object6Mii_v_: interpreterRT_sparc.o;
-text: .text%__1cKstoreFNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cSstring_compareNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVshrL_reg_imm6_L2INodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cOloadConL13NodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cYjava_lang_reflect_MethodPset_return_type6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodGcreate6FpnGThread__nGHandle__;
-text: .text%__1cINegDNodeGOpcode6kM_i_;
-text: .text%__1cYjava_lang_reflect_MethodJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodZset_parameter_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodWset_annotation_default6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_parameter_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodTset_exception_types6FpnHoopDesc_2_v_;
-text: .text%__1cYjava_lang_reflect_MethodNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%__1cYjava_lang_reflect_MethodIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSsubL_reg_reg_2NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovII_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOstackSlotPOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%jni_GetMethodID: jni.o;
-text: .text%__1cQshlL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIMulINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cRshlI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOloadConL13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorGnotify6MpnGThread__v_;
-text: .text%__1cOMacroAssemblerDjmp6MpnMRegisterImpl_ipkci_v_;
-text: .text%__1cIDivLNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%JVM_GetClassDeclaredConstructors;
-text: .text%__1cUdivL_reg_imm13_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKJavaThreadbScheck_safepoint_and_suspend_for_native_trans6Fp0_v_;
-text: .text%__1cRInlineCacheBufferVic_buffer_entry_point6FpC_1_;
-text: .text%__1cUmulL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubD_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cUdivL_reg_imm13_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregP_to_stkPNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferWcreate_transition_stub6FpnKCompiledIC_pnHoopDesc_pC_v_;
-text: .text%__1cRInlineCacheBufferXassemble_ic_buffer_code6FpCpnHoopDesc_1_v_;
-text: .text%__1cOcmovIF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQcmovI_reg_ltNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNloadConL0NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKo1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cSsubL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQshrL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRsarL_reg_imm6NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cICodeHeapLfirst_block6kM_pnJHeapBlock__;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorIpass_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRorI_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQshrL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQshrI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOimmI_32_63OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOloadI_fregNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvI2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQjava_lang_ThreadMset_priority6FpnHoopDesc_nOThreadPriority__v_;
-text: .text%__1cQdivL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICKcached_oop6kM_pnHoopDesc__;
-text: .text%__1cISubFNodeGOpcode6kM_i_;
-text: .text%JVM_IsThreadAlive;
-text: .text%__1cXPartialSubtypeCheckNodeGOpcode6kM_i_;
-text: .text%__1cLconvI2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cRsarL_reg_imm6NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cRtestI_reg_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRtestI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSmulL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cQaddD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKConv2BNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSstring_compareNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregL_to_stkLNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQjava_lang_SystemTout_offset_in_bytes6F_i_;
-text: .text%__1cQjava_lang_SystemSin_offset_in_bytes6F_i_;
-text: .text%__1cWPredictedCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cSconvI2F_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNCallGeneratorRfor_uncommon_trap6FpnIciMethod_nODeoptimizationLDeoptReason_n0CLDeoptAction__p0_;
-text: .text%__1cOcmovPP_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZUncommonTrapCallGeneratorIgenerate6MpnIJVMState__2_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMulFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cGThread2t6M_v_;
-text: .text%__1cCosHSolarisPhotspot_sigmask6FpnGThread__v_;
-text: .text%__1cCosHSolarisVinit_thread_fpu_state6F_v_;
-text: .text%__1cFTypeFFxmeet6kMpknEType__3_;
-text: .text%__1cIOSThreadNpd_initialize6M_v_;
-text: .text%__1cCosScurrent_stack_base6F_pC_;
-text: .text%__1cIOSThread2t6MpFpv_i1_v_;
-text: .text%__1cIMulDNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cCosRinitialize_thread6F_v_;
-text: .text%__1cSdivL_reg_reg_1NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosPpd_start_thread6FpnGThread__v_;
-text: .text%__1cLConvI2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cNobjArrayKlassIallocate6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cNobjArrayKlassKinitialize6MpnGThread__v_;
-text: .text%jni_NewObjectArray: jni.o;
-text: .text%__1cSsubL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_SetThreadPriority;
-text: .text%__1cCosMstart_thread6FpnGThread__v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_modifiers6FpnHoopDesc_i_v_;
-text: .text%JVM_GetStackAccessControlContext;
-text: .text%__1cXjava_lang_reflect_FieldPset_annotations6FpnHoopDesc_2_v_;
-text: .text%__1cFStateM_sub_Op_ModI6MpknENode__v_;
-text: .text%JVM_Read;
-text: .text%__1cOcmovPI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cKCompiledICOset_cached_oop6MpnHoopDesc__v_;
-text: .text%__1cFStateM_sub_Op_SubL6MpknENode__v_;
-text: .text%__1cKCompiledICMstub_address6kM_pC_;
-text: .text%__1cJvmSymbolsOsignature_type6FpnNsymbolOopDesc__nJBasicType__;
-text: .text%__1cQsubL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeGOpcode6kM_i_;
-text: .text%__1cQmodI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPfieldDescriptorLannotations6kM_pnQtypeArrayOopDesc__;
-text: .text%__1cRsarI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIGraphKitJpush_pair6MpnENode__v_: callGenerator.o;
-text: .text%__1cKReflectionInew_type6FnMsymbolHandle_nLKlassHandle_pnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldIset_slot6FpnHoopDesc_i_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_type6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldGcreate6FpnGThread__nGHandle__;
-text: .text%__1cXjava_lang_reflect_FieldJset_clazz6FpnHoopDesc_2_v_;
-text: .text%__1cXjava_lang_reflect_FieldIset_name6FpnHoopDesc_2_v_;
-text: .text%__1cNinstanceKlassYremove_dependent_nmethod6MpnHnmethod__v_;
-text: .text%jni_GetStaticFieldID: jni.o;
-text: .text%__1cNloadKlassNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreF0NodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPciObjArrayKlassEmake6FpnHciKlass__p0_;
-text: .text%__1cNinstanceKlassKjni_id_for6Mi_pnFJNIid__;
-text: .text%__1cFStateO_sub_Op_CMoveI6MpknENode__v_;
-text: .text%__1cENodeEgetf6kM_f_;
-text: .text%JVM_DesiredAssertionStatus;
-text: .text%__1cKJavaThreadKinitialize6M_v_;
-text: .text%__1cWThreadLocalAllocBufferKinitialize6M_v_;
-text: .text%__1cLConvL2DNodeGOpcode6kM_i_;
-text: .text%__1cQThreadStatistics2t6M_v_;
-text: .text%__1cUThreadSafepointStateGcreate6FpnKJavaThread__v_;
-text: .text%__1cQshrL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubD_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cGThreadFstart6Fp0_v_;
-text: .text%__1cOMacroAssemblerIround_to6MpnMRegisterImpl_i_v_: interp_masm_sparc.o;
-text: .text%__1cPconvI2D_memNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jni_GetFloatArrayRegion: jni.o;
-text: .text%__1cJMarkSweepMfollow_stack6F_v_;
-text: .text%__1cNimmP_pollOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cRtestI_reg_immNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cJMemRegionMintersection6kMk0_0_;
-text: .text%__1cKJavaThreadDrun6M_v_;
-text: .text%__1cPjava_lang_ClassOprimitive_type6FpnHoopDesc__nJBasicType__;
-text: .text%JVM_IsArrayClass;
-text: .text%jni_CallStaticVoidMethod: jni.o;
-text: .text%__1cLConvF2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNsymbolOopDescWas_klass_external_name6kM_pkc_;
-text: .text%__1cHnmethodbDpreserve_callee_argument_oops6MnFframe_pknLRegisterMap_pnKOopClosure__v_;
-text: .text%__1cKstoreBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cFKlassNexternal_name6kM_pkc_;
-text: .text%__1cOGenerateOopMapYrewrite_refval_conflicts6M_v_;
-text: .text%__1cKstoreLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOGenerateOopMapKinterp_all6M_v_;
-text: .text%__1cOGenerateOopMapPinitialize_vars6M_v_;
-text: .text%__1cTloadD_unalignedNodeIpipeline6kM_pknIPipeline__;
-text: .text%JVM_GetClassName;
-text: .text%__1cOloadI_fregNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapbAmake_context_uninitialized6M_v_;
-text: .text%__1cOGenerateOopMapKinit_state6M_v_;
-text: .text%__1cOGenerateOopMapYsetup_method_entry_state6M_v_;
-text: .text%__1cOGenerateOopMapTmark_reachable_code6M_v_;
-text: .text%__1cOGenerateOopMapRinit_basic_blocks6M_v_;
-text: .text%__1cLStringTableGintern6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cOcmovIF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cCosMset_priority6FpnGThread_nOThreadPriority__nIOSReturn__;
-text: .text%__1cLConvD2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovIL_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorGdo_int6M_v_: interpreterRT_sparc.o;
-text: .text%__1cINodeHashEgrow6M_v_;
-text: .text%__1cOGenerateOopMapPdo_monitorenter6Mi_v_;
-text: .text%__1cOcmovPP_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cIMaxINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cJloadSNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOGenerateOopMapLcompute_map6MpnGThread__v_;
-text: .text%__1cLConvF2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_Open;
-text: .text%__1cRInvocationCounterFreset6M_v_;
-text: .text%__1cOGenerateOopMap2t6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapRdo_interpretation6M_v_;
-text: .text%__1cIRetTableRcompute_ret_table6MnMmethodHandle__v_;
-text: .text%__1cOGenerateOopMapMmonitor_push6MnNCellTypeState__v_;
-text: .text%__1cOGenerateOopMapNinitialize_bb6M_v_;
-text: .text%__1cOGenerateOopMapbImark_bbheaders_and_count_gc_points6M_v_;
-text: .text%__1cSmulL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSdivL_reg_reg_1NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerEpush6MnITosState__v_;
-text: .text%JVM_StartThread;
-text: .text%__1cMthread_entry6FpnKJavaThread_pnGThread__v_: jvm.o;
-text: .text%jni_GetStaticObjectField: jni.o;
-text: .text%__1cJArrayDataKcell_count6M_i_: ciMethodData.o;
-text: .text%__1cIGraphKitSprecision_rounding6MpnENode__2_;
-text: .text%__1cNPerfByteArray2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_i_v_;
-text: .text%__1cIGraphKitRcreate_and_map_if6MpnENode_2ff_pnGIfNode__: generateOptoStub.o;
-text: .text%__1cQjava_lang_ThreadIpriority6FpnHoopDesc__nOThreadPriority__;
-text: .text%__1cMLinkResolverYresolve_interface_method6FrnMmethodHandle_rnLKlassHandle_nSconstantPoolHandle_ipnGThread__v_;
-text: .text%__1cKJavaThreadHprepare6MpnI_jobject_nOThreadPriority__v_;
-text: .text%__1cTLoadD_unalignedNodeGOpcode6kM_i_;
-text: .text%__1cQshrI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_FreeMemory;
-text: .text%__1cVcompiledICHolderKlassToop_follow_contents6MpnHoopDesc__v_;
-text: .text%JVM_TotalMemory;
-text: .text%__1cVcompiledICHolderKlassToop_adjust_pointers6MpnHoopDesc__i_;
-text: .text%__1cMloadConDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovIL_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvI2D_memNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cHThreadsGremove6FpnKJavaThread__v_;
-text: .text%__1cIOSThread2T6M_v_;
-text: .text%__1cUThreadSafepointStateHdestroy6FpnKJavaThread__v_;
-text: .text%__1cKJavaThreadYremove_stack_guard_pages6M_v_;
-text: .text%__1cQandI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQjava_lang_ThreadNset_stillborn6FpnHoopDesc__v_;
-text: .text%__1cRInterpreterOopMapNresource_copy6MpnQOopMapCacheEntry__v_;
-text: .text%__1cLConvD2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIOSThreadKpd_destroy6M_v_;
-text: .text%__1cWstatic_call_RelocationLstatic_stub6M_pC_;
-text: .text%__1cKJavaThread2T6M_v_;
-text: .text%__1cGThread2T5B6M_v_;
-text: .text%__1cCosLfree_thread6FpnIOSThread__v_;
-text: .text%__1cFStateM_sub_Op_MulI6MpknENode__v_;
-text: .text%__1cNThreadServiceWcurrent_thread_exiting6FpnKJavaThread__v_;
-text: .text%__1cLensure_join6FpnKJavaThread__v_: thread.o;
-text: .text%__1cQOopMapCacheEntryEfill6MnMmethodHandle_i_v_;
-text: .text%__1cSTailCalljmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOGenerateOopMapEppop6MpnNCellTypeState__v_;
-text: .text%__1cSTailCalljmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubF_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cbFunnecessary_membar_volatileNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cLcmpF_ccNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNObjectMonitorJnotifyAll6MpnGThread__v_;
-text: .text%jni_CallObjectMethod: jni.o;
-text: .text%__1cQaddD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferUic_buffer_cached_oop6FpC_pnHoopDesc__;
-text: .text%__1cQdivD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbEset_method_data_pointer_offset6MpnMRegisterImpl__v_;
-text: .text%__1cIMaxINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cQChunkPoolCleanerEtask6M_v_: allocation.o;
-text: .text%__1cHTypeInt2t6Miii_v_;
-text: .text%__1cTOopMapForCacheEntryLcompute_map6MpnGThread__v_;
-text: .text%__1cOcmovIL_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKConv2BNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSandL_reg_imm13NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadRangeNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRshlI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorJpass_long6M_v_;
-text: .text%__1cQregL_to_stkLNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOGenerateOopMapVresult_for_basicblock6Mi_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_long6M_v_: interpreterRT_sparc.o;
-text: .text%__1cQOopMapCacheEntryIset_mask6MpnNCellTypeState_2i_v_;
-text: .text%__1cLOptoRuntimeYcurrent_time_millis_Type6F_pknITypeFunc__;
-text: .text%__1cHTypePtrFxdual6kM_pknEType__;
-text: .text%__1cOstackSlotIOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotIOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%JVM_MonitorNotifyAll;
-text: .text%__1cJloadDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOstackSlotIOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cKCMoveLNodeGOpcode6kM_i_;
-text: .text%__1cRshlL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegD_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationVtrap_state_has_reason6Fii_i_;
-text: .text%__1cTloadD_unalignedNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJloadDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNiRegIsafeOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cNloadConP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSinstanceKlassKlassOklass_oop_size6kM_i_: instanceKlassKlass.o;
-text: .text%__1cIAddDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cMnegD_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSandL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPmethodDataKlassOklass_oop_size6kM_i_: methodDataKlass.o;
-text: .text%__1cKarrayKlassWuncached_lookup_method6kMpnNsymbolOopDesc_2_pnNmethodOopDesc__;
-text: .text%__1cLmethodKlassOklass_oop_size6kM_i_: methodKlass.o;
-text: .text%__1cKarrayKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cWconstantPoolCacheKlassOklass_oop_size6kM_i_: cpCacheKlass.o;
-text: .text%__1cQconstMethodKlassOklass_oop_size6kM_i_: constMethodKlass.o;
-text: .text%__1cXJNI_ArgumentPusherVaArgJget_float6M_v_: jni.o;
-text: .text%__1cKklassKlassOklass_oop_size6kM_i_: arrayKlassKlass.o;
-text: .text%__1cSobjArrayKlassKlassOklass_oop_size6kM_i_: objArrayKlassKlass.o;
-text: .text%__1cLsymbolKlassOklass_oop_size6kM_i_: symbolKlass.o;
-text: .text%__1cVcompiledICHolderKlassOklass_oop_size6kM_i_: compiledICHolderKlass.o;
-text: .text%__1cSsubL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSmulL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSdivL_reg_reg_1NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRconstantPoolKlassOklass_oop_size6kM_i_: constantPoolKlass.o;
-text: .text%__1cTtypeArrayKlassKlassOklass_oop_size6kM_i_: typeArrayKlassKlass.o;
-text: .text%__1cOloadI_fregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRtestI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQjava_lang_ThreadbGinherited_access_control_context6FpnHoopDesc__2_;
-text: .text%__1cJLoadSNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cLstoreF0NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIMinINodeIadd_ring6kMpknEType_3_3_;
-text: .text%JVM_GetInheritedAccessControlContext;
-text: .text%__1cPPerfDataManagerWcreate_string_constant6FnJCounterNS_pkc3pnGThread__pnSPerfStringConstant__;
-text: .text%JVM_NativePath;
-text: .text%__1cOMacroAssemblerNflush_windows6M_v_;
-text: .text%__1cSsubD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cVCallRuntimeDirectNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cFJNIidHoops_do6MpnKOopClosure__v_;
-text: .text%__1cJHashtableHoops_do6MpnKOopClosure__v_;
-text: .text%__1cHCompileKinit_start6MpnJStartNode__v_;
-text: .text%__1cKg3RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cVinline_cache_regPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKstorePNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQObjectStartArrayFreset6M_v_;
-text: .text%__1cPconvI2D_memNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQaddD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvF2INodeGOpcode6kM_i_;
-text: .text%__1cVCallRuntimeDirectNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJHashtableGunlink6MpnRBoolObjectClosure__v_;
-text: .text%__1cIPSOldGenPadjust_pointers6M_v_;
-text: .text%__1cOcmovPI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIPSOldGenHcompact6M_v_;
-text: .text%__1cMtlsLoadPNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLcmpF_ccNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQcmovI_reg_gtNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLstoreP0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovIF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLL_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%jni_GetStaticMethodID: jni.o;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MipnMRegisterImpl__v_;
-text: .text%__1cRtestI_reg_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPconvF2D_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOPhaseIdealLoopKdo_peeling6MpnNIdealLoopTree_rnJNode_List__v_;
-text: .text%__1cOcmovLL_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%jint_cmp: parse2.o;
-text: .text%__1cXjava_lang_boxing_objectJget_value6FpnHoopDesc_pnGjvalue__nJBasicType__;
-text: .text%__1cNloadConL0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerKnull_check6MpnMRegisterImpl_i_v_;
-text: .text%__1cVMoveL2D_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cIGraphKitTdprecision_rounding6MpnENode__2_;
-text: .text%__1cOcmovLL_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLConvD2FNodeGOpcode6kM_i_;
-text: .text%__1cIMulFNodeImul_ring6kMpknEType_3_3_;
-text: .text%__1cWloadConI_x41f00000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpFOperFccode6kM_i_: ad_sparc_clone.o;
-text: .text%__1cLstoreC0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQregL_to_stkLNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovIF_immNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovDF_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQaddL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZregDHi_regDLo_to_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_Close;
-text: .text%__1cSmulD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIMulDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKstoreFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSsubD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddP_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cXconvI2D_regDHi_regDNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstoreFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOMacroAssemblerNget_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cQsubF_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerbIcompute_extra_locals_size_in_bytes6MpnMRegisterImpl_22_v_;
-text: .text%__1cLcmpF_ccNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataScompute_cell_count6FpnOBytecodeStream__i_;
-text: .text%__1cPorI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cSxorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2D_memNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQdivI_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cWloadConI_x43300000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cWloadConI_x41f00000NodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOtailjmpIndNodeNis_block_proj6kM_pknENode__: ad_sparc_misc.o;
-text: .text%__1cRInlineCacheBufferSic_destination_for6FpnKCompiledIC__pC_;
-text: .text%__1cbFunnecessary_membar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJSubFPNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cFParseNdo_instanceof6M_v_;
-text: .text%__1cLconvI2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cIGraphKitOgen_instanceof6MpnENode_2_2_;
-text: .text%__1cbFunnecessary_membar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRshrL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJloadBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQdivI_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIDivLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSmulD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOstackSlotLOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cKConv2BNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQshlI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXjava_lang_reflect_FieldFclazz6FpnHoopDesc__2_;
-text: .text%__1cXjava_lang_reflect_FieldJmodifiers6FpnHoopDesc__i_;
-text: .text%__1cJloadDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOcmovPP_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQsubF_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_NewObjectV: jni.o;
-text: .text%__1cOcmovLI_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cPciInstanceKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cXPartialSubtypeCheckNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%jni_EnsureLocalCapacity;
-text: .text%__1cLstoreI0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cIAddFNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cLConvD2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cKoopFactoryUnew_compiledICHolder6FnMmethodHandle_nLKlassHandle_pnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cSCompiledStaticCallMset_to_clean6M_v_;
-text: .text%__1cIDivDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cVcompiledICHolderKlassIallocate6MpnGThread__pnXcompiledICHolderOopDesc__;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddD_regD_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPfieldDescriptorUdouble_initial_value6kM_d_;
-text: .text%__1cQsubD_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPP_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNSafePointNodeQpeek_monitor_obj6kM_pnENode__;
-text: .text%__1cJloadFNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSaddI_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFParsePdo_monitor_exit6M_v_;
-text: .text%__1cObranchConFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cObranchConFNodeJlabel_set6MrnFLabel_I_v_;
-text: .text%__1cSconvF2I_helperNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSmembar_releaseNodeIadr_type6kM_pknHTypePtr__;
-text: .text%__1cObranchConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLcmpD_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJloadLNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cISubDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cZInterpreterMacroAssemblerUprofile_taken_branch6MpnMRegisterImpl_2_v_;
-text: .text%__1cNSafePointNodeQpeek_monitor_box6kM_pnENode__;
-text: .text%__1cFTypeFFxdual6kM_pknEType__;
-text: .text%__1cICmpFNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cKVtableStubRpd_code_alignment6F_i_;
-text: .text%__1cKarrayKlassYcompute_secondary_supers6MipnGThread__pnPobjArrayOopDesc__;
-text: .text%__1cKloadUBNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTloadL_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegDNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cLConvI2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cOcmovLL_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRorI_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cTloadL_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cKloadUBNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cXconvI2D_regDHi_regDNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerbFtest_invocation_counter_for_mdp6MpnMRegisterImpl_22rnFLabel__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cSvframeArrayElementHfill_in6MpnOcompiledVFrame__v_;
-text: .text%__1cFTypeDFxdual6kM_pknEType__;
-text: .text%__1cSaddD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerbAincrement_backedge_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerbBtest_backedge_count_for_osr6MpnMRegisterImpl_22_v_;
-text: .text%__1cSmulL_reg_imm13NodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKEntryPoint2t6M_v_;
-text: .text%__1cTloadD_unalignedNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZregDHi_regDLo_to_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcompiledVFrameImonitors6kM_pnNGrowableArray4CpnLMonitorInfo____;
-text: .text%__1cOcompiledVFrameLexpressions6kM_pnUStackValueCollection__;
-text: .text%__1cHciKlassOsuper_of_depth6MI_p0_;
-text: .text%__1cOcompiledVFrameGlocals6kM_pnUStackValueCollection__;
-text: .text%__1cOcompiledVFrameGmethod6kM_pnNmethodOopDesc__;
-text: .text%__1cJimmP0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOcompiledVFrameHraw_bci6kM_i_;
-text: .text%__1cQshrI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x43300000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsbMis_supported_jni_version_including_1_16Fi_C_;
-text: .text%__1cMTailJumpNodeKmatch_edge6kMI_I_;
-text: .text%__1cWloadConI_x41f00000NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cODeoptimizationbJupdate_method_data_from_interpreter6FnQmethodDataHandle_ii_v_;
-text: .text%__1cIimmDOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cOstackSlotLOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotLOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cTloadD_unalignedNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIModLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOtailjmpIndNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cSmulD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegFNodeGOpcode6kM_i_;
-text: .text%__1cSsubD_regD_regDNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cJScopeDescImonitors6M_pnNGrowableArray4CpnMMonitorValue____;
-text: .text%__1cJScopeDescLexpressions6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%__1cJScopeDescGlocals6M_pnNGrowableArray4CpnKScopeValue____;
-text: .text%JVM_GetComponentType;
-text: .text%__1cQdivI_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_DefineClass1;
-text: .text%__1cOcmovII_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLvframeArrayPunpack_to_stack6MrnFframe_i_v_;
-text: .text%__1cKReflectionUarray_component_type6FpnHoopDesc_pnGThread__2_;
-text: .text%__1cLConvF2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSvframeArrayElementDbci6kM_i_;
-text: .text%__1cVMoveF2I_stack_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%JVM_GetCPFieldModifiers;
-text: .text%__1cKJavaThreadbFdeoptimized_wrt_marked_nmethods6M_v_;
-text: .text%__1cNnmethodLocker2t6MpC_v_;
-text: .text%__1cNSharedRuntimebJcontinuation_for_implicit_exception6FpnKJavaThread_pCn0AVImplicitExceptionKind__3_;
-text: .text%__1cODeoptimizationNuncommon_trap6FpnKJavaThread_i_pn0ALUnrollBlock__;
-text: .text%__1cODeoptimizationTuncommon_trap_inner6FpnKJavaThread_i_v_;
-text: .text%__1cODeoptimizationNunpack_frames6FpnKJavaThread_i_nJBasicType__;
-text: .text%__1cODeoptimizationYfetch_unroll_info_helper6FpnKJavaThread__pn0ALUnrollBlock__;
-text: .text%__1cZInterpreterMacroAssemblerXindex_check_without_pop6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cRSignatureIteratorKparse_type6M_i_;
-text: .text%__1cPconvD2F_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHciKlassLjava_mirror6M_pnKciInstance__;
-text: .text%__1cODeoptimizationRlast_frame_adjust6Fii_i_;
-text: .text%__1cQsubD_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%JVM_DefineClass;
-text: .text%JVM_InvokeMethod;
-text: .text%__1cOcmovPP_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_NewDirectByteBuffer;
-text: .text%__1cHJNIEnv_JNewObject6MpnH_jclass_pnK_jmethodID_E_pnI_jobject__: jni.o;
-text: .text%jni_AllocObject: jni.o;
-text: .text%__1cNTemplateTableMlocals_index6FpnMRegisterImpl_i_v_;
-text: .text%__1cTmembar_volatileNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cMnegD_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%Unsafe_AllocateInstance;
-text: .text%__1cQComputeCallStackHdo_byte6M_v_: generateOopMap.o;
-text: .text%__1cQstkI_to_regINodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cYjava_lang_reflect_MethodEslot6FpnHoopDesc__i_;
-text: .text%__1cYjava_lang_reflect_MethodFclazz6FpnHoopDesc__2_;
-text: .text%__1cYinternal_word_RelocationGtarget6M_pC_;
-text: .text%__1cJStubQdDueueKremove_all6M_v_;
-text: .text%__1cPconvI2D_memNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPorL_reg_regNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerLindex_check6MpnMRegisterImpl_2i22_v_;
-text: .text%__1cJJavaCallsMcall_virtual6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_533pnGThread__v_;
-text: .text%__1cSaddL_reg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovPI_regNodeLbottom_type6kM_pknEType__: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cMloadConFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKReflectionNinvoke_method6FpnHoopDesc_nGHandle_nOobjArrayHandle_pnGThread__2_;
-text: .text%__1cYjava_lang_reflect_MethodPparameter_types6FpnHoopDesc__2_;
-text: .text%__1cTmembar_volatileNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPconvI2L_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovII_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjava_lang_reflect_MethodLreturn_type6FpnHoopDesc__2_;
-text: .text%__1cJCmpF3NodeGOpcode6kM_i_;
-text: .text%__1cLMoveL2DNodeGOpcode6kM_i_;
-text: .text%__1cFKlassWcompute_modifier_flags6kMpnGThread__i_;
-text: .text%__1cKReflectionRreflect_new_array6FpnHoopDesc_ipnGThread__pnMarrayOopDesc__;
-text: .text%__1cOcmovII_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIAddFNodeJideal_reg6kM_I_: classes.o;
-text: .text%JVM_NewArray;
-text: .text%__1cHOrLNodeGOpcode6kM_i_;
-text: .text%__1cLStrCompNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLOopMapCache2t6M_v_;
-text: .text%__1cNTemplateTableHconvert6F_v_;
-text: .text%__1cOcmovDF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cZInterpreterMacroAssemblerFpop_l6MpnMRegisterImpl__v_;
-text: .text%__1cOcmovLI_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSMachBreakpointNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeQcreate_exception6FpnKJavaThread_pc3_v_;
-text: .text%__1cQComputeCallStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cKPSYoungGenKprecompact6M_v_;
-text: .text%__1cXjava_lang_reflect_FieldEslot6FpnHoopDesc__i_;
-text: .text%__1cMnegF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cHThreadsLgc_prologue6F_v_;
-text: .text%__1cHThreadsLgc_epilogue6F_v_;
-text: .text%__1cPconvI2L_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4nGHandle_pnGThread__v_;
-text: .text%__1cUParallelScavengeHeapHcollect6MnHGCCauseFCause__v_;
-text: .text%__1cRCardTableModRefBSFclear6MnJMemRegion__v_;
-text: .text%__1cVLoaderConstraintTableYpurge_loader_constraints6MpnRBoolObjectClosure__v_;
-text: .text%__1cVLoaderConstraintTableYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cLconvP2BNodeMideal_Opcode6kM_i_: ad_sparc_misc.o;
-text: .text%__1cQSystemDictionaryValways_strong_oops_do6FpnKOopClosure__v_;
-text: .text%__1cIciMethodVget_osr_flow_analysis6Mi_pnKciTypeFlow__;
-text: .text%__1cLMoveF2INodeGOpcode6kM_i_;
-text: .text%__1cKNativeJumpUpatch_verified_entry6FpC11_v_;
-text: .text%__1cMStartOSRNodeKosr_domain6F_pknJTypeTuple__;
-text: .text%__1cVVM_ParallelGCSystemGCEdoit6M_v_;
-text: .text%__1cJArgumentsQPropertyList_add6FppnOSystemProperty_2_v_;
-text: .text%__1cOMacroAssemblerPbreakpoint_trap6M_v_;
-text: .text%__1cJBasicLockHmove_to6MpnHoopDesc_p0_v_;
-text: .text%__1cJMarkSweepNrestore_marks6F_v_;
-text: .text%__1cJMarkSweepMadjust_marks6F_v_;
-text: .text%__1cJMarkSweepXfollow_weak_klass_links6F_v_;
-text: .text%__1cRStubCodeGeneratorLstub_epilog6MpnMStubCodeDesc__v_;
-text: .text%__1cMStubCodeMark2t6MpnRStubCodeGenerator_pkc4_v_;
-text: .text%__1cMStubCodeMark2T6M_v_;
-text: .text%__1cNCallGeneratorHfor_osr6FpnIciMethod_i_p0_;
-text: .text%__1cLClassLoaderSget_system_package6FpkcpnGThread__pnHoopDesc__;
-text: .text%__1cJPSPermGenKprecompact6M_v_;
-text: .text%JVM_GC;
-text: .text%__1cIPSOldGenKprecompact6M_v_;
-text: .text%__1cUPSMarkSweepDecoratorbIset_destination_decorator_perm_gen6F_v_;
-text: .text%__1cUPSMarkSweepDecoratorbHset_destination_decorator_tenured6F_v_;
-text: .text%__1cKDictionaryYalways_strong_classes_do6MpnKOopClosure__v_;
-text: .text%__1cQmulL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUPSAdaptiveSizePolicyWmajor_collection_begin6M_v_;
-text: .text%__1cIUniverseWupdate_heap_info_at_gc6F_v_;
-text: .text%__1cKPSYoungGenHcompact6M_v_;
-text: .text%JVM_GetSystemPackage;
-text: .text%__1cPfieldDescriptorTfloat_initial_value6kM_f_;
-text: .text%__1cKPSYoungGenPadjust_pointers6M_v_;
-text: .text%__1cJCodeCacheLgc_prologue6F_v_;
-text: .text%__1cJCodeCacheLgc_epilogue6F_v_;
-text: .text%__1cIXorINodeIadd_ring6kMpknEType_3_3_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cQregL_to_stkLNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cKcmpOpFOperKless_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cOcmovPI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSmulL_reg_imm13NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovIF_immNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cKCMoveDNodeGOpcode6kM_i_;
-text: .text%__1cJLoadDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cIMulFNodeGmul_id6kM_pknEType__: classes.o;
-text: .text%__1cNStubGeneratorLstub_prolog6MpnMStubCodeDesc__v_: stubGenerator_sparc.o;
-text: .text%__1cQaddL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%jni_GetStringRegion: jni.o;
-text: .text%JVM_RawMonitorCreate;
-text: .text%__1cJloadLNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIMulFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNinstanceKlassPadd_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cOstackSlotPOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotPOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cZInterpreterMacroAssemblerNunlock_object6MpnMRegisterImpl__v_;
-text: .text%JVM_Sleep;
-text: .text%__1cLConvL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cQstkI_to_regFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQinstanceRefKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceRefKlass.o;
-text: .text%__1cRorI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%Unsafe_CompareAndSwapInt;
-text: .text%JVM_Lseek;
-text: .text%__1cNloadRangeNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cPconvD2F_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackJdo_object6Mii_v_: generateOopMap.o;
-text: .text%__1cPconvF2D_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQmulF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMnegF_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cSconvF2I_helperNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQmulD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovLI_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cPMultiBranchDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cQregP_to_stkPNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerQtest_mdp_data_at6MipnMRegisterImpl_rnFLabel_2_v_;
-text: .text%__1cQstkI_to_regINodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cGciType2t6MnJBasicType__v_;
-text: .text%__1cJLoadBNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cQaddF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cETypeEmake6Fn0AFTYPES__pk0_;
-text: .text%__1cSconvF2I_helperNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cRsarL_reg_imm6NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSstring_compareNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_GetEnv;
-text: .text%__1cJloadDNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cQstkI_to_regINodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cXNativeSignatureIteratorHdo_bool6M_v_: interpreterRT_sparc.o;
-text: .text%Unsafe_GetNativeByte;
-text: .text%JVM_NanoTime;
-text: .text%__1cOMacroAssemblerOrestore_thread6MkpnMRegisterImpl__v_;
-text: .text%__1cQandL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIimmFOperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cKcmpOpFOperGnegate6M_v_: ad_sparc_clone.o;
-text: .text%__1cICodeBlobFflush6M_v_;
-text: .text%__1cFParseMdo_anewarray6M_v_;
-text: .text%__1cSdivL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_CallVoidMethod: jni.o;
-text: .text%__1cJCodeCacheFfirst6F_pnICodeBlob__;
-text: .text%__1cObranchConFNodeGnegate6M_v_: ad_sparc_misc.o;
-text: .text%__1cFParseOdo_tableswitch6M_v_;
-text: .text%__1cOcmovIF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLConvI2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cSaddL_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLstoreC0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%Unsafe_GetNativeFloat;
-text: .text%__1cOstackSlotFOperEtype6kM_pknEType__: ad_sparc.o;
-text: .text%__1cHnmethodFflush6M_v_;
-text: .text%__1cHnmethodSflush_dependencies6MpnRBoolObjectClosure__v_;
-text: .text%__1cKo2RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cQregI_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorVgenerate_method_entry6MnTAbstractInterpreterKMethodKind__pC_;
-text: .text%__1cWloadConI_x43300000NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cFParseQdo_monitor_enter6M_v_;
-text: .text%__1cPorL_reg_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cLstoreC0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_FindPrimitiveClass;
-text: .text%__1cVMoveL2D_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cNTemplateTableEiop26Fn0AJOperation__v_;
-text: .text%__1cZInterpreterMacroAssemblerMdispatch_via6MnITosState_ppC_v_;
-text: .text%__1cRshrI_reg_imm5NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsLcall_static6FpnJJavaValue_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cSsubL_reg_reg_2NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUmulL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cIDivDNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cNinstanceKlassUfind_interface_field6kMpnNsymbolOopDesc_2pnPfieldDescriptor__pnMklassOopDesc__;
-text: .text%__1cOstackSlotFOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cUdivL_reg_imm13_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRSignatureIteratorHiterate6M_v_;
-text: .text%__1cOcmovLL_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJname2type6Fpkc_nJBasicType__;
-text: .text%__1cSmulL_reg_imm13NodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOloadConL13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKcmpOpFOperHgreater6kM_i_: ad_sparc_clone.o;
-text: .text%__1cIDivDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOMacroAssemblerKget_thread6M_v_;
-text: .text%__1cOcmovDF_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovIF_immNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cSconvI2F_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2T6M_v_;
-text: .text%__1cOtypeArrayKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlass.o;
-text: .text%__1cPconvD2F_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cIciMethodMnative_entry6M_pC_;
-text: .text%__1cVMoveF2I_stack_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cPPerfDataManagerWcreate_string_variable6FnJCounterNS_pkci3pnGThread__pnSPerfStringVariable__;
-text: .text%__1cPorL_reg_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cPconvD2F_regNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cIciSymbolHas_utf86M_pkc_;
-text: .text%__1cQandI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQciTypeArrayKlass2t6MnLKlassHandle__v_;
-text: .text%__1cMnegD_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cFStateO_sub_Op_CMoveP6MpknENode__v_;
-text: .text%__1cQmulD_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerZtotal_frame_size_in_bytes6Mi_i_;
-text: .text%__1cNTemplateTableQfast_accessfield6FnITosState__v_;
-text: .text%__1cKCompiledICSset_to_megamorphic6MpnICallInfo_nJBytecodesECode_pnGThread__v_;
-text: .text%Unsafe_StaticFieldOffset;
-text: .text%__1cQmulI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQaddI_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOcmovLI_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%JVM_GetClassContext;
-text: .text%Unsafe_StaticFieldBaseFromField;
-text: .text%Unsafe_EnsureClassInitialized;
-text: .text%__1cOcmovIF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cNTemplateTableZjvmti_post_fast_field_mod6F_v_;
-text: .text%Unsafe_GetObjectVolatile;
-text: .text%__1cbEJvmtiDynamicCodeEventCollector2t6M_v_;
-text: .text%__1cKstoreFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVMoveL2D_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cJLoadLNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNSharedRuntimeVhandle_ic_miss_helper6FpnKJavaThread_pnGThread__nMmethodHandle__;
-text: .text%__1cOloadConL13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTablePfast_storefield6FnITosState__v_;
-text: .text%__1cLstoreF0NodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cPconvI2D_memNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cETypeFxdual6kM_pk0_;
-text: .text%__1cJOopMapSetQsingular_oop_map6M_pnGOopMap__;
-text: .text%__1cKimmU13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cZInterpreterMacroAssemblerTnotify_method_entry6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerbCincrement_invocation_counter6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerWempty_expression_stack6M_v_;
-text: .text%__1cUInterpreterGeneratorVgenerate_counter_incr6MpnFLabel_22_v_;
-text: .text%__1cOcmovIL_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfDataManagerKname_space6Fpkci_pc_;
-text: .text%__1cOtailjmpIndNodePoper_input_base6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNMemoryManagerIadd_pool6MpnKMemoryPool__v_;
-text: .text%__1cCosEstat6FpkcpnEstat__i_;
-text: .text%__1cQregF_to_stkINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRComputeEntryStackIdo_short6M_v_: generateOopMap.o;
-text: .text%__1cRComputeEntryStackGdo_int6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorChunk2t6Mi_v_;
-text: .text%__1cQSystemDictionaryPresolve_or_null6FnMsymbolHandle_pnGThread__pnMklassOopDesc__;
-text: .text%__1cOPhaseIdealLoopJclone_iff6MpnHPhiNode_pnNIdealLoopTree__pnIBoolNode__;
-text: .text%__1cQComputeCallStackIdo_float6M_v_: generateOopMap.o;
-text: .text%__1cMMonitorValue2t6MpnTDebugInfoReadStream__v_;
-text: .text%__1cPciObjArrayKlassJmake_impl6FpnHciKlass__p0_;
-text: .text%__1cPorL_reg_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cLOptoRuntimeMrethrow_Type6F_pknITypeFunc__;
-text: .text%jni_SetStaticObjectField: jni.o;
-text: .text%jni_RegisterNatives: jni.o;
-text: .text%__1cFframebLprevious_monitor_in_interpreter_frame6kMpnPBasicObjectLock__2_;
-text: .text%__1cQshlL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetClassDeclaredFields;
-text: .text%__1cCosMuser_handler6F_pv_;
-text: .text%JVM_IsSameClassPackage;
-text: .text%__1cKMemoryPoolLadd_manager6MpnNMemoryManager__v_;
-text: .text%__1cKJavaThreadRadd_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cKJavaThreadUremove_monitor_chunk6MpnMMonitorChunk__v_;
-text: .text%__1cVMoveL2D_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableGiconst6Fi_v_;
-text: .text%__1cLConvF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%JVM_LoadLibrary;
-text: .text%JVM_IsSupportedJNIVersion;
-text: .text%Unsafe_ObjectFieldOffset;
-text: .text%__1cZInterpreterMacroAssemblerYtest_method_data_pointer6MrnFLabel__v_;
-text: .text%__1cNTemplateTableHif_0cmp6Fn0AJCondition__v_;
-text: .text%__1cZInterpreterMacroAssemblerSget_cpool_and_tags6MpnMRegisterImpl_2_v_;
-text: .text%__1cIAddDNodeIIdentity6MpnOPhaseTransform__pnENode__: classes.o;
-text: .text%__1cNTemplateTableHif_icmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableH_return6FnITosState__v_;
-text: .text%__1cHOrLNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cKimmP13OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cLConvD2FNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSObjectSynchronizerJjni_enter6FnGHandle_pnGThread__v_;
-text: .text%__1cHnmethodbJcontinuation_for_implicit_exception6MpC_1_;
-text: .text%__1cNSharedRuntimeEdrem6Fdd_d_;
-text: .text%__1cPstoreI_FregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cTloadD_unalignedNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cOloadI_fregNodeOmemory_operand6kM_pknIMachOper__;
-text: .text%__1cLconvP2BNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cCosZvm_allocation_granularity6F_i_;
-text: .text%__1cMTailJumpNodeGOpcode6kM_i_;
-text: .text%__1cTloadD_unalignedNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHciKlass2t6MnLKlassHandle_pnIciSymbol__v_;
-text: .text%__1cJMemRegion2t6M_v_: cardTableModRefBS.o;
-text: .text%__1cSObjectSynchronizerIjni_exit6FpnHoopDesc_pnGThread__v_;
-text: .text%__1cNRegisterSaverWrestore_live_registers6FpnOMacroAssembler__v_;
-text: .text%__1cLTypeInstPtrOxmeet_unloaded6kMpk0_2_;
-text: .text%__1cRtestI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPPerfLongVariant2t6MnJCounterNS_pkcnIPerfDataFUnits_n0CLVariability_pnUPerfLongSampleHelper__v_;
-text: .text%__1cWImplicitExceptionTable2t6MpknHnmethod__v_;
-text: .text%__1cWImplicitExceptionTableCat6kMI_I_;
-text: .text%__1cFParseVcatch_call_exceptions6MrnYciExceptionHandlerStream__v_;
-text: .text%jni_GetJavaVM;
-text: .text%__1cOcmovDF_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%jni_MonitorEnter: jni.o;
-text: .text%jni_MonitorExit: jni.o;
-text: .text%__1cLConvL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cULinearLeastSquareFit2t6MI_v_;
-text: .text%__1cQdivL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cPciObjectFactoryTget_unloaded_method6MpnPciInstanceKlass_pnIciSymbol_4_pnIciMethod__;
-text: .text%__1cSCardTableExtensionVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cOloadI_fregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cRCardTableModRefBSVresize_covered_region6MnJMemRegion__v_;
-text: .text%__1cIAddDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cJloadFNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cKConv2BNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvI2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSconvD2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%jni_Throw: jni.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC_v_;
-text: .text%__1cLMoveL2DNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cIDivINodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubDNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cPstoreI_FregNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cINegFNodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cOLibraryCallKitXgenerate_current_thread6MrpnENode__2_;
-text: .text%__1cOMacroAssemblerEfneg6MnRFloatRegisterImplFWidth_p13_v_;
-text: .text%__1cXNativeSignatureIteratorJdo_double6M_v_: interpreterRT_sparc.o;
-text: .text%__1cRtestI_reg_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLcmpF_ccNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cMNativeLookupTbase_library_lookup6Fpkc22_pC_;
-text: .text%jni_SetObjectField: jni.o;
-text: .text%__1cPPerfDataManagerUcreate_long_variable6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnQPerfLongVariable__;
-text: .text%__1cPPerfDataManagerKname_space6Fpkc2i_pc_;
-text: .text%bootstrap_flush_windows;
-text: .text%__1cSdivL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerbCverify_oop_or_return_address6MpnMRegisterImpl_2_v_;
-text: .text%__1cFStateO_sub_Op_Conv2B6MpknENode__v_;
-text: .text%__1cNRegisterSaverTsave_live_registers6FpnOMacroAssembler_ipi_pnGOopMap__;
-text: .text%__1cSmulL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_int_field06FnJBasicType__pC_;
-text: .text%__1cKExceptionsK_throw_oop6FpnGThread_pkcipnHoopDesc__v_;
-text: .text%__1cSsubL_reg_reg_1NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSInterpreterRuntimeZSignatureHandlerGeneratorLpass_double6M_v_;
-text: .text%__1cQmulD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%Unsafe_AllocateMemory;
-text: .text%__1cSandL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_GetLastErrorString;
-text: .text%__1cNTemplateTableElop26Fn0AJOperation__v_;
-text: .text%__1cQjava_lang_ThreadKset_daemon6FpnHoopDesc__v_;
-text: .text%__1cNTemplateTableEfop26Fn0AJOperation__v_;
-text: .text%__1cPstoreI_FregNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cNTemplateTableEdop26Fn0AJOperation__v_;
-text: .text%__1cSandI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMnegD_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNciMethodKlassEmake6F_p0_;
-text: .text%__1cNTemplateTableGlstore6Fi_v_;
-text: .text%__1cLConvF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cIciMethod2t6MpnPciInstanceKlass_pnIciSymbol_4_v_;
-text: .text%__1cRcompL_reg_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLConvD2FNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cSconvD2I_helperNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsubI_zero_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKstfSSFNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cOClassPathEntry2t6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerQaccess_local_ptr6MpnMRegisterImpl_2_v_;
-text: .text%__1cNTemplateTableGistore6Fi_v_;
-text: .text%__1cIRetTableUfind_jsrs_for_target6Mi_pnNRetTableEntry__;
-text: .text%__1cPconvL2I_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cUcompI_iReg_imm13NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRsarI_reg_imm5NodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNTemplateTableGastore6Fi_v_;
-text: .text%__1cIRetTableHadd_jsr6Mii_v_;
-text: .text%__1cMnegF_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQregF_to_stkINodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cRComputeEntryStackHdo_bool6M_v_: generateOopMap.o;
-text: .text%__1cNTemplateTableGdstore6Fi_v_;
-text: .text%__1cNTemplateTableGfstore6Fi_v_;
-text: .text%jni_CallStaticObjectMethod: jni.o;
-text: .text%__1cOcmovLL_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cLconvI2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cODeoptimizationLUnrollBlockOsize_of_frames6kM_i_;
-text: .text%__1cCosGsignal6Fipv_1_;
-text: .text%__1cQaddD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cISubDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cISubFNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cISubFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableFlload6Fi_v_;
-text: .text%__1cNTemplateTableFiload6Fi_v_;
-text: .text%__1cMOopMapStream2t6MpnGOopMap_i_v_;
-text: .text%__1cLconvP2BNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cVMoveF2I_stack_regNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC22_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC2_v_;
-text: .text%__1cTjava_lang_ThrowableLset_message6FpnHoopDesc_2_v_;
-text: .text%__1cOGenerateOopMapTret_jump_targets_do6MpnOBytecodeStream_pFp0ipi_vi4_v_;
-text: .text%Unsafe_SetMemory;
-text: .text%__1cKstfSSFNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_x6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cVMoveF2I_stack_regNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cOcmovLI_regNodeHsize_of6kM_I_: ad_sparc_misc.o;
-text: .text%__1cNloadConL0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovPI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovDF_regNodeHtwo_adr6kM_I_: ad_sparc_misc.o;
-text: .text%__1cQsubF_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cFParseRjump_if_true_fork6MpnGIfNode_ii_v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_icc6MnJAssemblerJCondition_pCpnMRegisterImpl__v_;
-text: .text%__1cNTemplateTableFfload6Fi_v_;
-text: .text%__1cFParsePdo_lookupswitch6M_v_;
-text: .text%__1cNTemplateTableFdload6Fi_v_;
-text: .text%__1cKstfSSFNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cINegDNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableFaload6Fi_v_;
-text: .text%__1cRMachSpillCopyNodeHsize_of6kM_I_: ad_sparc.o;
-text: .text%__1cQCompilerCounters2t6MpkcipnGThread__v_;
-text: .text%__1cOGenerateOopMapRdo_multianewarray6Mii_v_;
-text: .text%__1cNCompileBrokerUcompiler_thread_loop6F_v_;
-text: .text%jni_CallStaticObjectMethodV: jni.o;
-text: .text%__1cNTemplateTableMfast_xaccess6FnITosState__v_;
-text: .text%__1cJMemRegionFminus6kMk0_0_;
-text: .text%__1cNCompileBrokerUmake_compiler_thread6FpkcpnMCompileQdDueue_pnQCompilerCounters_pnGThread__pnOCompilerThread__;
-text: .text%__1cSInterpreterRuntimebKthrow_ArrayIndexOutOfBoundsException6FpnKJavaThread_pci_v_;
-text: .text%__1cNMemoryManager2t6M_v_;
-text: .text%__1cFStatebB_sub_Op_PartialSubtypeCheck6MpknENode__v_;
-text: .text%__1cFStateM_sub_Op_DivI6MpknENode__v_;
-text: .text%__1cUPSGenerationCounters2t6MpkciipnOPSVirtualSpace__v_;
-text: .text%__1cCosFyield6F_v_;
-text: .text%__1cQsubD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXNativeSignatureIteratorIdo_float6M_v_: interpreterRT_sparc.o;
-text: .text%__1cIDivDNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cFParseRdo_multianewarray6M_v_;
-text: .text%__1cLOptoRuntimeTmultianewarray_Type6Fi_pknITypeFunc__;
-text: .text%__1cZInterpreterMacroAssemblerRget_constant_pool6MpnMRegisterImpl__v_;
-text: .text%__1cXPartialSubtypeCheckNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cOcmovIF_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLMoveF2INodeLbottom_type6kM_pknEType__: classes.o;
-text: .text%__1cSconvI2D_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLstoreF0NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerLlock_object6MpnMRegisterImpl_2_v_;
-text: .text%__1cPstoreI_FregNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLL_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerUupdate_mdp_by_offset6MpnMRegisterImpl_i2_v_;
-text: .text%__1cNSafepointBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cMciArrayKlassRbase_element_type6M_pnGciType__;
-text: .text%JVM_GetInterfaceVersion;
-text: .text%__1cZInterpreterMacroAssemblerRgen_subtype_check6MpnMRegisterImpl_2222rnFLabel__v_;
-text: .text%__1cbFpartialSubtypeCheck_vs_zeroNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableGfconst6Fi_v_;
-text: .text%__1cGThreadbFinitialize_thread_local_storage6M_v_;
-text: .text%__1cOcmovPI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cGThreadbArecord_stack_base_and_size6M_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC2_v_;
-text: .text%JVM_RegisterSignal;
-text: .text%JVM_FindSignal;
-text: .text%jio_vsnprintf;
-text: .text%__1cQshrL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZInterpreterMacroAssemblerTprofile_switch_case6MpnMRegisterImpl_222_v_;
-text: .text%__1cOCompilerThread2t6MpnMCompileQdDueue_pnQCompilerCounters__v_;
-text: .text%__1cVcompiler_thread_entry6FpnKJavaThread_pnGThread__v_: thread.o;
-text: .text%__1cNIdealLoopTreeUmerge_many_backedges6MpnOPhaseIdealLoop__v_;
-text: .text%__1cODeoptimizationLUnrollBlock2T6M_v_;
-text: .text%jni_GetDoubleArrayRegion: jni.o;
-text: .text%__1cMLinkResolverbBlookup_method_in_interfaces6FrnMmethodHandle_nLKlassHandle_nMsymbolHandle_4pnGThread__v_;
-text: .text%__1cLconvP2BNodeErule6kM_I_: ad_sparc_misc.o;
-text: .text%__1cKfix_parent6FpnNIdealLoopTree_1_v_: loopnode.o;
-text: .text%JVM_Available;
-text: .text%__1cZInterpreterMacroAssemblerSprofile_final_call6MpnMRegisterImpl__v_;
-text: .text%__1cQshlL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cZInterpreterMacroAssemblerQtop_most_monitor6M_nHAddress__;
-text: .text%__1cLstoreF0NodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cZInterpreterMacroAssemblerWprofile_switch_default6MpnMRegisterImpl__v_;
-text: .text%__1cTAbstract_VM_VersionOvm_info_string6F_pkc_;
-text: .text%__1cJStubQdDueue2t6MpnNStubInterface_ipnFMutex_pkc_v_;
-text: .text%__1cHThreadsbFdeoptimized_wrt_marked_nmethods6F_v_;
-text: .text%__1cOstackSlotFOperEdisp6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperEbase6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cOstackSlotFOperFindex6kMpnNPhaseRegAlloc_pknENode_i_i_: ad_sparc.o;
-text: .text%__1cNTemplateTableGlconst6Fi_v_;
-text: .text%__1cLstoreC0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMPeriodicTaskGenroll6M_v_;
-text: .text%__1cNTemplateTableHcastore6F_v_;
-text: .text%Unsafe_CompareAndSwapObject;
-text: .text%__1cLNamedThread2t6M_v_;
-text: .text%__1cLNamedThreadIset_name6MpkcE_v_;
-text: .text%__1cJloadDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivD_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWloadConI_x43300000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKinitialize6F_v_;
-text: .text%__1cKcmpOpFOperJnot_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cPconvD2F_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableKdouble_cmp6Fi_v_;
-text: .text%__1cNTemplateTableJfloat_cmp6Fi_v_;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC22_v_;
-text: .text%__1cNTemplateTableGdconst6Fi_v_;
-text: .text%__1cSconvF2I_helperNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_immNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovIF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cJimmL0OperJnum_edges6kM_I_: ad_sparc_clone.o;
-text: .text%__1cSaddD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cSsubD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQregF_to_stkINodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableTinvokevfinal_helper6FpnMRegisterImpl_2_v_;
-text: .text%__1cSmulD_regD_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cNTemplateTableUgenerate_vtable_call6FpnMRegisterImpl_22_v_;
-text: .text%__1cNTemplateTableKif_nullcmp6Fn0AJCondition__v_;
-text: .text%__1cNTemplateTableHif_acmp6Fn0AJCondition__v_;
-text: .text%__1cNVM_DeoptimizeEdoit6M_v_;
-text: .text%__1cMnegF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQsubL_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cMVirtualSpace2t6M_v_;
-text: .text%__1cWloadConI_x41f00000NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQdivI_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cZregDHi_regDLo_to_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cXconvI2D_regDHi_regDNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cKloadUBNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cNTemplateTableEidiv6F_v_;
-text: .text%__1cQstkI_to_regINodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLMoveL2DNodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLConvD2FNodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cLConvF2INodeIIdentity6MpnOPhaseTransform__pnENode__;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_float_field06FnJBasicType__pC_;
-text: .text%__1cLMoveF2INodeFValue6kMpnOPhaseTransform__pknEType__;
-text: .text%__1cLOptoRuntimeIl2f_Type6F_pknITypeFunc__;
-text: .text%__1cOMacroAssemblerUcalc_mem_param_words6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerLprofile_ret6MnITosState_pnMRegisterImpl_3_v_;
-text: .text%__1cZInterpreterMacroAssemblerMprofile_call6MpnMRegisterImpl__v_;
-text: .text%__1cLklassVtableQindex_of_miranda6MpnNsymbolOopDesc_2_i_;
-text: .text%__1cZInterpreterMacroAssemblerSupdate_mdp_for_ret6MnITosState_pnMRegisterImpl__v_;
-text: .text%__1cMLinkResolverbEvtable_index_of_miranda_method6FnLKlassHandle_nMsymbolHandle_2pnGThread__i_;
-text: .text%__1cUInterpreterGeneratorLlock_method6M_v_;
-text: .text%__1cZInterpreterMacroAssemblerOthrow_if_not_26MpCpnMRegisterImpl_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerQthrow_if_not_1_x6MnJAssemblerJCondition_rnFLabel__v_;
-text: .text%__1cZInterpreterMacroAssemblerZget_4_byte_integer_at_bcp6MipnMRegisterImpl_2n0AKsetCCOrNot__v_;
-text: .text%__1cODeoptimizationVdeoptimize_dependents6F_i_;
-text: .text%__1cFStateO_sub_Op_CMoveL6MpknENode__v_;
-text: .text%__1cZInterpreterMacroAssemblerRaccess_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cIPSOldGenPinitialize_work6Mpkci_v_;
-text: .text%__1cCosIjvm_path6Fpci_v_;
-text: .text%__1cCosNsigexitnum_pd6F_i_;
-text: .text%__1cCosScurrent_process_id6F_i_;
-text: .text%__1cINegFNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cSInterpreterRuntimeMat_safepoint6FpnKJavaThread__v_;
-text: .text%__1cLConvL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLConvD2FNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cKJNIHandlesQmake_weak_global6FnGHandle__pnI_jobject__;
-text: .text%__1cZInterpreterMacroAssemblerSaccess_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerTaccess_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerPstore_local_int6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerQstore_local_long6MpnMRegisterImpl_2_v_;
-text: .text%__1cZInterpreterMacroAssemblerRstore_local_float6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cZInterpreterMacroAssemblerSstore_local_double6MpnMRegisterImpl_pnRFloatRegisterImpl__v_;
-text: .text%__1cCosWactive_processor_count6F_i_;
-text: .text%__1cTAbstractInterpreterKinitialize6F_v_;
-text: .text%jni_NewWeakGlobalRef: jni.o;
-text: .text%__1cRComputeEntryStackIdo_array6Mii_v_: generateOopMap.o;
-text: .text%__1cTMaskFillerForNativeLpass_object6M_v_: oopMapCache.o;
-text: .text%__1cOGenerateOopMapTadd_to_ref_init_set6Mi_v_;
-text: .text%__1cUGcThreadCountClosureJdo_thread6MpnGThread__v_;
-text: .text%__1cNinstanceKlassSremove_osr_nmethod6MpnHnmethod__v_;
-text: .text%__1cOPSVirtualSpace2t6M_v_;
-text: .text%jni_IsInstanceOf: jni.o;
-text: .text%__1cMGCTaskThreadDrun6M_v_;
-text: .text%__1cJCodeCachebGmake_marked_nmethods_not_entrant6F_v_;
-text: .text%__1cTMaskFillerForNativeJpass_long6M_v_: oopMapCache.o;
-text: .text%jni_CallStaticVoidMethodV: jni.o;
-text: .text%jni_CallStaticBooleanMethod: jni.o;
-text: .text%__1cMGCTaskThread2t6MpnNGCTaskManager_II_v_;
-text: .text%__1cOtailjmpIndNodeIpipeline6kM_pknIPipeline__;
-text: .text%__1cMGCTaskThreadFstart6M_v_;
-text: .text%__1cQObjectStartArrayKinitialize6MnJMemRegion__v_;
-text: .text%__1cQObjectStartArraySset_covered_region6MnJMemRegion__v_;
-text: .text%__1cZInterpreterMacroAssemblerbAdispatch_next_noverify_oop6MnITosState_i_v_;
-text: .text%__1cRCollectorCounters2t6Mpkci_v_;
-text: .text%__1cFParseDl2f6M_v_;
-text: .text%__1cPGCMemoryManagerXinitialize_gc_stat_info6M_v_;
-text: .text%__1cJArgumentsVset_parallel_gc_flags6F_v_;
-text: .text%__1cPGCMemoryManager2t6M_v_;
-text: .text%__1cRComputeEntryStackHdo_long6M_v_: generateOopMap.o;
-text: .text%__1cSInterpreterRuntimeWcreate_klass_exception6FpnKJavaThread_pcpnHoopDesc__v_;
-text: .text%__1cQcreate_os_thread6FpnGThread_I_pnIOSThread__: os_solaris.o;
-text: .text%__1cYjava_lang_reflect_MethodPcompute_offsets6F_v_;
-text: .text%__1cSInterpreterRuntimeSupdate_mdp_for_ret6FpnKJavaThread_i_v_;
-text: .text%__1cPorL_reg_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQjava_lang_ThreadPcompute_offsets6F_v_;
-text: .text%__1cXNativeSignatureIteratorHdo_byte6M_v_: interpreterRT_sparc.o;
-text: .text%__1cCosHSolarisQsignal_sets_init6F_v_;
-text: .text%__1cCosbDallocate_thread_local_storage6F_i_;
-text: .text%__1cUInterpreterGeneratorVrestore_native_result6M_v_;
-text: .text%__1cVjava_lang_ThreadGroupPcompute_offsets6F_v_;
-text: .text%__1cLconvP2BNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVshrL_reg_imm6_L2INodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cJJavaCallsMcall_special6FpnJJavaValue_nGHandle_nLKlassHandle_nMsymbolHandle_5pnGThread__v_;
-text: .text%__1cCosGstrdup6Fpkc_pc_;
-text: .text%__1cCosLinit_random6Fl_v_;
-text: .text%__1cUInterpreterGeneratorXgenerate_accessor_entry6M_pC_;
-text: .text%__1cCosXterminate_signal_thread6F_v_;
-text: .text%__1cCosLsignal_init6F_v_;
-text: .text%__1cTsignal_thread_entry6FpnKJavaThread_pnGThread__v_: os.o;
-text: .text%__1cOtailjmpIndNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cUInterpreterGeneratorUgenerate_empty_entry6M_pC_;
-text: .text%__1cUInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cCosbDinit_system_properties_values6F_v_;
-text: .text%__1cCosPphysical_memory6F_X_;
-text: .text%__1cHvm_exit6Fi_v_;
-text: .text%__1cLbefore_exit6FpnKJavaThread__v_;
-text: .text%__1cbCAbstractInterpreterGeneratorbFgenerate_slow_signature_handler6M_pC_;
-text: .text%__1cSThreadLocalStorageHpd_init6F_v_;
-text: .text%__1cVMoveF2I_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cVMoveL2D_stack_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cWinvocationCounter_init6F_v_;
-text: .text%__1cKTypeOopPtrFxdual6kM_pknEType__;
-text: .text%__1cFParseMjump_if_join6MpnENode_2_2_;
-text: .text%__1cSinstanceKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cSinstanceKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: instanceKlassKlass.o;
-text: .text%__1cETypeRInitialize_shared6FpnHCompile__v_;
-text: .text%__1cQinstanceRefKlassZupdate_nonstatic_oop_maps6FpnMklassOopDesc__v_;
-text: .text%__1cVInterfaceSupport_init6F_v_;
-text: .text%__1cPGenerationSizerQinitialize_flags6M_v_: parallelScavengeHeap.o;
-text: .text%__1cZInterpreterMacroAssemblerPdispatch_normal6MnITosState__v_;
-text: .text%__1cDhpiZinitialize_socket_library6F_i_;
-text: .text%__1cDhpiYinitialize_get_interface6FpnIvm_calls__v_;
-text: .text%__1cWInlineCacheBuffer_init6F_v_;
-text: .text%__1cWThreadLocalAllocBufferWstartup_initialization6F_v_;
-text: .text%__1cPGlobalTLABStats2t6M_v_;
-text: .text%__1cLicache_init6F_v_;
-text: .text%__1cSThreadLocalStorageEinit6F_v_;
-text: .text%__1cNThreadServiceEinit6F_v_;
-text: .text%__1cTICacheStubGeneratorVgenerate_icache_flush6MppFpCii_i_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: indexSet.o;
-text: .text%__1cPvm_init_globals6F_v_;
-text: .text%__1cMinit_globals6F_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_expand.o;
-text: .text%__1cMexit_globals6F_v_;
-text: .text%__1cSset_init_completed6F_v_;
-text: .text%__1cNinstanceKlassZrelease_C_heap_structures6M_v_;
-text: .text%__1cUParallelScavengeHeapItop_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cCosHSolarisXinstall_signal_handlers6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: interp_masm_sparc.o;
-text: .text%__1cQinterpreter_init6F_v_;
-text: .text%__1cbCAbstractInterpreterGenerator2t6MpnJStubQdDueue__v_;
-text: .text%__1cRlwp_priocntl_init6F_i_: os_solaris.o;
-text: .text%__1cbCAbstractInterpreterGeneratorMgenerate_all6M_v_;
-text: .text%__1cCosLsignal_wait6F_i_;
-text: .text%__1cCosNsignal_notify6Fi_v_;
-text: .text%__1cCosOsignal_init_pd6F_v_;
-text: .text%__1cCosHSolarisPinit_signal_mem6F_v_;
-text: .text%__1cCosSget_temp_directory6F_pkc_;
-text: .text%__1cCosHSolarisOlibthread_init6F_v_;
-text: .text%__1cUParallelScavengeHeapIend_addr6kM_ppnIHeapWord__: parallelScavengeHeap.o;
-text: .text%__1cUParallelScavengeHeapEheap6F_p0_;
-text: .text%__1cUParallelScavengeHeapNgc_threads_do6kMpnNThreadClosure__v_;
-text: .text%__1cUParallelScavengeHeapYpermanent_object_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKcmpOpFOperNgreater_equal6kM_i_: ad_sparc_clone.o;
-text: .text%__1cUParallelScavengeHeapPpost_initialize6M_v_;
-text: .text%__1cUParallelScavengeHeapKinitialize6M_i_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: parGCAllocBuffer.o;
-text: .text%__1cZInterpreterMacroAssemblerbFset_method_data_pointer_for_bcp6M_v_;
-text: .text%__SLIP.DELETER__C: ostream.o;
-text: .text%__1cMostream_exit6F_v_;
-text: .text%__1cQostream_init_log6F_v_;
-text: .text%__1cMostream_init6F_v_;
-text: .text%__1cCosXnon_memory_address_word6F_pc_;
-text: .text%__1cCosGinit_26F_i_;
-text: .text%__1cCosEinit6F_v_;
-text: .text%__1cCosHSolarisUsynchronization_init6F_v_;
-text: .text%__1cVjni_GetLongField_addr6F_pC_;
-text: .text%__1cNIdealLoopTreeQsplit_outer_loop6MpnOPhaseIdealLoop__v_;
-text: .text%__1cRLowMemoryDetectorKinitialize6F_v_;
-text: .text%__1cRLowMemoryDetectorbGlow_memory_detector_thread_entry6FpnKJavaThread_pnGThread__v_;
-text: .text%__1cTloadL_unalignedNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: machnode.o;
-text: .text%__1cPmanagement_init6F_v_;
-text: .text%__1cOvmStructs_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vmStructs.o;
-text: .text%__1cJvmSymbolsKinitialize6FpnGThread__v_;
-text: .text%__1cKManagementKinitialize6FpnGThread__v_;
-text: .text%__1cIVMThreadGcreate6F_v_;
-text: .text%__1cIVMThreadDrun6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: management.o;
-text: .text%__1cLJvmtiExportNpost_vm_start6F_v_;
-text: .text%__1cLJvmtiExportTpost_vm_initialized6F_v_;
-text: .text%__1cLJvmtiExportNpost_vm_death6F_v_;
-text: .text%__1cLJvmtiExportbMtransition_pending_onload_raw_monitors6F_v_;
-text: .text%__1cUJvmtiPendingMonitorsXtransition_raw_monitors6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiImpl.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiTagMap.o;
-text: .text%__1cKklassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: klassKlass.o;
-text: .text%__1cVLoaderConstraintTable2t6Mi_v_;
-text: .text%__1cQregL_to_stkLNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cHRetDataPpost_initialize6MpnOBytecodeStream_pnRmethodDataOopDesc__v_;
-text: .text%__1cTAbstract_VM_VersionKvm_release6F_pkc_;
-text: .text%__1cTAbstract_VM_VersionXinternal_vm_info_string6F_pkc_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: vm_version.o;
-text: .text%__1cPVM_Version_init6F_v_;
-text: .text%__1cKVM_VersionKinitialize6F_v_;
-text: .text%__1cHRetDataJfixup_ret6MinQmethodDataHandle__pC_;
-text: .text%__1cLmethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cLmethodKlassOset_alloc_size6MI_v_: methodKlass.o;
-text: .text%__1cQvtableStubs_init6F_v_;
-text: .text%__1cKi0RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cKg1RegPOperKin_RegMask6kMi_pknHRegMask__;
-text: .text%__1cLmethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodKlass.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: methodLiveness.o;
-text: .text%__1cMMutableSpaceOobject_iterate6MpnNObjectClosure__v_;
-text: .text%__1cKmutex_init6F_v_;
-text: .text%__1cQaccessFlags_init6F_v_;
-text: .text%__1cOMacroAssemblerMcall_VM_leaf6MpnMRegisterImpl_pC222_v_;
-text: .text%__1cTAbstract_VM_VersionJvm_vendor6F_pkc_;
-text: .text%__1cOmarksweep_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: markSweep.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: matcher.o;
-text: .text%__1cNMemoryManagerbDget_code_cache_memory_manager6F_p0_;
-text: .text%__1cNMemoryManagerbDget_psScavenge_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cNMemoryManagerbEget_psMarkSweep_memory_manager6F_pnPGCMemoryManager__;
-text: .text%__1cHVM_ExitEdoit6M_v_;
-text: .text%__1cNMemoryServiceRset_universe_heap6FpnNCollectedHeap__v_;
-text: .text%__1cNMemoryServiceZadd_code_heap_memory_pool6FpnICodeHeap__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: memoryService.o;
-text: .text%__1cPmethodDataKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPmethodDataKlassOset_alloc_size6MI_v_: methodDataKlass.o;
-text: .text%__1cPmethodDataKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: methodDataKlass.o;
-text: .text%__1cTAbstract_VM_VersionHvm_name6F_pkc_;
-text: .text%__1cLstoreF0NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%JNI_CreateJavaVM;
-text: .text%__1cQJNI_FastGetFieldbFgenerate_fast_get_boolean_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_byte_field6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_char_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_short_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbBgenerate_fast_get_int_field6F_pC_;
-text: .text%__1cQJNI_FastGetFieldbCgenerate_fast_get_long_field6F_pC_;
-text: .text%__1cTtypeArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: typeArrayKlassKlass.o;
-text: .text%__1cIUniverseHgenesis6FpnGThread__v_;
-text: .text%__1cVquicken_jni_functions6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: oopMap.o;
-text: .text%__1cYjava_lang_reflect_MethodNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cbDjava_lang_reflect_ConstructorPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldPcompute_offsets6F_v_;
-text: .text%__1cXjava_lang_reflect_FieldNset_signature6FpnHoopDesc_2_v_;
-text: .text%__1cQdivD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cLJavaClassesbAcompute_hard_coded_offsets6F_v_;
-text: .text%__1cQjavaClasses_init6F_v_;
-text: .text%jni_ToReflectedMethod: jni.o;
-text: .text%__1cQsubD_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cYjni_GetBooleanField_addr6F_pC_;
-text: .text%__1cVjni_GetByteField_addr6F_pC_;
-text: .text%__1cQaddF_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cVjni_GetCharField_addr6F_pC_;
-text: .text%__1cWjni_GetShortField_addr6F_pC_;
-text: .text%__1cUjni_GetIntField_addr6F_pC_;
-text: .text%__1cOtypeArrayKlassKinitialize6MpnGThread__v_;
-text: .text%__1cWjni_GetFloatField_addr6F_pC_;
-text: .text%__1cRsarL_reg_imm6NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cXjni_GetDoubleField_addr6F_pC_;
-text: .text%__1cQshlI_reg_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cIUniverseNfixup_mirrors6FpnGThread__v_;
-text: .text%JVM_InitializeSocketLibrary;
-text: .text%JVM_RegisterUnsafeMethods;
-text: .text%__1cOcmovLI_regNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cOcmovLI_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cOcmovDF_regNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%JVM_Socket;
-text: .text%__1cbEinitialize_converter_functions6F_v_;
-text: .text%JVM_SupportsCX8;
-text: .text%__1cOcmovIF_immNodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cUJvmtiEventControllerIvm_start6F_v_;
-text: .text%__1cUJvmtiEventControllerHvm_init6F_v_;
-text: .text%__1cUJvmtiEventControllerIvm_death6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: jvmtiEventController.o;
-text: .text%__1cKstfSSFNodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cLJvmtiExportRenter_start_phase6F_v_;
-text: .text%__1cLJvmtiExportQenter_live_phase6F_v_;
-text: .text%__1cSmulL_reg_imm13NodeEemit6kMrnKCodeBuffer_pnNPhaseRegAlloc__v_;
-text: .text%__1cQJNI_FastGetFieldbDgenerate_fast_get_float_field6F_pC_;
-text: .text%__1cSmulI_reg_imm13NodeEsize6kMpnNPhaseRegAlloc__I_;
-text: .text%__1cQJNI_FastGetFieldbEgenerate_fast_get_double_field6F_pC_;
-text: .text%__1cNuniverse_init6F_i_;
-text: .text%__1cOuniverse2_init6F_v_;
-text: .text%__1cQjni_handles_init6F_v_;
-text: .text%__1cSobjArrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: objArrayKlassKlass.o;
-text: .text%Unsafe_SetNativeLong;
-text: .text%JVM_InitProperties;
-text: .text%JVM_Halt;
-text: .text%Unsafe_FreeMemory;
-text: .text%Unsafe_PageSize;
-text: .text%JVM_MaxMemory;
-text: .text%__1cSobjArrayKlassKlassbEallocate_system_objArray_klass6MpnGThread__pnMklassOopDesc__;
-text: .text%__1cSobjArrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%JVM_GetClassDeclaredMethods;
-text: .text%__1cPPerfDataManagerHsampled6F_pnMPerfDataList__;
-text: .text%__1cQSystemDictionaryKclasses_do6FpFpnMklassOopDesc__v_v_;
-text: .text%__1cQSystemDictionaryKinitialize6FpnGThread__v_;
-text: .text%__1cQSystemDictionarybCinitialize_preloaded_classes6FpnGThread__v_;
-text: .text%__1cPciObjectFactoryTinit_shared_objects6M_v_;
-text: .text%__1cPClassFileParserbFjava_lang_ref_Reference_fix_pre6MpnPtypeArrayHandle_nSconstantPoolHandle_pnUFieldAllocationCount_pnGThread__v_;
-text: .text%__1cLClassLoaderbBsetup_bootstrap_search_path6F_v_;
-text: .text%__1cLClassLoaderQload_zip_library6F_v_;
-text: .text%__1cLClassLoaderZcreate_package_info_table6F_v_;
-text: .text%__1cLClassLoaderKinitialize6F_v_;
-text: .text%__1cLClassLoaderVcompute_Object_vtable6F_i_;
-text: .text%__1cMPeriodicTask2T5B6M_v_;
-text: .text%__1cQclassLoader_init6F_v_;
-text: .text%__1cMPeriodicTaskJdisenroll6M_v_;
-text: .text%__1cOBasicHashtable2t6Mii_v_: classLoader.o;
-text: .text%__1cTClassLoadingServiceEinit6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: regmask.o;
-text: .text%__1cUciObjArrayKlassKlassEmake6F_p0_;
-text: .text%__1cVRegistersForDebuggingRrestore_registers6FpnOMacroAssembler_pnMRegisterImpl__v_: assembler_sparc.o;
-text: .text%__1cVRegistersForDebuggingOsave_registers6FpnOMacroAssembler__v_: assembler_sparc.o;
-text: .text%__1cJBytecodesKinitialize6F_v_;
-text: .text%__1cQSystemDictionarybAcompute_java_system_loader6FpnGThread__v_;
-text: .text%__1cObytecodes_init6F_v_;
-text: .text%__1cLOptoRuntimeIgenerate6FpnFciEnv__v_;
-text: .text%__1cJBytecodesNpd_initialize6F_v_;
-text: .text%__1cHCompileRpd_compiler2_init6F_v_;
-text: .text%__1cKC2CompilerKinitialize6M_v_;
-text: .text%__1cRCardTableModRefBS2t6MnJMemRegion_i_v_;
-text: .text%__1cMciArrayKlass2t6MpnIciSymbol_ipnHciKlass__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: relocInfo.o;
-text: .text%__1cMciKlassKlassEmake6F_p0_;
-text: .text%__1cIciMethodMvtable_index6M_i_;
-text: .text%__1cPciObjArrayKlass2t6MpnIciSymbol_pnHciKlass_i_v_;
-text: .text%__1cJLoadFNodeMstore_Opcode6kM_i_: classes.o;
-text: .text%__1cNTemplateTableGsipush6F_v_;
-text: .text%__1cQUncommonTrapBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableGldc2_w6F_v_;
-text: .text%__1cNExceptionBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_i_p0_;
-text: .text%__1cNTemplateTableFiload6F_v_;
-text: .text%__1cNTemplateTableLfast_iload26F_v_;
-text: .text%__1cNTemplateTableKfast_iload6F_v_;
-text: .text%__1cNTemplateTableFlload6F_v_;
-text: .text%__1cNTemplateTableFfload6F_v_;
-text: .text%__1cNTemplateTableFdload6F_v_;
-text: .text%__1cNTemplateTableFaload6F_v_;
-text: .text%__1cNTemplateTableKwide_iload6F_v_;
-text: .text%__1cNTemplateTableKwide_lload6F_v_;
-text: .text%__1cNTemplateTableKwide_fload6F_v_;
-text: .text%__1cNTemplateTableKwide_dload6F_v_;
-text: .text%__1cNTemplateTableKwide_aload6F_v_;
-text: .text%__1cNTemplateTableGiaload6F_v_;
-text: .text%__1cNTemplateTableGlaload6F_v_;
-text: .text%__1cNTemplateTableGfaload6F_v_;
-text: .text%__1cNTemplateTableGdaload6F_v_;
-text: .text%__1cNTemplateTableGbipush6F_v_;
-text: .text%__1cLMoveF2INodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cLMoveL2DNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableHcall_VM6FpnMRegisterImpl_pC222_v_;
-text: .text%__1cHOrLNodeGadd_id6kM_pknEType__: classes.o;
-text: .text%__1cHOrLNodeJideal_reg6kM_I_: classes.o;
-text: .text%__1cNTemplateTableF_goto6F_v_;
-text: .text%__1cNTemplateTableGgoto_w6F_v_;
-text: .text%__1cNTemplateTableFjsr_w6F_v_;
-text: .text%__1cNTemplateTableDjsr6F_v_;
-text: .text%__1cXreferenceProcessor_init6F_v_;
-text: .text%__1cICodeBlobMset_oop_maps6MpnJOopMapSet__v_;
-text: .text%__1cStemplateTable_init6F_v_;
-text: .text%__1cNTemplateTableNpd_initialize6F_v_;
-text: .text%__1cNTemplateTableDnop6F_v_;
-text: .text%__1cNTemplateTableSshouldnotreachhere6F_v_;
-text: .text%__1cNTemplateTableLaconst_null6F_v_;
-text: .text%__1cKPSYoungGenbCreset_survivors_after_shrink6M_v_;
-text: .text%__1cSDeoptimizationBlobGcreate6FpnKCodeBuffer_pnJOopMapSet_iiii_p0_;
-text: .text%__1cLOptoRuntimeUmultianewarray2_Type6F_pknITypeFunc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: ad_sparc_pipeline.o;
-text: .text%__1cOchunkpool_init6F_v_;
-text: .text%__1cFChunkbDstart_chunk_pool_cleaner_task6F_v_;
-text: .text%__1cJArgumentsWinit_system_properties6F_v_;
-text: .text%__1cMSysClassPathPexpand_endorsed6M_v_;
-text: .text%__1cMSysClassPathQadd_jars_to_path6Fpcpkc_1_;
-text: .text%__1cJArgumentsTset_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsbBset_cms_and_parnew_gc_flags6F_v_;
-text: .text%__1cJArgumentsUset_ergonomics_flags6F_v_;
-text: .text%__1cJArgumentsSparse_vm_init_args6FpknOJavaVMInitArgs__i_;
-text: .text%__1cLStatSamplerGengage6F_v_;
-text: .text%__1cNStubGeneratorbNgenerate_flush_callers_register_windows6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cSstubRoutines_init16F_v_;
-text: .text%__1cSstubRoutines_init26F_v_;
-text: .text%__1cNStubGeneratorbIgenerate_handler_for_unsafe_access6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbAgenerate_forward_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_call_stub6MrpC_1_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorYgenerate_catch_exception6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorSgenerate_test_stop6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cNStubGeneratorbEgenerate_partial_subtype_check6M_pC_: stubGenerator_sparc.o;
-text: .text%__1cISubFNodeDsub6kMpknEType_3_3_;
-text: .text%__1cRStubCodeGeneratorLstub_prolog6MpnMStubCodeDesc__v_;
-text: .text%__1cLStatSamplerbMcreate_system_property_instrumentation6FpnGThread__v_;
-text: .text%__1cLStatSamplerHdestroy6F_v_;
-text: .text%__1cLStatSamplerJdisengage6F_v_;
-text: .text%__1cNRegisterSaverYrestore_result_registers6FpnOMacroAssembler__v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: runtimeService.o;
-text: .text%__1cORuntimeServiceYrecord_application_start6F_v_;
-text: .text%__1cOMacroAssemblerNset_vm_result6MpnMRegisterImpl__v_;
-text: .text%__1cORuntimeServiceEinit6F_v_;
-text: .text%__1cOMacroAssemblerVverify_oop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerPstop_subroutine6M_v_;
-text: .text%__1cOMacroAssemblerElcmp6MpnMRegisterImpl_2222_v_;
-text: .text%__1cOMacroAssemblerElneg6MpnMRegisterImpl_2_v_;
-text: .text%__1cOMacroAssemblerElshl6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerElshr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cOMacroAssemblerFlushr6MpnMRegisterImpl_22222_v_;
-text: .text%__1cLOptoRuntimeUmultianewarray5_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray4_Type6F_pknITypeFunc__;
-text: .text%__1cLOptoRuntimeUmultianewarray3_Type6F_pknITypeFunc__;
-text: .text%__1cLsymbolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: symbolKlass.o;
-text: .text%__1cJArgumentsFparse6FpknOJavaVMInitArgs__i_;
-text: .text%__1cJArgumentsWPropertyList_get_value6FpnOSystemProperty_pkc_4_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: sharedHeap.o;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: arguments.o;
-text: .text%__1cParrayKlassKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cKklassKlassOset_alloc_size6MI_v_: arrayKlassKlass.o;
-text: .text%__1cLsymbolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cParrayKlassKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: arrayKlassKlass.o;
-text: .text%__1cOMacroAssemblerRcall_VM_leaf_base6MpnMRegisterImpl_pCi_v_;
-text: .text%__1cNSharedRuntimeTgenerate_deopt_blob6F_v_;
-text: .text%__1cLsymbolKlassOset_alloc_size6MI_v_: symbolKlass.o;
-text: .text%__1cNTemplateTableGaaload6F_v_;
-text: .text%__1cQconstMethodKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cQconstMethodKlassOset_alloc_size6MI_v_: constMethodKlass.o;
-text: .text%__1cQconstMethodKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constMethodKlass.o;
-text: .text%__1cGThreadMset_priority6Fp0nOThreadPriority__v_;
-text: .text%__1cRconstantPoolKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cRconstantPoolKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: constantPoolKlass.o;
-text: .text%__1cQPlaceholderTable2t6Mi_v_;
-text: .text%__1cbBcreate_initial_thread_group6FpnGThread__nGHandle__: thread.o;
-text: .text%__1cVcreate_initial_thread6FnGHandle_pnKJavaThread_pnGThread__pnHoopDesc__: thread.o;
-text: .text%__1cbAcall_initializeSystemClass6FpnGThread__v_: thread.o;
-text: .text%__1cWreset_vm_info_property6FpnGThread__v_: thread.o;
-text: .text%__1cbAPSGCAdaptivePolicyCounters2t6MpkciipnUPSAdaptiveSizePolicy__v_;
-text: .text%__1cNTemplateTableRfast_invokevfinal6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: compiledICHolderKlass.o;
-text: .text%__1cNTemplateTableNinvokespecial6Fi_v_;
-text: .text%__1cNTemplateTableMinvokestatic6Fi_v_;
-text: .text%__1cNTemplateTablebDinvokeinterface_object_method6FpnMRegisterImpl_222_v_;
-text: .text%__1cNTemplateTablePinvokeinterface6Fi_v_;
-text: .text%__1cNTemplateTableE_new6F_v_;
-text: .text%__1cNTemplateTableInewarray6F_v_;
-text: .text%__1cNTemplateTableJanewarray6F_v_;
-text: .text%__1cNTemplateTableLarraylength6F_v_;
-text: .text%__1cNTemplateTableJcheckcast6F_v_;
-text: .text%__1cNTemplateTableKinstanceof6F_v_;
-text: .text%__1cNTemplateTableL_breakpoint6F_v_;
-text: .text%__1cNTemplateTableGathrow6F_v_;
-text: .text%__1cNTemplateTableMmonitorenter6F_v_;
-text: .text%__1cNTemplateTableLmonitorexit6F_v_;
-text: .text%__1cNTemplateTableEwide6F_v_;
-text: .text%__1cNTemplateTableOmultianewarray6F_v_;
-text: .text%__1cTcompilerOracle_init6F_v_;
-text: .text%__1cWconstantPoolCacheKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cPPerfDataManagerTcreate_long_counter6FnJCounterNS_pkcnIPerfDataFUnits_pnUPerfLongSampleHelper_pnGThread__pnPPerfLongCounter__;
-text: .text%__1cZCompiledArgumentOopFinderRhandle_oop_offset6M_v_: frame.o;
-text: .text%__1cQGCPolicyCounters2t6Mpkcii_v_;
-text: .text%__1cHGCStats2t6M_v_;
-text: .text%__1cNGCTaskManager2t6MI_v_;
-text: .text%__1cNGCTaskManagerKinitialize6M_v_;
-text: .text%__1cNGCTaskManagerKthreads_do6MpnNThreadClosure__v_;
-text: .text%__1cPPerfDataManagerHdestroy6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: genCollectedHeap.o;
-text: .text%__1cWResolveOopMapConflictsUdo_potential_rewrite6MpnGThread__nMmethodHandle__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: generateOopMap.o;
-text: .text%__1cOThreadCriticalKinitialize6F_v_;
-text: .text%__1cSThreadLocalStoragebCgenerate_code_for_get_thread6F_v_;
-text: .text%__1cICodeHeap2t6M_v_;
-text: .text%__1cDhpiKinitialize6F_i_;
-text: .text%__1cMPerfDataList2T6M_v_;
-text: .text%__1cNWatcherThreadDrun6M_v_;
-text: .text%__1cNWatcherThreadEstop6F_v_;
-text: .text%__1cWconstantPoolCacheKlassSallocate_permanent6kMrnLKlassHandle_ipnGThread__pv_: cpCacheKlass.o;
-text: .text%__1cFStateO_sub_Op_CMoveD6MpknENode__v_;
-text: .text%__1cFStateP_sub_Op_MoveF2I6MpknENode__v_;
-text: .text%__1cKDictionary2t6Mi_v_;
-text: .text%__1cKDictionaryKclasses_do6MpFpnMklassOopDesc__v_v_;
-text: .text%__1cNeventlog_init6F_v_;
-text: .text%__1cScheck_ThreadShadow6F_v_;
-text: .text%__1cOtailjmpIndNodeLout_RegMask6kM_rknHRegMask__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: fprofiler.o;
-text: .text%__1cFframeVinterpreter_frame_mdp6kM_pC_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: phase.o;
-text: .text%__1cKPerfMemoryUdelete_memory_region6F_v_;
-text: .text%__1cbBcleanup_sharedmem_resources6Fpkc_v_: perfMemory_solaris.o;
-text: .text%__1cPperfMemory_exit6F_v_;
-text: .text%__1cPperfMemory_init6F_v_;
-text: .text%__1cNTemplateTableNinvokevirtual6Fi_v_;
-text: .text%__1cNTemplateTableHfastore6F_v_;
-text: .text%__1cNTemplateTableHdastore6F_v_;
-text: .text%__1cNTemplateTableHaastore6F_v_;
-text: .text%__1cNTemplateTableHbastore6F_v_;
-text: .text%__1cNTemplateTableHsastore6F_v_;
-text: .text%__1cOcodeCache_init6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: codeCache.o;
-text: .text%__1cNTemplateTableDpop6F_v_;
-text: .text%__1cNTemplateTableEpop26F_v_;
-text: .text%__1cNTemplateTableDdup6F_v_;
-text: .text%__1cNTemplateTableGdup_x16F_v_;
-text: .text%__1cNTemplateTableGdup_x26F_v_;
-text: .text%__1cNTemplateTableEdup26F_v_;
-text: .text%__1cNTemplateTableHdup2_x16F_v_;
-text: .text%__1cNTemplateTableHdup2_x26F_v_;
-text: .text%__1cNTemplateTableEswap6F_v_;
-text: .text%__1cNCollectedHeap2t6M_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psScavenge.o;
-text: .text%__1cNTemplateTableEirem6F_v_;
-text: .text%__1cNTemplateTableElmul6F_v_;
-text: .text%__1cNTemplateTableHlastore6F_v_;
-text: .text%__1cNTemplateTableGbaload6F_v_;
-text: .text%__1cNTemplateTableGcaload6F_v_;
-text: .text%__1cNTemplateTableMfast_icaload6F_v_;
-text: .text%__1cNTemplateTableGsaload6F_v_;
-text: .text%__1cKPSYoungGenPinitialize_work6M_v_;
-text: .text%__1cNTemplateTableHaload_06F_v_;
-text: .text%__1cNTemplateTableGistore6F_v_;
-text: .text%__1cNTemplateTableGlstore6F_v_;
-text: .text%__1cNTemplateTableGfstore6F_v_;
-text: .text%__1cNTemplateTableGdstore6F_v_;
-text: .text%__1cNTemplateTableGastore6F_v_;
-text: .text%__1cNTemplateTableLwide_istore6F_v_;
-text: .text%__1cNTemplateTableLwide_lstore6F_v_;
-text: .text%__1cNTemplateTableLwide_fstore6F_v_;
-text: .text%__1cNTemplateTableLwide_dstore6F_v_;
-text: .text%__1cNTemplateTableLwide_astore6F_v_;
-text: .text%__1cNTemplateTableHiastore6F_v_;
-text: .text%__1cNTemplateTableEldiv6F_v_;
-text: .text%__1cNTemplateTableLtableswitch6F_v_;
-text: .text%__1cNTemplateTableMlookupswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_linearswitch6F_v_;
-text: .text%__1cNTemplateTableRfast_binaryswitch6F_v_;
-text: .text%__1cNCompileBrokerQset_should_block6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compileBroker.o;
-text: .text%__1cNTemplateTableIgetfield6Fi_v_;
-text: .text%__1cNTemplateTableJgetstatic6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassMcreate_klass6FpnGThread__pnMklassOopDesc__;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: psMarkSweep.o;
-text: .text%__1cNTemplateTableIputfield6Fi_v_;
-text: .text%__1cNTemplateTableJputstatic6Fi_v_;
-text: .text%__1cVcompiledICHolderKlassOset_alloc_size6MI_v_: compiledICHolderKlass.o;
-text: .text%__1cLPSMarkSweepKinitialize6F_v_;
-text: .text%__1cNTemplateTableIwide_ret6F_v_;
-text: .text%__1cNTemplateTableElrem6F_v_;
-text: .text%__1cNTemplateTableElshl6F_v_;
-text: .text%__1cNTemplateTableElshr6F_v_;
-text: .text%__1cNTemplateTableFlushr6F_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyQinitialize_flags6M_v_;
-text: .text%__1cbCTwoGenerationCollectorPolicyUinitialize_size_info6M_v_;
-text: .text%__1cNTemplateTableEineg6F_v_;
-text: .text%__1cNTemplateTableElneg6F_v_;
-text: .text%__1cNTemplateTableEfneg6F_v_;
-text: .text%__1cNTemplateTableEdneg6F_v_;
-text: .text%__1cNTemplateTableEiinc6F_v_;
-text: .text%__1cNTemplateTableJwide_iinc6F_v_;
-text: .text%__1cKPSScavengeKinitialize6F_v_;
-text: .text%__1cNTemplateTableElcmp6F_v_;
-text: .text%__1cWcompilationPolicy_init6F_v_;
-text: .text%__1cRCompilationPolicyUcompleted_vm_startup6F_v_;
-text: .text%__1cU__STATIC_CONSTRUCTOR6F_v_: compilationPolicy.o;
-text: .text%__1cSPSPromotionManagerKinitialize6F_v_;
-text: .text%__1cNTemplateTableDret6F_v_;
--- a/make/solaris/makefiles/sparc.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/sparc.make	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 1998, 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
@@ -68,7 +68,7 @@
 #PICFLAG/nativeInst_sparc.o = $(PICFLAG/BETTER)
 #PICFLAG/methodLiveness.o = $(PICFLAG/BETTER)
 #PICFLAG/synchronizer.o = $(PICFLAG/BETTER)
-#PICFLAG/methodOop.o = $(PICFLAG/BETTER)
+#PICFLAG/method.o = $(PICFLAG/BETTER)
 #PICFLAG/space.o = $(PICFLAG/BETTER)
 #PICFLAG/interpreterRT_sparc.o = $(PICFLAG/BETTER)
 #PICFLAG/generation.o = $(PICFLAG/BETTER)
--- a/make/solaris/makefiles/sparcWorks.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/sparcWorks.make	Fri Sep 14 21:50:58 2012 -0700
@@ -39,8 +39,6 @@
   STRIP	= /usr/ccs/bin/strip
 endif
 
-REORDER_FLAG = -xF
-
 # Check for the versions of C++ and C compilers ($CXX and $CC) used. 
 
 # Get the last thing on the line that looks like x.x+ (x is a digit).
--- a/make/solaris/makefiles/vm.make	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/solaris/makefiles/vm.make	Fri Sep 14 21:50:58 2012 -0700
@@ -251,7 +251,7 @@
 	              }                                          \
 	          }' > $@
 
-mapfile_reorder : mapfile $(MAPFILE_DTRACE_OPT) $(REORDERFILE)
+mapfile_extended : mapfile $(MAPFILE_DTRACE_OPT)
 	rm -f $@
 	cat $^ > $@
 
@@ -264,7 +264,7 @@
   LIBS_VM                  = $(LIBS)
 else
   LIBJVM.o                 = $(JVM_OBJ_FILES)
-  LIBJVM_MAPFILE$(LDNOMAP) = mapfile_reorder
+  LIBJVM_MAPFILE$(LDNOMAP) = mapfile_extended
   LFLAGS_VM$(LDNOMAP)      += $(MAPFLAG:FILENAME=$(LIBJVM_MAPFILE))
   LFLAGS_VM                += $(SONAMEFLAG:SONAME=$(LIBJVM))
 ifndef USE_GCC
--- a/make/solaris/reorder.sh	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,355 +0,0 @@
-#!/bin/sh -x
-#
-# Copyright (c) 2000, 2008, 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
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#  
-#
-
-#  Generate the reorder data for hotspot.
-#
-#  Usage:
-#
-#	sh  reorder.sh  <test_sdk_workspace>  <test_sdk>  <jbb_dir>
-#
-#	<test_sdk_workspace> is a *built* SDK workspace which contains the
-#	reordering tools for the SDK.  This script relies on lib_mcount.so
-#	from this workspace.
-#
-#	<test_sdk> is a working SDK which you can use to run the profiled
-#	JVMs in to collect data.  You must be able to write to this SDK.
-#
-#	<jbb_dir> is a directory containing JBB test jar files and properties
-#	which will be used to run the JBB test to provide reordering data
-#	for the server VM.
-#
-#	Profiled builds of the VM are needed (before running this script),
-#	build with PROFILE_PRODUCT=1:
-#
-#		gnumake profiled1 profiled PROFILE_PRODUCT=1
-#
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-test_setup() {
-
-  #   $1 = "client"  or  "server"
-  #   $2 = name of reorder file to be generated.
-
-  echo ""
-  echo "TEST_SETUP  $1  $2"
-  echo ""
-  libreldir=${ALT_OUTPUTDIR:-../../../make/solaris-$arch5}/reorder
-  libabsdir=${ALT_OUTPUTDIR:-$sdk_ws/make/solaris-$arch5}/reorder
-  ( cd $sdk_ws/make/tools/reorder ; gnumake $libreldir/$arch5/libmcount.so )
-  if [ "${arch3}" = "i386" ] ; then
-	# On Solaris/x86 we need to remove the symbol _mcount from the command
-	( cd $sdk_ws/make/tools/reorder ; \
-	    gnumake $libreldir/$arch5/remove_mcount )
-	echo Remove _mcount from java command.
-	$libabsdir/$arch5/remove_mcount $jre/bin/java
-  fi
-  ( cd $sdk_ws/make/tools/reorder ; gnumake tool_classes )
-  ( cd $sdk_ws/make/tools/reorder ; gnumake test_classes )
-
-  tests="Null Exit Hello Sleep IntToString \
-	 LoadToolkit LoadFrame LoadJFrame JHello"
-  swingset=$sdk/demo/jfc/SwingSet2/SwingSet2.jar
-  java=$jre/bin/java
-  if [ "X$LP64" != "X" ] ; then
-    testjava="$jre/bin/${arch3}/java"
-  else
-    testjava="$jre/bin/java"
-  fi
-  mcount=$libabsdir/$arch5/libmcount.so
-
-  if [ ! -x $mcount ] ; then
-    echo $mcount is missing!
-    exit 1
-  fi
-
-  if [ "X$1" = "client" ] ; then
-    if [ "X$NO_SHARING" = "X" ] ; then
-      echo "Dumping shared file."
-      LD_PRELOAD=$mcount \
-      JDK_ALTERNATE_VM=jvm_profiled \
-  	    $testjava -Xshare:dump -Xint -XX:PermSize=16m -version 2> /dev/null
-      shared_client="-Xshare:on"
-      echo "Shared file dump completed."
-    else
-      shared_client="-Xshare:off"
-      echo "NO_SHARING defined, not using sharing."
-    fi
-  else
-    echo "Server:  no sharing" 
-    shared_server="-Xshare:off"
-  fi
-
-  testpath=$libabsdir/classes
-
-  reorder_file=$2
-  
-  rm -f ${reorder_file}
-  rm -f ${reorder_file}_tmp2
-  rm -f ${reorder_file}_tmp1
-
-  echo "data = R0x2000;"				> ${reorder_file}
-  echo "text = LOAD ?RXO;"				>> ${reorder_file}
-  echo ""						>>  ${reorder_file}
-  echo ""						>>  ${reorder_file}
-}
-
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-test_client() {
-
-  # Run each of a set of tests, extract the methods called,
-  # append the new functions to the reorder list.
-  #   $1 = "client"  or  "server"
-  #   $2 = name of reorder file to be generated.
-
-  echo "TEST_CLIENT $1 $2."
-  test_setup $1 $2
-  echo "TEST_CLIENT $1 $2."
-
-  for f in $tests ; do
-    echo Running test $f.
-    rm -f ${reorder_file}_tmp1
-    echo "# Test $f" >> ${reorder_file}
-
-    echo "Using LD_PRELOAD=$mcount"
-    echo $testjava ${shared_client} -classpath $testpath $f
-
-    LD_PRELOAD=$mcount \
-    JDK_ALTERNATE_VM=jvm_profiled \
-	    $testjava ${shared_client} -classpath $testpath $f 2> ${reorder_file}_tmp1
-
-    echo "Done."
-    sed -n -e '/^text:/p' ${reorder_file}_tmp1 > ${reorder_file}_tmp2
-    sed -e '/^text:/d' ${reorder_file}_tmp1
-    LD_LIBRARY_PATH=$lib/server \
-    $java -classpath $testpath Combine ${reorder_file} \
-	${reorder_file}_tmp2 \
-        > ${reorder_file}_tmp3
-    mv ${reorder_file}_tmp3 ${reorder_file}
-    rm -f ${reorder_file}_tmp2
-    rm -f ${reorder_file}_tmp1
-  done
-
-  # Run SwingSet, extract the methods called,
-  # append the new functions to the reorder list.
-
-  echo "# SwingSet" >> ${reorder_file}
-
-  echo ""
-  echo ""
-  echo "When SwingSet has finished drawing, " \
-       "you may terminate it (with your mouse)."
-  echo "Otherwise, it should be automatically terminated in 3 minutes."
-  echo ""
-  echo ""
-
-  echo "Using LD_PRELOAD=$mcount, JDK_ALTERNATE=jvm_profiled."
-  echo $testjava ${shared_client} -classpath $testpath MaxTime $swingset 60
-  LD_PRELOAD=$mcount \
-  JDK_ALTERNATE_VM=jvm_profiled \
-	  $testjava ${shared_client} -classpath $testpath MaxTime \
-		$swingset 60 2> ${reorder_file}_tmp1 
-
-  sed -n -e '/^text:/p' ${reorder_file}_tmp1 > ${reorder_file}_tmp2
-
-  LD_LIBRARY_PATH=$lib/server \
-  $java -server -classpath $testpath Combine ${reorder_file} ${reorder_file}_tmp2  \
-      > ${reorder_file}_tmp3
-  echo mv ${reorder_file}_tmp3 ${reorder_file}
-  mv ${reorder_file}_tmp3 ${reorder_file}
-  echo rm -f ${reorder_file}_tmp2
-  rm -f ${reorder_file}_tmp2
-  echo rm -f ${reorder_file}_tmp1
-  rm -f ${reorder_file}_tmp1
-}
-
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-test_server() {
-
-  # Run the JBB script, collecting data on the way.
-  #   $1 = "client"  or  "server"
-  #   $2 = name of reorder file to be generated.
-
-  echo "TEST_SERVER $1 $2."
-  test_setup $1 $2
-  echo "TEST_SERVER $1 $2."
-
-  echo Running JBB.
-
-  rm -f ${reorder_file}_tmp1
-  rm -f ${reorder_file}_tmp2
-  heap=200m
-
-  CLASSPATH=jbb.jar:jbb_no_precompile.jar:check.jar:reporter.jar
-
-    ( cd $jbb_dir; LD_PRELOAD=$mcount MCOUNT_ORDER_BY_COUNT=1 \
-        JDK_ALTERNATE_VM=jvm_profiled \
-        $testjava ${shared_server} -classpath $CLASSPATH -Xms${heap} -Xmx${heap} \
-	spec.jbb.JBBmain -propfile SPECjbb.props ) 2> ${reorder_file}_tmp1
-
-  sed -n -e '/^text:/p' ${reorder_file}_tmp1 > ${reorder_file}_tmp2
-  sed -e '/^text:/d' ${reorder_file}_tmp1
-  cat ${reorder_file}_tmp2		>> ${reorder_file}
-  rm -f ${reorder_file}_tmp2
-  rm -f ${reorder_file}_tmp1
-}
-
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-# Rename the old VMs, copy the new in, run the test, and put the
-# old one back.
-
-copy_and_test() {
-
-  #   $1 = "client"  or  "server"
-  #   $2 = name of reorder file to be generated.
-  #   $3 = profiled jvm to copy in
-
-  echo "COPY_AND_TEST ($1, $2, $3)."
-  #   $2 = name of reorder file to be generated.
-  #   $3 = profiled jvm to copy in
-
-  rm -rf $lib/jvm_profiled
-  mkdir $lib/jvm_profiled
-  cp $3 $lib/jvm_profiled
-  test_$1 $1 $2
-  rm -rf $lib/jvm_profiled
-}
-
-#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-
-# Check arguments:
-
-if [ $# != 3 ] ; then
-  echo ""
-  echo "Usage:"
-  echo "   sh  reorder.sh  <test_sdk_workspace>  <test_sdk>  <jbb_dir>"
-  echo ""
-  exit 1
-fi
-
-sdk_ws=$1
-if [ ! -r $sdk_ws/make/tools/reorder/Makefile ] ; then
-  echo ""
-  echo "test workspace "$sdk_ws" does not contain the reordering tools."
-  echo ""
-  exit 1
-fi
-
-sdk=$2
-jre=$sdk/jre
-
-# Set up architecture names as needed by various components.
-# Why couldn't we just use x86 for everything?
-
-# Arch name as used in JRE runtime	(eg. i386):
-#   .../jre/lib/${arch3}/server
-arch3=`uname -p`
-
-# Arch name as used in Hotspot build:	(eg. i486)
-#   /export/hotspot/make/solaris/solaris_${arch4}_compiler1
-arch4=$arch3
-
-# Arch name as used in SDK build	(eg. i586):
-#   /export/tiger/make/solaris-${arch3}
-arch5=$arch3
-
-# Tweak for 64-bit sparc builds.  At least they all agree.
-if [ $arch3 = sparc -a "X$LP64" != "X" ] ; then
-  arch3=sparcv9
-  arch4=sparcv9
-  arch5=sparcv9
-fi
-
-# Tweak for 64-bit i386 == amd64 builds.  At least they all agree.
-if [ $arch3 = i386 -a "X$LP64" != "X" ] ; then
-  arch3=amd64
-  arch4=amd64
-  arch5=amd64
-fi
-
-# Tweak for x86 builds. All different.
-if [ $arch3 = i386 ] ; then
-  arch4=i486
-  arch5=i586
-fi
-
-lib=$jre/lib/$arch3
-if [ ! -r $jre/lib/rt.jar ] ; then
-  echo ""
-  echo "test SDK "$sdk" is not a suitable SDK."
-  echo ""
-  exit 1
-fi
-
-jbb_dir=$3
-if [ ! -r $jbb_dir/jbb.jar ] ; then
-  echo ""
-  echo "jbb.jar not present in $jbb_dir"
-  echo ""
-  exit 1
-fi
-
-
-# Were profiled VMs built?
-
-if [ "X$LP64" != "X" ] ; then
-  if [ ! -r solaris_${arch4}_compiler2/profiled/libjvm.so ] ; then
-    echo ""
-    echo "Profiled builds of compiler2 are needed first."
-    echo ' -- build with  "make profiled PROFILE_PRODUCT=1" -- '
-    echo "<solaris_${arch4}_compiler2/profiled/libjvm.so>"
-    exit 1
-  fi
-else
-  if [    ! -r solaris_${arch4}_compiler1/profiled/libjvm.so  \
-       -o ! -r solaris_${arch4}_compiler2/profiled/libjvm.so ] ; then
-    echo ""
-    echo "Profiled builds of compiler1 and compiler2 are needed first."
-    echo ' -- build with  "make profiled{,1} PROFILE_PRODUCT=1" -- '
-    exit 1
-  fi
-fi
-
-
-# Compiler1 - not supported in 64-bit (b69 java launcher rejects it).
-
-if [ "X$LP64" = "X" ] ; then
-  #gnumake profiled1
-  echo Using profiled client VM.
-  echo
-  copy_and_test client \
-                reorder_COMPILER1_$arch4 \
-                solaris_${arch4}_compiler1/profiled/libjvm.so
-fi
-
-#gnumake profiled
-echo Using profiled server VM.
-echo
-copy_and_test server \
-              reorder_COMPILER2_$arch4 \
-              solaris_${arch4}_compiler2/profiled/libjvm.so
--- a/make/windows/create_obj_files.sh	Thu Sep 13 13:15:14 2012 -0700
+++ b/make/windows/create_obj_files.sh	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2010, 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
@@ -121,7 +121,7 @@
 ZERO_SPECIFIC_FILES="zero"
 
 # These files need to be excluded when building the kernel target.
-KERNEL_EXCLUDED_FILES="attachListener.cpp attachListener_windows.cpp dump.cpp dump_${Platform_arch_model}.cpp forte.cpp fprofiler.cpp heapDumper.cpp heapInspection.cpp jniCheck.cpp jvmtiCodeBlobEvents.cpp jvmtiExtensions.cpp jvmtiImpl.cpp jvmtiRawMonitor.cpp jvmtiTagMap.cpp jvmtiTrace.cpp restore.cpp serialize.cpp vmStructs.cpp g1MemoryPool.cpp psMemoryPool.cpp gcAdaptivePolicyCounters.cpp concurrentGCThread.cpp mutableNUMASpace.cpp allocationStats.cpp gSpaceCounters.cpp immutableSpace.cpp mutableSpace.cpp spaceCounters.cpp yieldingWorkgroup.cpp"
+KERNEL_EXCLUDED_FILES="attachListener.cpp attachListener_windows.cpp metaspaceShared_${Platform_arch_model}.cpp forte.cpp fprofiler.cpp heapDumper.cpp heapInspection.cpp jniCheck.cpp jvmtiCodeBlobEvents.cpp jvmtiExtensions.cpp jvmtiImpl.cpp jvmtiRawMonitor.cpp jvmtiTagMap.cpp jvmtiTrace.cpp vmStructs.cpp g1MemoryPool.cpp psMemoryPool.cpp gcAdaptivePolicyCounters.cpp concurrentGCThread.cpp metaspaceShared.cpp mutableNUMASpace.cpp allocationStats.cpp gSpaceCounters.cpp immutableSpace.cpp mutableSpace.cpp spaceCounters.cpp yieldingWorkgroup.cpp"
 
 # Always exclude these.
 Src_Files_EXCLUDE="jsig.c jvmtiEnvRecommended.cpp jvmtiEnvStub.cpp"
--- a/src/cpu/sparc/vm/assembler_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/assembler_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -52,11 +52,11 @@
 
 // Convert the raw encoding form into the form expected by the
 // constructor for Address.
-Address Address::make_raw(int base, int index, int scale, int disp, bool disp_is_oop) {
+Address Address::make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc) {
   assert(scale == 0, "not supported");
   RelocationHolder rspec;
-  if (disp_is_oop) {
-    rspec = Relocation::spec_simple(relocInfo::oop_type);
+  if (disp_reloc != relocInfo::none) {
+    rspec = Relocation::spec_simple(disp_reloc);
   }
 
   Register rindex = as_Register(index);
@@ -1250,12 +1250,11 @@
 }
 
 
-void MacroAssembler::get_vm_result_2(Register oop_result) {
+void MacroAssembler::get_vm_result_2(Register metadata_result) {
   verify_thread();
   Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
-  ld_ptr(vm_result_addr_2, oop_result);
+  ld_ptr(vm_result_addr_2, metadata_result);
   st_ptr(G0, vm_result_addr_2);
-  verify_oop(oop_result);
 }
 
 
@@ -1284,6 +1283,17 @@
 }
 
 
+void MacroAssembler::ic_call(address entry, bool emit_delay) {
+  RelocationHolder rspec = virtual_call_Relocation::spec(pc());
+  patchable_set((intptr_t)Universe::non_oop_word(), G5_inline_cache_reg);
+  relocate(rspec);
+  call(entry, relocInfo::none);
+  if (emit_delay) {
+    delayed()->nop();
+  }
+}
+
+
 void MacroAssembler::card_table_write(jbyte* byte_map_base,
                                       Register tmp, Register obj) {
 #ifdef _LP64
@@ -1612,15 +1622,24 @@
 }
 
 
-AddressLiteral MacroAssembler::allocate_oop_address(jobject obj) {
-  assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
-  int oop_index = oop_recorder()->allocate_index(obj);
-  return AddressLiteral(obj, oop_Relocation::spec(oop_index));
+AddressLiteral MacroAssembler::allocate_metadata_address(Metadata* obj) {
+  assert(oop_recorder() != NULL, "this assembler needs a Recorder");
+  int index = oop_recorder()->allocate_metadata_index(obj);
+  RelocationHolder rspec = metadata_Relocation::spec(index);
+  return AddressLiteral((address)obj, rspec);
+}
+
+AddressLiteral MacroAssembler::constant_metadata_address(Metadata* obj) {
+  assert(oop_recorder() != NULL, "this assembler needs a Recorder");
+  int index = oop_recorder()->find_index(obj);
+  RelocationHolder rspec = metadata_Relocation::spec(index);
+  return AddressLiteral((address)obj, rspec);
 }
 
 
 AddressLiteral MacroAssembler::constant_oop_address(jobject obj) {
   assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
+  assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop");
   int oop_index = oop_recorder()->find_index(obj);
   return AddressLiteral(obj, oop_Relocation::spec(oop_index));
 }
@@ -1906,22 +1925,14 @@
     br_null_short(O0_obj, pn, succeed);
   }
 
-  // Check the klassOop of this object for being in the right area of memory.
+  // Check the Klass* of this object for being in the right area of memory.
   // Cannot do the load in the delay above slot in case O0 is null
   load_klass(O0_obj, O0_obj);
-  // assert((klass & klass_mask) == klass_bits);
-  if( Universe::verify_klass_mask() != Universe::verify_oop_mask() )
-    set(Universe::verify_klass_mask(), O2_mask);
-  if( Universe::verify_klass_bits() != Universe::verify_oop_bits() )
-    set(Universe::verify_klass_bits(), O3_bits);
-  and3(O0_obj, O2_mask, O4_temp);
-  cmp_and_brx_short(O4_temp, O3_bits, notEqual, pn, fail);
-  // Check the klass's klass
-  load_klass(O0_obj, O0_obj);
-  and3(O0_obj, O2_mask, O4_temp);
-  cmp(O4_temp, O3_bits);
-  brx(notEqual, false, pn, fail);
-  delayed()->wrccr( O5_save_flags ); // Restore CCR's
+  // assert((klass != NULL)
+  br_null_short(O0_obj, pn, fail);
+  // TODO: Future assert that klass is lower 4g memory for UseCompressedKlassPointers
+
+  wrccr( O5_save_flags ); // Restore CCR's
 
   // mark upper end of faulting range
   _verify_oop_implicit_branch[1] = pc();
@@ -2065,26 +2076,28 @@
 
 void MacroAssembler::debug(char* msg, RegistersForDebugging* regs) {
   if ( ShowMessageBoxOnError ) {
-      JavaThreadState saved_state = JavaThread::current()->thread_state();
-      JavaThread::current()->set_thread_state(_thread_in_vm);
+    JavaThread* thread = JavaThread::current();
+    JavaThreadState saved_state = thread->thread_state();
+    thread->set_thread_state(_thread_in_vm);
       {
         // In order to get locks work, we need to fake a in_VM state
         ttyLocker ttyl;
         ::tty->print_cr("EXECUTION STOPPED: %s\n", msg);
         if (CountBytecodes || TraceBytecodes || StopInterpreterAt) {
-          ::tty->print_cr("Interpreter::bytecode_counter = %d", BytecodeCounter::counter_value());
+        BytecodeCounter::print();
         }
         if (os::message_box(msg, "Execution stopped, print registers?"))
           regs->print(::tty);
       }
+    BREAKPOINT;
       ThreadStateTransition::transition(JavaThread::current(), _thread_in_vm, saved_state);
   }
-  else
+  else {
      ::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
+  }
   assert(false, err_msg("DEBUG MESSAGE: %s", msg));
 }
 
-
 #ifndef PRODUCT
 void MacroAssembler::test() {
   ResourceMark rm;
@@ -2931,11 +2944,11 @@
          "caller must use same register for non-constant itable index as for method");
 
   // Compute start of first itableOffsetEntry (which is at the end of the vtable)
-  int vtable_base = instanceKlass::vtable_start_offset() * wordSize;
+  int vtable_base = InstanceKlass::vtable_start_offset() * wordSize;
   int scan_step   = itableOffsetEntry::size() * wordSize;
   int vte_size    = vtableEntry::size() * wordSize;
 
-  lduw(recv_klass, instanceKlass::vtable_length_offset() * wordSize, scan_temp);
+  lduw(recv_klass, InstanceKlass::vtable_length_offset() * wordSize, scan_temp);
   // %%% We should store the aligned, prescaled offset in the klassoop.
   // Then the next several instructions would fold away.
 
@@ -2950,7 +2963,7 @@
   add(scan_temp, itb_offset, scan_temp);
   if (round_to_unit != 0) {
     // Round up to align_object_offset boundary
-    // see code for instanceKlass::start_of_itable!
+    // see code for InstanceKlass::start_of_itable!
     // Was: round_to(scan_temp, BytesPerLong);
     // Hoisted: add(scan_temp, BytesPerLong-1, scan_temp);
     and3(scan_temp, -round_to_unit, scan_temp);
@@ -3011,7 +3024,7 @@
                                            Register method_result) {
   assert_different_registers(recv_klass, method_result, vtable_index.register_or_noreg());
   Register sethi_temp = method_result;
-  const int base = (instanceKlass::vtable_start_offset() * wordSize +
+  const int base = (InstanceKlass::vtable_start_offset() * wordSize +
                     // method pointer offset within the vtable entry:
                     vtableEntry::method_offset_in_bytes());
   RegisterOrConstant vtable_offset = vtable_index;
@@ -3212,46 +3225,28 @@
   // We will consult the secondary-super array.
   ld_ptr(sub_klass, ss_offset, scan_temp);
 
-  // Compress superclass if necessary.
   Register search_key = super_klass;
-  bool decode_super_klass = false;
-  if (UseCompressedOops) {
-    if (coop_reg != noreg) {
-      encode_heap_oop_not_null(super_klass, coop_reg);
-      search_key = coop_reg;
-    } else {
-      encode_heap_oop_not_null(super_klass);
-      decode_super_klass = true; // scarce temps!
-    }
-    // The superclass is never null; it would be a basic system error if a null
-    // pointer were to sneak in here.  Note that we have already loaded the
-    // Klass::super_check_offset from the super_klass in the fast path,
-    // so if there is a null in that register, we are already in the afterlife.
-  }
 
   // Load the array length.  (Positive movl does right thing on LP64.)
-  lduw(scan_temp, arrayOopDesc::length_offset_in_bytes(), count_temp);
+  lduw(scan_temp, Array<Klass*>::length_offset_in_bytes(), count_temp);
 
   // Check for empty secondary super list
   tst(count_temp);
 
+  // In the array of super classes elements are pointer sized.
+  int element_size = wordSize;
+
   // Top of search loop
   bind(L_loop);
   br(Assembler::equal, false, Assembler::pn, *L_failure);
-  delayed()->add(scan_temp, heapOopSize, scan_temp);
-  assert(heapOopSize != 0, "heapOopSize should be initialized");
+  delayed()->add(scan_temp, element_size, scan_temp);
 
   // Skip the array header in all array accesses.
-  int elem_offset = arrayOopDesc::base_offset_in_bytes(T_OBJECT);
-  elem_offset -= heapOopSize;   // the scan pointer was pre-incremented also
+  int elem_offset = Array<Klass*>::base_offset_in_bytes();
+  elem_offset -= element_size;   // the scan pointer was pre-incremented also
 
   // Load next super to check
-  if (UseCompressedOops) {
-    // Don't use load_heap_oop; we don't want to decode the element.
-    lduw(   scan_temp, elem_offset, scratch_reg );
-  } else {
     ld_ptr( scan_temp, elem_offset, scratch_reg );
-  }
 
   // Look for Rsuper_klass on Rsub_klass's secondary super-class-overflow list
   cmp(scratch_reg, search_key);
@@ -3260,9 +3255,6 @@
   brx(Assembler::notEqual, false, Assembler::pn, L_loop);
   delayed()->deccc(count_temp); // decrement trip counter in delay slot
 
-  // Falling out the bottom means we found a hit; we ARE a subtype
-  if (decode_super_klass) decode_heap_oop(super_klass);
-
   // Success.  Cache the super we found and proceed in triumph.
   st_ptr(super_klass, sub_klass, sc_offset);
 
@@ -4658,7 +4650,7 @@
   // The number of bytes in this code is used by
   // MachCallDynamicJavaNode::ret_addr_offset()
   // if this changes, change that.
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     lduw(src_oop, oopDesc::klass_offset_in_bytes(), klass);
     decode_heap_oop_not_null(klass);
   } else {
@@ -4667,7 +4659,7 @@
 }
 
 void MacroAssembler::store_klass(Register klass, Register dst_oop) {
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     assert(dst_oop != klass, "not enough registers");
     encode_heap_oop_not_null(klass);
     st(klass, dst_oop, oopDesc::klass_offset_in_bytes());
@@ -4677,7 +4669,7 @@
 }
 
 void MacroAssembler::store_klass_gap(Register s, Register d) {
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     assert(s != d, "not enough registers");
     st(s, d, oopDesc::klass_gap_offset_in_bytes());
   }
--- a/src/cpu/sparc/vm/assembler_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/assembler_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -152,7 +152,7 @@
                                                        // is added and removed as needed in the frame code.
 // Interface to signature handler
 REGISTER_DECLARATION(Register, Llocals          , L7); // pointer to locals for signature handler
-REGISTER_DECLARATION(Register, Lmethod          , L6); // methodOop when calling signature handler
+REGISTER_DECLARATION(Register, Lmethod          , L6); // Method* when calling signature handler
 
 #else
 REGISTER_DECLARATION(Register, Lesp             , L0); // expression stack pointer
@@ -351,7 +351,7 @@
 
   // Convert the raw encoding form into the form expected by the
   // constructor for Address.
-  static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
+  static Address make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc);
 
   friend class Assembler;
 };
@@ -438,11 +438,11 @@
       _rspec(rspec_from_rtype(rtype, (address) addr)) {}
 #endif
 
-  AddressLiteral(oop addr, relocInfo::relocType rtype = relocInfo::none)
+  AddressLiteral(Metadata* addr, relocInfo::relocType rtype = relocInfo::none)
     : _address((address) addr),
       _rspec(rspec_from_rtype(rtype, (address) addr)) {}
 
-  AddressLiteral(oop* addr, relocInfo::relocType rtype = relocInfo::none)
+  AddressLiteral(Metadata** addr, relocInfo::relocType rtype = relocInfo::none)
     : _address((address) addr),
       _rspec(rspec_from_rtype(rtype, (address) addr)) {}
 
@@ -478,7 +478,7 @@
 
  public:
   ExternalAddress(address target) : AddressLiteral(target, reloc_for_target(          target)) {}
-  ExternalAddress(oop*    target) : AddressLiteral(target, reloc_for_target((address) target)) {}
+  ExternalAddress(Metadata** target) : AddressLiteral(target, reloc_for_target((address) target)) {}
 };
 
 inline Address RegisterImpl::address_in_saved_window() const {
@@ -2311,11 +2311,14 @@
   void call_VM_leaf(Register thread_cache, address entry_point, Register arg_1, Register arg_2, Register arg_3);
 
   void get_vm_result  (Register oop_result);
-  void get_vm_result_2(Register oop_result);
+  void get_vm_result_2(Register metadata_result);
 
   // vm result is currently getting hijacked to for oop preservation
   void set_vm_result(Register oop_result);
 
+  // Emit the CompiledIC call idiom
+  void ic_call(address entry, bool emit_delay = true);
+
   // if call_VM_base was called with check_exceptions=false, then call
   // check_and_forward_exception to handle exceptions when it is safe
   void check_and_forward_exception(Register scratch_reg);
@@ -2372,8 +2375,14 @@
   void _verify_oop(Register reg, const char * msg, const char * file, int line);
   void _verify_oop_addr(Address addr, const char * msg, const char * file, int line);
 
+  // TODO: verify_method and klass metadata (compare against vptr?)
+  void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
+  void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
+
 #define verify_oop(reg) _verify_oop(reg, "broken oop " #reg, __FILE__, __LINE__)
 #define verify_oop_addr(addr) _verify_oop_addr(addr, "broken oop addr ", __FILE__, __LINE__)
+#define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
+#define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
 
         // only if +VerifyOops
   void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
@@ -2392,6 +2401,13 @@
   inline void    set_oop_constant    (jobject obj, Register d);              // uses constant_oop_address
   inline void    set_oop             (const AddressLiteral& obj_addr, Register d); // same as load_address
 
+  // metadata in code that we have to keep track of
+  AddressLiteral allocate_metadata_address(Metadata* obj); // allocate_index
+  AddressLiteral constant_metadata_address(Metadata* obj); // find_index
+  inline void    set_metadata             (Metadata* obj, Register d);              // uses allocate_metadata_address
+  inline void    set_metadata_constant    (Metadata* obj, Register d);              // uses constant_metadata_address
+  inline void    set_metadata             (const AddressLiteral& obj_addr, Register d); // same as load_address
+
   void set_narrow_oop( jobject obj, Register d );
 
   // nop padding
--- a/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/assembler_sparc.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -760,6 +760,19 @@
 }
 
 
+inline void MacroAssembler::set_metadata(Metadata* obj, Register d) {
+  set_metadata(allocate_metadata_address(obj), d);
+}
+
+inline void MacroAssembler::set_metadata_constant(Metadata* obj, Register d) {
+  set_metadata(constant_metadata_address(obj), d);
+}
+
+inline void MacroAssembler::set_metadata(const AddressLiteral& obj_addr, Register d) {
+  assert(obj_addr.rspec().type() == relocInfo::metadata_type, "must be a metadata reloc");
+  set(obj_addr, d);
+}
+
 inline void MacroAssembler::set_oop(jobject obj, Register d) {
   set_oop(allocate_oop_address(obj), d);
 }
--- a/src/cpu/sparc/vm/bytecodeInterpreter_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/bytecodeInterpreter_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -29,8 +29,8 @@
 #include "interpreter/bytecodeInterpreter.inline.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interpreterRuntime.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -268,7 +268,22 @@
 #ifdef ASSERT
     address start = __ pc();
 #endif
-    AddressLiteral addrlit(NULL, oop_Relocation::spec(_oop_index));
+    AddressLiteral addrlit(NULL, metadata_Relocation::spec(_index));
+    __ patchable_set(addrlit, _obj);
+
+#ifdef ASSERT
+    for (int i = 0; i < _bytes_to_copy; i++) {
+      address ptr = (address)(_pc_start + i);
+      int a_byte = (*ptr) & 0xFF;
+      assert(a_byte == *start++, "should be the same code");
+    }
+#endif
+  } else if (_id == load_mirror_id) {
+    // produce a copy of the load mirror instruction for use by the being initialized case
+#ifdef ASSERT
+    address start = __ pc();
+#endif
+    AddressLiteral addrlit(NULL, oop_Relocation::spec(_index));
     __ patchable_set(addrlit, _obj);
 
 #ifdef ASSERT
@@ -289,7 +304,7 @@
 
   address end_of_patch = __ pc();
   int bytes_to_skip = 0;
-  if (_id == load_klass_id) {
+  if (_id == load_mirror_id) {
     int offset = __ offset();
     if (CommentedAssembly) {
       __ block_comment(" being_initialized check");
@@ -300,9 +315,9 @@
     // check that this code is being executed by the initializing
     // thread.
     assert(_obj != noreg, "must be a valid register");
-    assert(_oop_index >= 0, "must have oop index");
-    __ load_heap_oop(_obj, java_lang_Class::klass_offset_in_bytes(), G3);
-    __ ld_ptr(G3, in_bytes(instanceKlass::init_thread_offset()), G3);
+    assert(_index >= 0, "must have oop index");
+    __ ld_ptr(_obj, java_lang_Class::klass_offset_in_bytes(), G3);
+    __ ld_ptr(G3, in_bytes(InstanceKlass::init_thread_offset()), G3);
     __ cmp_and_brx_short(G2_thread, G3, Assembler::notEqual, Assembler::pn, call_patch);
 
     // load_klass patches may execute the patched code before it's
@@ -335,9 +350,11 @@
   address entry = __ pc();
   NativeGeneralJump::insert_unconditional((address)_pc_start, entry);
   address target = NULL;
+  relocInfo::relocType reloc_type = relocInfo::none;
   switch (_id) {
     case access_field_id:  target = Runtime1::entry_for(Runtime1::access_field_patching_id); break;
-    case load_klass_id:    target = Runtime1::entry_for(Runtime1::load_klass_patching_id); break;
+    case load_klass_id:    target = Runtime1::entry_for(Runtime1::load_klass_patching_id); reloc_type = relocInfo::metadata_type; break;
+    case load_mirror_id:   target = Runtime1::entry_for(Runtime1::load_mirror_patching_id); reloc_type = relocInfo::oop_type; break;
     default: ShouldNotReachHere();
   }
   __ bind(call_patch);
@@ -351,15 +368,15 @@
   ce->add_call_info_here(_info);
   __ br(Assembler::always, false, Assembler::pt, _patch_site_entry);
   __ delayed()->nop();
-  if (_id == load_klass_id) {
+  if (_id == load_klass_id || _id == load_mirror_id) {
     CodeSection* cs = __ code_section();
     address pc = (address)_pc_start;
     RelocIterator iter(cs, pc, pc + 1);
-    relocInfo::change_reloc_info_for_address(&iter, (address) pc, relocInfo::oop_type, relocInfo::none);
+    relocInfo::change_reloc_info_for_address(&iter, (address) pc, reloc_type, relocInfo::none);
 
     pc = (address)(_pc_start + NativeMovConstReg::add_offset);
     RelocIterator iter2(cs, pc, pc+1);
-    relocInfo::change_reloc_info_for_address(&iter2, (address) pc, relocInfo::oop_type, relocInfo::none);
+    relocInfo::change_reloc_info_for_address(&iter2, (address) pc, reloc_type, relocInfo::none);
   }
 
 }
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -147,6 +147,39 @@
 LIR_Opr FrameMap::I6_oop_opr;
 LIR_Opr FrameMap::I7_oop_opr;
 
+LIR_Opr FrameMap::G0_metadata_opr;
+LIR_Opr FrameMap::G1_metadata_opr;
+LIR_Opr FrameMap::G2_metadata_opr;
+LIR_Opr FrameMap::G3_metadata_opr;
+LIR_Opr FrameMap::G4_metadata_opr;
+LIR_Opr FrameMap::G5_metadata_opr;
+LIR_Opr FrameMap::G6_metadata_opr;
+LIR_Opr FrameMap::G7_metadata_opr;
+LIR_Opr FrameMap::O0_metadata_opr;
+LIR_Opr FrameMap::O1_metadata_opr;
+LIR_Opr FrameMap::O2_metadata_opr;
+LIR_Opr FrameMap::O3_metadata_opr;
+LIR_Opr FrameMap::O4_metadata_opr;
+LIR_Opr FrameMap::O5_metadata_opr;
+LIR_Opr FrameMap::O6_metadata_opr;
+LIR_Opr FrameMap::O7_metadata_opr;
+LIR_Opr FrameMap::L0_metadata_opr;
+LIR_Opr FrameMap::L1_metadata_opr;
+LIR_Opr FrameMap::L2_metadata_opr;
+LIR_Opr FrameMap::L3_metadata_opr;
+LIR_Opr FrameMap::L4_metadata_opr;
+LIR_Opr FrameMap::L5_metadata_opr;
+LIR_Opr FrameMap::L6_metadata_opr;
+LIR_Opr FrameMap::L7_metadata_opr;
+LIR_Opr FrameMap::I0_metadata_opr;
+LIR_Opr FrameMap::I1_metadata_opr;
+LIR_Opr FrameMap::I2_metadata_opr;
+LIR_Opr FrameMap::I3_metadata_opr;
+LIR_Opr FrameMap::I4_metadata_opr;
+LIR_Opr FrameMap::I5_metadata_opr;
+LIR_Opr FrameMap::I6_metadata_opr;
+LIR_Opr FrameMap::I7_metadata_opr;
+
 LIR_Opr FrameMap::SP_opr;
 LIR_Opr FrameMap::FP_opr;
 
@@ -310,6 +343,39 @@
   I6_oop_opr = as_oop_opr(I6);
   I7_oop_opr = as_oop_opr(I7);
 
+  G0_metadata_opr = as_metadata_opr(G0);
+  G1_metadata_opr = as_metadata_opr(G1);
+  G2_metadata_opr = as_metadata_opr(G2);
+  G3_metadata_opr = as_metadata_opr(G3);
+  G4_metadata_opr = as_metadata_opr(G4);
+  G5_metadata_opr = as_metadata_opr(G5);
+  G6_metadata_opr = as_metadata_opr(G6);
+  G7_metadata_opr = as_metadata_opr(G7);
+  O0_metadata_opr = as_metadata_opr(O0);
+  O1_metadata_opr = as_metadata_opr(O1);
+  O2_metadata_opr = as_metadata_opr(O2);
+  O3_metadata_opr = as_metadata_opr(O3);
+  O4_metadata_opr = as_metadata_opr(O4);
+  O5_metadata_opr = as_metadata_opr(O5);
+  O6_metadata_opr = as_metadata_opr(O6);
+  O7_metadata_opr = as_metadata_opr(O7);
+  L0_metadata_opr = as_metadata_opr(L0);
+  L1_metadata_opr = as_metadata_opr(L1);
+  L2_metadata_opr = as_metadata_opr(L2);
+  L3_metadata_opr = as_metadata_opr(L3);
+  L4_metadata_opr = as_metadata_opr(L4);
+  L5_metadata_opr = as_metadata_opr(L5);
+  L6_metadata_opr = as_metadata_opr(L6);
+  L7_metadata_opr = as_metadata_opr(L7);
+  I0_metadata_opr = as_metadata_opr(I0);
+  I1_metadata_opr = as_metadata_opr(I1);
+  I2_metadata_opr = as_metadata_opr(I2);
+  I3_metadata_opr = as_metadata_opr(I3);
+  I4_metadata_opr = as_metadata_opr(I4);
+  I5_metadata_opr = as_metadata_opr(I5);
+  I6_metadata_opr = as_metadata_opr(I6);
+  I7_metadata_opr = as_metadata_opr(I7);
+
   FP_opr = as_pointer_opr(FP);
   SP_opr = as_pointer_opr(SP);
 
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -104,6 +104,39 @@
   static LIR_Opr I6_oop_opr;
   static LIR_Opr I7_oop_opr;
 
+  static LIR_Opr G0_metadata_opr;
+  static LIR_Opr G1_metadata_opr;
+  static LIR_Opr G2_metadata_opr;
+  static LIR_Opr G3_metadata_opr;
+  static LIR_Opr G4_metadata_opr;
+  static LIR_Opr G5_metadata_opr;
+  static LIR_Opr G6_metadata_opr;
+  static LIR_Opr G7_metadata_opr;
+  static LIR_Opr O0_metadata_opr;
+  static LIR_Opr O1_metadata_opr;
+  static LIR_Opr O2_metadata_opr;
+  static LIR_Opr O3_metadata_opr;
+  static LIR_Opr O4_metadata_opr;
+  static LIR_Opr O5_metadata_opr;
+  static LIR_Opr O6_metadata_opr;
+  static LIR_Opr O7_metadata_opr;
+  static LIR_Opr L0_metadata_opr;
+  static LIR_Opr L1_metadata_opr;
+  static LIR_Opr L2_metadata_opr;
+  static LIR_Opr L3_metadata_opr;
+  static LIR_Opr L4_metadata_opr;
+  static LIR_Opr L5_metadata_opr;
+  static LIR_Opr L6_metadata_opr;
+  static LIR_Opr L7_metadata_opr;
+  static LIR_Opr I0_metadata_opr;
+  static LIR_Opr I1_metadata_opr;
+  static LIR_Opr I2_metadata_opr;
+  static LIR_Opr I3_metadata_opr;
+  static LIR_Opr I4_metadata_opr;
+  static LIR_Opr I5_metadata_opr;
+  static LIR_Opr I6_metadata_opr;
+  static LIR_Opr I7_metadata_opr;
+
   static LIR_Opr in_long_opr;
   static LIR_Opr out_long_opr;
   static LIR_Opr g1_long_single_opr;
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -447,9 +447,12 @@
 
   if (compilation()->env()->dtrace_method_probes()) {
     __ mov(G2_thread, O0);
-    jobject2reg(method()->constant_encoding(), O1);
+    __ save_thread(I1); // need to preserve thread in G2 across
+                        // runtime call
+    metadata2reg(method()->constant_encoding(), O1);
     __ call(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), relocInfo::runtime_call_type);
     __ delayed()->nop();
+    __ restore_thread(I1);
   }
 
   if (method()->is_synchronized() || compilation()->env()->dtrace_method_probes()) {
@@ -502,6 +505,7 @@
     __ set(NULL_WORD, reg);
   } else {
     int oop_index = __ oop_recorder()->find_index(o);
+    assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(o)), "should be real oop");
     RelocationHolder rspec = oop_Relocation::spec(oop_index);
     __ set(NULL_WORD, reg, rspec); // Will be set when the nmethod is created
   }
@@ -509,9 +513,9 @@
 
 
 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo *info) {
-  // Allocate a new index in oop table to hold the oop once it's been patched
-  int oop_index = __ oop_recorder()->allocate_index((jobject)NULL);
-  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, oop_index);
+  // Allocate a new index in table to hold the object once it's been patched
+  int oop_index = __ oop_recorder()->allocate_oop_index(NULL);
+  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_mirror_id, oop_index);
 
   AddressLiteral addrlit(NULL, oop_Relocation::spec(oop_index));
   assert(addrlit.rspec().type() == relocInfo::oop_type, "must be an oop reloc");
@@ -524,6 +528,24 @@
 }
 
 
+void LIR_Assembler::metadata2reg(Metadata* o, Register reg) {
+  __ set_metadata_constant(o, reg);
+}
+
+void LIR_Assembler::klass2reg_with_patching(Register reg, CodeEmitInfo *info) {
+  // Allocate a new index in table to hold the klass once it's been patched
+  int index = __ oop_recorder()->allocate_metadata_index(NULL);
+  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id, index);
+  AddressLiteral addrlit(NULL, metadata_Relocation::spec(index));
+  assert(addrlit.rspec().type() == relocInfo::metadata_type, "must be an metadata reloc");
+  // It may not seem necessary to use a sethi/add pair to load a NULL into dest, but the
+  // NULL will be dynamically patched later and the patched value may be large.  We must
+  // therefore generate the sethi/add as a placeholders
+  __ patchable_set(addrlit, reg);
+
+  patching_epilog(patch, lir_patch_normal, reg, info);
+}
+
 void LIR_Assembler::emit_op3(LIR_Op3* op) {
   Register Rdividend = op->in_opr1()->as_register();
   Register Rdivisor  = noreg;
@@ -768,10 +790,7 @@
 
 
 void LIR_Assembler::ic_call(LIR_OpJavaCall* op) {
-  RelocationHolder rspec = virtual_call_Relocation::spec(pc());
-  __ set_oop((jobject)Universe::non_oop_word(), G5_inline_cache_reg);
-  __ relocate(rspec);
-  __ call(op->addr(), relocInfo::none);
+  __ ic_call(op->addr(), false);
   // The peephole pass fills the delay slot, add_call_info is done in
   // LIR_Assembler::emit_delay.
 }
@@ -788,7 +807,7 @@
     // ld_ptr, set_hi, set
     __ ld_ptr(G3_scratch, G5_method, G5_method);
   }
-  __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3_scratch);
+  __ ld_ptr(G5_method, Method::from_compiled_offset(), G3_scratch);
   __ callr(G3_scratch, G0);
   // the peephole pass fills the delay slot
 }
@@ -827,6 +846,7 @@
 #endif
         break;
       case T_ADDRESS:
+      case T_METADATA:
         __ st_ptr(from_reg->as_register(), base, offset);
         break;
       case T_ARRAY : // fall through
@@ -949,6 +969,7 @@
 #endif
         }
         break;
+      case T_METADATA:
       case T_ADDRESS:  __ ld_ptr(base, offset, to_reg->as_register()); break;
       case T_ARRAY : // fall through
       case T_OBJECT:
@@ -1227,6 +1248,16 @@
       }
       break;
 
+    case T_METADATA:
+      {
+        if (patch_code == lir_patch_none) {
+          metadata2reg(c->as_metadata(), to_reg->as_register());
+        } else {
+          klass2reg_with_patching(to_reg->as_register(), info);
+        }
+      }
+      break;
+
     case T_FLOAT:
       {
         address const_addr = __ float_constant(c->as_jfloat());
@@ -1340,6 +1371,7 @@
 void LIR_Assembler::mem2reg(LIR_Opr src_opr, LIR_Opr dest, BasicType type,
                             LIR_PatchCode patch_code, CodeEmitInfo* info, bool wide, bool unaligned) {
 
+  assert(type != T_METADATA, "load of metadata ptr not supported");
   LIR_Address* addr = src_opr->as_address_ptr();
   LIR_Opr to_reg = dest;
 
@@ -1487,6 +1519,7 @@
 void LIR_Assembler::reg2mem(LIR_Opr from_reg, LIR_Opr dest, BasicType type,
                             LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack,
                             bool wide, bool unaligned) {
+  assert(type != T_METADATA, "store of metadata ptr not supported");
   LIR_Address* addr = dest->as_address_ptr();
 
   Register src = addr->base()->as_pointer_register();
@@ -1594,7 +1627,7 @@
   int start = __ offset();
   __ relocate(static_stub_Relocation::spec(call_pc));
 
-  __ set_oop(NULL, G5);
+  __ set_metadata(NULL, G5);
   // must be set to -1 at code generation time
   AddressLiteral addrlit(-1);
   __ jump_to(addrlit, G3);
@@ -2051,7 +2084,6 @@
   __ delayed()->nop();
 }
 
-
 void LIR_Assembler::emit_arraycopy(LIR_OpArrayCopy* op) {
   Register src = op->src()->as_register();
   Register dst = op->dst()->as_register();
@@ -2169,7 +2201,7 @@
     // We don't know the array types are compatible
     if (basic_type != T_OBJECT) {
       // Simple test for basic type arrays
-      if (UseCompressedOops) {
+      if (UseCompressedKlassPointers) {
         // We don't need decode because we just need to compare
         __ lduw(src, oopDesc::klass_offset_in_bytes(), tmp);
         __ lduw(dst, oopDesc::klass_offset_in_bytes(), tmp2);
@@ -2302,8 +2334,8 @@
     // subtype which we can't check or src is the same array as dst
     // but not necessarily exactly of type default_type.
     Label known_ok, halt;
-    jobject2reg(op->expected_type()->constant_encoding(), tmp);
-    if (UseCompressedOops) {
+    metadata2reg(op->expected_type()->constant_encoding(), tmp);
+    if (UseCompressedKlassPointers) {
       // tmp holds the default type. It currently comes uncompressed after the
       // load of a constant, so encode it.
       __ encode_heap_oop(tmp);
@@ -2468,10 +2500,10 @@
          op->klass()->as_register() == G5, "must be");
   if (op->init_check()) {
     __ ldub(op->klass()->as_register(),
-          in_bytes(instanceKlass::init_state_offset()),
+          in_bytes(InstanceKlass::init_state_offset()),
           op->tmp1()->as_register());
     add_debug_info_for_null_check_here(op->stub()->info());
-    __ cmp(op->tmp1()->as_register(), instanceKlass::fully_initialized);
+    __ cmp(op->tmp1()->as_register(), InstanceKlass::fully_initialized);
     __ br(Assembler::notEqual, false, Assembler::pn, *op->stub()->entry());
     __ delayed()->nop();
   }
@@ -2598,7 +2630,7 @@
     __ br_notnull_short(obj, Assembler::pn, not_null);
     Register mdo      = k_RInfo;
     Register data_val = Rtmp1;
-    jobject2reg(md->constant_encoding(), mdo);
+    metadata2reg(md->constant_encoding(), mdo);
     if (mdo_offset_bias > 0) {
       __ set(mdo_offset_bias, data_val);
       __ add(mdo, data_val, mdo);
@@ -2622,9 +2654,9 @@
   // patching may screw with our temporaries on sparc,
   // so let's do it before loading the class
   if (k->is_loaded()) {
-    jobject2reg(k->constant_encoding(), k_RInfo);
+    metadata2reg(k->constant_encoding(), k_RInfo);
   } else {
-    jobject2reg_with_patching(k_RInfo, op->info_for_patch());
+    klass2reg_with_patching(k_RInfo, op->info_for_patch());
   }
   assert(obj != k_RInfo, "must be different");
 
@@ -2667,7 +2699,7 @@
     Register mdo  = klass_RInfo, recv = k_RInfo, tmp1 = Rtmp1;
     assert_different_registers(obj, mdo, recv, tmp1);
     __ bind(profile_cast_success);
-    jobject2reg(md->constant_encoding(), mdo);
+    metadata2reg(md->constant_encoding(), mdo);
     if (mdo_offset_bias > 0) {
       __ set(mdo_offset_bias, tmp1);
       __ add(mdo, tmp1, mdo);
@@ -2679,7 +2711,7 @@
     __ delayed()->nop();
     // Cast failure case
     __ bind(profile_cast_failure);
-    jobject2reg(md->constant_encoding(), mdo);
+    metadata2reg(md->constant_encoding(), mdo);
     if (mdo_offset_bias > 0) {
       __ set(mdo_offset_bias, tmp1);
       __ add(mdo, tmp1, mdo);
@@ -2724,7 +2756,7 @@
       __ br_notnull_short(value, Assembler::pn, not_null);
       Register mdo      = k_RInfo;
       Register data_val = Rtmp1;
-      jobject2reg(md->constant_encoding(), mdo);
+      metadata2reg(md->constant_encoding(), mdo);
       if (mdo_offset_bias > 0) {
         __ set(mdo_offset_bias, data_val);
         __ add(mdo, data_val, mdo);
@@ -2760,7 +2792,7 @@
       Register mdo  = klass_RInfo, recv = k_RInfo, tmp1 = Rtmp1;
       assert_different_registers(value, mdo, recv, tmp1);
       __ bind(profile_cast_success);
-      jobject2reg(md->constant_encoding(), mdo);
+      metadata2reg(md->constant_encoding(), mdo);
       if (mdo_offset_bias > 0) {
         __ set(mdo_offset_bias, tmp1);
         __ add(mdo, tmp1, mdo);
@@ -2770,7 +2802,7 @@
       __ ba_short(done);
       // Cast failure case
       __ bind(profile_cast_failure);
-      jobject2reg(md->constant_encoding(), mdo);
+      metadata2reg(md->constant_encoding(), mdo);
       if (mdo_offset_bias > 0) {
         __ set(mdo_offset_bias, tmp1);
         __ add(mdo, tmp1, mdo);
@@ -2972,7 +3004,7 @@
   assert(op->tmp1()->is_single_cpu(), "tmp1 must be allocated");
   Register tmp1 = op->tmp1()->as_register();
 #endif
-  jobject2reg(md->constant_encoding(), mdo);
+  metadata2reg(md->constant_encoding(), mdo);
   int mdo_offset_bias = 0;
   if (!Assembler::is_simm13(md->byte_offset_of_slot(data, CounterData::count_offset()) +
                             data->size_in_bytes())) {
@@ -2998,7 +3030,7 @@
     ciKlass* known_klass = op->known_holder();
     if (C1OptimizeVirtualCallProfiling && known_klass != NULL) {
       // We know the type that will be seen at this call site; we can
-      // statically update the methodDataOop rather than needing to do
+      // statically update the MethodData* rather than needing to do
       // dynamic tests on the receiver type
 
       // NOTE: we should probably put a lock around this search to
@@ -3028,7 +3060,7 @@
         if (receiver == NULL) {
           Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)) -
                             mdo_offset_bias);
-          jobject2reg(known_klass->constant_encoding(), tmp1);
+          metadata2reg(known_klass->constant_encoding(), tmp1);
           __ st_ptr(tmp1, recv_addr);
           Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)) -
                             mdo_offset_bias);
--- a/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -884,7 +884,7 @@
   LIR_Opr tmp2 = FrameMap::G3_oop_opr;
   LIR_Opr tmp3 = FrameMap::G4_oop_opr;
   LIR_Opr tmp4 = FrameMap::O1_oop_opr;
-  LIR_Opr klass_reg = FrameMap::G5_oop_opr;
+  LIR_Opr klass_reg = FrameMap::G5_metadata_opr;
   new_instance(reg, x->klass(), tmp1, tmp2, tmp3, tmp4, klass_reg, info);
   LIR_Opr result = rlock_result(x);
   __ move(reg, result);
@@ -903,11 +903,11 @@
   LIR_Opr tmp2 = FrameMap::G3_oop_opr;
   LIR_Opr tmp3 = FrameMap::G4_oop_opr;
   LIR_Opr tmp4 = FrameMap::O1_oop_opr;
-  LIR_Opr klass_reg = FrameMap::G5_oop_opr;
+  LIR_Opr klass_reg = FrameMap::G5_metadata_opr;
   LIR_Opr len = length.result();
   BasicType elem_type = x->elt_type();
 
-  __ oop2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg);
+  __ metadata2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg);
 
   CodeStub* slow_path = new NewTypeArrayStub(klass_reg, len, reg, info);
   __ allocate_array(reg, len, tmp1, tmp2, tmp3, tmp4, elem_type, klass_reg, slow_path);
@@ -935,15 +935,15 @@
   LIR_Opr tmp2 = FrameMap::G3_oop_opr;
   LIR_Opr tmp3 = FrameMap::G4_oop_opr;
   LIR_Opr tmp4 = FrameMap::O1_oop_opr;
-  LIR_Opr klass_reg = FrameMap::G5_oop_opr;
+  LIR_Opr klass_reg = FrameMap::G5_metadata_opr;
   LIR_Opr len = length.result();
 
   CodeStub* slow_path = new NewObjectArrayStub(klass_reg, len, reg, info);
-  ciObject* obj = (ciObject*) ciObjArrayKlass::make(x->klass());
+  ciMetadata* obj = ciObjArrayKlass::make(x->klass());
   if (obj == ciEnv::unloaded_ciobjarrayklass()) {
     BAILOUT("encountered unloaded_ciobjarrayklass due to out of memory error");
   }
-  jobject2reg_with_patching(klass_reg, obj, patching_info);
+  klass2reg_with_patching(klass_reg, obj, patching_info);
   __ allocate_array(reg, len, tmp1, tmp2, tmp3, tmp4, T_OBJECT, klass_reg, slow_path);
 
   LIR_Opr result = rlock_result(x);
@@ -985,8 +985,8 @@
 
   // This instruction can be deoptimized in the slow path : use
   // O0 as result register.
-  const LIR_Opr reg = result_register_for(x->type());
-  jobject2reg_with_patching(reg, x->klass(), patching_info);
+  const LIR_Opr klass_reg = FrameMap::O0_metadata_opr;
+  klass2reg_with_patching(klass_reg, x->klass(), patching_info);
   LIR_Opr rank = FrameMap::O1_opr;
   __ move(LIR_OprFact::intConst(x->rank()), rank);
   LIR_Opr varargs = FrameMap::as_pointer_opr(O2);
@@ -995,9 +995,10 @@
          LIR_OprFact::intptrConst(offset_from_sp),
          varargs);
   LIR_OprList* args = new LIR_OprList(3);
-  args->append(reg);
+  args->append(klass_reg);
   args->append(rank);
   args->append(varargs);
+  const LIR_Opr reg = result_register_for(x->type());
   __ call_runtime(Runtime1::entry_for(Runtime1::new_multi_array_id),
                   LIR_OprFact::illegalOpr,
                   reg, args, info);
--- a/src/cpu/sparc/vm/c1_LinearScan_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_LinearScan_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -67,7 +67,7 @@
     _first_reg = pd_first_callee_saved_reg;
     _last_reg = pd_last_callee_saved_reg;
     return true;
-  } else if (cur->type() == T_INT || cur->type() == T_LONG || cur->type() == T_OBJECT || cur->type() == T_ADDRESS) {
+  } else if (cur->type() == T_INT || cur->type() == T_LONG || cur->type() == T_OBJECT || cur->type() == T_ADDRESS || cur->type() == T_METADATA) {
     _first_reg = pd_first_cpu_reg;
     _last_reg = pd_last_allocatable_cpu_reg;
     return true;
--- a/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -186,7 +186,7 @@
     set((intx)markOopDesc::prototype(), t1);
   }
   st_ptr(t1, obj, oopDesc::mark_offset_in_bytes());
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     // Save klass
     mov(klass, t1);
     encode_heap_oop_not_null(t1);
@@ -194,8 +194,10 @@
   } else {
     st_ptr(klass, obj, oopDesc::klass_offset_in_bytes());
   }
-  if (len->is_valid()) st(len, obj, arrayOopDesc::length_offset_in_bytes());
-  else if (UseCompressedOops) {
+  if (len->is_valid()) {
+    st(len, obj, arrayOopDesc::length_offset_in_bytes());
+  } else if (UseCompressedKlassPointers) {
+    // otherwise length is in the class gap
     store_klass_gap(G0, obj);
   }
 }
--- a/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_Runtime1_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,7 +28,7 @@
 #include "c1/c1_Runtime1.hpp"
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_sparc.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "register_sparc.hpp"
@@ -39,7 +39,7 @@
 
 // Implementation of StubAssembler
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry_point, int number_of_arguments) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry_point, int number_of_arguments) {
   // for sparc changing the number of arguments doesn't change
   // anything about the frame size so we'll always lie and claim that
   // we are only passing 1 argument.
@@ -100,8 +100,9 @@
     st_ptr(G0, vm_result_addr);
   }
 
-  if (oop_result2->is_valid()) {
-    get_vm_result_2(oop_result2);
+  // get second result if there is one and reset the value in the thread
+  if (metadata_result->is_valid()) {
+    get_vm_result_2  (metadata_result);
   } else {
     // be a little paranoid and clear the result
     Address vm_result_addr_2(G2_thread, JavaThread::vm_result_2_offset());
@@ -112,27 +113,27 @@
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1) {
   // O0 is reserved for the thread
   mov(arg1, O1);
-  return call_RT(oop_result1, oop_result2, entry, 1);
+  return call_RT(oop_result1, metadata_result, entry, 1);
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2) {
   // O0 is reserved for the thread
   mov(arg1, O1);
   mov(arg2, O2); assert(arg2 != O1, "smashed argument");
-  return call_RT(oop_result1, oop_result2, entry, 2);
+  return call_RT(oop_result1, metadata_result, entry, 2);
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2, Register arg3) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2, Register arg3) {
   // O0 is reserved for the thread
   mov(arg1, O1);
   mov(arg2, O2); assert(arg2 != O1,               "smashed argument");
   mov(arg3, O3); assert(arg3 != O1 && arg3 != O2, "smashed argument");
-  return call_RT(oop_result1, oop_result2, entry, 3);
+  return call_RT(oop_result1, metadata_result, entry, 3);
 }
 
 
@@ -398,8 +399,8 @@
 
           if (id == fast_new_instance_init_check_id) {
             // make sure the klass is initialized
-            __ ldub(G5_klass, in_bytes(instanceKlass::init_state_offset()), G3_t1);
-            __ cmp_and_br_short(G3_t1, instanceKlass::fully_initialized, Assembler::notEqual, Assembler::pn, slow_path);
+            __ ldub(G5_klass, in_bytes(InstanceKlass::init_state_offset()), G3_t1);
+            __ cmp_and_br_short(G3_t1, InstanceKlass::fully_initialized, Assembler::notEqual, Assembler::pn, slow_path);
           }
 #ifdef ASSERT
           // assert object can be fast path allocated
@@ -796,6 +797,12 @@
       }
       break;
 
+    case load_mirror_patching_id:
+      { __ set_info("load_mirror_patching", dont_gc_arguments);
+        oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_mirror_patching));
+      }
+      break;
+
     case dtrace_object_alloc_id:
       { // O0: object
         __ set_info("dtrace_object_alloc", dont_gc_arguments);
--- a/src/cpu/sparc/vm/c1_globals_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c1_globals_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -50,8 +50,7 @@
 define_pd_global(intx, ReservedCodeCacheSize,        32*M );
 define_pd_global(intx, CodeCacheExpansionSize,       32*K );
 define_pd_global(uintx,CodeCacheMinBlockLength,      1);
-define_pd_global(uintx,PermSize,                     12*M );
-define_pd_global(uintx,MaxPermSize,                  64*M );
+define_pd_global(uintx,MetaspaceSize,                     12*M );
 define_pd_global(bool, NeverActAsServerClassMachine, true );
 define_pd_global(intx, NewSizeThreadIncrease,        16*K );
 define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
--- a/src/cpu/sparc/vm/c2_globals_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -89,8 +89,7 @@
 define_pd_global(uintx,CodeCacheMinBlockLength,      4);
 
 // Heap related flags
-define_pd_global(uintx,PermSize,    ScaleForWordSize(16*M));
-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
+define_pd_global(uintx,MetaspaceSize,    ScaleForWordSize(16*M));
 
 // Ergonomics related flags
 define_pd_global(bool, NeverActAsServerClassMachine, false);
--- a/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterGenerator.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -405,9 +405,9 @@
 void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) {
   // Update standard invocation counters
   __ increment_invocation_counter(O0, G3_scratch);
-  if (ProfileInterpreter) {  // %%% Merge this into methodDataOop
+  if (ProfileInterpreter) {  // %%% Merge this into MethodData*
     __ ld_ptr(STATE(_method), G3_scratch);
-    Address interpreter_invocation_counter(G3_scratch, 0, in_bytes(methodOopDesc::interpreter_invocation_counter_offset()));
+    Address interpreter_invocation_counter(G3_scratch, 0, in_bytes(Method::interpreter_invocation_counter_offset()));
     __ ld(interpreter_invocation_counter, G3_scratch);
     __ inc(G3_scratch);
     __ st(G3_scratch, interpreter_invocation_counter);
@@ -429,8 +429,6 @@
   address entry = __ pc();
   Label slow_path;
 
-  __ verify_oop(G5_method);
-
   // do nothing for empty methods (do not even increment invocation counter)
   if ( UseFastEmptyMethods) {
     // If we need a safepoint check, generate full interpreter entry.
@@ -481,8 +479,8 @@
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
     // get first 4 bytes of the bytecodes (big endian!)
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::const_offset())), G1_scratch);
-    __ ld(Address(G1_scratch, 0, in_bytes(constMethodOopDesc::codes_offset())), G1_scratch);
+    __ ld_ptr(Address(G5_method, 0, in_bytes(Method::const_offset())), G1_scratch);
+    __ ld(Address(G1_scratch, 0, in_bytes(ConstMethod::codes_offset())), G1_scratch);
 
     // move index @ 2 far left then to the right most two bytes.
     __ sll(G1_scratch, 2*BitsPerByte, G1_scratch);
@@ -490,16 +488,16 @@
                       ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch);
 
     // get constant pool cache
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::const_offset()), G3_scratch);
-    __ ld_ptr(G3_scratch, in_bytes(constMethodOopDesc::constants_offset()), G3_scratch);
-    __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch);
+    __ ld_ptr(G5_method, in_bytes(Method::const_offset()), G3_scratch);
+    __ ld_ptr(G3_scratch, in_bytes(ConstMethod::constants_offset()), G3_scratch);
+    __ ld_ptr(G3_scratch, ConstantPool::cache_offset_in_bytes(), G3_scratch);
 
     // get specific constant pool cache entry
     __ add(G3_scratch, G1_scratch, G3_scratch);
 
     // Check the constant Pool cache entry to see if it has been resolved.
     // If not, need the slow path.
-    ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+    ByteSize cp_base_offset = ConstantPoolCache::base_offset();
     __ ld_ptr(G3_scratch, in_bytes(cp_base_offset + ConstantPoolCacheEntry::indices_offset()), G1_scratch);
     __ srl(G1_scratch, 2*BitsPerByte, G1_scratch);
     __ and3(G1_scratch, 0xFF, G1_scratch);
@@ -584,20 +582,18 @@
   // the following temporary registers are used during frame creation
   const Register Gtmp1 = G3_scratch ;
   const Register Gtmp2 = G1_scratch;
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
+  const Address size_of_parameters(G5_method, 0, in_bytes(Method::size_of_parameters_offset()));
 
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address access_flags      (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset()));
+  const Address access_flags      (G5_method, 0, in_bytes(Method::access_flags_offset()));
 
   Label Lentry;
   __ bind(Lentry);
 
-  __ verify_oop(G5_method);
-
   const Register Glocals_size = G3;
   assert_different_registers(Glocals_size, G4_scratch, Gframe_size);
 
@@ -711,7 +707,7 @@
 
   { Label L;
     __ ld_ptr(STATE(_method), G5_method);
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    __ ld_ptr(Address(G5_method, 0, in_bytes(Method::signature_handler_offset())), G3_scratch);
     __ tst(G3_scratch);
     __ brx(Assembler::notZero, false, Assembler::pt, L);
     __ delayed()->nop();
@@ -721,7 +717,7 @@
     Address exception_addr(G2_thread, 0, in_bytes(Thread::pending_exception_offset()));
     __ ld_ptr(exception_addr, G3_scratch);
     __ br_notnull_short(G3_scratch, Assembler::pn, pending_exception_present);
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::signature_handler_offset())), G3_scratch);
+    __ ld_ptr(Address(G5_method, 0, in_bytes(Method::signature_handler_offset())), G3_scratch);
     __ bind(L);
   }
 
@@ -765,13 +761,13 @@
     __ br( Assembler::zero, false, Assembler::pt, not_static);
     __ delayed()->
       // get native function entry point(O0 is a good temp until the very end)
-       ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc::native_function_offset())), O0);
+       ld_ptr(Address(G5_method, 0, in_bytes(Method::native_function_offset())), O0);
     // for static methods insert the mirror argument
     const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 
-    __ ld_ptr(Address(G5_method, 0, in_bytes(methodOopDesc:: const_offset())), O1);
-    __ ld_ptr(Address(O1, 0, in_bytes(constMethodOopDesc::constants_offset())), O1);
-    __ ld_ptr(Address(O1, 0, constantPoolOopDesc::pool_holder_offset_in_bytes()), O1);
+    __ ld_ptr(Address(G5_method, 0, in_bytes(Method:: const_offset())), O1);
+    __ ld_ptr(Address(O1, 0, in_bytes(ConstMethod::constants_offset())), O1);
+    __ ld_ptr(Address(O1, 0, ConstantPool::pool_holder_offset_in_bytes()), O1);
     __ ld_ptr(O1, mirror_offset, O1);
     // where the mirror handle body is allocated:
 #ifdef ASSERT
@@ -1049,11 +1045,11 @@
   assert_different_registers(state, prev_state);
   assert_different_registers(prev_state, G3_scratch);
   const Register Gtmp = G3_scratch;
-  const Address constMethod       (G5_method, 0, in_bytes(methodOopDesc::const_offset()));
-  const Address access_flags      (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset()));
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
-  const Address max_stack         (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset()));
-  const Address size_of_locals    (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
+  const Address constMethod       (G5_method, 0, in_bytes(Method::const_offset()));
+  const Address access_flags      (G5_method, 0, in_bytes(Method::access_flags_offset()));
+  const Address size_of_parameters(G5_method, 0, in_bytes(Method::size_of_parameters_offset()));
+  const Address max_stack         (G5_method, 0, in_bytes(Method::max_stack_offset()));
+  const Address size_of_locals    (G5_method, 0, in_bytes(Method::size_of_locals_offset()));
 
   // slop factor is two extra slots on the expression stack so that
   // we always have room to store a result when returning from a call without parameters
@@ -1062,7 +1058,7 @@
   const int slop_factor = 2*wordSize;
 
   const int fixed_size = ((sizeof(BytecodeInterpreter) + slop_factor) >> LogBytesPerWord) + // what is the slop factor?
-                         //6815692//methodOopDesc::extra_stack_words() +  // extra push slots for MH adapters
+                         //6815692//Method::extra_stack_words() +  // extra push slots for MH adapters
                          frame::memory_parameter_word_sp_offset +  // register save area + param window
                          (native ?  frame::interpreter_frame_extra_outgoing_argument_words : 0); // JNI, class
 
@@ -1146,8 +1142,8 @@
   if (native) {
     __ st_ptr(G0, XXX_STATE(_bcp));
   } else {
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::const_offset()), O2); // get constMethodOop
-    __ add(O2, in_bytes(constMethodOopDesc::codes_offset()), O2);        // get bcp
+    __ ld_ptr(G5_method, in_bytes(Method::const_offset()), O2); // get ConstMethod*
+    __ add(O2, in_bytes(ConstMethod::codes_offset()), O2);        // get bcp
     __ st_ptr(O2, XXX_STATE(_bcp));
   }
 
@@ -1158,8 +1154,8 @@
   __ st(O1, XXX_STATE(_msg));
 
   __ ld_ptr(constMethod, O3);
-  __ ld_ptr(O3, in_bytes(constMethodOopDesc::constants_offset()), O3);
-  __ ld_ptr(O3, constantPoolOopDesc::cache_offset_in_bytes(), O2);
+  __ ld_ptr(O3, in_bytes(ConstMethod::constants_offset()), O3);
+  __ ld_ptr(O3, ConstantPool::cache_offset_in_bytes(), O2);
   __ st_ptr(O2, XXX_STATE(_constants));
 
   __ st_ptr(G0, XXX_STATE(_result._to_call._callee));
@@ -1182,9 +1178,9 @@
     __ br( Assembler::zero, true, Assembler::pt, got_obj);
     __ delayed()->ld_ptr(O1, 0, O1);                  // get receiver for not-static case
     __ ld_ptr(constMethod, O1);
-    __ ld_ptr( O1, in_bytes(constMethodOopDesc::constants_offset()), O1);
-    __ ld_ptr( O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1);
-    // lock the mirror, not the klassOop
+    __ ld_ptr( O1, in_bytes(ConstMethod::constants_offset()), O1);
+    __ ld_ptr( O1, ConstantPool::pool_holder_offset_in_bytes(), O1);
+    // lock the mirror, not the Klass*
     __ ld_ptr( O1, mirror_offset, O1);
 
     __ bind(got_obj);
@@ -1213,7 +1209,7 @@
   __ lduh(max_stack, O3);                      // Full size expression stack
   guarantee(!EnableInvokeDynamic, "no support yet for java.lang.invoke.MethodHandle"); //6815692
   //6815692//if (EnableInvokeDynamic)
-  //6815692//  __ inc(O3, methodOopDesc::extra_stack_entries());
+  //6815692//  __ inc(O3, Method::extra_stack_entries());
   __ sll(O3, LogBytesPerWord, O3);
   __ sub(O2, O3, O3);
 //  __ sub(O3, wordSize, O3);                    // so prepush doesn't look out of bounds
@@ -1267,7 +1263,7 @@
 
 #ifdef ASSERT
   __ ld_ptr(STATE(_method), L2_scratch);
-  __ ld(L2_scratch, in_bytes(methodOopDesc::access_flags_offset()), O0);
+  __ ld(L2_scratch, in_bytes(Method::access_flags_offset()), O0);
 
  { Label ok;
    __ btst(JVM_ACC_SYNCHRONIZED, O0);
@@ -1436,7 +1432,7 @@
 //
 // Arguments:
 //
-// ebx: methodOop
+// ebx: Method*
 // ecx: receiver - unused (retrieved from stack as needed)
 // esi: previous frame manager state (NULL from the call_stub/c1/c2)
 //
@@ -1485,8 +1481,8 @@
 //  assert_different_registers(state, prev_state);
   const Register Gtmp = G3_scratch;
   const Register tmp = O2;
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
-  const Address size_of_locals    (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
+  const Address size_of_parameters(G5_method, 0, in_bytes(Method::size_of_parameters_offset()));
+  const Address size_of_locals    (G5_method, 0, in_bytes(Method::size_of_locals_offset()));
 
   __ lduh(size_of_parameters, tmp);
   __ sll(tmp, LogBytesPerWord, Gtmp);       // parameter size in bytes
@@ -1520,7 +1516,7 @@
 
 address InterpreterGenerator::generate_normal_entry(bool synchronized) {
 
-  // G5_method: methodOop
+  // G5_method: Method*
   // G2_thread: thread (unused)
   // Gargs:   bottom of args (sender_sp)
   // O5: sender's sp
@@ -1540,11 +1536,11 @@
   const Register Gtmp1 = G3_scratch;
   // const Register Lmirror = L1;     // native mirror (native calls only)
 
-  const Address constMethod       (G5_method, 0, in_bytes(methodOopDesc::const_offset()));
-  const Address access_flags      (G5_method, 0, in_bytes(methodOopDesc::access_flags_offset()));
-  const Address size_of_parameters(G5_method, 0, in_bytes(methodOopDesc::size_of_parameters_offset()));
-  const Address max_stack         (G5_method, 0, in_bytes(methodOopDesc::max_stack_offset()));
-  const Address size_of_locals    (G5_method, 0, in_bytes(methodOopDesc::size_of_locals_offset()));
+  const Address constMethod       (G5_method, 0, in_bytes(Method::const_offset()));
+  const Address access_flags      (G5_method, 0, in_bytes(Method::access_flags_offset()));
+  const Address size_of_parameters(G5_method, 0, in_bytes(Method::size_of_parameters_offset()));
+  const Address max_stack         (G5_method, 0, in_bytes(Method::max_stack_offset()));
+  const Address size_of_locals    (G5_method, 0, in_bytes(Method::size_of_locals_offset()));
 
   address entry_point = __ pc();
   __ mov(G0, prevState);                                                 // no current activation
@@ -1701,7 +1697,7 @@
   __ verify_thread();
   __ st_ptr(O0, exception_addr);
 
-  // get the methodOop
+  // get the Method*
   __ ld_ptr(STATE(_method), G5_method);
 
   // if this current frame vanilla or native?
@@ -1752,10 +1748,10 @@
 
   __ ld_ptr(STATE(_result._to_call._callee), L4_scratch);                        // called method
   __ ld_ptr(STATE(_stack), L1_scratch);                                          // get top of java expr stack
-  __ lduh(L4_scratch, in_bytes(methodOopDesc::size_of_parameters_offset()), L2_scratch); // get parameter size
+  __ lduh(L4_scratch, in_bytes(Method::size_of_parameters_offset()), L2_scratch); // get parameter size
   __ sll(L2_scratch, LogBytesPerWord, L2_scratch     );                           // parameter size in bytes
   __ add(L1_scratch, L2_scratch, L1_scratch);                                      // stack destination for result
-  __ ld(L4_scratch, in_bytes(methodOopDesc::result_index_offset()), L3_scratch); // called method result type index
+  __ ld(L4_scratch, in_bytes(Method::result_index_offset()), L3_scratch); // called method result type index
 
   // tosca is really just native abi
   __ set((intptr_t)CppInterpreter::_tosca_to_stack, L4_scratch);
@@ -1799,7 +1795,7 @@
 
   __ ld_ptr(STATE(_prev_link), L1_scratch);
   __ ld_ptr(STATE(_method), L2_scratch);                               // get method just executed
-  __ ld(L2_scratch, in_bytes(methodOopDesc::result_index_offset()), L2_scratch);
+  __ ld(L2_scratch, in_bytes(Method::result_index_offset()), L2_scratch);
   __ tst(L1_scratch);
   __ brx(Assembler::zero, false, Assembler::pt, return_to_initial_caller);
   __ delayed()->sll(L2_scratch, LogBytesPerWord, L2_scratch);
@@ -2068,17 +2064,17 @@
 
   const int fixed_size = sizeof(BytecodeInterpreter)/wordSize +           // interpreter state object
                          frame::memory_parameter_word_sp_offset;   // register save area + param window
-  const int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  const int extra_stack = 0; //6815692//Method::extra_stack_entries();
   return (round_to(max_stack +
                    extra_stack +
                    slop_factor +
                    fixed_size +
                    monitor_size +
-                   (callee_extra_locals * Interpreter::stackElementWords()), WordsPerLong));
+                   (callee_extra_locals * Interpreter::stackElementWords), WordsPerLong));
 
 }
 
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
 
   // See call_stub code
   int call_stub_size  = round_to(7 + frame::memory_parameter_word_sp_offset,
@@ -2095,7 +2091,7 @@
 void BytecodeInterpreter::layout_interpreterState(interpreterState to_fill,
                                            frame* caller,
                                            frame* current,
-                                           methodOop method,
+                                           Method* method,
                                            intptr_t* locals,
                                            intptr_t* stack,
                                            intptr_t* stack_base,
@@ -2157,7 +2153,7 @@
   // Need +1 here because stack_base points to the word just above the first expr stack entry
   // and stack_limit is supposed to point to the word just below the last expr stack entry.
   // See generate_compute_interpreter_state.
-  int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  int extra_stack = 0; //6815692//Method::extra_stack_entries();
   to_fill->_stack_limit = stack_base - (method->max_stack() + 1 + extra_stack);
   to_fill->_monitor_base = (BasicObjectLock*) monitor_base;
 
@@ -2175,7 +2171,7 @@
 }
 
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int tempcount, // Number of slots on java expression stack in use
                                            int popframe_extra_args,
                                            int moncount,  // Number of active monitors
@@ -2255,7 +2251,7 @@
       // statement is needed.
       //
       intptr_t* fp = interpreter_frame->fp();
-      int local_words = method->max_locals() * Interpreter::stackElementWords();
+      int local_words = method->max_locals() * Interpreter::stackElementWords;
 
       if (caller->is_compiled_frame()) {
         locals = fp + frame::register_save_words + local_words - 1;
--- a/src/cpu/sparc/vm/debug_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/debug_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -61,7 +61,7 @@
       CodeBlob *b = CodeCache::find_blob((address) pc);
       if (b != NULL) {
         if (b->is_nmethod()) {
-          methodOop m = ((nmethod*)b)->method();
+          Method* m = ((nmethod*)b)->method();
           int nlocals = m->max_locals();
           int nparams  = m->size_of_parameters();
           tty->print_cr("compiled java method (locals = %d, params = %d)", nlocals, nparams);
--- a/src/cpu/sparc/vm/dump_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2004, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "assembler_sparc.inline.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/space.inline.hpp"
-
-
-
-// Generate the self-patching vtable method:
-//
-// This method will be called (as any other Klass virtual method) with
-// the Klass itself as the first argument.  Example:
-//
-//      oop obj;
-//      int size = obj->klass()->klass_part()->oop_size(this);
-//
-// for which the virtual method call is Klass::oop_size();
-//
-// The dummy method is called with the Klass object as the first
-// operand, and an object as the second argument.
-//
-
-//=====================================================================
-
-// All of the dummy methods in the vtable are essentially identical,
-// differing only by an ordinal constant, and they bear no releationship
-// to the original method which the caller intended. Also, there needs
-// to be 'vtbl_list_size' instances of the vtable in order to
-// differentiate between the 'vtable_list_size' original Klass objects.
-
-#define __ masm->
-
-void CompactingPermGenGen::generate_vtable_methods(void** vtbl_list,
-                                                   void** vtable,
-                                                   char** md_top,
-                                                   char* md_end,
-                                                   char** mc_top,
-                                                   char* mc_end) {
-
-  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
-  *(intptr_t *)(*md_top) = vtable_bytes;
-  *md_top += sizeof(intptr_t);
-  void** dummy_vtable = (void**)*md_top;
-  *vtable = dummy_vtable;
-  *md_top += vtable_bytes;
-
-  guarantee(*md_top <= md_end, "Insufficient space for vtables.");
-
-  // Get ready to generate dummy methods.
-
-  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
-  MacroAssembler* masm = new MacroAssembler(&cb);
-
-  Label common_code;
-  for (int i = 0; i < vtbl_list_size; ++i) {
-    for (int j = 0; j < num_virtuals; ++j) {
-      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
-      __ save(SP, -256, SP);
-      int offset = (i << 8) + j;
-      Register src = G0;
-      if (!Assembler::is_simm13(offset)) {
-        __ sethi(offset, L0);
-        src = L0;
-        offset = offset & ((1 << 10) - 1);
-      }
-      __ brx(Assembler::always, false, Assembler::pt, common_code);
-
-      // Load L0 with a value indicating vtable/offset pair.
-      // -- bits[ 7..0]  (8 bits) which virtual method in table?
-      // -- bits[13..8]  (6 bits) which virtual method table?
-      __ delayed()->or3(src, offset, L0);
-    }
-  }
-
-  __ bind(common_code);
-
-  // Expecting to be called with the "this" pointer in O0/I0 (where
-  // "this" is a Klass object).  In addition, L0 was set (above) to
-  // identify the method and table.
-
-  // Look up the correct vtable pointer.
-
-  __ set((intptr_t)vtbl_list, L2);      // L2 = address of new vtable list.
-  __ srl(L0, 8, L3);                    // Isolate L3 = vtable identifier.
-  __ sll(L3, LogBytesPerWord, L3);
-  __ ld_ptr(L2, L3, L3);                // L3 = new (correct) vtable pointer.
-  __ st_ptr(L3, Address(I0, 0));        // Save correct vtable ptr in entry.
-
-  // Restore registers and jump to the correct method;
-
-  __ and3(L0, 255, L4);                 // Isolate L3 = method offset;.
-  __ sll(L4, LogBytesPerWord, L4);
-  __ ld_ptr(L3, L4, L4);                // Get address of correct virtual method
-  __ jmpl(L4, 0, G0);                   // Jump to correct method.
-  __ delayed()->restore();              // Restore registers.
-
-  __ flush();
-  *mc_top = (char*)__ pc();
-
-  guarantee(*mc_top <= mc_end, "Insufficient space for method wrappers.");
-}
--- a/src/cpu/sparc/vm/frame_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/frame_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,7 +26,7 @@
 #include "interpreter/interpreter.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/frame.inline.hpp"
@@ -612,7 +612,7 @@
 void frame::pd_gc_epilog() {
   if (is_interpreted_frame()) {
     // set constant pool cache entry for interpreter
-    methodOop m = interpreter_frame_method();
+    Method* m = interpreter_frame_method();
 
     *interpreter_frame_cpoolcache_addr() = m->constants()->cache();
   }
@@ -645,7 +645,7 @@
 
   // first the method
 
-  methodOop m = *interpreter_frame_method_addr();
+  Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
   if (!Universe::heap()->is_valid_method(m)) return false;
@@ -663,13 +663,9 @@
     return false;
   }
 
-  // validate constantPoolCacheOop
-
-  constantPoolCacheOop cp = *interpreter_frame_cache_addr();
-
-  if (cp == NULL ||
-      !Space::is_aligned(cp) ||
-      !Universe::heap()->is_permanent((void*)cp)) return false;
+  // validate ConstantPoolCache*
+  ConstantPoolCache* cp = *interpreter_frame_cache_addr();
+  if (cp == NULL || !cp->is_metadata()) return false;
 
   // validate locals
 
@@ -729,7 +725,7 @@
 
 BasicType frame::interpreter_frame_result(oop* oop_result, jvalue* value_result) {
   assert(is_interpreted_frame(), "interpreted frame expected");
-  methodOop method = interpreter_frame_method();
+  Method* method = interpreter_frame_method();
   BasicType type = method->result_type();
 
   if (method->is_native()) {
--- a/src/cpu/sparc/vm/frame_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/frame_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -264,7 +264,7 @@
   };
 
  private:
-  constantPoolCacheOop* interpreter_frame_cpoolcache_addr() const;
+  ConstantPoolCache** interpreter_frame_cpoolcache_addr() const;
 
 #ifndef CC_INTERP
 
--- a/src/cpu/sparc/vm/frame_sparc.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/frame_sparc.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -138,7 +138,7 @@
   return round_to(BasicObjectLock::size(), WordsPerLong);
 }
 
-inline methodOop* frame::interpreter_frame_method_addr() const {
+inline Method** frame::interpreter_frame_method_addr() const {
   interpreterState istate = get_interpreterState();
   return &istate->_method;
 }
@@ -147,12 +147,12 @@
 // Constant pool cache
 
 // where LcpoolCache is saved:
-inline constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const {
+inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const {
   interpreterState istate = get_interpreterState();
   return &istate->_constants; // should really use accessor
   }
 
-inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
+inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
   interpreterState istate = get_interpreterState();
   return &istate->_constants;
 }
@@ -213,20 +213,20 @@
   return round_to(BasicObjectLock::size(), WordsPerLong);
 }
 
-inline methodOop* frame::interpreter_frame_method_addr() const {
-  return (methodOop*)sp_addr_at( Lmethod->sp_offset_in_saved_window());
+inline Method** frame::interpreter_frame_method_addr() const {
+  return (Method**)sp_addr_at( Lmethod->sp_offset_in_saved_window());
 }
 
 
 // Constant pool cache
 
 // where LcpoolCache is saved:
-inline constantPoolCacheOop* frame::interpreter_frame_cpoolcache_addr() const {
-    return (constantPoolCacheOop*)sp_addr_at(LcpoolCache->sp_offset_in_saved_window());
+inline ConstantPoolCache** frame::interpreter_frame_cpoolcache_addr() const {
+    return (ConstantPoolCache**)sp_addr_at(LcpoolCache->sp_offset_in_saved_window());
   }
 
-inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
-  return (constantPoolCacheOop*)sp_addr_at( LcpoolCache->sp_offset_in_saved_window());
+inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
+  return (ConstantPoolCache**)sp_addr_at( LcpoolCache->sp_offset_in_saved_window());
 }
 #endif // CC_INTERP
 
--- a/src/cpu/sparc/vm/icBuffer_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/icBuffer_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -45,18 +45,17 @@
 #endif
 }
 
-void InlineCacheBuffer::assemble_ic_buffer_code(address code_begin, oop cached_oop, address entry_point) {
+void InlineCacheBuffer::assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point) {
   ResourceMark rm;
   CodeBuffer     code(code_begin, ic_stub_code_size());
   MacroAssembler* masm            = new MacroAssembler(&code);
-  // note: even though the code contains an embedded oop, we do not need reloc info
+  // note: even though the code contains an embedded metadata, we do not need reloc info
   // because
-  // (1) the oop is old (i.e., doesn't matter for scavenges)
+  // (1) the metadata is old (i.e., doesn't matter for scavenges)
   // (2) these ICStubs are removed *before* a GC happens, so the roots disappear
-  assert(cached_oop == NULL || cached_oop->is_perm(), "must be old oop");
-  AddressLiteral cached_oop_addrlit(cached_oop, relocInfo::none);
+  AddressLiteral cached_value_addrlit((address)cached_value, relocInfo::none);
   // Force the set to generate the fixed sequence so next_instruction_address works
-  masm->patchable_set(cached_oop_addrlit, G5_inline_cache_reg);
+  masm->patchable_set(cached_value_addrlit, G5_inline_cache_reg);
   assert(G3_scratch != G5_method, "Do not clobber the method oop in the transition stub");
   assert(G3_scratch != G5_inline_cache_reg, "Do not clobber the inline cache register in the transition stub");
   AddressLiteral entry(entry_point);
@@ -73,8 +72,9 @@
 }
 
 
-oop InlineCacheBuffer::ic_buffer_cached_oop(address code_begin) {
+void* InlineCacheBuffer::ic_buffer_cached_value(address code_begin) {
   NativeMovConstReg* move = nativeMovConstReg_at(code_begin);   // creation also verifies the object
   NativeJump*        jump = nativeJump_at(move->next_instruction_address());
-  return (oop)move->data();
+  void* o = (void*)move->data();
+  return o;
 }
--- a/src/cpu/sparc/vm/interp_masm_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/interp_masm_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,8 +28,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -514,17 +514,16 @@
 
   // Reset SP by subtracting more space from Lesp.
   Label done;
-  verify_oop(Lmethod);
   assert(G4_scratch != Gframe_size, "Only you can prevent register aliasing!");
 
   // A native does not need to do this, since its callee does not change SP.
-  ld(Lmethod, methodOopDesc::access_flags_offset(), Gframe_size);  // Load access flags.
+  ld(Lmethod, Method::access_flags_offset(), Gframe_size);  // Load access flags.
   btst(JVM_ACC_NATIVE, Gframe_size);
   br(Assembler::notZero, false, Assembler::pt, done);
   delayed()->nop();
 
   // Compute max expression stack+register save area
-  lduh(Lmethod, in_bytes(methodOopDesc::max_stack_offset()), Gframe_size);  // Load max stack.
+  lduh(Lmethod, in_bytes(Method::max_stack_offset()), Gframe_size);  // Load max stack.
   add( Gframe_size, frame::memory_parameter_word_sp_offset, Gframe_size );
 
   //
@@ -610,7 +609,7 @@
 
   // Assume we want to go compiled if available
 
-  ld_ptr(G5_method, in_bytes(methodOopDesc::from_interpreted_offset()), target);
+  ld_ptr(G5_method, in_bytes(Method::from_interpreted_offset()), target);
 
   if (JvmtiExport::can_post_interpreter_events()) {
     // JVMTI events, such as single-stepping, are implemented partly by avoiding running
@@ -622,11 +621,11 @@
     const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     ld(interp_only, scratch);
     cmp_zero_and_br(Assembler::notZero, scratch, skip_compiled_code, true, Assembler::pn);
-    delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), target);
+    delayed()->ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), target);
     bind(skip_compiled_code);
   }
 
-  // the i2c_adapters need methodOop in G5_method (right? %%%)
+  // the i2c_adapters need Method* in G5_method (right? %%%)
   // do the call
 #ifdef ASSERT
   {
@@ -725,20 +724,18 @@
   if (should_set_CC == set_CC) tst(Rdst);
 }
 
-
-void InterpreterMacroAssembler::get_cache_index_at_bcp(Register cache, Register tmp,
+void InterpreterMacroAssembler::get_cache_index_at_bcp(Register temp, Register index,
                                                        int bcp_offset, size_t index_size) {
   assert(bcp_offset > 0, "bcp is still pointing to start of bytecode");
   if (index_size == sizeof(u2)) {
-    get_2_byte_integer_at_bcp(bcp_offset, cache, tmp, Unsigned);
+    get_2_byte_integer_at_bcp(bcp_offset, temp, index, Unsigned);
   } else if (index_size == sizeof(u4)) {
     assert(EnableInvokeDynamic, "giant index used only for JSR 292");
-    get_4_byte_integer_at_bcp(bcp_offset, cache, tmp);
-    assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
-    xor3(tmp, -1, tmp);  // convert to plain index
+    get_4_byte_integer_at_bcp(bcp_offset, temp, index);
+    assert(ConstantPool::decode_invokedynamic_index(~123) == 123, "else change next line");
+    xor3(index, -1, index);  // convert to plain index
   } else if (index_size == sizeof(u1)) {
-    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
-    ldub(Lbcp, bcp_offset, tmp);
+    ldub(Lbcp, bcp_offset, index);
   } else {
     ShouldNotReachHere();
   }
@@ -765,7 +762,7 @@
                                                                         int bcp_offset,
                                                                         size_t index_size) {
   get_cache_and_index_at_bcp(cache, temp, bcp_offset, index_size);
-  ld_ptr(cache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset(), bytecode);
+  ld_ptr(cache, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::indices_offset(), bytecode);
   const int shift_count = (1 + byte_no) * BitsPerByte;
   assert((byte_no == TemplateTable::f1_byte && shift_count == ConstantPoolCacheEntry::bytecode_1_shift) ||
          (byte_no == TemplateTable::f2_byte && shift_count == ConstantPoolCacheEntry::bytecode_2_shift),
@@ -790,12 +787,32 @@
               // and from word index to byte offset
   sll(tmp, exact_log2(in_words(ConstantPoolCacheEntry::size()) * BytesPerWord), tmp);
               // skip past the header
-  add(tmp, in_bytes(constantPoolCacheOopDesc::base_offset()), tmp);
+  add(tmp, in_bytes(ConstantPoolCache::base_offset()), tmp);
               // construct pointer to cache entry
   add(LcpoolCache, tmp, cache);
 }
 
 
+// Load object from cpool->resolved_references(index)
+void InterpreterMacroAssembler::load_resolved_reference_at_index(
+                                           Register result, Register index) {
+  assert_different_registers(result, index);
+  assert_not_delayed();
+  // convert from field index to resolved_references() index and from
+  // word index to byte offset. Since this is a java object, it can be compressed
+  Register tmp = index;  // reuse
+  sll(index, LogBytesPerHeapOop, tmp);
+  get_constant_pool(result);
+  // load pointer for resolved_references[] objArray
+  ld_ptr(result, ConstantPool::resolved_references_offset_in_bytes(), result);
+  // JNIHandles::resolve(result)
+  ld_ptr(result, 0, result);
+  // Add in the index
+  add(result, tmp, result);
+  load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result);
+}
+
+
 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
 // a subtype of super_klass.  Blows registers Rsuper_klass, Rsub_klass, tmp1, tmp2.
 void InterpreterMacroAssembler::gen_subtype_check(Register Rsub_klass,
@@ -939,25 +956,25 @@
 
 
 void InterpreterMacroAssembler::get_const(Register Rdst) {
-  ld_ptr(Lmethod, in_bytes(methodOopDesc::const_offset()), Rdst);
+  ld_ptr(Lmethod, in_bytes(Method::const_offset()), Rdst);
 }
 
 
 void InterpreterMacroAssembler::get_constant_pool(Register Rdst) {
   get_const(Rdst);
-  ld_ptr(Rdst, in_bytes(constMethodOopDesc::constants_offset()), Rdst);
+  ld_ptr(Rdst, in_bytes(ConstMethod::constants_offset()), Rdst);
 }
 
 
 void InterpreterMacroAssembler::get_constant_pool_cache(Register Rdst) {
   get_constant_pool(Rdst);
-  ld_ptr(Rdst, constantPoolOopDesc::cache_offset_in_bytes(), Rdst);
+  ld_ptr(Rdst, ConstantPool::cache_offset_in_bytes(), Rdst);
 }
 
 
 void InterpreterMacroAssembler::get_cpool_and_tags(Register Rcpool, Register Rtags) {
   get_constant_pool(Rcpool);
-  ld_ptr(Rcpool, constantPoolOopDesc::tags_offset_in_bytes(), Rtags);
+  ld_ptr(Rcpool, ConstantPool::tags_offset_in_bytes(), Rtags);
 }
 
 
@@ -985,7 +1002,7 @@
   stbool(G0, do_not_unlock_if_synchronized); // reset the flag
 
   // check if synchronized method
-  const Address access_flags(Lmethod, methodOopDesc::access_flags_offset());
+  const Address access_flags(Lmethod, Method::access_flags_offset());
   interp_verify_oop(Otos_i, state, __FILE__, __LINE__);
   push(state); // save tos
   ld(access_flags, G3_scratch); // Load access flags.
@@ -1121,7 +1138,6 @@
   notify_method_exit(false, state, NotifyJVMTI);
 
   interp_verify_oop(Otos_i, state, __FILE__, __LINE__);
-  verify_oop(Lmethod);
   verify_thread();
 
   // return tos
@@ -1295,16 +1311,16 @@
 
 #ifndef CC_INTERP
 
-// Get the method data pointer from the methodOop and set the
+// Get the method data pointer from the Method* and set the
 // specified register to its value.
 
 void InterpreterMacroAssembler::set_method_data_pointer() {
   assert(ProfileInterpreter, "must be profiling interpreter");
   Label get_continue;
 
-  ld_ptr(Lmethod, in_bytes(methodOopDesc::method_data_offset()), ImethodDataPtr);
+  ld_ptr(Lmethod, in_bytes(Method::method_data_offset()), ImethodDataPtr);
   test_method_data_pointer(get_continue);
-  add(ImethodDataPtr, in_bytes(methodDataOopDesc::data_offset()), ImethodDataPtr);
+  add(ImethodDataPtr, in_bytes(MethodData::data_offset()), ImethodDataPtr);
   bind(get_continue);
 }
 
@@ -1315,10 +1331,10 @@
   Label zero_continue;
 
   // Test MDO to avoid the call if it is NULL.
-  ld_ptr(Lmethod, in_bytes(methodOopDesc::method_data_offset()), ImethodDataPtr);
+  ld_ptr(Lmethod, in_bytes(Method::method_data_offset()), ImethodDataPtr);
   test_method_data_pointer(zero_continue);
   call_VM_leaf(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::bcp_to_di), Lmethod, Lbcp);
-  add(ImethodDataPtr, in_bytes(methodDataOopDesc::data_offset()), ImethodDataPtr);
+  add(ImethodDataPtr, in_bytes(MethodData::data_offset()), ImethodDataPtr);
   add(ImethodDataPtr, O0, ImethodDataPtr);
   bind(zero_continue);
 }
@@ -1339,8 +1355,8 @@
   // If the mdp is valid, it will point to a DataLayout header which is
   // consistent with the bcp.  The converse is highly probable also.
   lduh(ImethodDataPtr, in_bytes(DataLayout::bci_offset()), G3_scratch);
-  ld_ptr(Lmethod, methodOopDesc::const_offset(), O5);
-  add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), G3_scratch);
+  ld_ptr(Lmethod, Method::const_offset(), O5);
+  add(G3_scratch, in_bytes(ConstMethod::codes_offset()), G3_scratch);
   add(G3_scratch, O5, G3_scratch);
   cmp(Lbcp, G3_scratch);
   brx(Assembler::equal, false, Assembler::pt, verify_continue);
@@ -2072,14 +2088,14 @@
 void InterpreterMacroAssembler::increment_invocation_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+  Address inv_counter(G5_method, Method::invocation_counter_offset() +
                                  InvocationCounter::counter_offset());
-  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+  Address be_counter (G5_method, Method::backedge_counter_offset() +
                                  InvocationCounter::counter_offset());
 #else
-  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+  Address inv_counter(Lmethod, Method::invocation_counter_offset() +
                                InvocationCounter::counter_offset());
-  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+  Address be_counter (Lmethod, Method::backedge_counter_offset() +
                                InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
@@ -2108,14 +2124,14 @@
 void InterpreterMacroAssembler::increment_backedge_counter( Register Rtmp, Register Rtmp2 ) {
   assert(UseCompiler, "incrementing must be useful");
 #ifdef CC_INTERP
-  Address be_counter (G5_method, methodOopDesc::backedge_counter_offset() +
+  Address be_counter (G5_method, Method::backedge_counter_offset() +
                                  InvocationCounter::counter_offset());
-  Address inv_counter(G5_method, methodOopDesc::invocation_counter_offset() +
+  Address inv_counter(G5_method, Method::invocation_counter_offset() +
                                  InvocationCounter::counter_offset());
 #else
-  Address be_counter (Lmethod, methodOopDesc::backedge_counter_offset() +
+  Address be_counter (Lmethod, Method::backedge_counter_offset() +
                                InvocationCounter::counter_offset());
-  Address inv_counter(Lmethod, methodOopDesc::invocation_counter_offset() +
+  Address inv_counter(Lmethod, Method::invocation_counter_offset() +
                                InvocationCounter::counter_offset());
 #endif /* CC_INTERP */
   int delta = InvocationCounter::count_increment;
@@ -2152,7 +2168,7 @@
   cmp_and_br_short(backedge_count, Rtmp, Assembler::lessUnsigned, Assembler::pt, did_not_overflow);
 
   // When ProfileInterpreter is on, the backedge_count comes from the
-  // methodDataOop, which value does not get reset on the call to
+  // MethodData*, which value does not get reset on the call to
   // frequency_counter_overflow().  To avoid excessive calls to the overflow
   // routine while the method is being compiled, add a second test to make sure
   // the overflow function is called only once every overflow_frequency.
@@ -2212,10 +2228,10 @@
 
 
 // local helper function for the verify_oop_or_return_address macro
-static bool verify_return_address(methodOopDesc* m, int bci) {
+static bool verify_return_address(Method* m, int bci) {
 #ifndef PRODUCT
   address pc = (address)(m->constMethod())
-             + in_bytes(constMethodOopDesc::codes_offset()) + bci;
+             + in_bytes(ConstMethod::codes_offset()) + bci;
   // assume it is a valid return address if it is inside m and is preceded by a jsr
   if (!m->contains(pc))                                          return false;
   address jsr_pc;
--- a/src/cpu/sparc/vm/interp_masm_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/interp_masm_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -188,11 +188,15 @@
                                   Register   Rdst,
                                   setCCOrNot should_set_CC = dont_set_CC );
 
+  // Note: "get_cache_and_index" really means "get the index, use it to get the cache entry, and throw away the index".
   void get_cache_and_index_at_bcp(Register cache, Register tmp, int bcp_offset, size_t index_size = sizeof(u2));
   void get_cache_and_index_and_bytecode_at_bcp(Register cache, Register temp, Register bytecode, int byte_no, int bcp_offset, size_t index_size = sizeof(u2));
   void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, size_t index_size = sizeof(u2));
-  void get_cache_index_at_bcp(Register cache, Register tmp, int bcp_offset, size_t index_size = sizeof(u2));
+  // Note: This one does not fetch the cache.  The first argument is a temp which may be killed.
+  void get_cache_index_at_bcp(Register temp, Register index, int bcp_offset, size_t index_size = sizeof(u2));
 
+  // load cpool->resolved_references(index);
+  void load_resolved_reference_at_index(Register result, Register index);
 
   // common code
 
--- a/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/interpreterRT_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -27,7 +27,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
@@ -228,7 +228,7 @@
 
 IRT_ENTRY(address, InterpreterRuntime::slow_signature_handler(
                                                     JavaThread* thread,
-                                                    methodOopDesc* method,
+                                                    Method* method,
                                                     intptr_t* from,
                                                     intptr_t* to ))
   methodHandle m(thread, method);
--- a/src/cpu/sparc/vm/interpreter_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/interpreter_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -273,7 +273,7 @@
 //
 // The entry code below assumes that the following registers are set
 // when coming in:
-//    G5_method: holds the methodOop of the method to call
+//    G5_method: holds the Method* of the method to call
 //    Lesp:    points to the TOS of the callers expression stack
 //             after having pushed all the parameters
 //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/sparc/vm/metaspaceShared_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "assembler_sparc.inline.hpp"
+#include "memory/metaspaceShared.hpp"
+
+// Generate the self-patching vtable method:
+//
+// This method will be called (as any other Klass virtual method) with
+// the Klass itself as the first argument.  Example:
+//
+//      oop obj;
+//      int size = obj->klass()->oop_size(this);
+//
+// for which the virtual method call is Klass::oop_size();
+//
+// The dummy method is called with the Klass object as the first
+// operand, and an object as the second argument.
+//
+
+//=====================================================================
+
+// All of the dummy methods in the vtable are essentially identical,
+// differing only by an ordinal constant, and they bear no relationship
+// to the original method which the caller intended. Also, there needs
+// to be 'vtbl_list_size' instances of the vtable in order to
+// differentiate between the 'vtable_list_size' original Klass objects.
+
+#define __ masm->
+
+void MetaspaceShared::generate_vtable_methods(void** vtbl_list,
+                                                   void** vtable,
+                                                   char** md_top,
+                                                   char* md_end,
+                                                   char** mc_top,
+                                                   char* mc_end) {
+
+  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
+  *(intptr_t *)(*md_top) = vtable_bytes;
+  *md_top += sizeof(intptr_t);
+  void** dummy_vtable = (void**)*md_top;
+  *vtable = dummy_vtable;
+  *md_top += vtable_bytes;
+
+  guarantee(*md_top <= md_end, "Insufficient space for vtables.");
+
+  // Get ready to generate dummy methods.
+
+  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
+  MacroAssembler* masm = new MacroAssembler(&cb);
+
+  Label common_code;
+  for (int i = 0; i < vtbl_list_size; ++i) {
+    for (int j = 0; j < num_virtuals; ++j) {
+      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
+      __ save(SP, -256, SP);
+      int offset = (i << 8) + j;
+      Register src = G0;
+      if (!Assembler::is_simm13(offset)) {
+        __ sethi(offset, L0);
+        src = L0;
+        offset = offset & ((1 << 10) - 1);
+      }
+      __ brx(Assembler::always, false, Assembler::pt, common_code);
+
+      // Load L0 with a value indicating vtable/offset pair.
+      // -- bits[ 7..0]  (8 bits) which virtual method in table?
+      // -- bits[13..8]  (6 bits) which virtual method table?
+      __ delayed()->or3(src, offset, L0);
+    }
+  }
+
+  __ bind(common_code);
+
+  // Expecting to be called with the "this" pointer in O0/I0 (where
+  // "this" is a Klass object).  In addition, L0 was set (above) to
+  // identify the method and table.
+
+  // Look up the correct vtable pointer.
+
+  __ set((intptr_t)vtbl_list, L2);      // L2 = address of new vtable list.
+  __ srl(L0, 8, L3);                    // Isolate L3 = vtable identifier.
+  __ sll(L3, LogBytesPerWord, L3);
+  __ ld_ptr(L2, L3, L3);                // L3 = new (correct) vtable pointer.
+  __ st_ptr(L3, Address(I0, 0));        // Save correct vtable ptr in entry.
+
+  // Restore registers and jump to the correct method;
+
+  __ and3(L0, 255, L4);                 // Isolate L3 = method offset;.
+  __ sll(L4, LogBytesPerWord, L4);
+  __ ld_ptr(L3, L4, L4);                // Get address of correct virtual method
+  __ jmpl(L4, 0, G0);                   // Jump to correct method.
+  __ delayed()->restore();              // Restore registers.
+
+  __ flush();
+  *mc_top = (char*)__ pc();
+
+  guarantee(*mc_top <= mc_end, "Insufficient space for method wrappers.");
+}
--- a/src/cpu/sparc/vm/methodHandles_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/methodHandles_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -46,9 +46,9 @@
 
 void MethodHandles::load_klass_from_Class(MacroAssembler* _masm, Register klass_reg, Register temp_reg, Register temp2_reg) {
   if (VerifyMethodHandles)
-    verify_klass(_masm, klass_reg, SystemDictionaryHandles::Class_klass(), temp_reg, temp2_reg,
+    verify_klass(_masm, klass_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_Class), temp_reg, temp2_reg,
                  "MH argument is a Class");
-  __ load_heap_oop(Address(klass_reg, java_lang_Class::klass_offset_in_bytes()), klass_reg);
+  __ ld_ptr(Address(klass_reg, java_lang_Class::klass_offset_in_bytes()), klass_reg);
 }
 
 #ifdef ASSERT
@@ -63,13 +63,11 @@
 
 #ifdef ASSERT
 void MethodHandles::verify_klass(MacroAssembler* _masm,
-                                 Register obj_reg, KlassHandle klass,
+                                 Register obj_reg, SystemDictionary::WKID klass_id,
                                  Register temp_reg, Register temp2_reg,
                                  const char* error_message) {
-  oop* klass_addr = klass.raw_value();
-  assert(klass_addr >= SystemDictionaryHandles::Object_klass().raw_value() &&
-         klass_addr <= SystemDictionaryHandles::Long_klass().raw_value(),
-         "must be one of the SystemDictionaryHandles");
+  Klass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
+  KlassHandle klass = SystemDictionary::well_known_klass(klass_id);
   bool did_save = false;
   if (temp_reg == noreg || temp2_reg == noreg) {
     temp_reg = L1;
@@ -83,12 +81,12 @@
   __ verify_oop(obj_reg);
   __ br_null_short(obj_reg, Assembler::pn, L_bad);
   __ load_klass(obj_reg, temp_reg);
-  __ set(ExternalAddress(klass_addr), temp2_reg);
+  __ set(ExternalAddress((Metadata**)klass_addr), temp2_reg);
   __ ld_ptr(Address(temp2_reg, 0), temp2_reg);
   __ cmp_and_brx_short(temp_reg, temp2_reg, Assembler::equal, Assembler::pt, L_ok);
   intptr_t super_check_offset = klass->super_check_offset();
   __ ld_ptr(Address(temp_reg, super_check_offset), temp_reg);
-  __ set(ExternalAddress(klass_addr), temp2_reg);
+  __ set(ExternalAddress((Metadata**)klass_addr), temp2_reg);
   __ ld_ptr(Address(temp2_reg, 0), temp2_reg);
   __ cmp_and_brx_short(temp_reg, temp2_reg, Assembler::equal, Assembler::pt, L_ok);
   __ BIND(L_bad);
@@ -123,7 +121,6 @@
 void MethodHandles::jump_from_method_handle(MacroAssembler* _masm, Register method, Register target, Register temp,
                                             bool for_compiler_entry) {
   assert(method == G5_method, "interpreter calling convention");
-  __ verify_oop(method);
 
   if (!for_compiler_entry && JvmtiExport::can_post_interpreter_events()) {
     Label run_compiled_code;
@@ -134,7 +131,7 @@
     const Address interp_only(G2_thread, JavaThread::interp_only_mode_offset());
     __ ld(interp_only, temp);
     __ cmp_and_br_short(temp, 0, Assembler::zero, Assembler::pt, run_compiled_code);
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), target);
+    __ ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), target);
     __ jmp(target, 0);
     __ delayed()->nop();
     __ BIND(run_compiled_code);
@@ -142,8 +139,8 @@
     // it doesn't matter, since this is interpreter code.
   }
 
-  const ByteSize entry_offset = for_compiler_entry ? methodOopDesc::from_compiled_offset() :
-                                                     methodOopDesc::from_interpreted_offset();
+  const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_offset() :
+                                                     Method::from_interpreted_offset();
   __ ld_ptr(G5_method, in_bytes(entry_offset), target);
   __ jmp(target, 0);
   __ delayed()->nop();
@@ -167,16 +164,15 @@
   __ verify_oop(method_temp);
   __ load_heap_oop(Address(method_temp, NONZERO(java_lang_invoke_LambdaForm::vmentry_offset_in_bytes())), method_temp);
   __ verify_oop(method_temp);
-  // the following assumes that a methodOop is normally compressed in the vmtarget field:
-  __ load_heap_oop(Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())),     method_temp);
-  __ verify_oop(method_temp);
+  // the following assumes that a Method* is normally compressed in the vmtarget field:
+  __ ld_ptr(Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())),     method_temp);
 
   if (VerifyMethodHandles && !for_compiler_entry) {
     // make sure recv is already on stack
-    __ load_sized_value(Address(method_temp, methodOopDesc::size_of_parameters_offset()),
+    __ load_sized_value(Address(method_temp, Method::size_of_parameters_offset()),
                         temp2,
                         sizeof(u2), /*is_signed*/ false);
-    // assert(sizeof(u2) == sizeof(methodOopDesc::_size_of_parameters), "");
+    // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
     Label L;
     __ ld_ptr(__ argument_address(temp2, temp2, -1), temp2);
     __ cmp_and_br_short(temp2, recv, Assembler::equal, Assembler::pt, L);
@@ -204,7 +200,7 @@
   }
 
   // I5_savedSP/O5_savedSP: sender SP (must preserve; see prepare_to_jump_from_interpreted)
-  // G5_method:  methodOop
+  // G5_method:  Method*
   // G4 (Gargs): incoming argument list (must preserve)
   // O0: used as temp to hold mh or receiver
   // O1, O4: garbage temps, blown away
@@ -220,14 +216,14 @@
   if (VerifyMethodHandles) {
     Label L;
     BLOCK_COMMENT("verify_intrinsic_id {");
-    __ ldub(Address(G5_method, methodOopDesc::intrinsic_id_offset_in_bytes()), O1_scratch);
+    __ ldub(Address(G5_method, Method::intrinsic_id_offset_in_bytes()), O1_scratch);
     __ cmp_and_br_short(O1_scratch, (int) iid, Assembler::equal, Assembler::pt, L);
     if (iid == vmIntrinsics::_linkToVirtual ||
         iid == vmIntrinsics::_linkToSpecial) {
       // could do this for all kinds, but would explode assembly code size
-      trace_method_handle(_masm, "bad methodOop::intrinsic_id");
+      trace_method_handle(_masm, "bad Method*::intrinsic_id");
     }
-    __ STOP("bad methodOop::intrinsic_id");
+    __ STOP("bad Method*::intrinsic_id");
     __ bind(L);
     BLOCK_COMMENT("} verify_intrinsic_id");
   }
@@ -237,10 +233,10 @@
   int ref_kind = signature_polymorphic_intrinsic_ref_kind(iid);
   assert(ref_kind != 0 || iid == vmIntrinsics::_invokeBasic, "must be _invokeBasic or a linkTo intrinsic");
   if (ref_kind == 0 || MethodHandles::ref_kind_has_receiver(ref_kind)) {
-    __ load_sized_value(Address(G5_method, methodOopDesc::size_of_parameters_offset()),
+    __ load_sized_value(Address(G5_method, Method::size_of_parameters_offset()),
                         O4_param_size,
                         sizeof(u2), /*is_signed*/ false);
-    // assert(sizeof(u2) == sizeof(methodOopDesc::_size_of_parameters), "");
+    // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
     O4_first_arg_addr = __ argument_address(O4_param_size, O4_param_size, -1);
   } else {
     DEBUG_ONLY(O4_param_size = noreg);
@@ -331,7 +327,7 @@
     // The method is a member invoker used by direct method handles.
     if (VerifyMethodHandles) {
       // make sure the trailing argument really is a MemberName (caller responsibility)
-      verify_klass(_masm, member_reg, SystemDictionaryHandles::MemberName_klass(),
+      verify_klass(_masm, member_reg, SystemDictionary::WK_KLASS_ENUM_NAME(MemberName_klass),
                    temp1, temp2,
                    "MemberName required for invokeVirtual etc.");
     }
@@ -350,7 +346,7 @@
         // load receiver klass itself
         __ null_check(receiver_reg, oopDesc::klass_offset_in_bytes());
         __ load_klass(receiver_reg, temp1_recv_klass);
-        __ verify_oop(temp1_recv_klass);
+        __ verify_klass_ptr(temp1_recv_klass);
       }
       BLOCK_COMMENT("check_receiver {");
       // The receiver for the MemberName must be in receiver_reg.
@@ -358,14 +354,14 @@
       if (VerifyMethodHandles && iid == vmIntrinsics::_linkToSpecial) {
         // Did not load it above...
         __ load_klass(receiver_reg, temp1_recv_klass);
-        __ verify_oop(temp1_recv_klass);
+        __ verify_klass_ptr(temp1_recv_klass);
       }
       if (VerifyMethodHandles && iid != vmIntrinsics::_linkToInterface) {
         Label L_ok;
         Register temp2_defc = temp2;
         __ load_heap_oop(member_clazz, temp2_defc);
         load_klass_from_Class(_masm, temp2_defc, temp3, temp4);
-        __ verify_oop(temp2_defc);
+        __ verify_klass_ptr(temp2_defc);
         __ check_klass_subtype(temp1_recv_klass, temp2_defc, temp3, temp4, L_ok);
         // If we get here, the type check failed!
         __ STOP("receiver class disagrees with MemberName.clazz");
@@ -390,7 +386,7 @@
       if (VerifyMethodHandles) {
         verify_ref_kind(_masm, JVM_REF_invokeSpecial, member_reg, temp3);
       }
-      __ load_heap_oop(member_vmtarget, G5_method);
+      __ ld_ptr(member_vmtarget, G5_method);
       method_is_live = true;
       break;
 
@@ -398,7 +394,7 @@
       if (VerifyMethodHandles) {
         verify_ref_kind(_masm, JVM_REF_invokeStatic, member_reg, temp3);
       }
-      __ load_heap_oop(member_vmtarget, G5_method);
+      __ ld_ptr(member_vmtarget, G5_method);
       method_is_live = true;
       break;
 
@@ -425,7 +421,7 @@
       // Note:  The verifier invariants allow us to ignore MemberName.clazz and vmtarget
       // at this point.  And VerifyMethodHandles has already checked clazz, if needed.
 
-      // get target methodOop & entry point
+      // get target Method* & entry point
       __ lookup_virtual_method(temp1_recv_klass, temp2_index, G5_method);
       method_is_live = true;
       break;
@@ -442,7 +438,7 @@
       Register temp3_intf = temp3;
       __ load_heap_oop(member_clazz, temp3_intf);
       load_klass_from_Class(_masm, temp3_intf, temp2, temp4);
-      __ verify_oop(temp3_intf);
+      __ verify_klass_ptr(temp3_intf);
 
       Register G5_index = G5_method;
       __ ld_ptr(member_vmindex, G5_index);
@@ -462,7 +458,7 @@
                                  temp2, no_sethi_temp,
                                  L_no_such_interface);
 
-      __ verify_oop(G5_method);
+      __ verify_method_ptr(G5_method);
       jump_from_method_handle(_masm, G5_method, temp2, temp3, for_compiler_entry);
 
       __ bind(L_no_such_interface);
@@ -483,7 +479,7 @@
       // After figuring out which concrete method to call, jump into it.
       // Note that this works in the interpreter with no data motion.
       // But the compiled version will require that rcx_recv be shifted out.
-      __ verify_oop(G5_method);
+      __ verify_method_ptr(G5_method);
       jump_from_method_handle(_masm, G5_method, temp1, temp3, for_compiler_entry);
     }
   }
--- a/src/cpu/sparc/vm/methodHandles_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/methodHandles_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -35,13 +35,13 @@
   static void load_klass_from_Class(MacroAssembler* _masm, Register klass_reg, Register temp_reg, Register temp2_reg);
 
   static void verify_klass(MacroAssembler* _masm,
-                           Register obj_reg, KlassHandle klass,
+                           Register obj_reg, SystemDictionary::WKID klass_id,
                            Register temp_reg, Register temp2_reg,
                            const char* error_message = "wrong klass") NOT_DEBUG_RETURN;
 
   static void verify_method_handle(MacroAssembler* _masm, Register mh_reg,
                                    Register temp_reg, Register temp2_reg) {
-    verify_klass(_masm, mh_reg, SystemDictionaryHandles::MethodHandle_klass(),
+    verify_klass(_masm, mh_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MethodHandle),
                  temp_reg, temp2_reg,
                  "reference is a MH");
   }
--- a/src/cpu/sparc/vm/nativeInst_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/nativeInst_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -300,7 +300,7 @@
 
 void NativeMovConstReg::verify() {
   NativeInstruction::verify();
-  // make sure code pattern is actually a "set_oop" synthetic instruction
+  // make sure code pattern is actually a "set_metadata" synthetic instruction
   // see MacroAssembler::set_oop()
   int i0 = long_at(sethi_offset);
   int i1 = long_at(add_offset);
@@ -312,11 +312,11 @@
         is_op3(i1, Assembler::add_op3, Assembler::arith_op) &&
         inv_immed(i1) && (unsigned)get_simm13(i1) < (1 << 10) &&
         rd == inv_rs1(i1) && rd == inv_rd(i1))) {
-    fatal("not a set_oop");
+    fatal("not a set_metadata");
   }
 #else
   if (!is_op2(i0, Assembler::sethi_op2) && rd != G0 ) {
-    fatal("not a set_oop");
+    fatal("not a set_metadata");
   }
 #endif
 }
@@ -352,6 +352,7 @@
   if (nm != NULL) {
     RelocIterator iter(nm, instruction_address(), next_instruction_address());
     oop* oop_addr = NULL;
+    Metadata** metadata_addr = NULL;
     while (iter.next()) {
       if (iter.type() == relocInfo::oop_type) {
         oop_Relocation *r = iter.oop_reloc();
@@ -362,6 +363,15 @@
           assert(oop_addr == r->oop_addr(), "must be only one set-oop here");
         }
       }
+      if (iter.type() == relocInfo::metadata_type) {
+        metadata_Relocation *r = iter.metadata_reloc();
+        if (metadata_addr == NULL) {
+          metadata_addr = r->metadata_addr();
+          *metadata_addr = (Metadata*)x;
+        } else {
+          assert(metadata_addr == r->metadata_addr(), "must be only one set-metadata here");
+        }
+      }
     }
   }
 }
@@ -429,7 +439,7 @@
         is_op3(i2, Assembler::add_op3, Assembler::arith_op) &&
         inv_immed(i2) && (unsigned)get_simm13(i2) < (1 << 10) &&
         rd0 == inv_rs1(i2) && rd0 == inv_rd(i2))) {
-    fatal("not a set_oop");
+    fatal("not a set_metadata");
   }
 }
 
@@ -462,6 +472,7 @@
   if (nm != NULL) {
     RelocIterator iter(nm, instruction_address(), next_instruction_address());
     oop* oop_addr = NULL;
+    Metadata** metadata_addr = NULL;
     while (iter.next()) {
       if (iter.type() == relocInfo::oop_type) {
         oop_Relocation *r = iter.oop_reloc();
@@ -472,6 +483,15 @@
           assert(oop_addr == r->oop_addr(), "must be only one set-oop here");
         }
       }
+      if (iter.type() == relocInfo::metadata_type) {
+        metadata_Relocation *r = iter.metadata_reloc();
+        if (metadata_addr == NULL) {
+          metadata_addr = r->metadata_addr();
+          *metadata_addr = (Metadata*)x;
+        } else {
+          assert(metadata_addr == r->metadata_addr(), "must be only one set-metadata here");
+        }
+      }
     }
   }
 }
--- a/src/cpu/sparc/vm/nativeInst_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/nativeInst_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -246,7 +246,7 @@
     assert(is_op2(*(unsigned int *)pc, Assembler::sethi_op2), "must be sethi");
     intptr_t hi = (intptr_t)gethi( (unsigned int *)pc );
     intptr_t lo = (intptr_t)get_simm13(arith_insn);
-    assert((unsigned)lo < (1 << 10), "offset field of set_oop must be 10 bits");
+    assert((unsigned)lo < (1 << 10), "offset field of set_metadata must be 10 bits");
     return hi | lo;
   }
 
@@ -261,7 +261,7 @@
     assert(is_op2(sethi_insn, Assembler::sethi_op2), "must be sethi");
     int hi = Assembler::inv_hi22(sethi_insn);
     int lo = get_simm13(arith_insn);
-    assert((unsigned)lo < (1 << 10), "offset field of set_oop must be 10 bits");
+    assert((unsigned)lo < (1 << 10), "offset field of set_metadata must be 10 bits");
     return hi | lo;
   }
 
@@ -508,9 +508,9 @@
 
 #endif // _LP64
 
-// An interface for accessing/manipulating native set_oop imm, reg instructions.
+// An interface for accessing/manipulating native set_metadata imm, reg instructions.
 // (used to manipulate inlined data references, etc.)
-//      set_oop imm, reg
+//      set_metadata imm, reg
 //      == sethi %hi22(imm), reg ;  add reg, %lo10(imm), reg
 class NativeMovConstReg;
 inline NativeMovConstReg* nativeMovConstReg_at(address address);
@@ -564,9 +564,9 @@
 };
 
 
-// An interface for accessing/manipulating native set_oop imm, reg instructions.
+// An interface for accessing/manipulating native set_metadata imm, reg instructions.
 // (used to manipulate inlined data references, etc.)
-//      set_oop imm, reg
+//      set_metadata imm, reg
 //      == sethi %hi22(imm), reg; nop; add reg, %lo10(imm), reg
 //
 // Note that it is identical to NativeMovConstReg with the exception of a nop between the
--- a/src/cpu/sparc/vm/relocInfo_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/relocInfo_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -229,3 +229,6 @@
 
 void poll_return_Relocation::fix_relocation_after_move(const CodeBuffer* src, CodeBuffer* dest) {
 }
+
+void metadata_Relocation::pd_fix_value(address x) {
+}
--- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,7 +29,7 @@
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
@@ -599,10 +599,10 @@
 // Patch the callers callsite with entry to compiled code if it exists.
 void AdapterGenerator::patch_callers_callsite() {
   Label L;
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::code_offset()), G3_scratch);
+  __ ld_ptr(G5_method, in_bytes(Method::code_offset()), G3_scratch);
   __ br_null(G3_scratch, false, Assembler::pt, L);
   // Schedule the branch target address early.
-  __ delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
+  __ delayed()->ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), G3_scratch);
   // Call into the VM to patch the caller, then jump to compiled callee
   __ save_frame(4);     // Args in compiled layout; do not blow them
 
@@ -611,7 +611,7 @@
   // G2: global allocated to TLS
   // G3: used in inline cache check (scratch)
   // G4: 2nd Long arg (32bit build);
-  // G5: used in inline cache check (methodOop)
+  // G5: used in inline cache check (Method*)
 
   // The longs must go to the stack by hand since in the 32 bit build they can be trashed by window ops.
 
@@ -645,7 +645,7 @@
   __ ldx(FP, -8 + STACK_BIAS, G1);
   __ ldx(FP, -16 + STACK_BIAS, G4);
   __ mov(L5, G5_method);
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
+  __ ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), G3_scratch);
 #endif /* _LP64 */
 
   __ restore();      // Restore args
@@ -853,7 +853,7 @@
 
 #ifdef _LP64
   // Need to reload G3_scratch, used for temporary displacements.
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
+  __ ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), G3_scratch);
 
   // Pass O5_savedSP as an argument to the interpreter.
   // The interpreter will restore SP to this value before returning.
@@ -1046,7 +1046,7 @@
 
   // Will jump to the compiled code just as if compiled code was doing it.
   // Pre-load the register-jump target early, to schedule it better.
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3);
+  __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3);
 
   // Now generate the shuffle code.  Pick up all register args and move the
   // rest through G1_scratch.
@@ -1163,7 +1163,7 @@
 #ifndef _LP64
     if (g3_crushed) {
       // Rats load was wasted, at least it is in cache...
-      __ ld_ptr(G5_method, methodOopDesc::from_compiled_offset(), G3);
+      __ ld_ptr(G5_method, Method::from_compiled_offset(), G3);
     }
 #endif /* _LP64 */
 
@@ -1212,7 +1212,7 @@
 
 
   // -------------------------------------------------------------------------
-  // Generate a C2I adapter.  On entry we know G5 holds the methodOop.  The
+  // Generate a C2I adapter.  On entry we know G5 holds the Method*.  The
   // args start out packed in the compiled layout.  They need to be unpacked
   // into the interpreter layout.  This will almost always require some stack
   // space.  We grow the current (compiled) stack, then repack the args.  We
@@ -1232,25 +1232,21 @@
     AddressLiteral ic_miss(SharedRuntime::get_ic_miss_stub());
 
     __ verify_oop(O0);
-    __ verify_oop(G5_method);
     __ load_klass(O0, G3_scratch);
-    __ verify_oop(G3_scratch);
 
 #if !defined(_LP64) && defined(COMPILER2)
     __ save(SP, -frame::register_save_words*wordSize, SP);
-    __ ld_ptr(G5_method, compiledICHolderOopDesc::holder_klass_offset(), R_temp);
-    __ verify_oop(R_temp);
+    __ ld_ptr(G5_method, CompiledICHolder::holder_klass_offset(), R_temp);
     __ cmp(G3_scratch, R_temp);
     __ restore();
 #else
-    __ ld_ptr(G5_method, compiledICHolderOopDesc::holder_klass_offset(), R_temp);
-    __ verify_oop(R_temp);
+    __ ld_ptr(G5_method, CompiledICHolder::holder_klass_offset(), R_temp);
     __ cmp(G3_scratch, R_temp);
 #endif
 
     Label ok, ok2;
     __ brx(Assembler::equal, false, Assembler::pt, ok);
-    __ delayed()->ld_ptr(G5_method, compiledICHolderOopDesc::holder_method_offset(), G5_method);
+    __ delayed()->ld_ptr(G5_method, CompiledICHolder::holder_method_offset(), G5_method);
     __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
@@ -1258,10 +1254,10 @@
     // Method might have been compiled since the call site was patched to
     // interpreted if that is the case treat it as a miss so we can get
     // the call site corrected.
-    __ ld_ptr(G5_method, in_bytes(methodOopDesc::code_offset()), G3_scratch);
+    __ ld_ptr(G5_method, in_bytes(Method::code_offset()), G3_scratch);
     __ bind(ok2);
     __ br_null(G3_scratch, false, Assembler::pt, skip_fixup);
-    __ delayed()->ld_ptr(G5_method, in_bytes(methodOopDesc::interpreter_entry_offset()), G3_scratch);
+    __ delayed()->ld_ptr(G5_method, in_bytes(Method::interpreter_entry_offset()), G3_scratch);
     __ jump_to(ic_miss, G3_scratch);
     __ delayed()->nop();
 
@@ -1344,6 +1340,7 @@
       case T_ADDRESS: // raw pointers, like current thread, for VM calls
       case T_ARRAY:
       case T_OBJECT:
+      case T_METADATA:
         regs[i].set2( int_stk_helper( j ) );
         break;
       case T_FLOAT:
@@ -1392,6 +1389,7 @@
       case T_FLOAT:
       case T_INT:
       case T_OBJECT:
+      case T_METADATA:
       case T_SHORT:
         regs[i].set1( int_stk_helper( i ) );
         break;
@@ -2571,7 +2569,7 @@
     // create inner frame
     __ save_frame(0);
     __ mov(G2_thread, L7_thread_cache);
-    __ set_oop_constant(JNIHandles::make_local(method()), O1);
+    __ set_metadata_constant(method(), O1);
     __ call_VM_leaf(L7_thread_cache,
          CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
          G2_thread, O1);
@@ -2583,7 +2581,7 @@
     // create inner frame
     __ save_frame(0);
     __ mov(G2_thread, L7_thread_cache);
-    __ set_oop_constant(JNIHandles::make_local(method()), O1);
+    __ set_metadata_constant(method(), O1);
     __ call_VM_leaf(L7_thread_cache,
          CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
          G2_thread, O1);
@@ -2869,7 +2867,7 @@
     SkipIfEqual skip_if(
       masm, G3_scratch, &DTraceMethodProbes, Assembler::zero);
     save_native_result(masm, ret_type, stack_slots);
-    __ set_oop_constant(JNIHandles::make_local(method()), O1);
+    __ set_metadata_constant(method(), O1);
     __ call_VM_leaf(L7_thread_cache,
        CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit),
        G2_thread, O1);
@@ -4081,9 +4079,9 @@
   __ ld_ptr(G2_thread, in_bytes(Thread::pending_exception_offset()), O1);
   __ br_notnull_short(O1, Assembler::pn, pending);
 
-  // get the returned methodOop
-
-  __ get_vm_result(G5_method);
+  // get the returned Method*
+
+  __ get_vm_result_2(G5_method);
   __ stx(G5_method, SP, RegisterSaver::G5_offset()+STACK_BIAS);
 
   // O0 is where we want to jump, overwrite G3 which is saved and scratch
--- a/src/cpu/sparc/vm/sparc.ad	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/sparc.ad	Fri Sep 14 21:50:58 2012 -0700
@@ -549,15 +549,15 @@
   int vtable_index = this->_vtable_index;
   if (vtable_index < 0) {
     // must be invalid_vtable_index, not nonvirtual_vtable_index
-    assert(vtable_index == methodOopDesc::invalid_vtable_index, "correct sentinel value");
+    assert(vtable_index == Method::invalid_vtable_index, "correct sentinel value");
     return (NativeMovConstReg::instruction_size +
            NativeCall::instruction_size);  // sethi; setlo; call; delay slot
   } else {
     assert(!UseInlineCaches, "expect vtable calls only if not using ICs");
-    int entry_offset = instanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size();
+    int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size();
     int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes();
     int klass_load_size;
-    if (UseCompressedOops) {
+    if (UseCompressedOops && UseCompressedKlassPointers) {
       assert(Universe::heap() != NULL, "java heap should be initialized");
       if (Universe::narrow_oop_base() == NULL)
         klass_load_size = 2*BytesPerInstWord; // see MacroAssembler::load_klass()
@@ -1676,7 +1676,7 @@
   // static stub relocation stores the instruction address of the call
   __ relocate(static_stub_Relocation::spec(mark));
 
-  __ set_oop(NULL, reg_to_register_object(Matcher::inline_cache_reg_encode()));
+  __ set_metadata(NULL, reg_to_register_object(Matcher::inline_cache_reg_encode()));
 
   __ set_inst_mark();
   AddressLiteral addrlit(-1);
@@ -1852,18 +1852,6 @@
 address last_rethrow = NULL;  // debugging aid for Rethrow encoding
 #endif
 
-// Map Types to machine register types
-const int Matcher::base2reg[Type::lastype] = {
-  Node::NotAMachineReg,0,0, Op_RegI, Op_RegL, 0, Op_RegN,
-  Node::NotAMachineReg, Node::NotAMachineReg, /* tuple, array */
-  0, Op_RegD, 0, 0, /* Vectors */
-  Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, /* the pointers */
-  0, 0/*abio*/,
-  Op_RegP /* Return address */, 0, /* the memories */
-  Op_RegF, Op_RegF, Op_RegF, Op_RegD, Op_RegD, Op_RegD,
-  0  /*bottom*/
-};
-
 // Vector width in bytes
 const int Matcher::vector_width_in_bytes(BasicType bt) {
   assert(MaxVectorSize == 8, "");
@@ -2590,20 +2578,11 @@
     // MachCallDynamicJavaNode::ret_addr_offset uses this same test
     if (vtable_index < 0) {
       // must be invalid_vtable_index, not nonvirtual_vtable_index
-      assert(vtable_index == methodOopDesc::invalid_vtable_index, "correct sentinel value");
+      assert(vtable_index == Method::invalid_vtable_index, "correct sentinel value");
       Register G5_ic_reg = reg_to_register_object(Matcher::inline_cache_reg_encode());
       assert(G5_ic_reg == G5_inline_cache_reg, "G5_inline_cache_reg used in assemble_ic_buffer_code()");
       assert(G5_ic_reg == G5_megamorphic_method, "G5_megamorphic_method used in megamorphic call stub");
-      // !!!!!
-      // Generate  "set 0x01, R_G5", placeholder instruction to load oop-info
-      // emit_call_dynamic_prologue( cbuf );
-      __ set_oop((jobject)Universe::non_oop_word(), G5_ic_reg);
-
-      address  virtual_call_oop_addr = __ inst_mark();
-      // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
-      // who we intended to call.
-      __ relocate(virtual_call_Relocation::spec(virtual_call_oop_addr));
-      emit_call_reloc(cbuf, $meth$$method, relocInfo::none);
+      __ ic_call((address)$meth$$method);
     } else {
       assert(!UseInlineCaches, "expect vtable calls only if not using ICs");
       // Just go thru the vtable
@@ -2612,7 +2591,7 @@
       int off = __ offset();
       __ load_klass(O0, G3_scratch);
       int klass_load_size;
-      if (UseCompressedOops) {
+      if (UseCompressedOops && UseCompressedKlassPointers) {
         assert(Universe::heap() != NULL, "java heap should be initialized");
         if (Universe::narrow_oop_base() == NULL)
           klass_load_size = 2*BytesPerInstWord;
@@ -2621,7 +2600,7 @@
       } else {
         klass_load_size = 1*BytesPerInstWord;
       }
-      int entry_offset = instanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size();
+      int entry_offset = InstanceKlass::vtable_start_offset() + vtable_index*vtableEntry::size();
       int v_off = entry_offset*wordSize + vtableEntry::method_offset_in_bytes();
       if (Assembler::is_simm13(v_off)) {
         __ ld_ptr(G3, v_off, G5_method);
@@ -2637,7 +2616,7 @@
       // NOTE: for vtable dispatches, the vtable entry will never be null.
       // However it may very well end up in handle_wrong_method if the
       // method is abstract for the particular class.
-      __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3_scratch);
+      __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3_scratch);
       // jump to target (either compiled code or c2iadapter)
       __ jmpl(G3_scratch, G0, O7);
       __ delayed()->nop();
@@ -2653,7 +2632,7 @@
 
     assert(temp_reg != G5_ic_reg, "conflicting registers");
     // Load nmethod
-    __ ld_ptr(G5_ic_reg, in_bytes(methodOopDesc::from_compiled_offset()), temp_reg);
+    __ ld_ptr(G5_ic_reg, in_bytes(Method::from_compiled_offset()), temp_reg);
 
     // CALL to compiled java, indirect the contents of G3
     __ set_inst_mark();
@@ -3219,7 +3198,7 @@
 
   // These two registers define part of the calling convention
   // between compiled code and the interpreter.
-  inline_cache_reg(R_G5);                // Inline Cache Register or methodOop for I2C
+  inline_cache_reg(R_G5);                // Inline Cache Register or Method* for I2C
   interpreter_method_oop_reg(R_G5);      // Method Oop Register when calling interpreter
 
   // Optional: name the operand used by cisc-spilling to access [stack_pointer + offset]
@@ -6070,12 +6049,15 @@
   ins_cost(DEFAULT_COST * 3/2);
   format %{ "SET    $con,$dst\t!ptr" %}
   ins_encode %{
-    // [RGV] This next line should be generated from ADLC
-    if (_opnds[1]->constant_is_oop()) {
+    relocInfo::relocType constant_reloc = _opnds[1]->constant_reloc();
       intptr_t val = $con$$constant;
+    if (constant_reloc == relocInfo::oop_type) {
       __ set_oop_constant((jobject) val, $dst$$Register);
+    } else if (constant_reloc == relocInfo::metadata_type) {
+      __ set_metadata_constant((Metadata*)val, $dst$$Register);
     } else {          // non-oop pointers, e.g. card mark base, heap top
-      __ set($con$$constant, $dst$$Register);
+      assert(constant_reloc == relocInfo::none, "unexpected reloc type");
+      __ set(val, $dst$$Register);
     }
   %}
   ins_pipe(loadConP);
@@ -6086,12 +6068,15 @@
   ins_cost(DEFAULT_COST * 3/2);
   format %{ "SET    $con,$dst\t! ptr" %}
   ins_encode %{
-    // [RGV] This next line should be generated from ADLC
-    if (_opnds[1]->constant_is_oop()) {
+    relocInfo::relocType constant_reloc = _opnds[1]->constant_reloc();
       intptr_t val = $con$$constant;
+    if (constant_reloc == relocInfo::oop_type) {
       __ set_oop_constant((jobject) val, $dst$$Register);
+    } else if (constant_reloc == relocInfo::metadata_type) {
+      __ set_metadata_constant((Metadata*)val, $dst$$Register);
     } else {          // non-oop pointers, e.g. card mark base, heap top
-      __ set($con$$constant, $dst$$Register);
+      assert(constant_reloc == relocInfo::none, "unexpected reloc type");
+      __ set(val, $dst$$Register);
     }
   %}
   ins_pipe(loadConP);
--- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,7 +28,7 @@
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_sparc.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -3016,7 +3016,7 @@
 
     BLOCK_COMMENT("arraycopy argument klass checks");
     //  get src->klass()
-    if (UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
       __ delayed()->nop(); // ??? not good
       __ load_klass(src, G3_src_klass);
     } else {
@@ -3051,7 +3051,7 @@
     // Load 32-bits signed value. Use br() instruction with it to check icc.
     __ lduw(G3_src_klass, lh_offset, G5_lh);
 
-    if (UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
       __ load_klass(dst, G4_dst_klass);
     }
     // Handle objArrays completely differently...
@@ -3059,7 +3059,7 @@
     __ set(objArray_lh, O5_temp);
     __ cmp(G5_lh,       O5_temp);
     __ br(Assembler::equal, false, Assembler::pt, L_objArray);
-    if (UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
       __ delayed()->nop();
     } else {
       __ delayed()->ld_ptr(dst, oopDesc::klass_offset_in_bytes(), G4_dst_klass);
--- a/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -194,7 +194,7 @@
   }
   __ get_cache_and_index_at_bcp(cache, G1_scratch, 1);
   __ bind(L_got_cache);
-  __ ld_ptr(cache, constantPoolCacheOopDesc::base_offset() +
+  __ ld_ptr(cache, ConstantPoolCache::base_offset() +
                    ConstantPoolCacheEntry::flags_offset(), size);
   __ and3(size, 0xFF, size);                   // argument size in words
   __ sll(size, Interpreter::logStackElementSize, size); // each argument size in bytes
@@ -291,18 +291,18 @@
 // ??: invocation counter
 //
 void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) {
-  // Note: In tiered we increment either counters in methodOop or in MDO depending if we're profiling or not.
+  // Note: In tiered we increment either counters in Method* or in MDO depending if we're profiling or not.
   if (TieredCompilation) {
     const int increment = InvocationCounter::count_increment;
     const int mask = ((1 << Tier0InvokeNotifyFreqLog) - 1) << InvocationCounter::count_shift;
     Label no_mdo, done;
     if (ProfileInterpreter) {
       // If no method data exists, go to profile_continue.
-      __ ld_ptr(Lmethod, methodOopDesc::method_data_offset(), G4_scratch);
+      __ ld_ptr(Lmethod, Method::method_data_offset(), G4_scratch);
       __ br_null_short(G4_scratch, Assembler::pn, no_mdo);
       // Increment counter
       Address mdo_invocation_counter(G4_scratch,
-                                     in_bytes(methodDataOopDesc::invocation_counter_offset()) +
+                                     in_bytes(MethodData::invocation_counter_offset()) +
                                      in_bytes(InvocationCounter::counter_offset()));
       __ increment_mask_and_jump(mdo_invocation_counter, increment, mask,
                                  G3_scratch, Lscratch,
@@ -310,10 +310,10 @@
       __ ba_short(done);
     }
 
-    // Increment counter in methodOop
+    // Increment counter in Method*
     __ bind(no_mdo);
     Address invocation_counter(Lmethod,
-                               in_bytes(methodOopDesc::invocation_counter_offset()) +
+                               in_bytes(Method::invocation_counter_offset()) +
                                in_bytes(InvocationCounter::counter_offset()));
     __ increment_mask_and_jump(invocation_counter, increment, mask,
                                G3_scratch, Lscratch,
@@ -322,8 +322,8 @@
   } else {
     // Update standard invocation counters
     __ increment_invocation_counter(O0, G3_scratch);
-    if (ProfileInterpreter) {  // %%% Merge this into methodDataOop
-      Address interpreter_invocation_counter(Lmethod,in_bytes(methodOopDesc::interpreter_invocation_counter_offset()));
+    if (ProfileInterpreter) {  // %%% Merge this into MethodData*
+      Address interpreter_invocation_counter(Lmethod,in_bytes(Method::interpreter_invocation_counter_offset()));
       __ ld(interpreter_invocation_counter, G3_scratch);
       __ inc(G3_scratch);
       __ st(G3_scratch, interpreter_invocation_counter);
@@ -349,10 +349,10 @@
 }
 
 // Allocate monitor and lock method (asm interpreter)
-// ebx - methodOop
+// ebx - Method*
 //
 void InterpreterGenerator::lock_method(void) {
-  __ ld(Lmethod, in_bytes(methodOopDesc::access_flags_offset()), O0);  // Load access flags.
+  __ ld(Lmethod, in_bytes(Method::access_flags_offset()), O0);  // Load access flags.
 
 #ifdef ASSERT
  { Label ok;
@@ -371,11 +371,11 @@
     __ br( Assembler::zero, true, Assembler::pt, done);
     __ delayed()->ld_ptr(Llocals, Interpreter::local_offset_in_bytes(0), O0); // get receiver for not-static case
 
-    __ ld_ptr( Lmethod, in_bytes(methodOopDesc::const_offset()), O0);
-    __ ld_ptr( O0, in_bytes(constMethodOopDesc::constants_offset()), O0);
-    __ ld_ptr( O0, constantPoolOopDesc::pool_holder_offset_in_bytes(), O0);
+    __ ld_ptr( Lmethod, in_bytes(Method::const_offset()), O0);
+    __ ld_ptr( O0, in_bytes(ConstMethod::constants_offset()), O0);
+    __ ld_ptr( O0, ConstantPool::pool_holder_offset_in_bytes(), O0);
 
-    // lock the mirror, not the klassOop
+    // lock the mirror, not the Klass*
     __ ld_ptr( O0, mirror_offset, O0);
 
 #ifdef ASSERT
@@ -494,14 +494,14 @@
   // (gri - 2/25/2000)
 
 
-  const Address size_of_parameters(G5_method, methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals    (G5_method, methodOopDesc::size_of_locals_offset());
-  const Address max_stack         (G5_method, methodOopDesc::max_stack_offset());
+  const Address size_of_parameters(G5_method, Method::size_of_parameters_offset());
+  const Address size_of_locals    (G5_method, Method::size_of_locals_offset());
+  const Address max_stack         (G5_method, Method::max_stack_offset());
   int rounded_vm_local_words = round_to( frame::interpreter_frame_vm_local_words, WordsPerLong );
 
   const int extra_space =
     rounded_vm_local_words +                   // frame local scratch space
-    //6815692//methodOopDesc::extra_stack_words() +       // extra push slots for MH adapters
+    //6815692//Method::extra_stack_words() +       // extra push slots for MH adapters
     frame::memory_parameter_word_sp_offset +   // register save area
     (native_call ? frame::interpreter_frame_extra_outgoing_argument_words : 0);
 
@@ -573,8 +573,8 @@
   if (native_call) {
     __ mov(G0, Lbcp);
   } else {
-    __ ld_ptr(G5_method, methodOopDesc::const_offset(), Lbcp);
-    __ add(Lbcp, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
+    __ ld_ptr(G5_method, Method::const_offset(), Lbcp);
+    __ add(Lbcp, in_bytes(ConstMethod::codes_offset()), Lbcp);
   }
   __ mov( G5_method, Lmethod);                 // set Lmethod
   __ get_constant_pool_cache( LcpoolCache );   // set LcpoolCache
@@ -607,8 +607,6 @@
   address entry = __ pc();
   Label slow_path;
 
-  __ verify_oop(G5_method);
-
   // do nothing for empty methods (do not even increment invocation counter)
   if ( UseFastEmptyMethods) {
     // If we need a safepoint check, generate full interpreter entry.
@@ -662,8 +660,8 @@
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
     // get first 4 bytes of the bytecodes (big endian!)
-    __ ld_ptr(G5_method, methodOopDesc::const_offset(), G1_scratch);
-    __ ld(G1_scratch, constMethodOopDesc::codes_offset(), G1_scratch);
+    __ ld_ptr(G5_method, Method::const_offset(), G1_scratch);
+    __ ld(G1_scratch, ConstMethod::codes_offset(), G1_scratch);
 
     // move index @ 2 far left then to the right most two bytes.
     __ sll(G1_scratch, 2*BitsPerByte, G1_scratch);
@@ -671,16 +669,16 @@
                       ConstantPoolCacheEntry::size()) * BytesPerWord), G1_scratch);
 
     // get constant pool cache
-    __ ld_ptr(G5_method, methodOopDesc::const_offset(), G3_scratch);
-    __ ld_ptr(G3_scratch, constMethodOopDesc::constants_offset(), G3_scratch);
-    __ ld_ptr(G3_scratch, constantPoolOopDesc::cache_offset_in_bytes(), G3_scratch);
+    __ ld_ptr(G5_method, Method::const_offset(), G3_scratch);
+    __ ld_ptr(G3_scratch, ConstMethod::constants_offset(), G3_scratch);
+    __ ld_ptr(G3_scratch, ConstantPool::cache_offset_in_bytes(), G3_scratch);
 
     // get specific constant pool cache entry
     __ add(G3_scratch, G1_scratch, G3_scratch);
 
     // Check the constant Pool cache entry to see if it has been resolved.
     // If not, need the slow path.
-    ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+    ByteSize cp_base_offset = ConstantPoolCache::base_offset();
     __ ld_ptr(G3_scratch, cp_base_offset + ConstantPoolCacheEntry::indices_offset(), G1_scratch);
     __ srl(G1_scratch, 2*BitsPerByte, G1_scratch);
     __ and3(G1_scratch, 0xFF, G1_scratch);
@@ -827,9 +825,7 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address Laccess_flags(Lmethod, methodOopDesc::access_flags_offset());
-
-  __ verify_oop(G5_method);
+  const Address Laccess_flags(Lmethod, Method::access_flags_offset());
 
   const Register Glocals_size = G3;
   assert_different_registers(Glocals_size, G4_scratch, Gframe_size);
@@ -837,7 +833,7 @@
   // make sure method is native & not abstract
   // rethink these assertions - they can be simplified and shared (gri 2/25/2000)
 #ifdef ASSERT
-  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
+  __ ld(G5_method, Method::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -934,7 +930,7 @@
 
   // get signature handler
   { Label L;
-    Address signature_handler(Lmethod, methodOopDesc::signature_handler_offset());
+    Address signature_handler(Lmethod, Method::signature_handler_offset());
     __ ld_ptr(signature_handler, G3_scratch);
     __ br_notnull_short(G3_scratch, Assembler::pt, L);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), Lmethod);
@@ -991,13 +987,13 @@
     __ btst(JVM_ACC_STATIC, O0);
     __ br( Assembler::zero, false, Assembler::pt, not_static);
     // get native function entry point(O0 is a good temp until the very end)
-    __ delayed()->ld_ptr(Lmethod, in_bytes(methodOopDesc::native_function_offset()), O0);
+    __ delayed()->ld_ptr(Lmethod, in_bytes(Method::native_function_offset()), O0);
     // for static methods insert the mirror argument
     const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 
-    __ ld_ptr(Lmethod, methodOopDesc:: const_offset(), O1);
-    __ ld_ptr(O1, constMethodOopDesc::constants_offset(), O1);
-    __ ld_ptr(O1, constantPoolOopDesc::pool_holder_offset_in_bytes(), O1);
+    __ ld_ptr(Lmethod, Method:: const_offset(), O1);
+    __ ld_ptr(O1, ConstMethod::constants_offset(), O1);
+    __ ld_ptr(O1, ConstantPool::pool_holder_offset_in_bytes(), O1);
     __ ld_ptr(O1, mirror_offset, O1);
 #ifdef ASSERT
     if (!PrintSignatureHandlers)  // do not dirty the output with this
@@ -1259,13 +1255,11 @@
   // make sure registers are different!
   assert_different_registers(G2_thread, G5_method, Gargs, Gtmp1, Gtmp2);
 
-  const Address size_of_parameters(G5_method, methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals    (G5_method, methodOopDesc::size_of_locals_offset());
+  const Address size_of_parameters(G5_method, Method::size_of_parameters_offset());
+  const Address size_of_locals    (G5_method, Method::size_of_locals_offset());
   // Seems like G5_method is live at the point this is used. So we could make this look consistent
   // and use in the asserts.
-  const Address access_flags      (Lmethod,   methodOopDesc::access_flags_offset());
-
-  __ verify_oop(G5_method);
+  const Address access_flags      (Lmethod,   Method::access_flags_offset());
 
   const Register Glocals_size = G3;
   assert_different_registers(Glocals_size, G4_scratch, Gframe_size);
@@ -1273,7 +1267,7 @@
   // make sure method is not native & not abstract
   // rethink these assertions - they can be simplified and shared (gri 2/25/2000)
 #ifdef ASSERT
-  __ ld(G5_method, methodOopDesc::access_flags_offset(), Gtmp1);
+  __ ld(G5_method, Method::access_flags_offset(), Gtmp1);
   {
     Label L;
     __ btst(JVM_ACC_NATIVE, Gtmp1);
@@ -1429,7 +1423,7 @@
 //
 // The entry code below assumes that the following registers are set
 // when coming in:
-//    G5_method: holds the methodOop of the method to call
+//    G5_method: holds the Method* of the method to call
 //    Lesp:    points to the TOS of the callers expression stack
 //             after having pushed all the parameters
 //
@@ -1547,7 +1541,7 @@
        round_to(callee_extra_locals * Interpreter::stackElementWords, WordsPerLong);
   const int max_stack_words = max_stack * Interpreter::stackElementWords;
   return (round_to((max_stack_words
-                   //6815692//+ methodOopDesc::extra_stack_words()
+                   //6815692//+ Method::extra_stack_words()
                    + rounded_vm_local_words
                    + frame::memory_parameter_word_sp_offset), WordsPerLong)
                    // already rounded
@@ -1555,7 +1549,7 @@
 }
 
 // How much stack a method top interpreter activation needs in words.
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
 
   // See call_stub code
   int call_stub_size  = round_to(7 + frame::memory_parameter_word_sp_offset,
@@ -1569,7 +1563,7 @@
                                  monitor_size) + call_stub_size;
 }
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int tempcount,
                                            int popframe_extra_args,
                                            int moncount,
@@ -1830,7 +1824,7 @@
     const Register Gtmp2 = G1_scratch;
 
     // Compute size of arguments for saving when returning to deoptimized caller
-    __ lduh(Lmethod, in_bytes(methodOopDesc::size_of_parameters_offset()), Gtmp1);
+    __ lduh(Lmethod, in_bytes(Method::size_of_parameters_offset()), Gtmp1);
     __ sll(Gtmp1, Interpreter::logStackElementSize, Gtmp1);
     __ sub(Llocals, Gtmp1, Gtmp2);
     __ add(Gtmp2, wordSize, Gtmp2);
@@ -1877,7 +1871,6 @@
   // They remove the activation without checking for bad monitor state.
   // %%% We should make sure this is the right semantics before implementing.
 
-  // %%% changed set_vm_result_2 to set_vm_result and get_vm_result_2 to get_vm_result. Is there a bug here?
   __ set_vm_result(Oexception);
   __ unlock_if_synchronized_method(vtos, /* throw_monitor_exception */ false);
 
--- a/src/cpu/sparc/vm/templateTable_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/templateTable_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -27,7 +27,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -152,7 +152,7 @@
 void TemplateTable::patch_bytecode(Bytecodes::Code bc, Register bc_reg,
                                    Register temp_reg, bool load_bc_into_bc_reg/*=true*/,
                                    int byte_no) {
-  // With sharing on, may need to test methodOop flag.
+  // With sharing on, may need to test Method* flag.
   if (!RewriteBytecodes)  return;
   Label L_patch_done;
 
@@ -304,14 +304,12 @@
   }
   __ get_cpool_and_tags(O0, O2);
 
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
 
   // get type from tags
   __ add(O2, tags_offset, O2);
   __ ldub(O2, O1, O2);
-  // unresolved string? If so, must resolve
-  __ cmp_and_brx_short(O2, JVM_CONSTANT_UnresolvedString, Assembler::equal, Assembler::pt, call_ldc);
 
   // unresolved class? If so, must resolve
   __ cmp_and_brx_short(O2, JVM_CONSTANT_UnresolvedClass, Assembler::equal, Assembler::pt, call_ldc);
@@ -346,9 +344,7 @@
   __ brx(Assembler::notEqual, true, Assembler::pt, notString);
   __ delayed()->ldf(FloatRegisterImpl::S, O0, O1, Ftos_f);
   __ bind(isString);
-  __ ld_ptr(O0, O1, Otos_i);
-  __ verify_oop(Otos_i);
-  __ push(atos);
+  __ stop("string should be rewritten to fast_aldc");
   __ ba_short(exit);
 
   __ bind(notString);
@@ -364,53 +360,36 @@
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableInvokeDynamic) {
-    // We should not encounter this bytecode if !EnableInvokeDynamic.
-    // The verifier will stop it.  However, if we get past the verifier,
-    // this will stop the thread in a reasonable way, without crashing the JVM.
-    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
-                     InterpreterRuntime::throw_IncompatibleClassChangeError));
-    // the call_VM checks for exception, so we should never return here.
-    __ should_not_reach_here();
-    return;
-  }
-
-  Register Rcache = G3_scratch;
-  Register Rscratch = G4_scratch;
-
-  resolve_cache_and_index(f12_oop, Otos_i, Rcache, Rscratch, wide ? sizeof(u2) : sizeof(u1));
-
+  int index_size = wide ? sizeof(u2) : sizeof(u1);
+  Label resolved;
+
+  // We are resolved if the resolved reference cache entry contains a
+  // non-null object (CallSite, etc.)
+  assert_different_registers(Otos_i, G3_scratch);
+  __ get_cache_index_at_bcp(Otos_i, G3_scratch, 1, index_size);  // load index => G3_scratch
+  __ load_resolved_reference_at_index(Otos_i, G3_scratch);
+  __ tst(Otos_i);
+  __ br(Assembler::notEqual, false, Assembler::pt, resolved);
+  __ delayed()->set((int)bytecode(), O1);
+
+  address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);
+
+  // first time invocation - must resolve first
+  __ call_VM(Otos_i, entry, O1);
+  __ bind(resolved);
   __ verify_oop(Otos_i);
-
-  Label L_done;
-  const Register Rcon_klass = G3_scratch;  // same as Rcache
-  const Register Rarray_klass = G4_scratch;  // same as Rscratch
-  __ load_klass(Otos_i, Rcon_klass);
-  AddressLiteral array_klass_addr((address)Universe::systemObjArrayKlassObj_addr());
-  __ load_contents(array_klass_addr, Rarray_klass);
-  __ cmp_and_brx_short(Rarray_klass, Rcon_klass, Assembler::notEqual, Assembler::pt, L_done);
-  __ ld(Address(Otos_i, arrayOopDesc::length_offset_in_bytes()), Rcon_klass);
-  __ tst(Rcon_klass);
-  __ brx(Assembler::zero, true, Assembler::pt, L_done);
-  __ delayed()->clr(Otos_i);    // executed only if branch is taken
-
-  // Load the exception from the system-array which wraps it:
-  __ load_heap_oop(Otos_i, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Otos_i);
-  __ throw_if_not_x(Assembler::never, Interpreter::throw_exception_entry(), G3_scratch);
-
-  __ bind(L_done);
 }
 
+
 void TemplateTable::ldc2_w() {
   transition(vtos, vtos);
-  Label retry, resolved, Long, exit;
-
-  __ bind(retry);
+  Label Long, exit;
+
   __ get_2_byte_integer_at_bcp(1, G3_scratch, O1, InterpreterMacroAssembler::Unsigned);
   __ get_cpool_and_tags(O0, O2);
 
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
   // get type from tags
   __ add(O2, tags_offset, O2);
   __ ldub(O2, O1, O2);
@@ -421,7 +400,7 @@
   __ cmp_and_brx_short(O2, JVM_CONSTANT_Double, Assembler::notEqual, Assembler::pt, Long);
   // A double can be placed at word-aligned locations in the constant pool.
   // Check out Conversions.java for an example.
-  // Also constantPoolOopDesc::header_size() is 20, which makes it very difficult
+  // Also ConstantPool::header_size() is 20, which makes it very difficult
   // to double-align double on the constant pool.  SG, 11/7/97
 #ifdef _LP64
   __ ldf(FloatRegisterImpl::D, G3_scratch, base_offset, Ftos_d);
@@ -1595,7 +1574,6 @@
 
 void TemplateTable::branch(bool is_jsr, bool is_wide) {
   // Note: on SPARC, we use InterpreterMacroAssembler::if_cmp also.
-  __ verify_oop(Lmethod);
   __ verify_thread();
 
   const Register O2_bumped_count = O2;
@@ -1611,9 +1589,9 @@
   // non-JSR normal-branch stuff occurring below.
   if( is_jsr ) {
     // compute return address as bci in Otos_i
-    __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
+    __ ld_ptr(Lmethod, Method::const_offset(), G3_scratch);
     __ sub(Lbcp, G3_scratch, G3_scratch);
-    __ sub(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()) - (is_wide ? 5 : 3), Otos_i);
+    __ sub(G3_scratch, in_bytes(ConstMethod::codes_offset()) - (is_wide ? 5 : 3), Otos_i);
 
     // Bump Lbcp to target of JSR
     __ add(Lbcp, O1_disp, Lbcp);
@@ -1645,20 +1623,20 @@
       int mask = ((1 << Tier0BackedgeNotifyFreqLog) - 1) << InvocationCounter::count_shift;
       if (ProfileInterpreter) {
         // If no method data exists, go to profile_continue.
-        __ ld_ptr(Lmethod, methodOopDesc::method_data_offset(), G4_scratch);
+        __ ld_ptr(Lmethod, Method::method_data_offset(), G4_scratch);
         __ br_null_short(G4_scratch, Assembler::pn, Lno_mdo);
 
         // Increment backedge counter in the MDO
-        Address mdo_backedge_counter(G4_scratch, in_bytes(methodDataOopDesc::backedge_counter_offset()) +
+        Address mdo_backedge_counter(G4_scratch, in_bytes(MethodData::backedge_counter_offset()) +
                                                  in_bytes(InvocationCounter::counter_offset()));
         __ increment_mask_and_jump(mdo_backedge_counter, increment, mask, G3_scratch, Lscratch,
                                    Assembler::notZero, &Lforward);
         __ ba_short(Loverflow);
       }
 
-      // If there's no MDO, increment counter in methodOop
+      // If there's no MDO, increment counter in Method*
       __ bind(Lno_mdo);
-      Address backedge_counter(Lmethod, in_bytes(methodOopDesc::backedge_counter_offset()) +
+      Address backedge_counter(Lmethod, in_bytes(Method::backedge_counter_offset()) +
                                         in_bytes(InvocationCounter::counter_offset()));
       __ increment_mask_and_jump(backedge_counter, increment, mask, G3_scratch, Lscratch,
                                  Assembler::notZero, &Lforward);
@@ -1791,9 +1769,9 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
+  __ ld_ptr(Lmethod, Method::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
-  __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
+  __ add(G3_scratch, in_bytes(ConstMethod::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
 }
 
@@ -1806,9 +1784,9 @@
 
   __ profile_ret(vtos, Otos_i, G4_scratch);
 
-  __ ld_ptr(Lmethod, methodOopDesc::const_offset(), G3_scratch);
+  __ ld_ptr(Lmethod, Method::const_offset(), G3_scratch);
   __ add(G3_scratch, Otos_i, G3_scratch);
-  __ add(G3_scratch, in_bytes(constMethodOopDesc::codes_offset()), Lbcp);
+  __ add(G3_scratch, in_bytes(ConstMethod::codes_offset()), Lbcp);
   __ dispatch_next(vtos);
 }
 
@@ -2086,34 +2064,17 @@
 
 // ----------------------------------------------------------------------------
 void TemplateTable::resolve_cache_and_index(int byte_no,
-                                            Register result,
                                             Register Rcache,
                                             Register index,
                                             size_t index_size) {
   // Depends on cpCacheOop layout!
   Label resolved;
 
-  if (byte_no == f12_oop) {
-    // We are resolved if the f1 field contains a non-null object (CallSite, MethodType, etc.)
-    // This kind of CP cache entry does not need to match bytecode_1 or bytecode_2, because
-    // there is a 1-1 relation between bytecode type and CP entry type.
-    // The caller will also load a methodOop from f2.
-    assert(result != noreg, "");
-    assert_different_registers(result, Rcache);
-    __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-    __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() +
-              ConstantPoolCacheEntry::f1_offset(), result);
-    __ tst(result);
-    __ br(Assembler::notEqual, false, Assembler::pt, resolved);
-    __ delayed()->set((int)bytecode(), O1);
-  } else {
     assert(byte_no == f1_byte || byte_no == f2_byte, "byte_no out of range");
-    assert(result == noreg, "");  //else change code for setting result
     __ get_cache_and_index_and_bytecode_at_bcp(Rcache, index, Lbyte_code, byte_no, 1, index_size);
     __ cmp(Lbyte_code, (int) bytecode());  // have we resolved this bytecode?
     __ br(Assembler::equal, false, Assembler::pt, resolved);
     __ delayed()->set((int)bytecode(), O1);
-  }
 
   address entry;
   switch (bytecode()) {
@@ -2127,8 +2088,6 @@
     case Bytecodes::_invokeinterface: entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke);  break;
     case Bytecodes::_invokehandle   : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokehandle);  break;
     case Bytecodes::_invokedynamic  : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic);  break;
-    case Bytecodes::_fast_aldc      : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);     break;
-    case Bytecodes::_fast_aldc_w    : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);     break;
     default:
       fatal(err_msg("unexpected bytecode: %s", Bytecodes::name(bytecode())));
       break;
@@ -2137,9 +2096,6 @@
   __ call_VM(noreg, entry, O1);
   // Update registers with resolved info
   __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-  if (result != noreg)
-    __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() +
-              ConstantPoolCacheEntry::f1_offset(), result);
   __ bind(resolved);
 }
 
@@ -2158,37 +2114,29 @@
   // determine constant pool cache field offsets
   assert(is_invokevirtual == (byte_no == f2_byte), "is_invokevirtual flag redundant");
   const int method_offset = in_bytes(
-      constantPoolCacheOopDesc::base_offset() +
+      ConstantPoolCache::base_offset() +
       ((byte_no == f2_byte)
        ? ConstantPoolCacheEntry::f2_offset()
        : ConstantPoolCacheEntry::f1_offset()
       )
     );
-  const int flags_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int flags_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::flags_offset());
   // access constant pool cache fields
-  const int index_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int index_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::f2_offset());
 
   if (is_invokevfinal) {
     __ get_cache_and_index_at_bcp(cache, index, 1);
     __ ld_ptr(Address(cache, method_offset), method);
-  } else if (byte_no == f12_oop) {
-    // Resolved f1_oop (CallSite, MethodType, etc.) goes into 'itable_index'.
-    // Resolved f2_oop (methodOop invoker) will go into 'method' (at index_offset).
-    // See ConstantPoolCacheEntry::set_dynamic_call and set_method_handle.
+  } else {
     size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2));
-    resolve_cache_and_index(byte_no, itable_index, cache, index, index_size);
-    __ ld_ptr(Address(cache, index_offset), method);
-    itable_index = noreg;  // hack to disable load below
-  } else {
-    resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+    resolve_cache_and_index(byte_no, cache, index, index_size);
     __ ld_ptr(Address(cache, method_offset), method);
   }
 
   if (itable_index != noreg) {
-    // pick up itable index from f2 also:
-    assert(byte_no == f1_byte, "already picked up f1");
+    // pick up itable or appendix index from f2 also:
     __ ld_ptr(Address(cache, index_offset), itable_index);
   }
   __ ld_ptr(Address(cache, flags_offset), flags);
@@ -2203,12 +2151,14 @@
                                               bool is_static) {
   assert_different_registers(Rcache, Rflags, Roffset);
 
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::flags_offset(), Rflags);
   __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f2_offset(), Roffset);
   if (is_static) {
     __ ld_ptr(Rcache, cp_base_offset + ConstantPoolCacheEntry::f1_offset(), Robj);
+    const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+    __ ld_ptr( Robj, mirror_offset, Robj);
   }
 }
 
@@ -2218,7 +2168,7 @@
                                             Register index,
                                             bool is_static,
                                             bool has_tos) {
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   if (JvmtiExport::can_post_field_access()) {
     // Check to see if a field access watch has been set before we take
@@ -2264,9 +2214,9 @@
   Register Rclass = Rcache;
   Register Roffset= G4_scratch;
   Register Rflags = G1_scratch;
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
-
-  resolve_cache_and_index(byte_no, noreg, Rcache, index, sizeof(u2));
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
+
+  resolve_cache_and_index(byte_no, Rcache, index, sizeof(u2));
   jvmti_post_field_access(Rcache, index, is_static, false);
   load_field_cp_cache_entry(Rclass, Rcache, index, Roffset, Rflags, is_static);
 
@@ -2439,7 +2389,7 @@
   Register index   = G4_scratch;
   Register Roffset = G4_scratch;
   Register Rflags  = Rcache;
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   __ get_cache_and_index_at_bcp(Rcache, index, 1);
   jvmti_post_field_access(Rcache, index, /*is_static*/false, /*has_tos*/true);
@@ -2550,7 +2500,7 @@
 // The registers Rcache and index expected to be set before call.
 // The function may destroy various registers, just not the Rcache and index registers.
 void TemplateTable::jvmti_post_field_mod(Register Rcache, Register index, bool is_static) {
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   if (JvmtiExport::can_post_field_modification()) {
     // Check to see if a field modification watch has been set before we take
@@ -2624,9 +2574,9 @@
   Register Rclass = Rcache;
   Register Roffset= G4_scratch;
   Register Rflags = G1_scratch;
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
-
-  resolve_cache_and_index(byte_no, noreg, Rcache, index, sizeof(u2));
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
+
+  resolve_cache_and_index(byte_no, Rcache, index, sizeof(u2));
   jvmti_post_field_mod(Rcache, index, is_static);
   load_field_cp_cache_entry(Rclass, Rcache, index, Roffset, Rflags, is_static);
 
@@ -2831,7 +2781,7 @@
   Register Rclass = Rcache;
   Register Roffset= G4_scratch;
   Register Rflags = G1_scratch;
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   jvmti_post_fast_field_mod();
 
@@ -2903,7 +2853,7 @@
 
   // access constant pool cache  (is resolved)
   __ get_cache_and_index_at_bcp(Rcache, G4_scratch, 2);
-  __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset(), Roffset);
+  __ ld_ptr(Rcache, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset(), Roffset);
   __ add(Lbcp, 1, Lbcp);       // needed to report exception at the correct bcp
 
   __ verify_oop(Rreceiver);
@@ -2923,7 +2873,7 @@
   if (__ membar_has_effect(membar_bits)) {
 
     // Get is_volatile value in Rflags and check if membar is needed
-    __ ld_ptr(Rcache, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset(), Rflags);
+    __ ld_ptr(Rcache, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset(), Rflags);
 
     // Test volatile
     Label notVolatile;
@@ -2947,7 +2897,6 @@
   ShouldNotReachHere();
 }
 
-
 void TemplateTable::prepare_invoke(int byte_no,
                                    Register method,  // linked method (or i-klass)
                                    Register ra,      // return address
@@ -2980,7 +2929,6 @@
   // maybe push appendix to arguments
   if (is_invokedynamic || is_invokehandle) {
     Label L_no_push;
-    __ verify_oop(index);
     __ set((1 << ConstantPoolCacheEntry::has_appendix_shift), temp);
     __ btst(flags, temp);
     __ br(Assembler::zero, false, Assembler::pt, L_no_push);
@@ -2988,7 +2936,9 @@
     // Push the appendix as a trailing parameter.
     // This must be done before we get the receiver,
     // since the parameter_size includes it.
-    __ push_ptr(index);  // push appendix (MethodType, CallSite, etc.)
+    __ load_resolved_reference_at_index(temp, index);
+    __ verify_oop(temp);
+    __ push_ptr(temp);  // push appendix (MethodType, CallSite, etc.)
     __ bind(L_no_push);
   }
 
@@ -3021,7 +2971,7 @@
   Register Rcall = Rindex;
   assert_different_registers(Rcall, G5_method, Gargs, Rret);
 
-  // get target methodOop & entry point
+  // get target Method* & entry point
   __ lookup_virtual_method(Rrecv, Rindex, G5_method);
   __ call_from_interpreter(Rcall, Gargs, Rret);
 }
@@ -3068,7 +3018,7 @@
   // get receiver klass
   __ null_check(O0_recv, oopDesc::klass_offset_in_bytes());
   __ load_klass(O0_recv, O0_recv);
-  __ verify_oop(O0_recv);
+  __ verify_klass_ptr(O0_recv);
 
   __ profile_virtual_call(O0_recv, O4);
 
@@ -3088,10 +3038,8 @@
 void TemplateTable::invokevfinal_helper(Register Rscratch, Register Rret) {
   Register Rtemp = G4_scratch;
 
-  __ verify_oop(G5_method);
-
   // Load receiver from stack slot
-  __ lduh(G5_method, in_bytes(methodOopDesc::size_of_parameters_offset()), G4_scratch);
+  __ lduh(G5_method, in_bytes(Method::size_of_parameters_offset()), G4_scratch);
   __ load_receiver(G4_scratch, O0);
 
   // receiver NULL check
@@ -3126,7 +3074,6 @@
   __ null_check(O0_recv);
 
   // do the call
-  __ verify_oop(G5_method);
   __ profile_call(O4);
   __ call_from_interpreter(Rscratch, Gargs, Rret);
 }
@@ -3139,16 +3086,14 @@
   const Register Rret     = Lscratch;
   const Register Rscratch = G3_scratch;
 
-  prepare_invoke(byte_no, G5_method, Rret);  // get f1 methodOop
+  prepare_invoke(byte_no, G5_method, Rret);  // get f1 Method*
 
   // do the call
-  __ verify_oop(G5_method);
   __ profile_call(O4);
   __ call_from_interpreter(Rscratch, Gargs, Rret);
 }
 
-
-void TemplateTable::invokeinterface_object_method(Register RklassOop,
+void TemplateTable::invokeinterface_object_method(Register RKlass,
                                                   Register Rcall,
                                                   Register Rret,
                                                   Register Rflags) {
@@ -3167,14 +3112,14 @@
 
   __ profile_final_call(O4);
 
-  // do the call - the index (f2) contains the methodOop
+  // do the call - the index (f2) contains the Method*
   assert_different_registers(G5_method, Gargs, Rcall);
   __ mov(Rindex, G5_method);
   __ call_from_interpreter(Rcall, Gargs, Rret);
   __ bind(notFinal);
 
-  __ profile_virtual_call(RklassOop, O4);
-  generate_vtable_call(RklassOop, Rindex, Rret);
+  __ profile_virtual_call(RKlass, O4);
+  generate_vtable_call(RKlass, Rindex, Rret);
 }
 
 
@@ -3187,7 +3132,7 @@
   const Register Rindex      = Lscratch;
   const Register O0_recv     = O0;
   const Register O1_flags    = O1;
-  const Register O2_klassOop = O2;
+  const Register O2_Klass    = O2;
   const Register Rscratch    = G4_scratch;
   assert_different_registers(Rscratch, G5_method);
 
@@ -3195,8 +3140,7 @@
 
   // get receiver klass
   __ null_check(O0_recv, oopDesc::klass_offset_in_bytes());
-  __ load_klass(O0_recv, O2_klassOop);
-  __ verify_oop(O2_klassOop);
+  __ load_klass(O0_recv, O2_Klass);
 
   // Special case of invokeinterface called for virtual method of
   // java.lang.Object.  See cpCacheOop.cpp for details.
@@ -3208,22 +3152,22 @@
   __ br(Assembler::zero, false, Assembler::pt, notMethod);
   __ delayed()->nop();
 
-  invokeinterface_object_method(O2_klassOop, Rinterface, Rret, O1_flags);
+  invokeinterface_object_method(O2_Klass, Rinterface, Rret, O1_flags);
 
   __ bind(notMethod);
 
-  __ profile_virtual_call(O2_klassOop, O4);
+  __ profile_virtual_call(O2_Klass, O4);
 
   //
   // find entry point to call
   //
 
   // compute start of first itableOffsetEntry (which is at end of vtable)
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
+  const int base = InstanceKlass::vtable_start_offset() * wordSize;
   Label search;
   Register Rtemp = O1_flags;
 
-  __ ld(O2_klassOop, instanceKlass::vtable_length_offset() * wordSize, Rtemp);
+  __ ld(O2_Klass, InstanceKlass::vtable_length_offset() * wordSize, Rtemp);
   if (align_object_offset(1) > 1) {
     __ round_to(Rtemp, align_object_offset(1));
   }
@@ -3234,7 +3178,7 @@
     __ set(base, Rscratch);
     __ add(Rscratch, Rtemp, Rtemp);
   }
-  __ add(O2_klassOop, Rtemp, Rscratch);
+  __ add(O2_Klass, Rtemp, Rscratch);
 
   __ bind(search);
 
@@ -3251,11 +3195,8 @@
     call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_IncompatibleClassChangeError));
     __ should_not_reach_here();
     __ bind(ok);
-    __ verify_oop(Rtemp);
   }
 
-  __ verify_oop(Rinterface);
-
   __ cmp(Rinterface, Rtemp);
   __ brx(Assembler::notEqual, true, Assembler::pn, search);
   __ delayed()->add(Rscratch, itableOffsetEntry::size() * wordSize, Rscratch);
@@ -3266,7 +3207,7 @@
   assert(itableMethodEntry::method_offset_in_bytes() == 0, "adjust instruction below");
   __ sll(Rindex, exact_log2(itableMethodEntry::size() * wordSize), Rindex);       // Rindex *= 8;
   __ add(Rscratch, Rindex, Rscratch);
-  __ ld_ptr(O2_klassOop, Rscratch, G5_method);
+  __ ld_ptr(O2_Klass, Rscratch, G5_method);
 
   // Check for abstract method error.
   {
@@ -3280,14 +3221,12 @@
   Register Rcall = Rinterface;
   assert_different_registers(Rcall, G5_method, Gargs, Rret);
 
-  __ verify_oop(G5_method);
   __ call_from_interpreter(Rcall, Gargs, Rret);
 }
 
-
 void TemplateTable::invokehandle(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
 
   if (!EnableInvokeDynamic) {
     // rewriter does not generate this bytecode
@@ -3303,13 +3242,13 @@
   prepare_invoke(byte_no, G5_method, Rret, G4_mtype, O0_recv);
   __ null_check(O0_recv);
 
-  // G4: MethodType object (from f1)
+  // G4: MethodType object (from cpool->resolved_references[])
   // G5: MH.linkToCallSite method (from f2)
 
   // Note:  G4_mtype is already pushed (if necessary) by prepare_invoke
 
   // do the call
-  __ verify_oop(G5_method);
+  __ verify_oop(G4_mtype);
   __ profile_final_call(O4);  // FIXME: profile the LambdaForm also
   __ call_from_interpreter(Rscratch, Gargs, Rret);
 }
@@ -3317,7 +3256,7 @@
 
 void TemplateTable::invokedynamic(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
 
   if (!EnableInvokeDynamic) {
     // We should not encounter this bytecode if !EnableInvokeDynamic.
@@ -3336,8 +3275,8 @@
 
   prepare_invoke(byte_no, G5_method, Rret, G4_callsite);
 
-  // G4: CallSite object (from f1)
-  // G5: MH.linkToCallSite method (from f2)
+  // G4: CallSite object (from cpool->resolved_references[])
+  // G5: MH.linkToCallSite method (from f1)
 
   // Note:  G4_callsite is already pushed by prepare_invoke
 
@@ -3346,7 +3285,7 @@
   __ profile_call(O4);
 
   // do the call
-  __ verify_oop(G5_method);
+  __ verify_oop(G4_callsite);
   __ call_from_interpreter(Rscratch, Gargs, Rret);
 }
 
@@ -3370,25 +3309,25 @@
   __ get_2_byte_integer_at_bcp(1, Rscratch, Roffset, InterpreterMacroAssembler::Unsigned);
   __ get_cpool_and_tags(Rscratch, G3_scratch);
   // make sure the class we're about to instantiate has been resolved
-  // This is done before loading instanceKlass to be consistent with the order
-  // how Constant Pool is updated (see constantPoolOopDesc::klass_at_put)
-  __ add(G3_scratch, typeArrayOopDesc::header_size(T_BYTE) * wordSize, G3_scratch);
+  // This is done before loading InstanceKlass to be consistent with the order
+  // how Constant Pool is updated (see ConstantPool::klass_at_put)
+  __ add(G3_scratch, Array<u1>::base_offset_in_bytes(), G3_scratch);
   __ ldub(G3_scratch, Roffset, G3_scratch);
   __ cmp(G3_scratch, JVM_CONSTANT_Class);
   __ br(Assembler::notEqual, false, Assembler::pn, slow_case);
   __ delayed()->sll(Roffset, LogBytesPerWord, Roffset);
-  // get instanceKlass
+  // get InstanceKlass
   //__ sll(Roffset, LogBytesPerWord, Roffset);        // executed in delay slot
-  __ add(Roffset, sizeof(constantPoolOopDesc), Roffset);
+  __ add(Roffset, sizeof(ConstantPool), Roffset);
   __ ld_ptr(Rscratch, Roffset, RinstanceKlass);
 
   // make sure klass is fully initialized:
-  __ ldub(RinstanceKlass, in_bytes(instanceKlass::init_state_offset()), G3_scratch);
-  __ cmp(G3_scratch, instanceKlass::fully_initialized);
+  __ ldub(RinstanceKlass, in_bytes(InstanceKlass::init_state_offset()), G3_scratch);
+  __ cmp(G3_scratch, InstanceKlass::fully_initialized);
   __ br(Assembler::notEqual, false, Assembler::pn, slow_case);
   __ delayed()->ld(RinstanceKlass, in_bytes(Klass::layout_helper_offset()), Roffset);
 
-  // get instance_size in instanceKlass (already aligned)
+  // get instance_size in InstanceKlass (already aligned)
   //__ ld(RinstanceKlass, in_bytes(Klass::layout_helper_offset()), Roffset);
 
   // make sure klass does not have has_finalizer, or is abstract, or interface or java/lang/Class
@@ -3584,21 +3523,22 @@
 
   // See if the checkcast has been quickened
   __ get_cpool_and_tags(Lscratch, G3_scratch);
-  __ add(G3_scratch, typeArrayOopDesc::header_size(T_BYTE) * wordSize, G3_scratch);
+  __ add(G3_scratch, Array<u1>::base_offset_in_bytes(), G3_scratch);
   __ ldub(G3_scratch, Roffset, G3_scratch);
   __ cmp(G3_scratch, JVM_CONSTANT_Class);
   __ br(Assembler::equal, true, Assembler::pt, quicked);
   __ delayed()->sll(Roffset, LogBytesPerWord, Roffset);
 
   __ push_ptr(); // save receiver for result, and for GC
-  call_VM(RspecifiedKlass, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  __ get_vm_result_2(RspecifiedKlass);
   __ pop_ptr(Otos_i, G3_scratch); // restore receiver
 
   __ ba_short(resolved);
 
   // Extract target class from constant pool
   __ bind(quicked);
-  __ add(Roffset, sizeof(constantPoolOopDesc), Roffset);
+  __ add(Roffset, sizeof(ConstantPool), Roffset);
   __ ld_ptr(Lscratch, Roffset, RspecifiedKlass);
   __ bind(resolved);
   __ load_klass(Otos_i, RobjKlass); // get value klass
@@ -3639,21 +3579,22 @@
 
   // See if the checkcast has been quickened
   __ get_cpool_and_tags(Lscratch, G3_scratch);
-  __ add(G3_scratch, typeArrayOopDesc::header_size(T_BYTE) * wordSize, G3_scratch);
+  __ add(G3_scratch, Array<u1>::base_offset_in_bytes(), G3_scratch);
   __ ldub(G3_scratch, Roffset, G3_scratch);
   __ cmp(G3_scratch, JVM_CONSTANT_Class);
   __ br(Assembler::equal, true, Assembler::pt, quicked);
   __ delayed()->sll(Roffset, LogBytesPerWord, Roffset);
 
   __ push_ptr(); // save receiver for result, and for GC
-  call_VM(RspecifiedKlass, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  __ get_vm_result_2(RspecifiedKlass);
   __ pop_ptr(Otos_i, G3_scratch); // restore receiver
 
   __ ba_short(resolved);
 
   // Extract target class from constant pool
   __ bind(quicked);
-  __ add(Roffset, sizeof(constantPoolOopDesc), Roffset);
+  __ add(Roffset, sizeof(ConstantPool), Roffset);
   __ get_constant_pool(Lscratch);
   __ ld_ptr(Lscratch, Roffset, RspecifiedKlass);
   __ bind(resolved);
--- a/src/cpu/sparc/vm/templateTable_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/templateTable_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -34,7 +34,7 @@
                              );
   // helper function
   static void invokevfinal_helper(Register Rcache, Register Rret);
-  static void invokeinterface_object_method(Register RklassOop, Register Rcall,
+  static void invokeinterface_object_method(Register RKlass, Register Rcall,
                                             Register Rret,
                                             Register Rflags);
   static void generate_vtable_call(Register Rrecv, Register Rindex, Register Rret);
--- a/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -69,12 +69,12 @@
   address npe_addr = __ pc();
   __ load_klass(O0, G3_scratch);
 
-  // set methodOop (in case of interpreted method), and destination address
+  // set Method* (in case of interpreted method), and destination address
 #ifndef PRODUCT
   if (DebugVtables) {
     Label L;
     // check offset vs vtable length
-    __ ld(G3_scratch, instanceKlass::vtable_length_offset()*wordSize, G5);
+    __ ld(G3_scratch, InstanceKlass::vtable_length_offset()*wordSize, G5);
     __ cmp_and_br_short(G5, vtable_index*vtableEntry::size(), Assembler::greaterUnsigned, Assembler::pt, L);
     __ set(vtable_index, O2);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, bad_compiled_vtable_index), O0, O2);
@@ -96,11 +96,11 @@
   address ame_addr = __ pc();  // if the vtable entry is null, the method is abstract
                                // NOTE: for vtable dispatches, the vtable entry will never be null.
 
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3_scratch);
+  __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3_scratch);
 
   // jump to target (either compiled code or c2iadapter)
   __ JMP(G3_scratch, 0);
-  // load methodOop (in case we call c2iadapter)
+  // load Method* (in case we call c2iadapter)
   __ delayed()->nop();
 
   masm->flush();
@@ -130,7 +130,7 @@
   CodeBuffer cb(s->entry_point(), sparc_code_length);
   MacroAssembler* masm = new MacroAssembler(&cb);
 
-  Register G3_klassOop = G3_scratch;
+  Register G3_Klass = G3_scratch;
   Register G5_interface = G5;  // Passed in as an argument
   Label search;
 
@@ -141,8 +141,7 @@
 
   // get receiver klass (also an implicit null-check)
   address npe_addr = __ pc();
-  __ load_klass(O0, G3_klassOop);
-  __ verify_oop(G3_klassOop);
+  __ load_klass(O0, G3_Klass);
 
   // Push a new window to get some temp registers.  This chops the head of all
   // my 64-bit %o registers in the LION build, but this is OK because no longs
@@ -160,7 +159,7 @@
 
   Register L5_method = L5;
   __ lookup_interface_method(// inputs: rec. class, interface, itable index
-                             G3_klassOop, G5_interface, itable_index,
+                             G3_Klass, G5_interface, itable_index,
                              // outputs: method, scan temp. reg
                              L5_method, L2, L3,
                              throw_icce);
@@ -169,9 +168,8 @@
   if (DebugVtables) {
     Label L01;
     __ br_notnull_short(L5_method, Assembler::pt, L01);
-    __ stop("methodOop is null");
+    __ stop("Method* is null");
     __ bind(L01);
-    __ verify_oop(L5_method);
   }
 #endif
 
@@ -182,9 +180,9 @@
   // Restore registers *before* the AME point.
 
   address ame_addr = __ pc();   // if the vtable entry is null, the method is abstract
-  __ ld_ptr(G5_method, in_bytes(methodOopDesc::from_compiled_offset()), G3_scratch);
+  __ ld_ptr(G5_method, in_bytes(Method::from_compiled_offset()), G3_scratch);
 
-  // G5_method:  methodOop
+  // G5_method:  Method*
   // O0:         Receiver
   // G3_scratch: entry point
   __ JMP(G3_scratch, 0);
@@ -221,13 +219,13 @@
       // ld;ld;ld,jmp,nop
       const int basic = 5*BytesPerInstWord +
                         // shift;add for load_klass (only shift with zero heap based)
-                        (UseCompressedOops ?
+                        (UseCompressedKlassPointers ?
                          ((Universe::narrow_oop_base() == NULL) ? BytesPerInstWord : 2*BytesPerInstWord) : 0);
       return basic + slop;
     } else {
       const int basic = (28 LP64_ONLY(+ 6)) * BytesPerInstWord +
                         // shift;add for load_klass (only shift with zero heap based)
-                        (UseCompressedOops ?
+                        (UseCompressedKlassPointers ?
                          ((Universe::narrow_oop_base() == NULL) ? BytesPerInstWord : 2*BytesPerInstWord) : 0);
       return (basic + slop);
     }
--- a/src/cpu/x86/vm/assembler_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/assembler_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -57,6 +57,7 @@
   _target = target;
   switch (rtype) {
   case relocInfo::oop_type:
+  case relocInfo::metadata_type:
     // Oops are a special case. Normally they would be their own section
     // but in cases like icBuffer they are literals in the code stream that
     // we don't have a section for. We use none so that we get a literal address
@@ -154,10 +155,10 @@
 // Convert the raw encoding form into the form expected by the constructor for
 // Address.  An index of 4 (rsp) corresponds to having no index, so convert
 // that to noreg for the Address constructor.
-Address Address::make_raw(int base, int index, int scale, int disp, bool disp_is_oop) {
+Address Address::make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc) {
   RelocationHolder rspec;
-  if (disp_is_oop) {
-    rspec = Relocation::spec_simple(relocInfo::oop_type);
+  if (disp_reloc != relocInfo::none) {
+    rspec = Relocation::spec_simple(disp_reloc);
   }
   bool valid_index = index != rsp->encoding();
   if (valid_index) {
@@ -270,17 +271,6 @@
   }
 }
 
-void Assembler::emit_arith(int op1, int op2, Register dst, jobject obj) {
-  LP64_ONLY(ShouldNotReachHere());
-  assert(isByte(op1) && isByte(op2), "wrong opcode");
-  assert((op1 & 0x01) == 1, "should be 32bit operation");
-  assert((op1 & 0x02) == 0, "sign-extension bit should not be set");
-  InstructionMark im(this);
-  emit_byte(op1);
-  emit_byte(op2 | encode(dst));
-  emit_data((intptr_t)obj, relocInfo::oop_type, 0);
-}
-
 
 void Assembler::emit_arith(int op1, int op2, Register dst, Register src) {
   assert(isByte(op1) && isByte(op2), "wrong opcode");
@@ -5572,6 +5562,14 @@
   increment(rsp, number_of_arguments * wordSize);
 }
 
+void MacroAssembler::cmpklass(Address src1, Metadata* obj) {
+  cmp_literal32(src1, (int32_t)obj, metadata_Relocation::spec_for_immediate());
+}
+
+void MacroAssembler::cmpklass(Register src1, Metadata* obj) {
+  cmp_literal32(src1, (int32_t)obj, metadata_Relocation::spec_for_immediate());
+}
+
 void MacroAssembler::cmpoop(Address src1, jobject obj) {
   cmp_literal32(src1, (int32_t)obj, oop_Relocation::spec_for_immediate());
 }
@@ -5753,6 +5751,14 @@
   mov_literal32(dst, (int32_t)obj, oop_Relocation::spec_for_immediate());
 }
 
+void MacroAssembler::mov_metadata(Register dst, Metadata* obj) {
+  mov_literal32(dst, (int32_t)obj, metadata_Relocation::spec_for_immediate());
+}
+
+void MacroAssembler::mov_metadata(Address dst, Metadata* obj) {
+  mov_literal32(dst, (int32_t)obj, metadata_Relocation::spec_for_immediate());
+}
+
 void MacroAssembler::movptr(Register dst, AddressLiteral src) {
   if (src.is_lval()) {
     mov_literal32(dst, (intptr_t)src.target(), src.rspec());
@@ -5804,6 +5810,9 @@
   push_literal32((int32_t)obj, oop_Relocation::spec_for_immediate());
 }
 
+void MacroAssembler::pushklass(Metadata* obj) {
+  push_literal32((int32_t)obj, metadata_Relocation::spec_for_immediate());
+}
 
 void MacroAssembler::pushptr(AddressLiteral src) {
   if (src.is_lval()) {
@@ -5856,13 +5865,13 @@
     if (os::message_box(msg, "Execution stopped, print registers?")) {
       print_state32(rdi, rsi, rbp, rsp, rbx, rdx, rcx, rax, eip);
       BREAKPOINT;
-      assert(false, "start up GDB");
     }
   } else {
     ttyLocker ttyl;
     ::tty->print_cr("=============== DEBUG MESSAGE: %s ================\n", msg);
+  }
+  // Don't assert holding the ttyLock
     assert(false, err_msg("DEBUG MESSAGE: %s", msg));
-  }
   ThreadStateTransition::transition(thread, _thread_in_vm, saved_state);
 }
 
@@ -6280,6 +6289,15 @@
   movq(dst, rscratch1);
 }
 
+void MacroAssembler::mov_metadata(Register dst, Metadata* obj) {
+  mov_literal64(dst, (intptr_t)obj, metadata_Relocation::spec_for_immediate());
+}
+
+void MacroAssembler::mov_metadata(Address dst, Metadata* obj) {
+  mov_literal64(rscratch1, (intptr_t)obj, metadata_Relocation::spec_for_immediate());
+  movq(dst, rscratch1);
+}
+
 void MacroAssembler::movptr(Register dst, AddressLiteral src) {
   if (src.is_lval()) {
     mov_literal64(dst, (intptr_t)src.target(), src.rspec());
@@ -6321,6 +6339,11 @@
   push(rscratch1);
 }
 
+void MacroAssembler::pushklass(Metadata* obj) {
+  mov_metadata(rscratch1, obj);
+  push(rscratch1);
+}
+
 void MacroAssembler::pushptr(AddressLiteral src) {
   lea(rscratch1, src);
   if (src.is_lval()) {
@@ -6655,6 +6678,12 @@
   }
 }
 
+void MacroAssembler::ic_call(address entry) {
+  RelocationHolder rh = virtual_call_Relocation::spec(pc());
+  movptr(rax, (intptr_t)Universe::non_oop_word());
+  call(AddressLiteral(entry, rh));
+}
+
 // Implementation of call_VM versions
 
 void MacroAssembler::call_VM(Register oop_result,
@@ -6923,9 +6952,7 @@
 
   // get oop result if there is one and reset the value in the thread
   if (oop_result->is_valid()) {
-    movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset()));
-    movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD);
-    verify_oop(oop_result, "broken oop in call_VM_base");
+    get_vm_result(oop_result, java_thread);
   }
 }
 
@@ -7016,6 +7043,17 @@
   MacroAssembler::call_VM_leaf_base(entry_point, 4);
 }
 
+void MacroAssembler::get_vm_result(Register oop_result, Register java_thread) {
+  movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset()));
+  movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD);
+  verify_oop(oop_result, "broken oop in call_VM_base");
+}
+
+void MacroAssembler::get_vm_result_2(Register metadata_result, Register java_thread) {
+  movptr(metadata_result, Address(java_thread, JavaThread::vm_result_2_offset()));
+  movptr(Address(java_thread, JavaThread::vm_result_2_offset()), NULL_WORD);
+}
+
 void MacroAssembler::check_and_handle_earlyret(Register java_thread) {
 }
 
@@ -9097,20 +9135,20 @@
          "caller must use same register for non-constant itable index as for method");
 
   // Compute start of first itableOffsetEntry (which is at the end of the vtable)
-  int vtable_base = instanceKlass::vtable_start_offset() * wordSize;
+  int vtable_base = InstanceKlass::vtable_start_offset() * wordSize;
   int itentry_off = itableMethodEntry::method_offset_in_bytes();
   int scan_step   = itableOffsetEntry::size() * wordSize;
   int vte_size    = vtableEntry::size() * wordSize;
   Address::ScaleFactor times_vte_scale = Address::times_ptr;
   assert(vte_size == wordSize, "else adjust times_vte_scale");
 
-  movl(scan_temp, Address(recv_klass, instanceKlass::vtable_length_offset() * wordSize));
+  movl(scan_temp, Address(recv_klass, InstanceKlass::vtable_length_offset() * wordSize));
 
   // %%% Could store the aligned, prescaled offset in the klassoop.
   lea(scan_temp, Address(recv_klass, scan_temp, times_vte_scale, vtable_base));
   if (HeapWordsPerLong > 1) {
     // Round up to align_object_offset boundary
-    // see code for instanceKlass::start_of_itable!
+    // see code for InstanceKlass::start_of_itable!
     round_to(scan_temp, BytesPerLong);
   }
 
@@ -9160,7 +9198,7 @@
 void MacroAssembler::lookup_virtual_method(Register recv_klass,
                                            RegisterOrConstant vtable_index,
                                            Register method_result) {
-  const int base = instanceKlass::vtable_start_offset() * wordSize;
+  const int base = InstanceKlass::vtable_start_offset() * wordSize;
   assert(vtableEntry::size() * wordSize == wordSize, "else adjust the scaling in the code below");
   Address vtable_entry_addr(recv_klass,
                             vtable_index, Address::times_ptr,
@@ -9335,33 +9373,19 @@
   // We will consult the secondary-super array.
   movptr(rdi, secondary_supers_addr);
   // Load the array length.  (Positive movl does right thing on LP64.)
-  movl(rcx, Address(rdi, arrayOopDesc::length_offset_in_bytes()));
+  movl(rcx, Address(rdi, Array<Klass*>::length_offset_in_bytes()));
   // Skip to start of data.
-  addptr(rdi, arrayOopDesc::base_offset_in_bytes(T_OBJECT));
+  addptr(rdi, Array<Klass*>::base_offset_in_bytes());
 
   // Scan RCX words at [RDI] for an occurrence of RAX.
   // Set NZ/Z based on last compare.
   // Z flag value will not be set by 'repne' if RCX == 0 since 'repne' does
   // not change flags (only scas instruction which is repeated sets flags).
   // Set Z = 0 (not equal) before 'repne' to indicate that class was not found.
-#ifdef _LP64
-  // This part is tricky, as values in supers array could be 32 or 64 bit wide
-  // and we store values in objArrays always encoded, thus we need to encode
-  // the value of rax before repne.  Note that rax is dead after the repne.
-  if (UseCompressedOops) {
-    encode_heap_oop_not_null(rax); // Changes flags.
-    // The superclass is never null; it would be a basic system error if a null
-    // pointer were to sneak in here.  Note that we have already loaded the
-    // Klass::super_check_offset from the super_klass in the fast path,
-    // so if there is a null in that register, we are already in the afterlife.
-    testl(rax,rax); // Set Z = 0
-    repne_scanl();
-  } else
-#endif // _LP64
-  {
+
     testptr(rax,rax); // Set Z = 0
     repne_scan();
-  }
+
   // Unspill the temp. registers:
   if (pushed_rdi)  pop(rdi);
   if (pushed_rcx)  pop(rcx);
@@ -9907,7 +9931,7 @@
 
 void MacroAssembler::load_klass(Register dst, Register src) {
 #ifdef _LP64
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
     decode_heap_oop_not_null(dst);
   } else
@@ -9917,7 +9941,7 @@
 
 void MacroAssembler::load_prototype_header(Register dst, Register src) {
 #ifdef _LP64
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     assert (Universe::heap() != NULL, "java heap should be initialized");
     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
     if (Universe::narrow_oop_shift() != 0) {
@@ -9942,7 +9966,7 @@
 
 void MacroAssembler::store_klass(Register dst, Register src) {
 #ifdef _LP64
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     encode_heap_oop_not_null(src);
     movl(Address(dst, oopDesc::klass_offset_in_bytes()), src);
   } else
@@ -9952,6 +9976,7 @@
 
 void MacroAssembler::load_heap_oop(Register dst, Address src) {
 #ifdef _LP64
+  // FIXME: Must change all places where we try to load the klass.
   if (UseCompressedOops) {
     movl(dst, src);
     decode_heap_oop(dst);
@@ -10016,7 +10041,7 @@
 
 #ifdef _LP64
 void MacroAssembler::store_klass_gap(Register dst, Register src) {
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     // Store to klass gap in destination
     movl(Address(dst, oopDesc::klass_gap_offset_in_bytes()), src);
   }
--- a/src/cpu/x86/vm/assembler_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/assembler_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -299,7 +299,7 @@
   // Convert the raw encoding form into the form expected by the constructor for
   // Address.  An index of 4 (rsp) corresponds to having no index, so convert
   // that to noreg for the Address constructor.
-  static Address make_raw(int base, int index, int scale, int disp, bool disp_is_oop);
+  static Address make_raw(int base, int index, int scale, int disp, relocInfo::relocType disp_reloc);
 
   static Address make_array(ArrayAddress);
 
@@ -390,14 +390,6 @@
 
 };
 
-class OopAddress: public AddressLiteral {
-
-  public:
-
-  OopAddress(address target) : AddressLiteral(target, relocInfo::oop_type){}
-
-};
-
 class ExternalAddress: public AddressLiteral {
  private:
   static relocInfo::relocType reloc_for_target(address target) {
@@ -668,8 +660,6 @@
   void emit_arith(int op1, int op2, Register dst, int32_t imm32);
   // Force generation of a 4 byte immediate value even if it fits into 8bit
   void emit_arith_imm32(int op1, int op2, Register dst, int32_t imm32);
-  // only 32bit??
-  void emit_arith(int op1, int op2, Register dst, jobject obj);
   void emit_arith(int op1, int op2, Register dst, Register src);
 
   void emit_simd_arith(int opcode, XMMRegister dst, Address src, VexSimdPrefix pre);
@@ -1972,6 +1962,9 @@
                Register arg_1, Register arg_2, Register arg_3,
                bool check_exceptions = true);
 
+  void get_vm_result  (Register oop_result, Register thread);
+  void get_vm_result_2(Register metadata_result, Register thread);
+
   // These always tightly bind to MacroAssembler::call_VM_base
   // bypassing the virtual implementation
   void super_call_VM(Register oop_result, Register last_java_sp, address entry_point, int number_of_arguments = 0, bool check_exceptions = true);
@@ -2281,9 +2274,17 @@
   // Debugging
 
   // only if +VerifyOops
+  // TODO: Make these macros with file and line like sparc version!
   void verify_oop(Register reg, const char* s = "broken oop");
   void verify_oop_addr(Address addr, const char * s = "broken oop addr");
 
+  // TODO: verify method and klass metadata (compare against vptr?)
+  void _verify_method_ptr(Register reg, const char * msg, const char * file, int line) {}
+  void _verify_klass_ptr(Register reg, const char * msg, const char * file, int line){}
+
+#define verify_method_ptr(reg) _verify_method_ptr(reg, "broken method " #reg, __FILE__, __LINE__)
+#define verify_klass_ptr(reg) _verify_klass_ptr(reg, "broken klass " #reg, __FILE__, __LINE__)
+
   // only if +VerifyFPU
   void verify_FPU(int stack_depth, const char* s = "illegal FPU state");
 
@@ -2387,6 +2388,8 @@
   void cmp32(Register src1, Address src2);
 
 #ifndef _LP64
+  void cmpklass(Address dst, Metadata* obj);
+  void cmpklass(Register dst, Metadata* obj);
   void cmpoop(Address dst, jobject obj);
   void cmpoop(Register dst, jobject obj);
 #endif // _LP64
@@ -2486,6 +2489,9 @@
   // for jumps/calls.
   void call(AddressLiteral entry);
 
+  // Emit the CompiledIC call idiom
+  void ic_call(address entry);
+
   // Jumps
 
   // NOTE: these jumps tranfer to the effective address of dst NOT
@@ -2723,6 +2729,9 @@
   void movoop(Register dst, jobject obj);
   void movoop(Address dst, jobject obj);
 
+  void mov_metadata(Register dst, Metadata* obj);
+  void mov_metadata(Address dst, Metadata* obj);
+
   void movptr(ArrayAddress dst, Register src);
   // can this do an lea?
   void movptr(Register dst, ArrayAddress src);
@@ -2775,6 +2784,7 @@
   void popptr(Address src) { LP64_ONLY(popq(src)) NOT_LP64(popl(src)); }
 
   void pushoop(jobject obj);
+  void pushklass(Metadata* obj);
 
   // sign extend as need a l to ptr sized element
   void movl2ptr(Register dst, Address src) { LP64_ONLY(movslq(dst, src)) NOT_LP64(movl(dst, src)); }
--- a/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/bytecodeInterpreter_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -28,8 +28,8 @@
 #include "interpreter/bytecodeInterpreter.inline.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interpreterRuntime.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/x86/vm/c1_CodeStubs_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_CodeStubs_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -284,7 +284,24 @@
   }
   if (_id == load_klass_id) {
     // produce a copy of the load klass instruction for use by the being initialized case
+#ifdef ASSERT
     address start = __ pc();
+#endif
+    Metadata* o = NULL;
+    __ mov_metadata(_obj, o);
+#ifdef ASSERT
+    for (int i = 0; i < _bytes_to_copy; i++) {
+      address ptr = (address)(_pc_start + i);
+      int a_byte = (*ptr) & 0xFF;
+      assert(a_byte == *start++, "should be the same code");
+    }
+#endif
+  } else if (_id == load_mirror_id) {
+    // produce a copy of the load mirror instruction for use by the being
+    // initialized case
+#ifdef ASSERT
+    address start = __ pc();
+#endif
     jobject o = NULL;
     __ movoop(_obj, o);
 #ifdef ASSERT
@@ -306,7 +323,7 @@
 
   address end_of_patch = __ pc();
   int bytes_to_skip = 0;
-  if (_id == load_klass_id) {
+  if (_id == load_mirror_id) {
     int offset = __ offset();
     if (CommentedAssembly) {
       __ block_comment(" being_initialized check");
@@ -318,9 +335,9 @@
     __ push(tmp2);
     // Load without verification to keep code size small. We need it because
     // begin_initialized_entry_offset has to fit in a byte. Also, we know it's not null.
-    __ load_heap_oop_not_null(tmp2, Address(_obj, java_lang_Class::klass_offset_in_bytes()));
+    __ movptr(tmp2, Address(_obj, java_lang_Class::klass_offset_in_bytes()));
     __ get_thread(tmp);
-    __ cmpptr(tmp, Address(tmp2, instanceKlass::init_thread_offset()));
+    __ cmpptr(tmp, Address(tmp2, InstanceKlass::init_thread_offset()));
     __ pop(tmp2);
     __ pop(tmp);
     __ jcc(Assembler::notEqual, call_patch);
@@ -357,9 +374,11 @@
   address entry = __ pc();
   NativeGeneralJump::insert_unconditional((address)_pc_start, entry);
   address target = NULL;
+  relocInfo::relocType reloc_type = relocInfo::none;
   switch (_id) {
     case access_field_id:  target = Runtime1::entry_for(Runtime1::access_field_patching_id); break;
-    case load_klass_id:    target = Runtime1::entry_for(Runtime1::load_klass_patching_id); break;
+    case load_klass_id:    target = Runtime1::entry_for(Runtime1::load_klass_patching_id); reloc_type = relocInfo::metadata_type; break;
+    case load_mirror_id:   target = Runtime1::entry_for(Runtime1::load_mirror_patching_id); reloc_type = relocInfo::oop_type; break;
     default: ShouldNotReachHere();
   }
   __ bind(call_patch);
@@ -377,10 +396,10 @@
   for (int j = __ offset() ; j < jmp_off + 5 ; j++ ) {
     __ nop();
   }
-  if (_id == load_klass_id) {
+  if (_id == load_klass_id || _id == load_mirror_id) {
     CodeSection* cs = __ code_section();
     RelocIterator iter(cs, (address)_pc_start, (address)(_pc_start + 1));
-    relocInfo::change_reloc_info_for_address(&iter, (address) _pc_start, relocInfo::oop_type, relocInfo::none);
+    relocInfo::change_reloc_info_for_address(&iter, (address) _pc_start, reloc_type, relocInfo::none);
   }
 }
 
@@ -420,7 +439,7 @@
   //---------------slow case: call to native-----------------
   __ bind(_entry);
   // Figure out where the args should go
-  // This should really convert the IntrinsicID to the methodOop and signature
+  // This should really convert the IntrinsicID to the Method* and signature
   // but I don't know how to do that.
   //
   VMRegPair args[5];
--- a/src/cpu/x86/vm/c1_FrameMap_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_FrameMap_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -96,6 +96,13 @@
 LIR_Opr FrameMap::rdx_oop_opr;
 LIR_Opr FrameMap::rcx_oop_opr;
 
+LIR_Opr FrameMap::rsi_metadata_opr;
+LIR_Opr FrameMap::rdi_metadata_opr;
+LIR_Opr FrameMap::rbx_metadata_opr;
+LIR_Opr FrameMap::rax_metadata_opr;
+LIR_Opr FrameMap::rdx_metadata_opr;
+LIR_Opr FrameMap::rcx_metadata_opr;
+
 LIR_Opr FrameMap::long0_opr;
 LIR_Opr FrameMap::long1_opr;
 LIR_Opr FrameMap::fpu0_float_opr;
@@ -122,6 +129,13 @@
 LIR_Opr FrameMap::r12_oop_opr;
 LIR_Opr FrameMap::r13_oop_opr;
 LIR_Opr FrameMap::r14_oop_opr;
+
+LIR_Opr  FrameMap::r8_metadata_opr;
+LIR_Opr  FrameMap::r9_metadata_opr;
+LIR_Opr FrameMap::r11_metadata_opr;
+LIR_Opr FrameMap::r12_metadata_opr;
+LIR_Opr FrameMap::r13_metadata_opr;
+LIR_Opr FrameMap::r14_metadata_opr;
 #endif // _LP64
 
 LIR_Opr FrameMap::_caller_save_cpu_regs[] = { 0, };
@@ -236,6 +250,13 @@
   rdx_oop_opr = as_oop_opr(rdx);
   rcx_oop_opr = as_oop_opr(rcx);
 
+  rsi_metadata_opr = as_metadata_opr(rsi);
+  rdi_metadata_opr = as_metadata_opr(rdi);
+  rbx_metadata_opr = as_metadata_opr(rbx);
+  rax_metadata_opr = as_metadata_opr(rax);
+  rdx_metadata_opr = as_metadata_opr(rdx);
+  rcx_metadata_opr = as_metadata_opr(rcx);
+
   rsp_opr = as_pointer_opr(rsp);
   rbp_opr = as_pointer_opr(rbp);
 
@@ -246,6 +267,13 @@
   r12_oop_opr = as_oop_opr(r12);
   r13_oop_opr = as_oop_opr(r13);
   r14_oop_opr = as_oop_opr(r14);
+
+  r8_metadata_opr = as_metadata_opr(r8);
+  r9_metadata_opr = as_metadata_opr(r9);
+  r11_metadata_opr = as_metadata_opr(r11);
+  r12_metadata_opr = as_metadata_opr(r12);
+  r13_metadata_opr = as_metadata_opr(r13);
+  r14_metadata_opr = as_metadata_opr(r14);
 #endif // _LP64
 
   VMRegPair regs;
--- a/src/cpu/x86/vm/c1_FrameMap_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_FrameMap_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -73,6 +73,14 @@
   static LIR_Opr rax_oop_opr;
   static LIR_Opr rdx_oop_opr;
   static LIR_Opr rcx_oop_opr;
+
+  static LIR_Opr rsi_metadata_opr;
+  static LIR_Opr rdi_metadata_opr;
+  static LIR_Opr rbx_metadata_opr;
+  static LIR_Opr rax_metadata_opr;
+  static LIR_Opr rdx_metadata_opr;
+  static LIR_Opr rcx_metadata_opr;
+
 #ifdef _LP64
 
   static LIR_Opr  r8_opr;
@@ -92,6 +100,14 @@
   static LIR_Opr r13_oop_opr;
   static LIR_Opr r14_oop_opr;
 
+  static LIR_Opr  r8_metadata_opr;
+  static LIR_Opr  r9_metadata_opr;
+
+  static LIR_Opr r11_metadata_opr;
+  static LIR_Opr r12_metadata_opr;
+  static LIR_Opr r13_metadata_opr;
+  static LIR_Opr r14_metadata_opr;
+
 #endif // _LP64
 
   static LIR_Opr long0_opr;
--- a/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -361,11 +361,17 @@
 
 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
   jobject o = NULL;
-  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id);
+  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_mirror_id);
   __ movoop(reg, o);
   patching_epilog(patch, lir_patch_normal, reg, info);
 }
 
+void LIR_Assembler::klass2reg_with_patching(Register reg, CodeEmitInfo* info) {
+  Metadata* o = NULL;
+  PatchingStub* patch = new PatchingStub(_masm, PatchingStub::load_klass_id);
+  __ mov_metadata(reg, o);
+  patching_epilog(patch, lir_patch_normal, reg, info);
+}
 
 // This specifies the rsp decrement needed to build the frame
 int LIR_Assembler::initial_frame_size_in_bytes() {
@@ -448,7 +454,7 @@
   if (compilation()->env()->dtrace_method_probes()) {
     __ get_thread(rax);
     __ movptr(Address(rsp, 0), rax);
-    __ movoop(Address(rsp, sizeof(void*)), method()->constant_encoding());
+    __ mov_metadata(Address(rsp, sizeof(void*)), method()->constant_encoding());
     __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit)));
   }
 
@@ -669,6 +675,15 @@
       break;
     }
 
+    case T_METADATA: {
+      if (patch_code != lir_patch_none) {
+        klass2reg_with_patching(dest->as_register(), info);
+      } else {
+        __ mov_metadata(dest->as_register(), c->as_metadata());
+      }
+      break;
+    }
+
     case T_FLOAT: {
       if (dest->is_single_xmm()) {
         if (c->is_zero_float()) {
@@ -935,6 +950,8 @@
     if (type == T_OBJECT || type == T_ARRAY) {
       __ verify_oop(src->as_register());
       __ movptr (dst, src->as_register());
+    } else if (type == T_METADATA) {
+      __ movptr (dst, src->as_register());
     } else {
       __ movl (dst, src->as_register());
     }
@@ -1026,6 +1043,14 @@
         __ movptr(as_Address(to_addr), src->as_register());
       }
       break;
+    case T_METADATA:
+      // We get here to store a method pointer to the stack to pass to
+      // a dtrace runtime call. This can't work on 64 bit with
+      // compressed klass ptrs: T_METADATA can be a compressed klass
+      // ptr or a 64 bit method pointer.
+      LP64_ONLY(ShouldNotReachHere());
+      __ movptr(as_Address(to_addr), src->as_register());
+      break;
     case T_ADDRESS:
       __ movptr(as_Address(to_addr), src->as_register());
       break;
@@ -1103,6 +1128,8 @@
     if (type == T_ARRAY || type == T_OBJECT) {
       __ movptr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
       __ verify_oop(dest->as_register());
+    } else if (type == T_METADATA) {
+      __ movptr(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
     } else {
       __ movl(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()));
     }
@@ -1570,8 +1597,8 @@
 void LIR_Assembler::emit_alloc_obj(LIR_OpAllocObj* op) {
   if (op->init_check()) {
     __ cmpb(Address(op->klass()->as_register(),
-                    instanceKlass::init_state_offset()),
-            instanceKlass::fully_initialized);
+                    InstanceKlass::init_state_offset()),
+                    InstanceKlass::fully_initialized);
     add_debug_info_for_null_check_here(op->stub()->info());
     __ jcc(Assembler::notEqual, *op->stub()->entry());
   }
@@ -1687,10 +1714,10 @@
 
   assert_different_registers(obj, k_RInfo, klass_RInfo);
   if (!k->is_loaded()) {
-    jobject2reg_with_patching(k_RInfo, op->info_for_patch());
+    klass2reg_with_patching(k_RInfo, op->info_for_patch());
   } else {
 #ifdef _LP64
-    __ movoop(k_RInfo, k->constant_encoding());
+    __ mov_metadata(k_RInfo, k->constant_encoding());
 #endif // _LP64
   }
   assert(obj != k_RInfo, "must be different");
@@ -1701,7 +1728,7 @@
     __ jccb(Assembler::notEqual, not_null);
     // Object is null; update MDO and exit
     Register mdo  = klass_RInfo;
-    __ movoop(mdo, md->constant_encoding());
+    __ mov_metadata(mdo, md->constant_encoding());
     Address data_addr(mdo, md->byte_offset_of_slot(data, DataLayout::header_offset()));
     int header_bits = DataLayout::flag_mask_to_header_mask(BitData::null_seen_byte_constant());
     __ orl(data_addr, header_bits);
@@ -1716,7 +1743,7 @@
     // get object class
     // not a safepoint as obj null check happens earlier
 #ifdef _LP64
-    if (UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
       __ load_klass(Rtmp1, obj);
       __ cmpptr(k_RInfo, Rtmp1);
     } else {
@@ -1724,7 +1751,7 @@
     }
 #else
     if (k->is_loaded()) {
-      __ cmpoop(Address(obj, oopDesc::klass_offset_in_bytes()), k->constant_encoding());
+      __ cmpklass(Address(obj, oopDesc::klass_offset_in_bytes()), k->constant_encoding());
     } else {
       __ cmpptr(k_RInfo, Address(obj, oopDesc::klass_offset_in_bytes()));
     }
@@ -1740,7 +1767,7 @@
 #ifdef _LP64
       __ cmpptr(k_RInfo, Address(klass_RInfo, k->super_check_offset()));
 #else
-      __ cmpoop(Address(klass_RInfo, k->super_check_offset()), k->constant_encoding());
+      __ cmpklass(Address(klass_RInfo, k->super_check_offset()), k->constant_encoding());
 #endif // _LP64
       if ((juint)in_bytes(Klass::secondary_super_cache_offset()) != k->super_check_offset()) {
         __ jcc(Assembler::notEqual, *failure_target);
@@ -1752,7 +1779,7 @@
 #ifdef _LP64
         __ cmpptr(klass_RInfo, k_RInfo);
 #else
-        __ cmpoop(klass_RInfo, k->constant_encoding());
+        __ cmpklass(klass_RInfo, k->constant_encoding());
 #endif // _LP64
         __ jcc(Assembler::equal, *success_target);
 
@@ -1760,7 +1787,7 @@
 #ifdef _LP64
         __ push(k_RInfo);
 #else
-        __ pushoop(k->constant_encoding());
+        __ pushklass(k->constant_encoding());
 #endif // _LP64
         __ call(RuntimeAddress(Runtime1::entry_for(Runtime1::slow_subtype_check_id)));
         __ pop(klass_RInfo);
@@ -1788,14 +1815,14 @@
   if (op->should_profile()) {
     Register mdo  = klass_RInfo, recv = k_RInfo;
     __ bind(profile_cast_success);
-    __ movoop(mdo, md->constant_encoding());
+    __ mov_metadata(mdo, md->constant_encoding());
     __ load_klass(recv, obj);
     Label update_done;
     type_profile_helper(mdo, md, data, recv, success);
     __ jmp(*success);
 
     __ bind(profile_cast_failure);
-    __ movoop(mdo, md->constant_encoding());
+    __ mov_metadata(mdo, md->constant_encoding());
     Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()));
     __ subptr(counter_addr, DataLayout::counter_increment);
     __ jmp(*failure);
@@ -1839,7 +1866,7 @@
       __ jccb(Assembler::notEqual, not_null);
       // Object is null; update MDO and exit
       Register mdo  = klass_RInfo;
-      __ movoop(mdo, md->constant_encoding());
+      __ mov_metadata(mdo, md->constant_encoding());
       Address data_addr(mdo, md->byte_offset_of_slot(data, DataLayout::header_offset()));
       int header_bits = DataLayout::flag_mask_to_header_mask(BitData::null_seen_byte_constant());
       __ orl(data_addr, header_bits);
@@ -1871,14 +1898,14 @@
     if (op->should_profile()) {
       Register mdo  = klass_RInfo, recv = k_RInfo;
       __ bind(profile_cast_success);
-      __ movoop(mdo, md->constant_encoding());
+      __ mov_metadata(mdo, md->constant_encoding());
       __ load_klass(recv, value);
       Label update_done;
       type_profile_helper(mdo, md, data, recv, &done);
       __ jmpb(done);
 
       __ bind(profile_cast_failure);
-      __ movoop(mdo, md->constant_encoding());
+      __ mov_metadata(mdo, md->constant_encoding());
       Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()));
       __ subptr(counter_addr, DataLayout::counter_increment);
       __ jmp(*stub->entry());
@@ -2864,13 +2891,11 @@
 
 
 void LIR_Assembler::ic_call(LIR_OpJavaCall* op) {
-  RelocationHolder rh = virtual_call_Relocation::spec(pc());
-  __ movoop(IC_Klass, (jobject)Universe::non_oop_word());
+  __ ic_call(op->addr());
+  add_call_info(code_offset(), op->info());
   assert(!os::is_MP() ||
-         (__ offset() + NativeCall::displacement_offset) % BytesPerWord == 0,
+         (__ offset() - NativeCall::instruction_size + NativeCall::displacement_offset) % BytesPerWord == 0,
          "must be aligned");
-  __ call(AddressLiteral(op->addr(), rh));
-  add_call_info(code_offset(), op->info());
 }
 
 
@@ -2897,7 +2922,7 @@
     }
   }
   __ relocate(static_stub_Relocation::spec(call_pc));
-  __ movoop(rbx, (jobject)NULL);
+  __ mov_metadata(rbx, (Metadata*)NULL);
   // must be set to -1 at code generation time
   assert(!os::is_MP() || ((__ offset() + 1) % BytesPerWord) == 0, "must be aligned on MP");
   // On 64bit this will die since it will take a movq & jmp, must be only a jmp
@@ -3258,7 +3283,7 @@
     // We don't know the array types are compatible
     if (basic_type != T_OBJECT) {
       // Simple test for basic type arrays
-      if (UseCompressedOops) {
+      if (UseCompressedKlassPointers) {
         __ movl(tmp, src_klass_addr);
         __ cmpl(tmp, dst_klass_addr);
       } else {
@@ -3418,23 +3443,23 @@
     // subtype which we can't check or src is the same array as dst
     // but not necessarily exactly of type default_type.
     Label known_ok, halt;
-    __ movoop(tmp, default_type->constant_encoding());
+    __ mov_metadata(tmp, default_type->constant_encoding());
 #ifdef _LP64
-    if (UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
       __ encode_heap_oop(tmp);
     }
 #endif
 
     if (basic_type != T_OBJECT) {
 
-      if (UseCompressedOops) __ cmpl(tmp, dst_klass_addr);
+      if (UseCompressedKlassPointers)          __ cmpl(tmp, dst_klass_addr);
       else                   __ cmpptr(tmp, dst_klass_addr);
       __ jcc(Assembler::notEqual, halt);
-      if (UseCompressedOops) __ cmpl(tmp, src_klass_addr);
+      if (UseCompressedKlassPointers)          __ cmpl(tmp, src_klass_addr);
       else                   __ cmpptr(tmp, src_klass_addr);
       __ jcc(Assembler::equal, known_ok);
     } else {
-      if (UseCompressedOops) __ cmpl(tmp, dst_klass_addr);
+      if (UseCompressedKlassPointers)          __ cmpl(tmp, dst_klass_addr);
       else                   __ cmpptr(tmp, dst_klass_addr);
       __ jcc(Assembler::equal, known_ok);
       __ cmpptr(src, dst);
@@ -3517,7 +3542,7 @@
   assert(data->is_CounterData(), "need CounterData for calls");
   assert(op->mdo()->is_single_cpu(),  "mdo must be allocated");
   Register mdo  = op->mdo()->as_register();
-  __ movoop(mdo, md->constant_encoding());
+  __ mov_metadata(mdo, md->constant_encoding());
   Address counter_addr(mdo, md->byte_offset_of_slot(data, CounterData::count_offset()));
   Bytecodes::Code bc = method->java_code_at_bci(bci);
   const bool callee_is_static = callee->is_loaded() && callee->is_static();
@@ -3533,7 +3558,7 @@
     ciKlass* known_klass = op->known_holder();
     if (C1OptimizeVirtualCallProfiling && known_klass != NULL) {
       // We know the type that will be seen at this call site; we can
-      // statically update the methodDataOop rather than needing to do
+      // statically update the MethodData* rather than needing to do
       // dynamic tests on the receiver type
 
       // NOTE: we should probably put a lock around this search to
@@ -3558,7 +3583,7 @@
         ciKlass* receiver = vc_data->receiver(i);
         if (receiver == NULL) {
           Address recv_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_offset(i)));
-          __ movoop(recv_addr, known_klass->constant_encoding());
+          __ mov_metadata(recv_addr, known_klass->constant_encoding());
           Address data_addr(mdo, md->byte_offset_of_slot(data, VirtualCallData::receiver_count_offset(i)));
           __ addptr(data_addr, DataLayout::counter_increment);
           return;
--- a/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -1002,13 +1002,12 @@
 #endif
   CodeEmitInfo* info = state_for(x, x->state());
   LIR_Opr reg = result_register_for(x->type());
-  LIR_Opr klass_reg = new_register(objectType);
   new_instance(reg, x->klass(),
                        FrameMap::rcx_oop_opr,
                        FrameMap::rdi_oop_opr,
                        FrameMap::rsi_oop_opr,
                        LIR_OprFact::illegalOpr,
-                       FrameMap::rdx_oop_opr, info);
+                       FrameMap::rdx_metadata_opr, info);
   LIR_Opr result = rlock_result(x);
   __ move(reg, result);
 }
@@ -1025,11 +1024,11 @@
   LIR_Opr tmp2 = FrameMap::rsi_oop_opr;
   LIR_Opr tmp3 = FrameMap::rdi_oop_opr;
   LIR_Opr tmp4 = reg;
-  LIR_Opr klass_reg = FrameMap::rdx_oop_opr;
+  LIR_Opr klass_reg = FrameMap::rdx_metadata_opr;
   LIR_Opr len = length.result();
   BasicType elem_type = x->elt_type();
 
-  __ oop2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg);
+  __ metadata2reg(ciTypeArrayKlass::make(elem_type)->constant_encoding(), klass_reg);
 
   CodeStub* slow_path = new NewTypeArrayStub(klass_reg, len, reg, info);
   __ allocate_array(reg, len, tmp1, tmp2, tmp3, tmp4, elem_type, klass_reg, slow_path);
@@ -1055,17 +1054,17 @@
   LIR_Opr tmp2 = FrameMap::rsi_oop_opr;
   LIR_Opr tmp3 = FrameMap::rdi_oop_opr;
   LIR_Opr tmp4 = reg;
-  LIR_Opr klass_reg = FrameMap::rdx_oop_opr;
+  LIR_Opr klass_reg = FrameMap::rdx_metadata_opr;
 
   length.load_item_force(FrameMap::rbx_opr);
   LIR_Opr len = length.result();
 
   CodeStub* slow_path = new NewObjectArrayStub(klass_reg, len, reg, info);
-  ciObject* obj = (ciObject*) ciObjArrayKlass::make(x->klass());
+  ciKlass* obj = (ciKlass*) ciObjArrayKlass::make(x->klass());
   if (obj == ciEnv::unloaded_ciobjarrayklass()) {
     BAILOUT("encountered unloaded_ciobjarrayklass due to out of memory error");
   }
-  jobject2reg_with_patching(klass_reg, obj, patching_info);
+  klass2reg_with_patching(klass_reg, obj, patching_info);
   __ allocate_array(reg, len, tmp1, tmp2, tmp3, tmp4, T_OBJECT, klass_reg, slow_path);
 
   LIR_Opr result = rlock_result(x);
@@ -1103,17 +1102,18 @@
     store_stack_parameter(size->result(), in_ByteSize(i*4));
   }
 
-  LIR_Opr reg = result_register_for(x->type());
-  jobject2reg_with_patching(reg, x->klass(), patching_info);
+  LIR_Opr klass_reg = FrameMap::rax_metadata_opr;
+  klass2reg_with_patching(klass_reg, x->klass(), patching_info);
 
   LIR_Opr rank = FrameMap::rbx_opr;
   __ move(LIR_OprFact::intConst(x->rank()), rank);
   LIR_Opr varargs = FrameMap::rcx_opr;
   __ move(FrameMap::rsp_opr, varargs);
   LIR_OprList* args = new LIR_OprList(3);
-  args->append(reg);
+  args->append(klass_reg);
   args->append(rank);
   args->append(varargs);
+  LIR_Opr reg = result_register_for(x->type());
   __ call_runtime(Runtime1::entry_for(Runtime1::new_multi_array_id),
                   LIR_OprFact::illegalOpr,
                   reg, args, info);
--- a/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -157,7 +157,7 @@
     movptr(Address(obj, oopDesc::mark_offset_in_bytes ()), (int32_t)(intptr_t)markOopDesc::prototype());
   }
 #ifdef _LP64
-  if (UseCompressedOops) { // Take care not to kill klass
+  if (UseCompressedKlassPointers) { // Take care not to kill klass
     movptr(t1, klass);
     encode_heap_oop_not_null(t1);
     movl(Address(obj, oopDesc::klass_offset_in_bytes()), t1);
@@ -171,7 +171,7 @@
     movl(Address(obj, arrayOopDesc::length_offset_in_bytes()), len);
   }
 #ifdef _LP64
-  else if (UseCompressedOops) {
+  else if (UseCompressedKlassPointers) {
     xorptr(t1, t1);
     store_klass_gap(obj, t1);
   }
@@ -334,7 +334,7 @@
   assert(!MacroAssembler::needs_explicit_null_check(oopDesc::klass_offset_in_bytes()), "must add explicit null check");
   int start_offset = offset();
 
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     load_klass(rscratch1, receiver);
     cmpptr(rscratch1, iCache);
   } else {
@@ -345,7 +345,7 @@
   jump_cc(Assembler::notEqual,
           RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   const int ic_cmp_size = LP64_ONLY(10) NOT_LP64(9);
-  assert(UseCompressedOops || offset() - start_offset == ic_cmp_size, "check alignment in emit_method_entry");
+  assert(UseCompressedKlassPointers || offset() - start_offset == ic_cmp_size, "check alignment in emit_method_entry");
 }
 
 
--- a/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_Runtime1_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -29,7 +29,7 @@
 #include "c1/c1_Runtime1.hpp"
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_x86.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "register_x86.hpp"
@@ -41,11 +41,11 @@
 
 // Implementation of StubAssembler
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, int args_size) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, int args_size) {
   // setup registers
   const Register thread = NOT_LP64(rdi) LP64_ONLY(r15_thread); // is callee-saved register (Visual C++ calling conventions)
-  assert(!(oop_result1->is_valid() || oop_result2->is_valid()) || oop_result1 != oop_result2, "registers must be different");
-  assert(oop_result1 != thread && oop_result2 != thread, "registers must be different");
+  assert(!(oop_result1->is_valid() || metadata_result->is_valid()) || oop_result1 != metadata_result, "registers must be different");
+  assert(oop_result1 != thread && metadata_result != thread, "registers must be different");
   assert(args_size >= 0, "illegal args_size");
   bool align_stack = false;
 #ifdef _LP64
@@ -109,7 +109,7 @@
     if (oop_result1->is_valid()) {
       movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
     }
-    if (oop_result2->is_valid()) {
+    if (metadata_result->is_valid()) {
       movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
     }
     if (frame_size() == no_frame_size) {
@@ -124,30 +124,26 @@
   }
   // get oop results if there are any and reset the values in the thread
   if (oop_result1->is_valid()) {
-    movptr(oop_result1, Address(thread, JavaThread::vm_result_offset()));
-    movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
-    verify_oop(oop_result1);
+    get_vm_result(oop_result1, thread);
   }
-  if (oop_result2->is_valid()) {
-    movptr(oop_result2, Address(thread, JavaThread::vm_result_2_offset()));
-    movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
-    verify_oop(oop_result2);
+  if (metadata_result->is_valid()) {
+    get_vm_result_2(metadata_result, thread);
   }
   return call_offset;
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1) {
 #ifdef _LP64
   mov(c_rarg1, arg1);
 #else
   push(arg1);
 #endif // _LP64
-  return call_RT(oop_result1, oop_result2, entry, 1);
+  return call_RT(oop_result1, metadata_result, entry, 1);
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2) {
 #ifdef _LP64
   if (c_rarg1 == arg2) {
     if (c_rarg2 == arg1) {
@@ -164,11 +160,11 @@
   push(arg2);
   push(arg1);
 #endif // _LP64
-  return call_RT(oop_result1, oop_result2, entry, 2);
+  return call_RT(oop_result1, metadata_result, entry, 2);
 }
 
 
-int StubAssembler::call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2, Register arg3) {
+int StubAssembler::call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2, Register arg3) {
 #ifdef _LP64
   // if there is any conflict use the stack
   if (arg1 == c_rarg2 || arg1 == c_rarg3 ||
@@ -190,7 +186,7 @@
   push(arg2);
   push(arg1);
 #endif // _LP64
-  return call_RT(oop_result1, oop_result2, entry, 3);
+  return call_RT(oop_result1, metadata_result, entry, 3);
 }
 
 
@@ -1027,7 +1023,7 @@
 
           if (id == fast_new_instance_init_check_id) {
             // make sure the klass is initialized
-            __ cmpb(Address(klass, instanceKlass::init_state_offset()), instanceKlass::fully_initialized);
+            __ cmpb(Address(klass, InstanceKlass::init_state_offset()), InstanceKlass::fully_initialized);
             __ jcc(Assembler::notEqual, slow_path);
           }
 
@@ -1106,7 +1102,7 @@
         OopMap* map = save_live_registers(sasm, 3);
         // Retrieve bci
         __ movl(bci, Address(rbp, 2*BytesPerWord));
-        // And a pointer to the methodOop
+        // And a pointer to the Method*
         __ movptr(method, Address(rbp, 3*BytesPerWord));
         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci, method);
         oop_maps = new OopMapSet();
@@ -1291,8 +1287,7 @@
         __ bind(register_finalizer);
         __ enter();
         OopMap* oop_map = save_live_registers(sasm, 2 /*num_rt_args */);
-        int call_offset = __ call_RT(noreg, noreg,
-                                     CAST_FROM_FN_PTR(address, SharedRuntime::register_finalizer), rax);
+        int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, SharedRuntime::register_finalizer), rax);
         oop_maps = new OopMapSet();
         oop_maps->add_gc_map(call_offset, oop_map);
 
@@ -1496,6 +1491,13 @@
       }
       break;
 
+    case load_mirror_patching_id:
+      { StubFrame f(sasm, "load_mirror_patching", dont_gc_arguments);
+        // we should set up register map
+        oop_maps = generate_patching(sasm, CAST_FROM_FN_PTR(address, move_mirror_patching));
+      }
+      break;
+
     case dtrace_object_alloc_id:
       { // rax,: object
         StubFrame f(sasm, "dtrace_object_alloc", dont_gc_arguments);
--- a/src/cpu/x86/vm/c1_globals_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c1_globals_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -51,8 +51,7 @@
 define_pd_global(bool, ProfileInterpreter,           false);
 define_pd_global(intx, CodeCacheExpansionSize,       32*K );
 define_pd_global(uintx,CodeCacheMinBlockLength,      1);
-define_pd_global(uintx,PermSize,                     12*M );
-define_pd_global(uintx,MaxPermSize,                  64*M );
+define_pd_global(uintx,MetaspaceSize,                     12*M );
 define_pd_global(bool, NeverActAsServerClassMachine, true );
 define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
 define_pd_global(bool, CICompileOSR,                 true );
--- a/src/cpu/x86/vm/c2_globals_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/c2_globals_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -88,8 +88,7 @@
 define_pd_global(uintx,CodeCacheMinBlockLength,      4);
 
 // Heap related flags
-define_pd_global(uintx,PermSize,    ScaleForWordSize(16*M));
-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
+define_pd_global(uintx,MetaspaceSize,    ScaleForWordSize(16*M));
 
 // Ergonomics related flags
 define_pd_global(bool, NeverActAsServerClassMachine, false);
--- a/src/cpu/x86/vm/cppInterpreter_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/cppInterpreter_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterGenerator.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -421,7 +421,7 @@
   // state == address of new interpreterState
   // rsp == bottom of method's expression stack.
 
-  const Address const_offset      (rbx, methodOopDesc::const_offset());
+  const Address const_offset      (rbx, Method::const_offset());
 
 
   // On entry sp is the sender's sp. This includes the space for the arguments
@@ -471,8 +471,8 @@
   __ get_thread(rax);                                   // get vm's javathread*
   __ movptr(STATE(_thread), rax);                       // state->_bcp = codes()
 #endif // _LP64
-  __ movptr(rdx, Address(rbx, methodOopDesc::const_offset())); // get constantMethodOop
-  __ lea(rdx, Address(rdx, constMethodOopDesc::codes_offset())); // get code base
+  __ movptr(rdx, Address(rbx, Method::const_offset())); // get constantMethodOop
+  __ lea(rdx, Address(rdx, ConstMethod::codes_offset())); // get code base
   if (native) {
     __ movptr(STATE(_bcp), (int32_t)NULL_WORD);         // state->_bcp = NULL
   } else {
@@ -481,9 +481,9 @@
   __ xorptr(rdx, rdx);
   __ movptr(STATE(_oop_temp), rdx);                     // state->_oop_temp = NULL (only really needed for native)
   __ movptr(STATE(_mdx), rdx);                          // state->_mdx = NULL
-  __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-  __ movptr(rdx, Address(rdx, constMethodOopDesc::constants_offset()));
-  __ movptr(rdx, Address(rdx, constantPoolOopDesc::cache_offset_in_bytes()));
+  __ movptr(rdx, Address(rbx, Method::const_offset()));
+  __ movptr(rdx, Address(rdx, ConstMethod::constants_offset()));
+  __ movptr(rdx, Address(rdx, ConstantPool::cache_offset_in_bytes()));
   __ movptr(STATE(_constants), rdx);                    // state->_constants = constants()
 
   __ movptr(STATE(_method), rbx);                       // state->_method = method()
@@ -500,7 +500,7 @@
     // immediately.
 
     // synchronize method
-    const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+    const Address access_flags      (rbx, Method::access_flags_offset());
     const int entry_size            = frame::interpreter_frame_monitor_size() * wordSize;
     Label not_synced;
 
@@ -517,9 +517,9 @@
     __ testl(rax, JVM_ACC_STATIC);
     __ movptr(rax, Address(locals, 0));                   // get receiver (assume this is frequent case)
     __ jcc(Assembler::zero, done);
-    __ movptr(rax, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rax, Address(rax, constMethodOopDesc::constants_offset()));
-    __ movptr(rax, Address(rax, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(rax, Address(rbx, Method::const_offset()));
+    __ movptr(rax, Address(rax, ConstMethod::constants_offset()));
+    __ movptr(rax, Address(rax, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(rax, Address(rax, mirror_offset));
     __ bind(done);
     // add space for monitor & lock
@@ -538,8 +538,8 @@
 
     // compute full expression stack limit
 
-    const Address size_of_stack    (rbx, methodOopDesc::max_stack_offset());
-    const int extra_stack = 0; //6815692//methodOopDesc::extra_stack_words();
+    const Address size_of_stack    (rbx, Method::max_stack_offset());
+    const int extra_stack = 0; //6815692//Method::extra_stack_words();
     __ load_unsigned_short(rdx, size_of_stack);                           // get size of expression stack in words
     __ negptr(rdx);                                                       // so we can subtract in next step
     // Allocate expression stack
@@ -570,11 +570,11 @@
 //
 void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) {
 
-  const Address invocation_counter(rbx, methodOopDesc::invocation_counter_offset() + InvocationCounter::counter_offset());
-  const Address backedge_counter  (rbx, methodOopDesc::backedge_counter_offset() + InvocationCounter::counter_offset());
-
-  if (ProfileInterpreter) { // %%% Merge this into methodDataOop
-    __ incrementl(Address(rbx,methodOopDesc::interpreter_invocation_counter_offset()));
+  const Address invocation_counter(rbx, Method::invocation_counter_offset() + InvocationCounter::counter_offset());
+  const Address backedge_counter  (rbx, Method::backedge_counter_offset() + InvocationCounter::counter_offset());
+
+  if (ProfileInterpreter) { // %%% Merge this into MethodData*
+    __ incrementl(Address(rbx,Method::interpreter_invocation_counter_offset()));
   }
   // Update standard invocation counters
   __ movl(rax, backedge_counter);               // load backedge counter
@@ -611,7 +611,7 @@
   // C++ interpreter only
   // rsi/r13 - previous interpreter state pointer
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
 
   // InterpreterRuntime::frequency_counter_overflow takes one argument
   // indicating if the counter overflow occurs at a backwards branch (non-NULL bcp).
@@ -638,14 +638,14 @@
   //
   // Asm interpreter
   // rdx: number of additional locals this frame needs (what we must check)
-  // rbx,: methodOop
+  // rbx,: Method*
 
   // C++ Interpreter
   // rsi/r13: previous interpreter frame state object
   // rdi: &locals[0]
   // rcx: # of locals
   // rdx: number of additional locals this frame needs (what we must check)
-  // rbx: methodOop
+  // rbx: Method*
 
   // destroyed on exit
   // rax,
@@ -682,11 +682,11 @@
   const Address stack_size(thread, Thread::stack_size_offset());
 
   // locals + overhead, in bytes
-    const Address size_of_stack    (rbx, methodOopDesc::max_stack_offset());
+    const Address size_of_stack    (rbx, Method::max_stack_offset());
     // Always give one monitor to allow us to start interp if sync method.
     // Any additional monitors need a check when moving the expression stack
     const int one_monitor = frame::interpreter_frame_monitor_size() * wordSize;
-    const int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+    const int extra_stack = 0; //6815692//Method::extra_stack_entries();
   __ load_unsigned_short(rax, size_of_stack);                           // get size of expression stack in words
   __ lea(rax, Address(noreg, rax, Interpreter::stackElementScale(), extra_stack + one_monitor));
   __ lea(rax, Address(rax, rdx, Interpreter::stackElementScale(), overhead_size));
@@ -738,7 +738,7 @@
 }
 
 // Find preallocated  monitor and lock method (C++ interpreter)
-// rbx - methodOop
+// rbx - Method*
 //
 void InterpreterGenerator::lock_method(void) {
   // assumes state == rsi/r13 == pointer to current interpreterState
@@ -746,7 +746,7 @@
   //
   // synchronize method
   const int entry_size            = frame::interpreter_frame_monitor_size() * wordSize;
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   const Register monitor  = NOT_LP64(rdx) LP64_ONLY(c_rarg1);
 
@@ -771,9 +771,9 @@
     __ testl(rax, JVM_ACC_STATIC);
     __ movptr(rax, Address(rdi, 0));                                    // get receiver (assume this is frequent case)
     __ jcc(Assembler::zero, done);
-    __ movptr(rax, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rax, Address(rax, constMethodOopDesc::constants_offset()));
-    __ movptr(rax, Address(rax, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(rax, Address(rbx, Method::const_offset()));
+    __ movptr(rax, Address(rax, ConstMethod::constants_offset()));
+    __ movptr(rax, Address(rax, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(rax, Address(rax, mirror_offset));
     __ bind(done);
   }
@@ -793,7 +793,7 @@
 
 address InterpreterGenerator::generate_accessor_entry(void) {
 
-  // rbx: methodOop
+  // rbx: Method*
 
   // rsi/r13: senderSP must preserved for slow path, set SP to it on fast path
 
@@ -825,14 +825,14 @@
     __ jcc(Assembler::zero, slow_path);
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
-    __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rdi, Address(rdx, constMethodOopDesc::constants_offset()));
-    __ movl(rdx, Address(rdx, constMethodOopDesc::codes_offset()));
+    __ movptr(rdx, Address(rbx, Method::const_offset()));
+    __ movptr(rdi, Address(rdx, ConstMethod::constants_offset()));
+    __ movl(rdx, Address(rdx, ConstMethod::codes_offset()));
     // Shift codes right to get the index on the right.
     // The bytecode fetched looks like <index><0xb4><0x2a>
     __ shrl(rdx, 2*BitsPerByte);
     __ shll(rdx, exact_log2(in_words(ConstantPoolCacheEntry::size())));
-    __ movptr(rdi, Address(rdi, constantPoolOopDesc::cache_offset_in_bytes()));
+    __ movptr(rdi, Address(rdi, ConstantPool::cache_offset_in_bytes()));
 
     // rax,: local 0
     // rbx,: method
@@ -849,7 +849,7 @@
     __ movl(rcx,
             Address(rdi,
                     rdx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+                    Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::indices_offset()));
     __ shrl(rcx, 2*BitsPerByte);
     __ andl(rcx, 0xFF);
     __ cmpl(rcx, Bytecodes::_getfield);
@@ -859,11 +859,11 @@
     __ movptr(rcx,
             Address(rdi,
                     rdx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset()));
+                    Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset()));
     __ movl(rdx,
             Address(rdi,
                     rdx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset()));
+                    Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
 
     Label notByte, notShort, notChar;
     const Address field_address (rax, rcx, Address::times_1);
@@ -970,17 +970,17 @@
   // determine code generation flags
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: receiver (unused)
   // rsi/r13: previous interpreter state (if called from C++ interpreter) must preserve
   //      in any case. If called via c1/c2/call_stub rsi/r13 is junk (to use) but harmless
   //      to save/restore.
   address entry_point = __ pc();
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals    (rbx, methodOopDesc::size_of_locals_offset());
-  const Address invocation_counter(rbx, methodOopDesc::invocation_counter_offset() + InvocationCounter::counter_offset());
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
+  const Address size_of_locals    (rbx, Method::size_of_locals_offset());
+  const Address invocation_counter(rbx, Method::invocation_counter_offset() + InvocationCounter::counter_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   // rsi/r13 == state/locals rdi == prevstate
   const Register locals = rdi;
@@ -988,7 +988,7 @@
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
 
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: size of parameters
   __ pop(rax);                                       // get return address
   // for natives the size of locals is zero
@@ -1110,8 +1110,8 @@
 
   // allocate space for parameters
   __ movptr(method, STATE(_method));
-  __ verify_oop(method);
-  __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset()));
+  __ verify_method_ptr(method);
+  __ load_unsigned_short(t, Address(method, Method::size_of_parameters_offset()));
   __ shll(t, 2);
 #ifdef _LP64
   __ subptr(rsp, t);
@@ -1127,15 +1127,15 @@
     Label pending_exception_present;
 
   { Label L;
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ testptr(t, t);
     __ jcc(Assembler::notZero, L);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), method, false);
     __ movptr(method, STATE(_method));
     __ cmpptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
     __ jcc(Assembler::notEqual, pending_exception_present);
-    __ verify_oop(method);
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ verify_method_ptr(method);
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ bind(L);
   }
 #ifdef ASSERT
@@ -1162,7 +1162,7 @@
   __ movptr(from_ptr, STATE(_locals));  // get the from pointer
   __ call(t);
   __ movptr(method, STATE(_method));
-  __ verify_oop(method);
+  __ verify_method_ptr(method);
 
   // result handler is in rax
   // set result handler
@@ -1171,26 +1171,26 @@
 
   // get native function entry point
   { Label L;
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     __ testptr(rax, rax);
     __ jcc(Assembler::notZero, L);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), method);
     __ movptr(method, STATE(_method));
-    __ verify_oop(method);
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ verify_method_ptr(method);
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     __ bind(L);
   }
 
   // pass mirror handle if static call
   { Label L;
     const int mirror_offset = in_bytes(Klass::java_mirror_offset());
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_STATIC);
     __ jcc(Assembler::zero, L);
     // get mirror
-    __ movptr(t, Address(method, methodOopDesc:: const_offset()));
-    __ movptr(t, Address(t, constMethodOopDesc::constants_offset()));
-    __ movptr(t, Address(t, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(t, Address(method, Method:: const_offset()));
+    __ movptr(t, Address(t, ConstMethod::constants_offset()));
+    __ movptr(t, Address(t, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(t, Address(t, mirror_offset));
     // copy mirror into activation object
     __ movptr(STATE(_oop_temp), t);
@@ -1351,7 +1351,7 @@
     __ increment(rsp, wordSize);
 
     __ movptr(method, STATE(_method));
-    __ verify_oop(method);
+    __ verify_method_ptr(method);
     __ movptr(thread, STATE(_thread));                       // get thread
 
     __ bind(Continue);
@@ -1438,7 +1438,7 @@
 
   // do unlocking if necessary
   { Label L;
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_SYNCHRONIZED);
     __ jcc(Assembler::zero, L);
     // the code below should be shared with interpreter macro assembler implementation
@@ -1634,7 +1634,7 @@
 //
 // Arguments:
 //
-// rbx: methodOop
+// rbx: Method*
 // rcx: receiver - unused (retrieved from stack as needed)
 // rsi/r13: previous frame manager state (NULL from the call_stub/c1/c2)
 //
@@ -1657,7 +1657,7 @@
 
 address InterpreterGenerator::generate_normal_entry(bool synchronized) {
 
-  // rbx: methodOop
+  // rbx: Method*
   // rsi/r13: sender sp
 
   // Because we redispatch "recursive" interpreter entries thru this same entry point
@@ -1700,9 +1700,9 @@
   // save sender sp
   __ push(rcx);
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals    (rbx, methodOopDesc::size_of_locals_offset());
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
+  const Address size_of_locals    (rbx, Method::size_of_locals_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   // const Address monitor_block_top (rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize);
   // const Address monitor_block_bot (rbp, frame::interpreter_frame_initial_sp_offset        * wordSize);
@@ -1711,7 +1711,7 @@
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
 
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: size of parameters
   __ load_unsigned_short(rdx, size_of_locals);                     // get size of locals in words
 
@@ -1927,7 +1927,7 @@
   if (UseSSE < 2) {
     __ lea(state, Address(rbp,  -(int)sizeof(BytecodeInterpreter)));
     __ movptr(rbx, STATE(_result._to_call._callee));                   // get method just executed
-    __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset()));
+    __ movl(rcx, Address(rbx, Method::result_index_offset()));
     __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_FLOAT));    // Result stub address array index
     __ jcc(Assembler::equal, do_float);
     __ cmpl(rcx, AbstractInterpreter::BasicType_as_index(T_DOUBLE));    // Result stub address array index
@@ -1989,10 +1989,10 @@
   __ movptr(rbx, STATE(_result._to_call._callee));
 
   // callee left args on top of expression stack, remove them
-  __ load_unsigned_short(rcx, Address(rbx, methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(rcx, Address(rbx, Method::size_of_parameters_offset()));
   __ lea(rsp, Address(rsp, rcx, Address::times_ptr));
 
-  __ movl(rcx, Address(rbx, methodOopDesc::result_index_offset()));
+  __ movl(rcx, Address(rbx, Method::result_index_offset()));
   ExternalAddress tosca_to_stack((address)CppInterpreter::_tosca_to_stack);
   // Address index(noreg, rax, Address::times_ptr);
   __ movptr(rcx, ArrayAddress(tosca_to_stack, Address(noreg, rcx, Address::times_ptr)));
@@ -2019,7 +2019,7 @@
 
   __ movptr(rbx, STATE(_method));                                   // get method just executed
   __ cmpptr(STATE(_prev_link), (int32_t)NULL_WORD);                 // returning from "recursive" interpreter call?
-  __ movl(rax, Address(rbx, methodOopDesc::result_index_offset())); // get result type index
+  __ movl(rax, Address(rbx, Method::result_index_offset())); // get result type index
   __ jcc(Assembler::equal, return_to_initial_caller);               // back to native code (call_stub/c1/c2)
 
   // Copy result to callers java stack
@@ -2253,7 +2253,7 @@
 // Deoptimization helpers for C++ interpreter
 
 // How much stack a method activation needs in words.
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
 
   const int stub_code = 4;  // see generate_call_stub
   // Save space for one monitor to get into the interpreted method in case
@@ -2267,9 +2267,9 @@
   const int overhead_size = sizeof(BytecodeInterpreter)/wordSize +
     ( frame::sender_sp_offset - frame::link_offset) + 2;
 
-  const int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  const int extra_stack = 0; //6815692//Method::extra_stack_entries();
   const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
-                           Interpreter::stackElementWords();
+                           Interpreter::stackElementWords;
   return overhead_size + method_stack + stub_code;
 }
 
@@ -2285,7 +2285,7 @@
 void BytecodeInterpreter::layout_interpreterState(interpreterState to_fill,
                                            frame* caller,
                                            frame* current,
-                                           methodOop method,
+                                           Method* method,
                                            intptr_t* locals,
                                            intptr_t* stack,
                                            intptr_t* stack_base,
@@ -2333,7 +2333,7 @@
   // Need +1 here because stack_base points to the word just above the first expr stack entry
   // and stack_limit is supposed to point to the word just below the last expr stack entry.
   // See generate_compute_interpreter_state.
-  int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  int extra_stack = 0; //6815692//Method::extra_stack_entries();
   to_fill->_stack_limit = stack_base - (method->max_stack() + extra_stack + 1);
   to_fill->_monitor_base = (BasicObjectLock*) monitor_base;
 
@@ -2342,7 +2342,7 @@
          "Stack top out of range");
 }
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int tempcount,  //
                                            int popframe_extra_args,
                                            int moncount,
@@ -2381,7 +2381,7 @@
                                                 monitor_size);
 
   // Now with full size expression stack
-  int extra_stack = 0; //6815692//methodOopDesc::extra_stack_entries();
+  int extra_stack = 0; //6815692//Method::extra_stack_entries();
   int full_frame_size = short_frame_size + (method->max_stack() + extra_stack) * BytesPerWord;
 
   // and now with only live portion of the expression stack
--- a/src/cpu/x86/vm/dump_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "assembler_x86.inline.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/space.inline.hpp"
-
-
-
-// Generate the self-patching vtable method:
-//
-// This method will be called (as any other Klass virtual method) with
-// the Klass itself as the first argument.  Example:
-//
-//      oop obj;
-//      int size = obj->klass()->klass_part()->oop_size(this);
-//
-// for which the virtual method call is Klass::oop_size();
-//
-// The dummy method is called with the Klass object as the first
-// operand, and an object as the second argument.
-//
-
-//=====================================================================
-
-// All of the dummy methods in the vtable are essentially identical,
-// differing only by an ordinal constant, and they bear no releationship
-// to the original method which the caller intended. Also, there needs
-// to be 'vtbl_list_size' instances of the vtable in order to
-// differentiate between the 'vtable_list_size' original Klass objects.
-
-#define __ masm->
-
-void CompactingPermGenGen::generate_vtable_methods(void** vtbl_list,
-                                                   void** vtable,
-                                                   char** md_top,
-                                                   char* md_end,
-                                                   char** mc_top,
-                                                   char* mc_end) {
-
-  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
-  *(intptr_t *)(*md_top) = vtable_bytes;
-  *md_top += sizeof(intptr_t);
-  void** dummy_vtable = (void**)*md_top;
-  *vtable = dummy_vtable;
-  *md_top += vtable_bytes;
-
-  // Get ready to generate dummy methods.
-
-  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
-  MacroAssembler* masm = new MacroAssembler(&cb);
-
-  Label common_code;
-  for (int i = 0; i < vtbl_list_size; ++i) {
-    for (int j = 0; j < num_virtuals; ++j) {
-      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
-
-      // Load rax, with a value indicating vtable/offset pair.
-      // -- bits[ 7..0]  (8 bits) which virtual method in table?
-      // -- bits[12..8]  (5 bits) which virtual method table?
-      // -- must fit in 13-bit instruction immediate field.
-      __ movl(rax, (i << 8) + j);
-      __ jmp(common_code);
-    }
-  }
-
-  __ bind(common_code);
-
-#ifdef WIN32
-  // Expecting to be called with "thiscall" conventions -- the arguments
-  // are on the stack, except that the "this" pointer is in rcx.
-#else
-  // Expecting to be called with Unix conventions -- the arguments
-  // are on the stack, including the "this" pointer.
-#endif
-
-  // In addition, rax was set (above) to the offset of the method in the
-  // table.
-
-#ifdef WIN32
-  __ push(rcx);                         // save "this"
-#endif
-  __ mov(rcx, rax);
-  __ shrptr(rcx, 8);                    // isolate vtable identifier.
-  __ shlptr(rcx, LogBytesPerWord);
-  Address index(noreg, rcx,  Address::times_1);
-  ExternalAddress vtbl((address)vtbl_list);
-  __ movptr(rdx, ArrayAddress(vtbl, index)); // get correct vtable address.
-#ifdef WIN32
-  __ pop(rcx);                          // restore "this"
-#else
-  __ movptr(rcx, Address(rsp, BytesPerWord));   // fetch "this"
-#endif
-  __ movptr(Address(rcx, 0), rdx);      // update vtable pointer.
-
-  __ andptr(rax, 0x00ff);                       // isolate vtable method index
-  __ shlptr(rax, LogBytesPerWord);
-  __ addptr(rax, rdx);                  // address of real method pointer.
-  __ jmp(Address(rax, 0));              // get real method pointer.
-
-  __ flush();
-
-  *mc_top = (char*)__ pc();
-}
--- a/src/cpu/x86/vm/dump_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "assembler_x86.inline.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/space.inline.hpp"
-
-
-
-// Generate the self-patching vtable method:
-//
-// This method will be called (as any other Klass virtual method) with
-// the Klass itself as the first argument.  Example:
-//
-//      oop obj;
-//      int size = obj->klass()->klass_part()->oop_size(this);
-//
-// for which the virtual method call is Klass::oop_size();
-//
-// The dummy method is called with the Klass object as the first
-// operand, and an object as the second argument.
-//
-
-//=====================================================================
-
-// All of the dummy methods in the vtable are essentially identical,
-// differing only by an ordinal constant, and they bear no releationship
-// to the original method which the caller intended. Also, there needs
-// to be 'vtbl_list_size' instances of the vtable in order to
-// differentiate between the 'vtable_list_size' original Klass objects.
-
-#define __ masm->
-
-void CompactingPermGenGen::generate_vtable_methods(void** vtbl_list,
-                                                   void** vtable,
-                                                   char** md_top,
-                                                   char* md_end,
-                                                   char** mc_top,
-                                                   char* mc_end) {
-
-  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
-  *(intptr_t *)(*md_top) = vtable_bytes;
-  *md_top += sizeof(intptr_t);
-  void** dummy_vtable = (void**)*md_top;
-  *vtable = dummy_vtable;
-  *md_top += vtable_bytes;
-
-  // Get ready to generate dummy methods.
-
-  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
-  MacroAssembler* masm = new MacroAssembler(&cb);
-
-  Label common_code;
-  for (int i = 0; i < vtbl_list_size; ++i) {
-    for (int j = 0; j < num_virtuals; ++j) {
-      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
-
-      // Load eax with a value indicating vtable/offset pair.
-      // -- bits[ 7..0]  (8 bits) which virtual method in table?
-      // -- bits[12..8]  (5 bits) which virtual method table?
-      // -- must fit in 13-bit instruction immediate field.
-      __ movl(rax, (i << 8) + j);
-      __ jmp(common_code);
-    }
-  }
-
-  __ bind(common_code);
-
-  // Expecting to be called with "thiscall" convections -- the arguments
-  // are on the stack and the "this" pointer is in c_rarg0. In addition, rax
-  // was set (above) to the offset of the method in the table.
-
-  __ push(c_rarg1);                     // save & free register
-  __ push(c_rarg0);                     // save "this"
-  __ mov(c_rarg0, rax);
-  __ shrptr(c_rarg0, 8);                // isolate vtable identifier.
-  __ shlptr(c_rarg0, LogBytesPerWord);
-  __ lea(c_rarg1, ExternalAddress((address)vtbl_list)); // ptr to correct vtable list.
-  __ addptr(c_rarg1, c_rarg0);          // ptr to list entry.
-  __ movptr(c_rarg1, Address(c_rarg1, 0));      // get correct vtable address.
-  __ pop(c_rarg0);                      // restore "this"
-  __ movptr(Address(c_rarg0, 0), c_rarg1);      // update vtable pointer.
-
-  __ andptr(rax, 0x00ff);                       // isolate vtable method index
-  __ shlptr(rax, LogBytesPerWord);
-  __ addptr(rax, c_rarg1);              // address of real method pointer.
-  __ pop(c_rarg1);                      // restore register.
-  __ movptr(rax, Address(rax, 0));      // get real method pointer.
-  __ jmp(rax);                          // jump to the real method.
-
-  __ flush();
-
-  *mc_top = (char*)__ pc();
-}
--- a/src/cpu/x86/vm/frame_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/frame_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,7 +26,7 @@
 #include "interpreter/interpreter.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
 #include "runtime/frame.inline.hpp"
@@ -494,7 +494,7 @@
 
 bool frame::interpreter_frame_equals_unpacked_fp(intptr_t* fp) {
   assert(is_interpreted_frame(), "must be interpreter frame");
-  methodOop method = interpreter_frame_method();
+  Method* method = interpreter_frame_method();
   // When unpacking an optimized frame the frame pointer is
   // adjusted with:
   int diff = (method->max_locals() - method->size_of_parameters()) *
@@ -531,7 +531,7 @@
 
   // first the method
 
-  methodOop m = *interpreter_frame_method_addr();
+  Method* m = *interpreter_frame_method_addr();
 
   // validate the method we'd find in this potential sender
   if (!Universe::heap()->is_valid_method(m)) return false;
@@ -549,13 +549,9 @@
     return false;
   }
 
-  // validate constantPoolCacheOop
-
-  constantPoolCacheOop cp = *interpreter_frame_cache_addr();
-
-  if (cp == NULL ||
-      !Space::is_aligned(cp) ||
-      !Universe::heap()->is_permanent((void*)cp)) return false;
+  // validate ConstantPoolCache*
+  ConstantPoolCache* cp = *interpreter_frame_cache_addr();
+  if (cp == NULL || !cp->is_metadata()) return false;
 
   // validate locals
 
@@ -576,7 +572,7 @@
   interpreterState istate = get_interpreterState();
 #endif // CC_INTERP
   assert(is_interpreted_frame(), "interpreted frame expected");
-  methodOop method = interpreter_frame_method();
+  Method* method = interpreter_frame_method();
   BasicType type = method->result_type();
 
   intptr_t* tos_addr;
--- a/src/cpu/x86/vm/frame_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/frame_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -44,7 +44,7 @@
 //    [pointer to locals     ]                   = locals()             locals_offset
 //    [constant pool cache   ]                   = cache()              cache_offset
 //    [methodData            ]                   = mdp()                mdx_offset
-//    [methodOop             ]                   = method()             method_offset
+//    [Method*               ]                   = method()             method_offset
 //    [last sp               ]                   = last_sp()            last_sp_offset
 //    [old stack pointer     ]                     (sender_sp)          sender_sp_offset
 //    [old frame pointer     ]   <- fp           = link()
--- a/src/cpu/x86/vm/frame_x86.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/frame_x86.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -174,14 +174,14 @@
 
 // Constant pool cache
 
-inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
+inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
   assert(is_interpreted_frame(), "must be interpreted");
   return &(get_interpreterState()->_constants);
 }
 
 // Method
 
-inline methodOop* frame::interpreter_frame_method_addr() const {
+inline Method** frame::interpreter_frame_method_addr() const {
   assert(is_interpreted_frame(), "must be interpreted");
   return &(get_interpreterState()->_method);
 }
@@ -221,14 +221,14 @@
 
 // Constant pool cache
 
-inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
-  return (constantPoolCacheOop*)addr_at(interpreter_frame_cache_offset);
+inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
+  return (ConstantPoolCache**)addr_at(interpreter_frame_cache_offset);
 }
 
 // Method
 
-inline methodOop* frame::interpreter_frame_method_addr() const {
-  return (methodOop*)addr_at(interpreter_frame_method_offset);
+inline Method** frame::interpreter_frame_method_addr() const {
+  return (Method**)addr_at(interpreter_frame_method_offset);
 }
 
 // top of expression stack
--- a/src/cpu/x86/vm/icBuffer_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/icBuffer_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -44,16 +44,16 @@
 
 
 
-void InlineCacheBuffer::assemble_ic_buffer_code(address code_begin, oop cached_oop, address entry_point) {
+void InlineCacheBuffer::assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point) {
   ResourceMark rm;
   CodeBuffer      code(code_begin, ic_stub_code_size());
   MacroAssembler* masm            = new MacroAssembler(&code);
-  // note: even though the code contains an embedded oop, we do not need reloc info
+  // note: even though the code contains an embedded value, we do not need reloc info
   // because
-  // (1) the oop is old (i.e., doesn't matter for scavenges)
+  // (1) the value is old (i.e., doesn't matter for scavenges)
   // (2) these ICStubs are removed *before* a GC happens, so the roots disappear
-  assert(cached_oop == NULL || cached_oop->is_perm(), "must be perm oop");
-  masm->lea(rax, OopAddress((address) cached_oop));
+  // assert(cached_value == NULL || cached_oop->is_perm(), "must be perm oop");
+  masm->lea(rax, AddressLiteral((address) cached_value, relocInfo::metadata_type));
   masm->jump(ExternalAddress(entry_point));
 }
 
@@ -65,10 +65,11 @@
 }
 
 
-oop InlineCacheBuffer::ic_buffer_cached_oop(address code_begin) {
+void* InlineCacheBuffer::ic_buffer_cached_value(address code_begin) {
   // creation also verifies the object
   NativeMovConstReg* move = nativeMovConstReg_at(code_begin);
   // Verifies the jump
   NativeJump*        jump = nativeJump_at(move->next_instruction_address());
-  return (oop)move->data();
+  void* o = (void*)move->data();
+  return o;
 }
--- a/src/cpu/x86/vm/interp_masm_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interp_masm_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,8 +28,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -223,10 +223,9 @@
     // Check if the secondary index definition is still ~x, otherwise
     // we have to change the following assembler code to calculate the
     // plain index.
-    assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
+    assert(ConstantPool::decode_invokedynamic_index(~123) == 123, "else change next line");
     notl(reg);  // convert to plain index
   } else if (index_size == sizeof(u1)) {
-    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
     load_unsigned_byte(reg, Address(rsi, bcp_offset));
   } else {
     ShouldNotReachHere();
@@ -240,6 +239,7 @@
   get_cache_index_at_bcp(index, bcp_offset, index_size);
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
+  assert(exact_log2(in_words(ConstantPoolCacheEntry::size())) == 2, "else change next line");
   shlptr(index, 2); // convert from field index to ConstantPoolCacheEntry index
 }
 
@@ -251,7 +251,7 @@
                                                                         int bcp_offset,
                                                                         size_t index_size) {
   get_cache_and_index_at_bcp(cache, index, bcp_offset, index_size);
-  movptr(bytecode, Address(cache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+  movptr(bytecode, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::indices_offset()));
   const int shift_count = (1 + byte_no) * BitsPerByte;
   assert((byte_no == TemplateTable::f1_byte && shift_count == ConstantPoolCacheEntry::bytecode_1_shift) ||
          (byte_no == TemplateTable::f2_byte && shift_count == ConstantPoolCacheEntry::bytecode_2_shift),
@@ -269,13 +269,32 @@
   assert(sizeof(ConstantPoolCacheEntry) == 4*wordSize, "adjust code below");
                                // convert from field index to ConstantPoolCacheEntry index
                                // and from word offset to byte offset
+  assert(exact_log2(in_bytes(ConstantPoolCacheEntry::size_in_bytes())) == 2 + LogBytesPerWord, "else change next line");
   shll(tmp, 2 + LogBytesPerWord);
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
                                // skip past the header
-  addptr(cache, in_bytes(constantPoolCacheOopDesc::base_offset()));
+  addptr(cache, in_bytes(ConstantPoolCache::base_offset()));
   addptr(cache, tmp);            // construct pointer to cache entry
 }
 
+// Load object from cpool->resolved_references(index)
+void InterpreterMacroAssembler::load_resolved_reference_at_index(
+                                           Register result, Register index) {
+  assert_different_registers(result, index);
+  // convert from field index to resolved_references() index and from
+  // word index to byte offset. Since this is a java object, it can be compressed
+  Register tmp = index;  // reuse
+  shll(tmp, LogBytesPerHeapOop);
+
+  get_constant_pool(result);
+  // load pointer for resolved_references[] objArray
+  movptr(result, Address(result, ConstantPool::resolved_references_offset_in_bytes()));
+  // JNIHandles::resolve(obj);
+  movptr(result, Address(result, 0));
+  // Add in the index
+  addptr(result, tmp);
+  load_heap_oop(result, Address(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
+}
 
   // Generate a subtype check: branch to ok_is_subtype if sub_klass is
   // a subtype of super_klass.  EAX holds the super_klass.  Blows ECX.
@@ -427,11 +446,11 @@
     // Is a cmpl faster?
     cmpb(Address(temp, JavaThread::interp_only_mode_offset()), 0);
     jccb(Assembler::zero, run_compiled_code);
-    jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
+    jmp(Address(method, Method::interpreter_entry_offset()));
     bind(run_compiled_code);
   }
 
-  jmp(Address(method, methodOopDesc::from_interpreted_offset()));
+  jmp(Address(method, Method::from_interpreted_offset()));
 
 }
 
@@ -526,7 +545,7 @@
   movbool(do_not_unlock_if_synchronized, false); // reset the flag
 
   movptr(rbx, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); // get method access flags
-  movl(rcx, Address(rbx, methodOopDesc::access_flags_offset()));
+  movl(rcx, Address(rbx, Method::access_flags_offset()));
 
   testl(rcx, JVM_ACC_SYNCHRONIZED);
   jcc(Assembler::zero, unlocked);
@@ -820,7 +839,7 @@
 
   get_method(rbx);
   // Test MDO to avoid the call if it is NULL.
-  movptr(rax, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
+  movptr(rax, Address(rbx, in_bytes(Method::method_data_offset())));
   testptr(rax, rax);
   jcc(Assembler::zero, set_mdp);
   // rbx,: method
@@ -828,8 +847,8 @@
   call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::bcp_to_di), rbx, rsi);
   // rax,: mdi
   // mdo is guaranteed to be non-zero here, we checked for it before the call.
-  movptr(rbx, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
-  addptr(rbx, in_bytes(methodDataOopDesc::data_offset()));
+  movptr(rbx, Address(rbx, in_bytes(Method::method_data_offset())));
+  addptr(rbx, in_bytes(MethodData::data_offset()));
   addptr(rax, rbx);
   bind(set_mdp);
   movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax);
@@ -851,8 +870,8 @@
   // If the mdp is valid, it will point to a DataLayout header which is
   // consistent with the bcp.  The converse is highly probable also.
   load_unsigned_short(rdx, Address(rcx, in_bytes(DataLayout::bci_offset())));
-  addptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-  lea(rdx, Address(rdx, constMethodOopDesc::codes_offset()));
+  addptr(rdx, Address(rbx, Method::const_offset()));
+  lea(rdx, Address(rdx, ConstMethod::codes_offset()));
   cmpptr(rdx, rsi);
   jcc(Assembler::equal, verify_continue);
   // rbx,: method
--- a/src/cpu/x86/vm/interp_masm_x86_32.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interp_masm_x86_32.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -77,10 +77,10 @@
 
   // Helpers for runtime call arguments/results
   void get_method(Register reg)                            { movptr(reg, Address(rbp, frame::interpreter_frame_method_offset * wordSize)); }
-  void get_const(Register reg)                             { get_method(reg); movptr(reg, Address(reg, methodOopDesc::const_offset())); }
-  void get_constant_pool(Register reg)                     { get_const(reg); movptr(reg, Address(reg, constMethodOopDesc::constants_offset())); }
-  void get_constant_pool_cache(Register reg)               { get_constant_pool(reg); movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes())); }
-  void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
+  void get_const(Register reg)                             { get_method(reg); movptr(reg, Address(reg, Method::const_offset())); }
+  void get_constant_pool(Register reg)                     { get_const(reg); movptr(reg, Address(reg, ConstMethod::constants_offset())); }
+  void get_constant_pool_cache(Register reg)               { get_constant_pool(reg); movptr(reg, Address(reg, ConstantPool::cache_offset_in_bytes())); }
+  void get_cpool_and_tags(Register cpool, Register tags)   { get_constant_pool(cpool); movptr(tags, Address(cpool, ConstantPool::tags_offset_in_bytes()));
   }
   void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
   void get_cache_and_index_at_bcp(Register cache, Register index, int bcp_offset, size_t index_size = sizeof(u2));
@@ -88,6 +88,9 @@
   void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, size_t index_size = sizeof(u2));
   void get_cache_index_at_bcp(Register index, int bcp_offset, size_t index_size = sizeof(u2));
 
+  // load cpool->resolved_references(index);
+  void load_resolved_reference_at_index(Register result, Register index);
+
   // Expression stack
   void f2ieee();                                           // truncate ftos to 32bits
   void d2ieee();                                           // truncate dtos to 64bits
--- a/src/cpu/x86/vm/interp_masm_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interp_masm_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -28,8 +28,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -221,10 +221,9 @@
     // Check if the secondary index definition is still ~x, otherwise
     // we have to change the following assembler code to calculate the
     // plain index.
-    assert(constantPoolCacheOopDesc::decode_secondary_index(~123) == 123, "else change next line");
+    assert(ConstantPool::decode_invokedynamic_index(~123) == 123, "else change next line");
     notl(index);  // convert to plain index
   } else if (index_size == sizeof(u1)) {
-    assert(EnableInvokeDynamic, "tiny index used only for JSR 292");
     load_unsigned_byte(index, Address(r13, bcp_offset));
   } else {
     ShouldNotReachHere();
@@ -241,6 +240,7 @@
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
   assert(sizeof(ConstantPoolCacheEntry) == 4 * wordSize, "adjust code below");
   // convert from field index to ConstantPoolCacheEntry index
+  assert(exact_log2(in_words(ConstantPoolCacheEntry::size())) == 2, "else change next line");
   shll(index, 2);
 }
 
@@ -254,7 +254,7 @@
   get_cache_and_index_at_bcp(cache, index, bcp_offset, index_size);
   // We use a 32-bit load here since the layout of 64-bit words on
   // little-endian machines allow us that.
-  movl(bytecode, Address(cache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+  movl(bytecode, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::indices_offset()));
   const int shift_count = (1 + byte_no) * BitsPerByte;
   assert((byte_no == TemplateTable::f1_byte && shift_count == ConstantPoolCacheEntry::bytecode_1_shift) ||
          (byte_no == TemplateTable::f2_byte && shift_count == ConstantPoolCacheEntry::bytecode_2_shift),
@@ -274,13 +274,32 @@
   assert(sizeof(ConstantPoolCacheEntry) == 4 * wordSize, "adjust code below");
   // convert from field index to ConstantPoolCacheEntry index
   // and from word offset to byte offset
+  assert(exact_log2(in_bytes(ConstantPoolCacheEntry::size_in_bytes())) == 2 + LogBytesPerWord, "else change next line");
   shll(tmp, 2 + LogBytesPerWord);
   movptr(cache, Address(rbp, frame::interpreter_frame_cache_offset * wordSize));
   // skip past the header
-  addptr(cache, in_bytes(constantPoolCacheOopDesc::base_offset()));
+  addptr(cache, in_bytes(ConstantPoolCache::base_offset()));
   addptr(cache, tmp);  // construct pointer to cache entry
 }
 
+// Load object from cpool->resolved_references(index)
+void InterpreterMacroAssembler::load_resolved_reference_at_index(
+                                           Register result, Register index) {
+  assert_different_registers(result, index);
+  // convert from field index to resolved_references() index and from
+  // word index to byte offset. Since this is a java object, it can be compressed
+  Register tmp = index;  // reuse
+  shll(tmp, LogBytesPerHeapOop);
+
+  get_constant_pool(result);
+  // load pointer for resolved_references[] objArray
+  movptr(result, Address(result, ConstantPool::resolved_references_offset_in_bytes()));
+  // JNIHandles::resolve(obj);
+  movptr(result, Address(result, 0));
+  // Add in the index
+  addptr(result, tmp);
+  load_heap_oop(result, Address(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
+}
 
 // Generate a subtype check: branch to ok_is_subtype if sub_klass is a
 // subtype of super_klass.
@@ -426,11 +445,11 @@
     // Is a cmpl faster?
     cmpb(Address(r15_thread, JavaThread::interp_only_mode_offset()), 0);
     jccb(Assembler::zero, run_compiled_code);
-    jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
+    jmp(Address(method, Method::interpreter_entry_offset()));
     bind(run_compiled_code);
   }
 
-  jmp(Address(method, methodOopDesc::from_interpreted_offset()));
+  jmp(Address(method, Method::from_interpreted_offset()));
 
 }
 
@@ -526,7 +545,7 @@
 
  // get method access flags
   movptr(rbx, Address(rbp, frame::interpreter_frame_method_offset * wordSize));
-  movl(rcx, Address(rbx, methodOopDesc::access_flags_offset()));
+  movl(rcx, Address(rbx, Method::access_flags_offset()));
   testl(rcx, JVM_ACC_SYNCHRONIZED);
   jcc(Assembler::zero, unlocked);
 
@@ -834,7 +853,7 @@
 
   get_method(rbx);
   // Test MDO to avoid the call if it is NULL.
-  movptr(rax, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
+  movptr(rax, Address(rbx, in_bytes(Method::method_data_offset())));
   testptr(rax, rax);
   jcc(Assembler::zero, set_mdp);
   // rbx: method
@@ -842,8 +861,8 @@
   call_VM_leaf(CAST_FROM_FN_PTR(address, InterpreterRuntime::bcp_to_di), rbx, r13);
   // rax: mdi
   // mdo is guaranteed to be non-zero here, we checked for it before the call.
-  movptr(rbx, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
-  addptr(rbx, in_bytes(methodDataOopDesc::data_offset()));
+  movptr(rbx, Address(rbx, in_bytes(Method::method_data_offset())));
+  addptr(rbx, in_bytes(MethodData::data_offset()));
   addptr(rax, rbx);
   bind(set_mdp);
   movptr(Address(rbp, frame::interpreter_frame_mdx_offset * wordSize), rax);
@@ -866,8 +885,8 @@
   // consistent with the bcp.  The converse is highly probable also.
   load_unsigned_short(c_rarg2,
                       Address(c_rarg3, in_bytes(DataLayout::bci_offset())));
-  addptr(c_rarg2, Address(rbx, methodOopDesc::const_offset()));
-  lea(c_rarg2, Address(c_rarg2, constMethodOopDesc::codes_offset()));
+  addptr(c_rarg2, Address(rbx, Method::const_offset()));
+  lea(c_rarg2, Address(c_rarg2, ConstMethod::codes_offset()));
   cmpptr(c_rarg2, r13);
   jcc(Assembler::equal, verify_continue);
   // rbx: method
--- a/src/cpu/x86/vm/interp_masm_x86_64.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interp_masm_x86_64.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -86,22 +86,22 @@
 
   void get_const(Register reg) {
     get_method(reg);
-    movptr(reg, Address(reg, methodOopDesc::const_offset()));
+    movptr(reg, Address(reg, Method::const_offset()));
   }
 
   void get_constant_pool(Register reg) {
     get_const(reg);
-    movptr(reg, Address(reg, constMethodOopDesc::constants_offset()));
+    movptr(reg, Address(reg, ConstMethod::constants_offset()));
   }
 
   void get_constant_pool_cache(Register reg) {
     get_constant_pool(reg);
-    movptr(reg, Address(reg, constantPoolOopDesc::cache_offset_in_bytes()));
+    movptr(reg, Address(reg, ConstantPool::cache_offset_in_bytes()));
   }
 
   void get_cpool_and_tags(Register cpool, Register tags) {
     get_constant_pool(cpool);
-    movptr(tags, Address(cpool, constantPoolOopDesc::tags_offset_in_bytes()));
+    movptr(tags, Address(cpool, ConstantPool::tags_offset_in_bytes()));
   }
 
   void get_unsigned_2_byte_index_at_bcp(Register reg, int bcp_offset);
@@ -110,6 +110,9 @@
   void get_cache_entry_pointer_at_bcp(Register cache, Register tmp, int bcp_offset, size_t index_size = sizeof(u2));
   void get_cache_index_at_bcp(Register index, int bcp_offset, size_t index_size = sizeof(u2));
 
+  // load cpool->resolved_references(index);
+  void load_resolved_reference_at_index(Register result, Register index);
+
   void pop_ptr(Register r = rax);
   void pop_i(Register r = rax);
   void pop_l(Register r = rax);
--- a/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interpreterRT_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -27,7 +27,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
@@ -131,8 +131,8 @@
   }
 };
 
-IRT_ENTRY(address, InterpreterRuntime::slow_signature_handler(JavaThread* thread, methodOopDesc* method, intptr_t* from, intptr_t* to))
-  methodHandle m(thread, (methodOop)method);
+IRT_ENTRY(address, InterpreterRuntime::slow_signature_handler(JavaThread* thread, Method* method, intptr_t* from, intptr_t* to))
+  methodHandle m(thread, (Method*)method);
   assert(m->is_native(), "sanity check");
   // handle arguments
   SlowSignatureHandler(m, (address)from, to + 1).iterate(UCONST64(-1));
--- a/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interpreterRT_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -27,7 +27,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
@@ -480,10 +480,10 @@
 
 IRT_ENTRY(address,
           InterpreterRuntime::slow_signature_handler(JavaThread* thread,
-                                                     methodOopDesc* method,
+                                                     Method* method,
                                                      intptr_t* from,
                                                      intptr_t* to))
-  methodHandle m(thread, (methodOop)method);
+  methodHandle m(thread, (Method*)method);
   assert(m->is_native(), "sanity check");
 
   // handle arguments
--- a/src/cpu/x86/vm/interpreter_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interpreter_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -76,7 +76,7 @@
 
 address InterpreterGenerator::generate_empty_entry(void) {
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: receiver (unused)
   // rsi: previous interpreter state (C++ interpreter) must preserve
   // rsi: sender sp must set sp to this value on return
@@ -107,7 +107,7 @@
 
 address InterpreterGenerator::generate_math_entry(AbstractInterpreter::MethodKind kind) {
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: scratrch
   // rsi: sender sp
 
@@ -219,7 +219,7 @@
 // Attempt to execute abstract method. Throw exception
 address InterpreterGenerator::generate_abstract_entry(void) {
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: receiver (unused)
   // rsi: previous interpreter state (C++ interpreter) must preserve
 
--- a/src/cpu/x86/vm/interpreter_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/interpreter_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -92,7 +92,7 @@
     // Do Int register here
     switch ( i ) {
       case 0:
-        __ movl(rscratch1, Address(rbx, methodOopDesc::access_flags_offset()));
+        __ movl(rscratch1, Address(rbx, Method::access_flags_offset()));
         __ testl(rscratch1, JVM_ACC_STATIC);
         __ cmovptr(Assembler::zero, c_rarg1, Address(rsp, 0));
         break;
@@ -177,7 +177,7 @@
   }
 
   // Now handle integrals.  Only do c_rarg1 if not static.
-  __ movl(c_rarg3, Address(rbx, methodOopDesc::access_flags_offset()));
+  __ movl(c_rarg3, Address(rbx, Method::access_flags_offset()));
   __ testl(c_rarg3, JVM_ACC_STATIC);
   __ cmovptr(Assembler::zero, c_rarg1, Address(rsp, 0));
 
@@ -202,7 +202,7 @@
 
 address InterpreterGenerator::generate_math_entry(AbstractInterpreter::MethodKind kind) {
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: scratrch
   // r13: sender sp
 
@@ -303,7 +303,7 @@
 // Abstract method entry
 // Attempt to execute abstract method. Throw exception
 address InterpreterGenerator::generate_abstract_entry(void) {
-  // rbx: methodOop
+  // rbx: Method*
   // r13: sender SP
 
   address entry_point = __ pc();
@@ -328,7 +328,7 @@
 // Empty method, generate a very fast return.
 
 address InterpreterGenerator::generate_empty_entry(void) {
-  // rbx: methodOop
+  // rbx: Method*
   // r13: sender sp must set sp to this value on return
 
   if (!UseFastEmptyMethods) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/x86/vm/metaspaceShared_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/metaspaceShared.hpp"
+
+// Generate the self-patching vtable method:
+//
+// This method will be called (as any other Klass virtual method) with
+// the Klass itself as the first argument.  Example:
+//
+//      oop obj;
+//      int size = obj->klass()->oop_size(this);
+//
+// for which the virtual method call is Klass::oop_size();
+//
+// The dummy method is called with the Klass object as the first
+// operand, and an object as the second argument.
+//
+
+//=====================================================================
+
+// All of the dummy methods in the vtable are essentially identical,
+// differing only by an ordinal constant, and they bear no relationship
+// to the original method which the caller intended. Also, there needs
+// to be 'vtbl_list_size' instances of the vtable in order to
+// differentiate between the 'vtable_list_size' original Klass objects.
+
+#define __ masm->
+
+void MetaspaceShared::generate_vtable_methods(void** vtbl_list,
+                                                   void** vtable,
+                                                   char** md_top,
+                                                   char* md_end,
+                                                   char** mc_top,
+                                                   char* mc_end) {
+
+  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
+  *(intptr_t *)(*md_top) = vtable_bytes;
+  *md_top += sizeof(intptr_t);
+  void** dummy_vtable = (void**)*md_top;
+  *vtable = dummy_vtable;
+  *md_top += vtable_bytes;
+
+  // Get ready to generate dummy methods.
+
+  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
+  MacroAssembler* masm = new MacroAssembler(&cb);
+
+  Label common_code;
+  for (int i = 0; i < vtbl_list_size; ++i) {
+    for (int j = 0; j < num_virtuals; ++j) {
+      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
+
+      // Load rax, with a value indicating vtable/offset pair.
+      // -- bits[ 7..0]  (8 bits) which virtual method in table?
+      // -- bits[12..8]  (5 bits) which virtual method table?
+      // -- must fit in 13-bit instruction immediate field.
+      __ movl(rax, (i << 8) + j);
+      __ jmp(common_code);
+    }
+  }
+
+  __ bind(common_code);
+
+#ifdef WIN32
+  // Expecting to be called with "thiscall" conventions -- the arguments
+  // are on the stack, except that the "this" pointer is in rcx.
+#else
+  // Expecting to be called with Unix conventions -- the arguments
+  // are on the stack, including the "this" pointer.
+#endif
+
+  // In addition, rax was set (above) to the offset of the method in the
+  // table.
+
+#ifdef WIN32
+  __ push(rcx);                         // save "this"
+#endif
+  __ mov(rcx, rax);
+  __ shrptr(rcx, 8);                    // isolate vtable identifier.
+  __ shlptr(rcx, LogBytesPerWord);
+  Address index(noreg, rcx,  Address::times_1);
+  ExternalAddress vtbl((address)vtbl_list);
+  __ movptr(rdx, ArrayAddress(vtbl, index)); // get correct vtable address.
+#ifdef WIN32
+  __ pop(rcx);                          // restore "this"
+#else
+  __ movptr(rcx, Address(rsp, BytesPerWord));   // fetch "this"
+#endif
+  __ movptr(Address(rcx, 0), rdx);      // update vtable pointer.
+
+  __ andptr(rax, 0x00ff);                       // isolate vtable method index
+  __ shlptr(rax, LogBytesPerWord);
+  __ addptr(rax, rdx);                  // address of real method pointer.
+  __ jmp(Address(rax, 0));              // get real method pointer.
+
+  __ flush();
+
+  *mc_top = (char*)__ pc();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/x86/vm/metaspaceShared_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2004, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "assembler_x86.inline.hpp"
+#include "memory/metaspaceShared.hpp"
+
+// Generate the self-patching vtable method:
+//
+// This method will be called (as any other Klass virtual method) with
+// the Klass itself as the first argument.  Example:
+//
+//      oop obj;
+//      int size = obj->klass()->oop_size(this);
+//
+// for which the virtual method call is Klass::oop_size();
+//
+// The dummy method is called with the Klass object as the first
+// operand, and an object as the second argument.
+//
+
+//=====================================================================
+
+// All of the dummy methods in the vtable are essentially identical,
+// differing only by an ordinal constant, and they bear no relationship
+// to the original method which the caller intended. Also, there needs
+// to be 'vtbl_list_size' instances of the vtable in order to
+// differentiate between the 'vtable_list_size' original Klass objects.
+
+#define __ masm->
+
+void MetaspaceShared::generate_vtable_methods(void** vtbl_list,
+                                                   void** vtable,
+                                                   char** md_top,
+                                                   char* md_end,
+                                                   char** mc_top,
+                                                   char* mc_end) {
+
+  intptr_t vtable_bytes = (num_virtuals * vtbl_list_size) * sizeof(void*);
+  *(intptr_t *)(*md_top) = vtable_bytes;
+  *md_top += sizeof(intptr_t);
+  void** dummy_vtable = (void**)*md_top;
+  *vtable = dummy_vtable;
+  *md_top += vtable_bytes;
+
+  // Get ready to generate dummy methods.
+
+  CodeBuffer cb((unsigned char*)*mc_top, mc_end - *mc_top);
+  MacroAssembler* masm = new MacroAssembler(&cb);
+
+  Label common_code;
+  for (int i = 0; i < vtbl_list_size; ++i) {
+    for (int j = 0; j < num_virtuals; ++j) {
+      dummy_vtable[num_virtuals * i + j] = (void*)masm->pc();
+
+      // Load eax with a value indicating vtable/offset pair.
+      // -- bits[ 7..0]  (8 bits) which virtual method in table?
+      // -- bits[12..8]  (5 bits) which virtual method table?
+      // -- must fit in 13-bit instruction immediate field.
+      __ movl(rax, (i << 8) + j);
+      __ jmp(common_code);
+    }
+  }
+
+  __ bind(common_code);
+
+  // Expecting to be called with "thiscall" convections -- the arguments
+  // are on the stack and the "this" pointer is in c_rarg0. In addition, rax
+  // was set (above) to the offset of the method in the table.
+
+  __ push(c_rarg1);                     // save & free register
+  __ push(c_rarg0);                     // save "this"
+  __ mov(c_rarg0, rax);
+  __ shrptr(c_rarg0, 8);                // isolate vtable identifier.
+  __ shlptr(c_rarg0, LogBytesPerWord);
+  __ lea(c_rarg1, ExternalAddress((address)vtbl_list)); // ptr to correct vtable list.
+  __ addptr(c_rarg1, c_rarg0);          // ptr to list entry.
+  __ movptr(c_rarg1, Address(c_rarg1, 0));      // get correct vtable address.
+  __ pop(c_rarg0);                      // restore "this"
+  __ movptr(Address(c_rarg0, 0), c_rarg1);      // update vtable pointer.
+
+  __ andptr(rax, 0x00ff);                       // isolate vtable method index
+  __ shlptr(rax, LogBytesPerWord);
+  __ addptr(rax, c_rarg1);              // address of real method pointer.
+  __ pop(c_rarg1);                      // restore register.
+  __ movptr(rax, Address(rax, 0));      // get real method pointer.
+  __ jmp(rax);                          // jump to the real method.
+
+  __ flush();
+
+  *mc_top = (char*)__ pc();
+}
--- a/src/cpu/x86/vm/methodHandles_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/methodHandles_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -47,9 +47,9 @@
 
 void MethodHandles::load_klass_from_Class(MacroAssembler* _masm, Register klass_reg) {
   if (VerifyMethodHandles)
-    verify_klass(_masm, klass_reg, SystemDictionaryHandles::Class_klass(),
+    verify_klass(_masm, klass_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_Class),
                  "MH argument is a Class");
-  __ load_heap_oop(klass_reg, Address(klass_reg, java_lang_Class::klass_offset_in_bytes()));
+  __ movptr(klass_reg, Address(klass_reg, java_lang_Class::klass_offset_in_bytes()));
 }
 
 #ifdef ASSERT
@@ -64,12 +64,10 @@
 
 #ifdef ASSERT
 void MethodHandles::verify_klass(MacroAssembler* _masm,
-                                 Register obj, KlassHandle klass,
+                                 Register obj, SystemDictionary::WKID klass_id,
                                  const char* error_message) {
-  oop* klass_addr = klass.raw_value();
-  assert(klass_addr >= SystemDictionaryHandles::Object_klass().raw_value() &&
-         klass_addr <= SystemDictionaryHandles::Long_klass().raw_value(),
-         "must be one of the SystemDictionaryHandles");
+  Klass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
+  KlassHandle klass = SystemDictionary::well_known_klass(klass_id);
   Register temp = rdi;
   Register temp2 = noreg;
   LP64_ONLY(temp2 = rscratch1);  // used by MacroAssembler::cmpptr
@@ -120,7 +118,7 @@
 void MethodHandles::jump_from_method_handle(MacroAssembler* _masm, Register method, Register temp,
                                             bool for_compiler_entry) {
   assert(method == rbx, "interpreter calling convention");
-  __ verify_oop(method);
+  __ verify_method_ptr(method);
 
   if (!for_compiler_entry && JvmtiExport::can_post_interpreter_events()) {
     Label run_compiled_code;
@@ -137,12 +135,12 @@
     // Is a cmpl faster?
     __ cmpb(Address(rthread, JavaThread::interp_only_mode_offset()), 0);
     __ jccb(Assembler::zero, run_compiled_code);
-    __ jmp(Address(method, methodOopDesc::interpreter_entry_offset()));
+    __ jmp(Address(method, Method::interpreter_entry_offset()));
     __ BIND(run_compiled_code);
   }
 
-  const ByteSize entry_offset = for_compiler_entry ? methodOopDesc::from_compiled_offset() :
-                                                     methodOopDesc::from_interpreted_offset();
+  const ByteSize entry_offset = for_compiler_entry ? Method::from_compiled_offset() :
+                                                     Method::from_interpreted_offset();
   __ jmp(Address(method, entry_offset));
 }
 
@@ -165,16 +163,15 @@
   __ verify_oop(method_temp);
   __ load_heap_oop(method_temp, Address(method_temp, NONZERO(java_lang_invoke_LambdaForm::vmentry_offset_in_bytes())));
   __ verify_oop(method_temp);
-  // the following assumes that a methodOop is normally compressed in the vmtarget field:
-  __ load_heap_oop(method_temp, Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())));
-  __ verify_oop(method_temp);
+  // the following assumes that a Method* is normally compressed in the vmtarget field:
+  __ movptr(method_temp, Address(method_temp, NONZERO(java_lang_invoke_MemberName::vmtarget_offset_in_bytes())));
 
   if (VerifyMethodHandles && !for_compiler_entry) {
     // make sure recv is already on stack
     __ load_sized_value(temp2,
-                        Address(method_temp, methodOopDesc::size_of_parameters_offset()),
+                        Address(method_temp, Method::size_of_parameters_offset()),
                         sizeof(u2), /*is_signed*/ false);
-    // assert(sizeof(u2) == sizeof(methodOopDesc::_size_of_parameters), "");
+    // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
     Label L;
     __ cmpptr(recv, __ argument_address(temp2, -1));
     __ jcc(Assembler::equal, L);
@@ -203,7 +200,7 @@
   }
 
   // rsi/r13: sender SP (must preserve; see prepare_to_jump_from_interpreted)
-  // rbx: methodOop
+  // rbx: Method*
   // rdx: argument locator (parameter slot count, added to rsp)
   // rcx: used as temp to hold mh or receiver
   // rax, rdi: garbage temps, blown away
@@ -221,14 +218,14 @@
   if (VerifyMethodHandles) {
     Label L;
     BLOCK_COMMENT("verify_intrinsic_id {");
-    __ cmpb(Address(rbx_method, methodOopDesc::intrinsic_id_offset_in_bytes()), (int) iid);
+    __ cmpb(Address(rbx_method, Method::intrinsic_id_offset_in_bytes()), (int) iid);
     __ jcc(Assembler::equal, L);
     if (iid == vmIntrinsics::_linkToVirtual ||
         iid == vmIntrinsics::_linkToSpecial) {
       // could do this for all kinds, but would explode assembly code size
-      trace_method_handle(_masm, "bad methodOop::intrinsic_id");
+      trace_method_handle(_masm, "bad Method*::intrinsic_id");
     }
-    __ STOP("bad methodOop::intrinsic_id");
+    __ STOP("bad Method*::intrinsic_id");
     __ bind(L);
     BLOCK_COMMENT("} verify_intrinsic_id");
   }
@@ -239,9 +236,9 @@
   assert(ref_kind != 0 || iid == vmIntrinsics::_invokeBasic, "must be _invokeBasic or a linkTo intrinsic");
   if (ref_kind == 0 || MethodHandles::ref_kind_has_receiver(ref_kind)) {
     __ load_sized_value(rdx_argp,
-                        Address(rbx_method, methodOopDesc::size_of_parameters_offset()),
+                        Address(rbx_method, Method::size_of_parameters_offset()),
                         sizeof(u2), /*is_signed*/ false);
-    // assert(sizeof(u2) == sizeof(methodOopDesc::_size_of_parameters), "");
+    // assert(sizeof(u2) == sizeof(Method::_size_of_parameters), "");
     rdx_first_arg_addr = __ argument_address(rdx_argp, -1);
   } else {
     DEBUG_ONLY(rdx_argp = noreg);
@@ -343,7 +340,7 @@
     // The method is a member invoker used by direct method handles.
     if (VerifyMethodHandles) {
       // make sure the trailing argument really is a MemberName (caller responsibility)
-      verify_klass(_masm, member_reg, SystemDictionaryHandles::MemberName_klass(),
+      verify_klass(_masm, member_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MemberName),
                    "MemberName required for invokeVirtual etc.");
     }
 
@@ -361,7 +358,7 @@
         // load receiver klass itself
         __ null_check(receiver_reg, oopDesc::klass_offset_in_bytes());
         __ load_klass(temp1_recv_klass, receiver_reg);
-        __ verify_oop(temp1_recv_klass);
+        __ verify_klass_ptr(temp1_recv_klass);
       }
       BLOCK_COMMENT("check_receiver {");
       // The receiver for the MemberName must be in receiver_reg.
@@ -369,14 +366,14 @@
       if (VerifyMethodHandles && iid == vmIntrinsics::_linkToSpecial) {
         // Did not load it above...
         __ load_klass(temp1_recv_klass, receiver_reg);
-        __ verify_oop(temp1_recv_klass);
+        __ verify_klass_ptr(temp1_recv_klass);
       }
       if (VerifyMethodHandles && iid != vmIntrinsics::_linkToInterface) {
         Label L_ok;
         Register temp2_defc = temp2;
         __ load_heap_oop(temp2_defc, member_clazz);
         load_klass_from_Class(_masm, temp2_defc);
-        __ verify_oop(temp2_defc);
+        __ verify_klass_ptr(temp2_defc);
         __ check_klass_subtype(temp1_recv_klass, temp2_defc, temp3, L_ok);
         // If we get here, the type check failed!
         __ STOP("receiver class disagrees with MemberName.clazz");
@@ -401,7 +398,7 @@
       if (VerifyMethodHandles) {
         verify_ref_kind(_masm, JVM_REF_invokeSpecial, member_reg, temp3);
       }
-      __ load_heap_oop(rbx_method, member_vmtarget);
+      __ movptr(rbx_method, member_vmtarget);
       method_is_live = true;
       break;
 
@@ -409,7 +406,7 @@
       if (VerifyMethodHandles) {
         verify_ref_kind(_masm, JVM_REF_invokeStatic, member_reg, temp3);
       }
-      __ load_heap_oop(rbx_method, member_vmtarget);
+      __ movptr(rbx_method, member_vmtarget);
       method_is_live = true;
       break;
 
@@ -437,7 +434,7 @@
       // Note:  The verifier invariants allow us to ignore MemberName.clazz and vmtarget
       // at this point.  And VerifyMethodHandles has already checked clazz, if needed.
 
-      // get target methodOop & entry point
+      // get target Method* & entry point
       __ lookup_virtual_method(temp1_recv_klass, temp2_index, rbx_method);
       method_is_live = true;
       break;
@@ -454,7 +451,7 @@
       Register temp3_intf = temp3;
       __ load_heap_oop(temp3_intf, member_clazz);
       load_klass_from_Class(_masm, temp3_intf);
-      __ verify_oop(temp3_intf);
+      __ verify_klass_ptr(temp3_intf);
 
       Register rbx_index = rbx_method;
       __ movptr(rbx_index, member_vmindex);
@@ -474,7 +471,7 @@
                                  temp2,
                                  L_no_such_interface);
 
-      __ verify_oop(rbx_method);
+      __ verify_method_ptr(rbx_method);
       jump_from_method_handle(_masm, rbx_method, temp2, for_compiler_entry);
       __ hlt();
 
@@ -494,7 +491,7 @@
       // After figuring out which concrete method to call, jump into it.
       // Note that this works in the interpreter with no data motion.
       // But the compiled version will require that rcx_recv be shifted out.
-      __ verify_oop(rbx_method);
+      __ verify_method_ptr(rbx_method);
       jump_from_method_handle(_masm, rbx_method, temp1, for_compiler_entry);
     }
   }
@@ -653,4 +650,3 @@
   BLOCK_COMMENT("} trace_method_handle");
 }
 #endif //PRODUCT
-
--- a/src/cpu/x86/vm/methodHandles_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/methodHandles_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -35,11 +35,11 @@
   static void load_klass_from_Class(MacroAssembler* _masm, Register klass_reg);
 
   static void verify_klass(MacroAssembler* _masm,
-                           Register obj, KlassHandle klass,
+                           Register obj, SystemDictionary::WKID klass_id,
                            const char* error_message = "wrong klass") NOT_DEBUG_RETURN;
 
   static void verify_method_handle(MacroAssembler* _masm, Register mh_reg) {
-    verify_klass(_masm, mh_reg, SystemDictionaryHandles::MethodHandle_klass(),
+    verify_klass(_masm, mh_reg, SystemDictionary::WK_KLASS_ENUM_NAME(java_lang_invoke_MethodHandle),
                  "reference is a MH");
   }
 
--- a/src/cpu/x86/vm/relocInfo_x86.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/relocInfo_x86.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -47,12 +47,21 @@
     }
   } else if (which == Assembler::narrow_oop_operand) {
     address disp = Assembler::locate_operand(addr(), which);
+    // both compressed oops and compressed classes look the same
+    if (Universe::heap()->is_in_reserved((oop)x)) {
     if (verify_only) {
       assert(*(uint32_t*) disp == oopDesc::encode_heap_oop((oop)x), "instructions must match");
     } else {
       *(int32_t*) disp = oopDesc::encode_heap_oop((oop)x);
     }
   } else {
+      if (verify_only) {
+        assert(*(uint32_t*) disp == oopDesc::encode_klass((Klass*)x), "instructions must match");
+      } else {
+        *(int32_t*) disp = oopDesc::encode_klass((Klass*)x);
+      }
+    }
+  } else {
     // Note:  Use runtime_call_type relocations for call32_operand.
     address ip = addr();
     address disp = Assembler::locate_operand(ip, which);
@@ -239,3 +248,6 @@
   }
 #endif // _LP64
 }
+
+void metadata_Relocation::pd_fix_value(address x) {
+}
--- a/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,7 +29,7 @@
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
@@ -453,8 +453,7 @@
 // Patch the callers callsite with entry to compiled code if it exists.
 static void patch_callers_callsite(MacroAssembler *masm) {
   Label L;
-  __ verify_oop(rbx);
-  __ cmpptr(Address(rbx, in_bytes(methodOopDesc::code_offset())), (int32_t)NULL_WORD);
+  __ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
   __ jcc(Assembler::equal, L);
   // Schedule the branch target address early.
   // Call into the VM to patch the caller, then jump to compiled callee
@@ -486,7 +485,6 @@
   __ push(rax);
   // VM needs target method
   __ push(rbx);
-  __ verify_oop(rbx);
   __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite)));
   __ addptr(rsp, 2*wordSize);
 
@@ -631,7 +629,7 @@
   }
 
   // Schedule the branch target address early.
-  __ movptr(rcx, Address(rbx, in_bytes(methodOopDesc::interpreter_entry_offset())));
+  __ movptr(rcx, Address(rbx, in_bytes(Method::interpreter_entry_offset())));
   // And repush original return address
   __ push(rax);
   __ jmp(rcx);
@@ -746,7 +744,7 @@
 
   // Will jump to the compiled code just as if compiled code was doing it.
   // Pre-load the register-jump target early, to schedule it better.
-  __ movptr(rdi, Address(rbx, in_bytes(methodOopDesc::from_compiled_offset())));
+  __ movptr(rdi, Address(rbx, in_bytes(Method::from_compiled_offset())));
 
   // Now generate the shuffle code.  Pick up all register args and move the
   // rest through the floating point stack top.
@@ -859,8 +857,8 @@
   __ get_thread(rax);
   __ movptr(Address(rax, JavaThread::callee_target_offset()), rbx);
 
-  // move methodOop to rax, in case we end up in an c2i adapter.
-  // the c2i adapters expect methodOop in rax, (c2) because c2's
+  // move Method* to rax, in case we end up in an c2i adapter.
+  // the c2i adapters expect Method* in rax, (c2) because c2's
   // resolve stubs return the result (the method) in rax,.
   // I'd love to fix this.
   __ mov(rax, rbx);
@@ -880,7 +878,7 @@
   gen_i2c_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs);
 
   // -------------------------------------------------------------------------
-  // Generate a C2I adapter.  On entry we know rbx, holds the methodOop during calls
+  // Generate a C2I adapter.  On entry we know rbx, holds the Method* during calls
   // to the interpreter.  The args start out packed in the compiled layout.  They
   // need to be unpacked into the interpreter layout.  This will almost always
   // require some stack space.  We grow the current (compiled) stack, then repack
@@ -898,18 +896,14 @@
   {
 
     Label missed;
-
-    __ verify_oop(holder);
     __ movptr(temp, Address(receiver, oopDesc::klass_offset_in_bytes()));
-    __ verify_oop(temp);
-
-    __ cmpptr(temp, Address(holder, compiledICHolderOopDesc::holder_klass_offset()));
-    __ movptr(rbx, Address(holder, compiledICHolderOopDesc::holder_method_offset()));
+    __ cmpptr(temp, Address(holder, CompiledICHolder::holder_klass_offset()));
+    __ movptr(rbx, Address(holder, CompiledICHolder::holder_method_offset()));
     __ jcc(Assembler::notEqual, missed);
     // Method might have been compiled since the call site was patched to
     // interpreted if that is the case treat it as a miss so we can get
     // the call site corrected.
-    __ cmpptr(Address(rbx, in_bytes(methodOopDesc::code_offset())), (int32_t)NULL_WORD);
+    __ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
     __ jcc(Assembler::equal, skip_fixup);
 
     __ bind(missed);
@@ -944,6 +938,7 @@
     case T_OBJECT:
     case T_ARRAY:
     case T_ADDRESS:
+    case T_METADATA:
       regs[i].set1(VMRegImpl::stack2reg(stack++));
       break;
     case T_LONG:
@@ -1918,7 +1913,7 @@
 
   {
     SkipIfEqual skip_if(masm, &DTraceMethodProbes, 0);
-    __ movoop(rax, JNIHandles::make_local(method()));
+    __ mov_metadata(rax, method());
     __ call_VM_leaf(
          CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
          thread, rax);
@@ -1926,7 +1921,7 @@
 
   // RedefineClasses() tracing support for obsolete method entry
   if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
-    __ movoop(rax, JNIHandles::make_local(method()));
+    __ mov_metadata(rax, method());
     __ call_VM_leaf(
          CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
          thread, rax);
@@ -2184,7 +2179,7 @@
     SkipIfEqual skip_if(masm, &DTraceMethodProbes, 0);
     // Tell dtrace about this method exit
     save_native_result(masm, ret_type, stack_slots);
-    __ movoop(rax, JNIHandles::make_local(method()));
+    __ mov_metadata(rax, method());
     __ call_VM_leaf(
          CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit),
          thread, rax);
@@ -3427,8 +3422,8 @@
   __ cmpptr(Address(thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
   __ jcc(Assembler::notEqual, pending);
 
-  // get the returned methodOop
-  __ movptr(rbx, Address(thread, JavaThread::vm_result_offset()));
+  // get the returned Method*
+  __ get_vm_result_2(rbx, thread);
   __ movptr(Address(rsp, RegisterSaver::rbx_offset() * wordSize), rbx);
 
   __ movptr(Address(rsp, RegisterSaver::rax_offset() * wordSize), rax);
--- a/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,7 +29,7 @@
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
@@ -413,8 +413,7 @@
 // Patch the callers callsite with entry to compiled code if it exists.
 static void patch_callers_callsite(MacroAssembler *masm) {
   Label L;
-  __ verify_oop(rbx);
-  __ cmpptr(Address(rbx, in_bytes(methodOopDesc::code_offset())), (int32_t)NULL_WORD);
+  __ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
   __ jcc(Assembler::equal, L);
 
   // Save the current stack pointer
@@ -428,8 +427,6 @@
   __ andptr(rsp, -(StackAlignmentInBytes));
   __ push_CPU_state();
 
-
-  __ verify_oop(rbx);
   // VM needs caller's callsite
   // VM needs target method
   // This needs to be a long call since we will relocate this adapter to
@@ -586,7 +583,7 @@
   }
 
   // Schedule the branch target address early.
-  __ movptr(rcx, Address(rbx, in_bytes(methodOopDesc::interpreter_entry_offset())));
+  __ movptr(rcx, Address(rbx, in_bytes(Method::interpreter_entry_offset())));
   __ jmp(rcx);
 }
 
@@ -698,7 +695,7 @@
 
   // Will jump to the compiled code just as if compiled code was doing it.
   // Pre-load the register-jump target early, to schedule it better.
-  __ movptr(r11, Address(rbx, in_bytes(methodOopDesc::from_compiled_offset())));
+  __ movptr(r11, Address(rbx, in_bytes(Method::from_compiled_offset())));
 
   // Now generate the shuffle code.  Pick up all register args and move the
   // rest through the floating point stack top.
@@ -793,8 +790,8 @@
 
   __ movptr(Address(r15_thread, JavaThread::callee_target_offset()), rbx);
 
-  // put methodOop where a c2i would expect should we end up there
-  // only needed becaus eof c2 resolve stubs return methodOop as a result in
+  // put Method* where a c2i would expect should we end up there
+  // only needed becaus eof c2 resolve stubs return Method* as a result in
   // rax
   __ mov(rax, rbx);
   __ jmp(r11);
@@ -812,7 +809,7 @@
   gen_i2c_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs);
 
   // -------------------------------------------------------------------------
-  // Generate a C2I adapter.  On entry we know rbx holds the methodOop during calls
+  // Generate a C2I adapter.  On entry we know rbx holds the Method* during calls
   // to the interpreter.  The args start out packed in the compiled layout.  They
   // need to be unpacked into the interpreter layout.  This will almost always
   // require some stack space.  We grow the current (compiled) stack, then repack
@@ -829,12 +826,9 @@
   Register temp = rbx;
 
   {
-    __ verify_oop(holder);
     __ load_klass(temp, receiver);
-    __ verify_oop(temp);
-
-    __ cmpptr(temp, Address(holder, compiledICHolderOopDesc::holder_klass_offset()));
-    __ movptr(rbx, Address(holder, compiledICHolderOopDesc::holder_method_offset()));
+    __ cmpptr(temp, Address(holder, CompiledICHolder::holder_klass_offset()));
+    __ movptr(rbx, Address(holder, CompiledICHolder::holder_method_offset()));
     __ jcc(Assembler::equal, ok);
     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
 
@@ -842,7 +836,7 @@
     // Method might have been compiled since the call site was patched to
     // interpreted if that is the case treat it as a miss so we can get
     // the call site corrected.
-    __ cmpptr(Address(rbx, in_bytes(methodOopDesc::code_offset())), (int32_t)NULL_WORD);
+    __ cmpptr(Address(rbx, in_bytes(Method::code_offset())), (int32_t)NULL_WORD);
     __ jcc(Assembler::equal, skip_fixup);
     __ jump(RuntimeAddress(SharedRuntime::get_ic_miss_stub()));
   }
@@ -909,6 +903,7 @@
       case T_OBJECT:
       case T_ARRAY:
       case T_ADDRESS:
+      case T_METADATA:
         if (int_args < Argument::n_int_register_parameters_c) {
           regs[i].set2(INT_ArgReg[int_args++]->as_VMReg());
 #ifdef _WIN64
@@ -2184,7 +2179,7 @@
     SkipIfEqual skip(masm, &DTraceMethodProbes, false);
     // protect the args we've loaded
     save_args(masm, total_c_args, c_arg, out_regs);
-    __ movoop(c_rarg1, JNIHandles::make_local(method()));
+    __ mov_metadata(c_rarg1, method());
     __ call_VM_leaf(
       CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry),
       r15_thread, c_rarg1);
@@ -2195,7 +2190,7 @@
   if (RC_TRACE_IN_RANGE(0x00001000, 0x00002000)) {
     // protect the args we've loaded
     save_args(masm, total_c_args, c_arg, out_regs);
-    __ movoop(c_rarg1, JNIHandles::make_local(method()));
+    __ mov_metadata(c_rarg1, method());
     __ call_VM_leaf(
       CAST_FROM_FN_PTR(address, SharedRuntime::rc_trace_method_entry),
       r15_thread, c_rarg1);
@@ -2448,7 +2443,7 @@
   {
     SkipIfEqual skip(masm, &DTraceMethodProbes, false);
     save_native_result(masm, ret_type, stack_slots);
-    __ movoop(c_rarg1, JNIHandles::make_local(method()));
+    __ mov_metadata(c_rarg1, method());
     __ call_VM_leaf(
          CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit),
          r15_thread, c_rarg1);
@@ -3879,8 +3874,8 @@
   __ cmpptr(Address(r15_thread, Thread::pending_exception_offset()), (int32_t)NULL_WORD);
   __ jcc(Assembler::notEqual, pending);
 
-  // get the returned methodOop
-  __ movptr(rbx, Address(r15_thread, JavaThread::vm_result_offset()));
+  // get the returned Method*
+  __ get_vm_result_2(rbx, r15_thread);
   __ movptr(Address(rsp, RegisterSaver::rbx_offset_in_bytes()), rbx);
 
   __ movptr(Address(rsp, RegisterSaver::rax_offset_in_bytes()), rax);
--- a/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,7 +28,7 @@
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_x86.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -234,7 +234,7 @@
 
     // call Java function
     __ BIND(parameters_done);
-    __ movptr(rbx, method);           // get methodOop
+    __ movptr(rbx, method);           // get Method*
     __ movptr(rax, entry_point);      // get entry_point
     __ mov(rsi, rsp);                 // set sender sp
     BLOCK_COMMENT("call Java function");
@@ -682,29 +682,11 @@
     __ cmpptr(rdx, oop_bits);
     __ jcc(Assembler::notZero, error);
 
-    // make sure klass is 'reasonable'
+    // make sure klass is 'reasonable', which is not zero.
     __ movptr(rax, Address(rax, oopDesc::klass_offset_in_bytes())); // get klass
     __ testptr(rax, rax);
     __ jcc(Assembler::zero, error);              // if klass is NULL it is broken
-
-    // Check if the klass is in the right area of memory
-    const int klass_mask = Universe::verify_klass_mask();
-    const int klass_bits = Universe::verify_klass_bits();
-    __ mov(rdx, rax);
-    __ andptr(rdx, klass_mask);
-    __ cmpptr(rdx, klass_bits);
-    __ jcc(Assembler::notZero, error);
-
-    // make sure klass' klass is 'reasonable'
-    __ movptr(rax, Address(rax, oopDesc::klass_offset_in_bytes())); // get klass' klass
-    __ testptr(rax, rax);
-    __ jcc(Assembler::zero, error);              // if klass' klass is NULL it is broken
-
-    __ mov(rdx, rax);
-    __ andptr(rdx, klass_mask);
-    __ cmpptr(rdx, klass_bits);
-    __ jcc(Assembler::notZero, error);           // if klass not in right area
-                                                 // of memory it is broken too.
+    // TODO: Future assert that klass is lower 4g memory for UseCompressedKlassPointers
 
     // return if everything seems ok
     __ bind(exit);
--- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -28,7 +28,7 @@
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_x86.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -109,7 +109,7 @@
   //    c_rarg0:   call wrapper address                   address
   //    c_rarg1:   result                                 address
   //    c_rarg2:   result type                            BasicType
-  //    c_rarg3:   method                                 methodOop
+  //    c_rarg3:   method                                 Method*
   //    c_rarg4:   (interpreter) entry point              address
   //    c_rarg5:   parameters                             intptr_t*
   //    16(rbp): parameter size (in words)              int
@@ -139,7 +139,7 @@
   //    c_rarg0:   call wrapper address                   address
   //    c_rarg1:   result                                 address
   //    c_rarg2:   result type                            BasicType
-  //    c_rarg3:   method                                 methodOop
+  //    c_rarg3:   method                                 Method*
   //    48(rbp): (interpreter) entry point              address
   //    56(rbp): parameters                             intptr_t*
   //    64(rbp): parameter size (in words)              int
@@ -332,7 +332,7 @@
 
     // call Java function
     __ BIND(parameters_done);
-    __ movptr(rbx, method);             // get methodOop
+    __ movptr(rbx, method);             // get Method*
     __ movptr(c_rarg1, entry_point);    // get entry_point
     __ mov(r13, rsp);                   // set sender sp
     BLOCK_COMMENT("call Java function");
@@ -1027,28 +1027,11 @@
     // set r12 to heapbase for load_klass()
     __ reinit_heapbase();
 
-    // make sure klass is 'reasonable'
+    // make sure klass is 'reasonable', which is not zero.
     __ load_klass(rax, rax);  // get klass
     __ testptr(rax, rax);
     __ jcc(Assembler::zero, error); // if klass is NULL it is broken
-    // Check if the klass is in the right area of memory
-    __ mov(c_rarg2, rax);
-    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
-    __ andptr(c_rarg2, c_rarg3);
-    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
-    __ cmpptr(c_rarg2, c_rarg3);
-    __ jcc(Assembler::notZero, error);
-
-    // make sure klass' klass is 'reasonable'
-    __ load_klass(rax, rax);
-    __ testptr(rax, rax);
-    __ jcc(Assembler::zero, error); // if klass' klass is NULL it is broken
-    // Check if the klass' klass is in the right area of memory
-    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask());
-    __ andptr(rax, c_rarg3);
-    __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits());
-    __ cmpptr(rax, c_rarg3);
-    __ jcc(Assembler::notZero, error);
+    // TODO: Future assert that klass is lower 4g memory for UseCompressedKlassPointers
 
     // return if everything seems ok
     __ bind(exit);
--- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -201,7 +201,7 @@
   __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u2));
   __ bind(L_got_cache);
   __ movl(rbx, Address(rbx, rcx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() +
+                    Address::times_ptr, ConstantPoolCache::base_offset() +
                     ConstantPoolCacheEntry::flags_offset()));
   __ andptr(rbx, 0xFF);
   __ lea(rsp, Address(rsp, rbx, Interpreter::stackElementScale()));
@@ -343,34 +343,34 @@
 // rcx: invocation counter
 //
 void InterpreterGenerator::generate_counter_incr(Label* overflow, Label* profile_method, Label* profile_method_continue) {
-  const Address invocation_counter(rbx, in_bytes(methodOopDesc::invocation_counter_offset()) +
+  const Address invocation_counter(rbx, in_bytes(Method::invocation_counter_offset()) +
                                         in_bytes(InvocationCounter::counter_offset()));
-  // Note: In tiered we increment either counters in methodOop or in MDO depending if we're profiling or not.
+  // Note: In tiered we increment either counters in Method* or in MDO depending if we're profiling or not.
   if (TieredCompilation) {
     int increment = InvocationCounter::count_increment;
     int mask = ((1 << Tier0InvokeNotifyFreqLog)  - 1) << InvocationCounter::count_shift;
     Label no_mdo, done;
     if (ProfileInterpreter) {
       // Are we profiling?
-      __ movptr(rax, Address(rbx, methodOopDesc::method_data_offset()));
+      __ movptr(rax, Address(rbx, Method::method_data_offset()));
       __ testptr(rax, rax);
       __ jccb(Assembler::zero, no_mdo);
       // Increment counter in the MDO
-      const Address mdo_invocation_counter(rax, in_bytes(methodDataOopDesc::invocation_counter_offset()) +
+      const Address mdo_invocation_counter(rax, in_bytes(MethodData::invocation_counter_offset()) +
                                                 in_bytes(InvocationCounter::counter_offset()));
       __ increment_mask_and_jump(mdo_invocation_counter, increment, mask, rcx, false, Assembler::zero, overflow);
       __ jmpb(done);
     }
     __ bind(no_mdo);
-    // Increment counter in methodOop (we don't need to load it, it's in rcx).
+    // Increment counter in Method* (we don't need to load it, it's in rcx).
     __ increment_mask_and_jump(invocation_counter, increment, mask, rcx, true, Assembler::zero, overflow);
     __ bind(done);
   } else {
-    const Address backedge_counter  (rbx, methodOopDesc::backedge_counter_offset() +
+    const Address backedge_counter  (rbx, Method::backedge_counter_offset() +
                                           InvocationCounter::counter_offset());
 
-    if (ProfileInterpreter) { // %%% Merge this into methodDataOop
-      __ incrementl(Address(rbx,methodOopDesc::interpreter_invocation_counter_offset()));
+    if (ProfileInterpreter) { // %%% Merge this into MethodData*
+      __ incrementl(Address(rbx,Method::interpreter_invocation_counter_offset()));
     }
     // Update standard invocation counters
     __ movl(rax, backedge_counter);               // load backedge counter
@@ -424,7 +424,7 @@
   // C++ interpreter only
   // rsi - previous interpreter state pointer
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
 
   // InterpreterRuntime::frequency_counter_overflow takes one argument
   // indicating if the counter overflow occurs at a backwards branch (non-NULL bcp).
@@ -433,7 +433,7 @@
   __ movptr(rax, (intptr_t)false);
   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::frequency_counter_overflow), rax);
 
-  __ movptr(rbx, Address(rbp, method_offset));   // restore methodOop
+  __ movptr(rbx, Address(rbp, method_offset));   // restore Method*
 
   // Preserve invariant that rsi/rdi contain bcp/locals of sender frame
   // and jump to the interpreted entry.
@@ -450,7 +450,7 @@
   //
   // Asm interpreter
   // rdx: number of additional locals this frame needs (what we must check)
-  // rbx,: methodOop
+  // rbx,: Method*
 
   // destroyed on exit
   // rax,
@@ -542,11 +542,11 @@
 }
 
 // Allocate monitor and lock method (asm interpreter)
-// rbx, - methodOop
+// rbx, - Method*
 //
 void InterpreterGenerator::lock_method(void) {
   // synchronize method
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
   const Address monitor_block_top (rbp, frame::interpreter_frame_monitor_block_top_offset * wordSize);
   const int entry_size            = frame::interpreter_frame_monitor_size() * wordSize;
 
@@ -566,9 +566,9 @@
     __ testl(rax, JVM_ACC_STATIC);
     __ movptr(rax, Address(rdi, Interpreter::local_offset_in_bytes(0)));  // get receiver (assume this is frequent case)
     __ jcc(Assembler::zero, done);
-    __ movptr(rax, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rax, Address(rax, constMethodOopDesc::constants_offset()));
-    __ movptr(rax, Address(rax, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(rax, Address(rbx, Method::const_offset()));
+    __ movptr(rax, Address(rax, ConstMethod::constants_offset()));
+    __ movptr(rax, Address(rax, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(rax, Address(rax, mirror_offset));
     __ bind(done);
   }
@@ -592,24 +592,24 @@
 
   __ push(rsi);                                       // set sender sp
   __ push((int32_t)NULL_WORD);                        // leave last_sp as null
-  __ movptr(rsi, Address(rbx,methodOopDesc::const_offset())); // get constMethodOop
-  __ lea(rsi, Address(rsi,constMethodOopDesc::codes_offset())); // get codebase
-  __ push(rbx);                                      // save methodOop
+  __ movptr(rsi, Address(rbx,Method::const_offset())); // get ConstMethod*
+  __ lea(rsi, Address(rsi,ConstMethod::codes_offset())); // get codebase
+  __ push(rbx);                                      // save Method*
   if (ProfileInterpreter) {
     Label method_data_continue;
-    __ movptr(rdx, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
+    __ movptr(rdx, Address(rbx, in_bytes(Method::method_data_offset())));
     __ testptr(rdx, rdx);
     __ jcc(Assembler::zero, method_data_continue);
-    __ addptr(rdx, in_bytes(methodDataOopDesc::data_offset()));
+    __ addptr(rdx, in_bytes(MethodData::data_offset()));
     __ bind(method_data_continue);
     __ push(rdx);                                       // set the mdp (method data pointer)
   } else {
     __ push(0);
   }
 
-  __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-  __ movptr(rdx, Address(rdx, constMethodOopDesc::constants_offset()));
-  __ movptr(rdx, Address(rdx, constantPoolOopDesc::cache_offset_in_bytes()));
+  __ movptr(rdx, Address(rbx, Method::const_offset()));
+  __ movptr(rdx, Address(rdx, ConstMethod::constants_offset()));
+  __ movptr(rdx, Address(rdx, ConstantPool::cache_offset_in_bytes()));
   __ push(rdx);                                       // set constant pool cache
   __ push(rdi);                                       // set locals pointer
   if (native_call) {
@@ -633,7 +633,7 @@
 
 address InterpreterGenerator::generate_accessor_entry(void) {
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: receiver (preserve for slow entry into asm interpreter)
 
   // rsi: senderSP must preserved for slow path, set SP to it on fast path
@@ -664,14 +664,14 @@
     __ jcc(Assembler::zero, slow_path);
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
-    __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rdi, Address(rdx, constMethodOopDesc::constants_offset()));
-    __ movl(rdx, Address(rdx, constMethodOopDesc::codes_offset()));
+    __ movptr(rdx, Address(rbx, Method::const_offset()));
+    __ movptr(rdi, Address(rdx, ConstMethod::constants_offset()));
+    __ movl(rdx, Address(rdx, ConstMethod::codes_offset()));
     // Shift codes right to get the index on the right.
     // The bytecode fetched looks like <index><0xb4><0x2a>
     __ shrl(rdx, 2*BitsPerByte);
     __ shll(rdx, exact_log2(in_words(ConstantPoolCacheEntry::size())));
-    __ movptr(rdi, Address(rdi, constantPoolOopDesc::cache_offset_in_bytes()));
+    __ movptr(rdi, Address(rdi, ConstantPool::cache_offset_in_bytes()));
 
     // rax,: local 0
     // rbx,: method
@@ -688,7 +688,7 @@
     __ movl(rcx,
             Address(rdi,
                     rdx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::indices_offset()));
+                    Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::indices_offset()));
     __ shrl(rcx, 2*BitsPerByte);
     __ andl(rcx, 0xFF);
     __ cmpl(rcx, Bytecodes::_getfield);
@@ -698,11 +698,11 @@
     __ movptr(rcx,
               Address(rdi,
                       rdx,
-                      Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset()));
+                      Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset()));
     __ movl(rdx,
             Address(rdi,
                     rdx,
-                    Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::flags_offset()));
+                    Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
 
     Label notByte, notShort, notChar;
     const Address field_address (rax, rcx, Address::times_1);
@@ -789,7 +789,7 @@
   //
   // This code is based on generate_accessor_enty.
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: receiver (preserve for slow entry into asm interpreter)
 
   // rsi: senderSP must preserved for slow path, set SP to it on fast path
@@ -863,15 +863,15 @@
   // determine code generation flags
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rsi: sender sp
   // rsi: previous interpreter state (C++ interpreter) must preserve
   address entry_point = __ pc();
 
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
-  const Address invocation_counter(rbx, methodOopDesc::invocation_counter_offset() + InvocationCounter::counter_offset());
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
+  const Address invocation_counter(rbx, Method::invocation_counter_offset() + InvocationCounter::counter_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
@@ -880,7 +880,7 @@
   // and the arguments are already on the stack and we only add a handful of words
   // to the stack
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: size of parameters
   // rsi: sender sp
 
@@ -988,8 +988,7 @@
 
   // allocate space for parameters
   __ get_method(method);
-  __ verify_oop(method);
-  __ load_unsigned_short(t, Address(method, methodOopDesc::size_of_parameters_offset()));
+  __ load_unsigned_short(t, Address(method, Method::size_of_parameters_offset()));
   __ shlptr(t, Interpreter::logStackElementSize);
   __ addptr(t, 2*wordSize);     // allocate two more slots for JNIEnv and possible mirror
   __ subptr(rsp, t);
@@ -997,12 +996,12 @@
 
   // get signature handler
   { Label L;
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ testptr(t, t);
     __ jcc(Assembler::notZero, L);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), method);
     __ get_method(method);
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ bind(L);
   }
 
@@ -1024,13 +1023,13 @@
   // pass mirror handle if static call
   { Label L;
     const int mirror_offset = in_bytes(Klass::java_mirror_offset());
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_STATIC);
     __ jcc(Assembler::zero, L);
     // get mirror
-    __ movptr(t, Address(method, methodOopDesc:: const_offset()));
-    __ movptr(t, Address(t, constMethodOopDesc::constants_offset()));
-    __ movptr(t, Address(t, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(t, Address(method, Method:: const_offset()));
+    __ movptr(t, Address(t, ConstMethod::constants_offset()));
+    __ movptr(t, Address(t, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(t, Address(t, mirror_offset));
     // copy mirror into activation frame
     __ movptr(Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize), t);
@@ -1042,14 +1041,13 @@
 
   // get native function entry point
   { Label L;
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
     __ cmpptr(rax, unsatisfied.addr());
     __ jcc(Assembler::notEqual, L);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::prepare_native_call), method);
     __ get_method(method);
-    __ verify_oop(method);
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     __ bind(L);
   }
 
@@ -1218,9 +1216,8 @@
   // i.e., bci == 0 <=> rsi == code_base()
   // Can't call_VM until bcp is within reasonable.
   __ get_method(method);      // method is junk from thread_in_native to now.
-  __ verify_oop(method);
-  __ movptr(rsi, Address(method,methodOopDesc::const_offset()));   // get constMethodOop
-  __ lea(rsi, Address(rsi,constMethodOopDesc::codes_offset()));    // get codebase
+  __ movptr(rsi, Address(method,Method::const_offset()));   // get ConstMethod*
+  __ lea(rsi, Address(rsi,ConstMethod::codes_offset()));    // get codebase
 
   // handle exceptions (exception handling will handle unlocking!)
   { Label L;
@@ -1236,7 +1233,7 @@
 
   // do unlocking if necessary
   { Label L;
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_SYNCHRONIZED);
     __ jcc(Assembler::zero, L);
     // the code below should be shared with interpreter macro assembler implementation
@@ -1296,20 +1293,20 @@
   // determine code generation flags
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rsi: sender sp
   address entry_point = __ pc();
 
 
-  const Address size_of_parameters(rbx, methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals    (rbx, methodOopDesc::size_of_locals_offset());
-  const Address invocation_counter(rbx, methodOopDesc::invocation_counter_offset() + InvocationCounter::counter_offset());
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address size_of_parameters(rbx, Method::size_of_parameters_offset());
+  const Address size_of_locals    (rbx, Method::size_of_locals_offset());
+  const Address invocation_counter(rbx, Method::invocation_counter_offset() + InvocationCounter::counter_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
 
-  // rbx,: methodOop
+  // rbx,: Method*
   // rcx: size of parameters
 
   // rsi: sender_sp (could differ from sp+wordSize if we were called via c2i )
@@ -1464,7 +1461,7 @@
 //
 // Arguments:
 //
-// rbx,: methodOop
+// rbx,: Method*
 // rcx: receiver
 //
 //
@@ -1490,7 +1487,7 @@
 // [ expr. stack bottom ]
 // [ saved rsi          ]
 // [ current rdi        ]
-// [ methodOop          ]
+// [ Method*            ]
 // [ saved rbp,          ] <--- rbp,
 // [ return address     ]
 // [ local variable m   ]
@@ -1556,7 +1553,7 @@
 }
 
 // How much stack a method activation needs in words.
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
 
   const int stub_code = 4;  // see generate_call_stub
   // Save space for one monitor to get into the interpreted method in case
@@ -1568,7 +1565,7 @@
   // be sure to change this if you add/subtract anything to/from the overhead area
   const int overhead_size = -frame::interpreter_frame_initial_sp_offset;
 
-  const int extra_stack = methodOopDesc::extra_stack_entries();
+  const int extra_stack = Method::extra_stack_entries();
   const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
                            Interpreter::stackElementWords;
   return overhead_size + method_stack + stub_code;
@@ -1576,7 +1573,7 @@
 
 // asm based interpreter deoptimization helpers
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int tempcount,
                                            int popframe_extra_args,
                                            int moncount,
@@ -1737,8 +1734,7 @@
 
     // Compute size of arguments for saving when returning to deoptimized caller
     __ get_method(rax);
-    __ verify_oop(rax);
-    __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc::size_of_parameters_offset())));
+    __ load_unsigned_short(rax, Address(rax, in_bytes(Method::size_of_parameters_offset())));
     __ shlptr(rax, Interpreter::logStackElementSize);
     __ restore_locals();
     __ subptr(rdi, rax);
@@ -1815,9 +1811,7 @@
   __ remove_activation(vtos, rdx, false, true, false);
   // restore exception
   __ get_thread(thread);
-  __ movptr(rax, Address(thread, JavaThread::vm_result_offset()));
-  __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
-  __ verify_oop(rax);
+  __ get_vm_result(rax, thread);
 
   // Inbetween activations - previous activation type unknown yet
   // compute continuation point - the continuation point expects
--- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -185,7 +185,7 @@
   __ bind(L_got_cache);
   __ movl(rbx, Address(rbx, rcx,
                        Address::times_ptr,
-                       in_bytes(constantPoolCacheOopDesc::base_offset()) +
+                       in_bytes(ConstantPoolCache::base_offset()) +
                        3 * wordSize));
   __ andl(rbx, 0xFF);
   __ lea(rsp, Address(rsp, rbx, Address::times_8));
@@ -299,36 +299,36 @@
         Label* overflow,
         Label* profile_method,
         Label* profile_method_continue) {
-  const Address invocation_counter(rbx, in_bytes(methodOopDesc::invocation_counter_offset()) +
+  const Address invocation_counter(rbx, in_bytes(Method::invocation_counter_offset()) +
                                         in_bytes(InvocationCounter::counter_offset()));
-  // Note: In tiered we increment either counters in methodOop or in MDO depending if we're profiling or not.
+  // Note: In tiered we increment either counters in Method* or in MDO depending if we're profiling or not.
   if (TieredCompilation) {
     int increment = InvocationCounter::count_increment;
     int mask = ((1 << Tier0InvokeNotifyFreqLog)  - 1) << InvocationCounter::count_shift;
     Label no_mdo, done;
     if (ProfileInterpreter) {
       // Are we profiling?
-      __ movptr(rax, Address(rbx, methodOopDesc::method_data_offset()));
+      __ movptr(rax, Address(rbx, Method::method_data_offset()));
       __ testptr(rax, rax);
       __ jccb(Assembler::zero, no_mdo);
       // Increment counter in the MDO
-      const Address mdo_invocation_counter(rax, in_bytes(methodDataOopDesc::invocation_counter_offset()) +
+      const Address mdo_invocation_counter(rax, in_bytes(MethodData::invocation_counter_offset()) +
                                                 in_bytes(InvocationCounter::counter_offset()));
       __ increment_mask_and_jump(mdo_invocation_counter, increment, mask, rcx, false, Assembler::zero, overflow);
       __ jmpb(done);
     }
     __ bind(no_mdo);
-    // Increment counter in methodOop (we don't need to load it, it's in ecx).
+    // Increment counter in Method* (we don't need to load it, it's in ecx).
     __ increment_mask_and_jump(invocation_counter, increment, mask, rcx, true, Assembler::zero, overflow);
     __ bind(done);
   } else {
     const Address backedge_counter(rbx,
-                                   methodOopDesc::backedge_counter_offset() +
+                                   Method::backedge_counter_offset() +
                                    InvocationCounter::counter_offset());
 
-    if (ProfileInterpreter) { // %%% Merge this into methodDataOop
+    if (ProfileInterpreter) { // %%% Merge this into MethodData*
       __ incrementl(Address(rbx,
-                            methodOopDesc::interpreter_invocation_counter_offset()));
+                            Method::interpreter_invocation_counter_offset()));
     }
     // Update standard invocation counters
     __ movl(rax, backedge_counter);   // load backedge counter
@@ -370,7 +370,7 @@
   // rdx is not restored. Doesn't appear to really be set.
 
   const Address size_of_parameters(rbx,
-                                   methodOopDesc::size_of_parameters_offset());
+                                   Method::size_of_parameters_offset());
 
   // InterpreterRuntime::frequency_counter_overflow takes two
   // arguments, the first (thread) is passed by call_VM, the second
@@ -385,7 +385,7 @@
                               InterpreterRuntime::frequency_counter_overflow),
              c_rarg1);
 
-  __ movptr(rbx, Address(rbp, method_offset));   // restore methodOop
+  __ movptr(rbx, Address(rbp, method_offset));   // restore Method*
   // Preserve invariant that r13/r14 contain bcp/locals of sender frame
   // and jump to the interpreted entry.
   __ jmp(*do_continue, relocInfo::none);
@@ -401,7 +401,7 @@
 //
 // Args:
 //      rdx: number of additional locals this frame needs (what we must check)
-//      rbx: methodOop
+//      rbx: Method*
 //
 // Kills:
 //      rax
@@ -487,7 +487,7 @@
 // Allocate monitor and lock method (asm interpreter)
 //
 // Args:
-//      rbx: methodOop
+//      rbx: Method*
 //      r14: locals
 //
 // Kills:
@@ -496,7 +496,7 @@
 //      rscratch1, rscratch2 (scratch regs)
 void InterpreterGenerator::lock_method(void) {
   // synchronize method
-  const Address access_flags(rbx, methodOopDesc::access_flags_offset());
+  const Address access_flags(rbx, Method::access_flags_offset());
   const Address monitor_block_top(
         rbp,
         frame::interpreter_frame_monitor_block_top_offset * wordSize);
@@ -522,10 +522,10 @@
     // get receiver (assume this is frequent case)
     __ movptr(rax, Address(r14, Interpreter::local_offset_in_bytes(0)));
     __ jcc(Assembler::zero, done);
-    __ movptr(rax, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rax, Address(rax, constMethodOopDesc::constants_offset()));
+    __ movptr(rax, Address(rbx, Method::const_offset()));
+    __ movptr(rax, Address(rax, ConstMethod::constants_offset()));
     __ movptr(rax, Address(rax,
-                           constantPoolOopDesc::pool_holder_offset_in_bytes()));
+                           ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(rax, Address(rax, mirror_offset));
 
 #ifdef ASSERT
@@ -555,7 +555,7 @@
 //
 // Args:
 //      rax: return address
-//      rbx: methodOop
+//      rbx: Method*
 //      r14: pointer to locals
 //      r13: sender sp
 //      rdx: cp cache
@@ -565,24 +565,24 @@
   __ enter();          // save old & set new rbp
   __ push(r13);        // set sender sp
   __ push((int)NULL_WORD); // leave last_sp as null
-  __ movptr(r13, Address(rbx, methodOopDesc::const_offset()));      // get constMethodOop
-  __ lea(r13, Address(r13, constMethodOopDesc::codes_offset())); // get codebase
-  __ push(rbx);        // save methodOop
+  __ movptr(r13, Address(rbx, Method::const_offset()));      // get ConstMethod*
+  __ lea(r13, Address(r13, ConstMethod::codes_offset())); // get codebase
+  __ push(rbx);        // save Method*
   if (ProfileInterpreter) {
     Label method_data_continue;
-    __ movptr(rdx, Address(rbx, in_bytes(methodOopDesc::method_data_offset())));
+    __ movptr(rdx, Address(rbx, in_bytes(Method::method_data_offset())));
     __ testptr(rdx, rdx);
     __ jcc(Assembler::zero, method_data_continue);
-    __ addptr(rdx, in_bytes(methodDataOopDesc::data_offset()));
+    __ addptr(rdx, in_bytes(MethodData::data_offset()));
     __ bind(method_data_continue);
     __ push(rdx);      // set the mdp (method data pointer)
   } else {
     __ push(0);
   }
 
-  __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-  __ movptr(rdx, Address(rdx, constMethodOopDesc::constants_offset()));
-  __ movptr(rdx, Address(rdx, constantPoolOopDesc::cache_offset_in_bytes()));
+  __ movptr(rdx, Address(rbx, Method::const_offset()));
+  __ movptr(rdx, Address(rdx, ConstMethod::constants_offset()));
+  __ movptr(rdx, Address(rdx, ConstantPool::cache_offset_in_bytes()));
   __ push(rdx); // set constant pool cache
   __ push(r14); // set locals pointer
   if (native_call) {
@@ -604,7 +604,7 @@
 // Call an accessor method (assuming it is resolved, otherwise drop
 // into vanilla (slow path) entry
 address InterpreterGenerator::generate_accessor_entry(void) {
-  // rbx: methodOop
+  // rbx: Method*
 
   // r13: senderSP must preserver for slow path, set SP to it on fast path
 
@@ -632,14 +632,14 @@
     __ jcc(Assembler::zero, slow_path);
 
     // read first instruction word and extract bytecode @ 1 and index @ 2
-    __ movptr(rdx, Address(rbx, methodOopDesc::const_offset()));
-    __ movptr(rdi, Address(rdx, constMethodOopDesc::constants_offset()));
-    __ movl(rdx, Address(rdx, constMethodOopDesc::codes_offset()));
+    __ movptr(rdx, Address(rbx, Method::const_offset()));
+    __ movptr(rdi, Address(rdx, ConstMethod::constants_offset()));
+    __ movl(rdx, Address(rdx, ConstMethod::codes_offset()));
     // Shift codes right to get the index on the right.
     // The bytecode fetched looks like <index><0xb4><0x2a>
     __ shrl(rdx, 2 * BitsPerByte);
     __ shll(rdx, exact_log2(in_words(ConstantPoolCacheEntry::size())));
-    __ movptr(rdi, Address(rdi, constantPoolOopDesc::cache_offset_in_bytes()));
+    __ movptr(rdi, Address(rdi, ConstantPool::cache_offset_in_bytes()));
 
     // rax: local 0
     // rbx: method
@@ -655,7 +655,7 @@
             Address(rdi,
                     rdx,
                     Address::times_8,
-                    constantPoolCacheOopDesc::base_offset() +
+                    ConstantPoolCache::base_offset() +
                     ConstantPoolCacheEntry::indices_offset()));
     __ shrl(rcx, 2 * BitsPerByte);
     __ andl(rcx, 0xFF);
@@ -667,14 +667,14 @@
               Address(rdi,
                       rdx,
                       Address::times_8,
-                      constantPoolCacheOopDesc::base_offset() +
+                      ConstantPoolCache::base_offset() +
                       ConstantPoolCacheEntry::f2_offset()));
     // edx: flags
     __ movl(rdx,
             Address(rdi,
                     rdx,
                     Address::times_8,
-                    constantPoolCacheOopDesc::base_offset() +
+                    ConstantPoolCache::base_offset() +
                     ConstantPoolCacheEntry::flags_offset()));
 
     Label notObj, notInt, notByte, notShort;
@@ -771,7 +771,7 @@
   //
   // This code is based on generate_accessor_enty.
   //
-  // rbx: methodOop
+  // rbx: Method*
 
   // r13: senderSP must preserve for slow path, set SP to it on fast path
 
@@ -839,17 +839,17 @@
   // determine code generation flags
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
-  // rbx: methodOop
+  // rbx: Method*
   // r13: sender sp
 
   address entry_point = __ pc();
 
-  const Address size_of_parameters(rbx, methodOopDesc::
+  const Address size_of_parameters(rbx, Method::
                                         size_of_parameters_offset());
-  const Address invocation_counter(rbx, methodOopDesc::
+  const Address invocation_counter(rbx, Method::
                                         invocation_counter_offset() +
                                         InvocationCounter::counter_offset());
-  const Address access_flags      (rbx, methodOopDesc::access_flags_offset());
+  const Address access_flags      (rbx, Method::access_flags_offset());
 
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
@@ -858,7 +858,7 @@
   // expression stack and the arguments are already on the stack and
   // we only add a handful of words to the stack
 
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: size of parameters
   // r13: sender sp
   __ pop(rax);                                       // get return address
@@ -967,10 +967,9 @@
 
   // allocate space for parameters
   __ get_method(method);
-  __ verify_oop(method);
   __ load_unsigned_short(t,
                          Address(method,
-                                 methodOopDesc::size_of_parameters_offset()));
+                                 Method::size_of_parameters_offset()));
   __ shll(t, Interpreter::logStackElementSize);
 
   __ subptr(rsp, t);
@@ -980,7 +979,7 @@
   // get signature handler
   {
     Label L;
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ testptr(t, t);
     __ jcc(Assembler::notZero, L);
     __ call_VM(noreg,
@@ -988,7 +987,7 @@
                                 InterpreterRuntime::prepare_native_call),
                method);
     __ get_method(method);
-    __ movptr(t, Address(method, methodOopDesc::signature_handler_offset()));
+    __ movptr(t, Address(method, Method::signature_handler_offset()));
     __ bind(L);
   }
 
@@ -1018,13 +1017,13 @@
   {
     Label L;
     const int mirror_offset = in_bytes(Klass::java_mirror_offset());
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_STATIC);
     __ jcc(Assembler::zero, L);
     // get mirror
-    __ movptr(t, Address(method, methodOopDesc::const_offset()));
-    __ movptr(t, Address(t, constMethodOopDesc::constants_offset()));
-    __ movptr(t, Address(t, constantPoolOopDesc::pool_holder_offset_in_bytes()));
+    __ movptr(t, Address(method, Method::const_offset()));
+    __ movptr(t, Address(t, ConstMethod::constants_offset()));
+    __ movptr(t, Address(t, ConstantPool::pool_holder_offset_in_bytes()));
     __ movptr(t, Address(t, mirror_offset));
     // copy mirror into activation frame
     __ movptr(Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize),
@@ -1038,7 +1037,7 @@
   // get native function entry point
   {
     Label L;
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
     __ movptr(rscratch2, unsatisfied.addr());
     __ cmpptr(rax, rscratch2);
@@ -1048,8 +1047,7 @@
                                 InterpreterRuntime::prepare_native_call),
                method);
     __ get_method(method);
-    __ verify_oop(method);
-    __ movptr(rax, Address(method, methodOopDesc::native_function_offset()));
+    __ movptr(rax, Address(method, Method::native_function_offset()));
     __ bind(L);
   }
 
@@ -1201,12 +1199,11 @@
   // until here.  Also can't call_VM until the bcp has been
   // restored.  Need bcp for throwing exception below so get it now.
   __ get_method(method);
-  __ verify_oop(method);
 
   // restore r13 to have legal interpreter frame, i.e., bci == 0 <=>
   // r13 == code_base()
-  __ movptr(r13, Address(method, methodOopDesc::const_offset()));   // get constMethodOop
-  __ lea(r13, Address(r13, constMethodOopDesc::codes_offset()));    // get codebase
+  __ movptr(r13, Address(method, Method::const_offset()));   // get ConstMethod*
+  __ lea(r13, Address(r13, ConstMethod::codes_offset()));    // get codebase
   // handle exceptions (exception handling will handle unlocking!)
   {
     Label L;
@@ -1226,7 +1223,7 @@
   // do unlocking if necessary
   {
     Label L;
-    __ movl(t, Address(method, methodOopDesc::access_flags_offset()));
+    __ movl(t, Address(method, Method::access_flags_offset()));
     __ testl(t, JVM_ACC_SYNCHRONIZED);
     __ jcc(Assembler::zero, L);
     // the code below should be shared with interpreter macro
@@ -1301,22 +1298,22 @@
   // determine code generation flags
   bool inc_counter  = UseCompiler || CountCompiledCalls;
 
-  // ebx: methodOop
+  // ebx: Method*
   // r13: sender sp
   address entry_point = __ pc();
 
   const Address size_of_parameters(rbx,
-                                   methodOopDesc::size_of_parameters_offset());
-  const Address size_of_locals(rbx, methodOopDesc::size_of_locals_offset());
+                                   Method::size_of_parameters_offset());
+  const Address size_of_locals(rbx, Method::size_of_locals_offset());
   const Address invocation_counter(rbx,
-                                   methodOopDesc::invocation_counter_offset() +
+                                   Method::invocation_counter_offset() +
                                    InvocationCounter::counter_offset());
-  const Address access_flags(rbx, methodOopDesc::access_flags_offset());
+  const Address access_flags(rbx, Method::access_flags_offset());
 
   // get parameter size (always needed)
   __ load_unsigned_short(rcx, size_of_parameters);
 
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: size of parameters
   // r13: sender_sp (could differ from sp+wordSize if we were called via c2i )
 
@@ -1480,7 +1477,7 @@
 //
 // Arguments:
 //
-// rbx: methodOop
+// rbx: Method*
 //
 // Stack layout immediately at entry
 //
@@ -1505,7 +1502,7 @@
 // [ expr. stack bottom ]
 // [ saved r13          ]
 // [ current r14        ]
-// [ methodOop          ]
+// [ Method*            ]
 // [ saved ebp          ] <--- rbp
 // [ return address     ]
 // [ local variable m   ]
@@ -1574,7 +1571,7 @@
 }
 
 // How much stack a method activation needs in words.
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
   const int entry_size = frame::interpreter_frame_monitor_size();
 
   // total overhead size: entry_size + (saved rbp thru expr stack
@@ -1584,13 +1581,13 @@
     -(frame::interpreter_frame_initial_sp_offset) + entry_size;
 
   const int stub_code = frame::entry_frame_after_call_words;
-  const int extra_stack = methodOopDesc::extra_stack_entries();
+  const int extra_stack = Method::extra_stack_entries();
   const int method_stack = (method->max_locals() + method->max_stack() + extra_stack) *
                            Interpreter::stackElementWords;
   return (overhead_size + method_stack + stub_code);
 }
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int tempcount,
                                            int popframe_extra_args,
                                            int moncount,
@@ -1755,7 +1752,7 @@
     // Compute size of arguments for saving when returning to
     // deoptimized caller
     __ get_method(rax);
-    __ load_unsigned_short(rax, Address(rax, in_bytes(methodOopDesc::
+    __ load_unsigned_short(rax, Address(rax, in_bytes(Method::
                                                 size_of_parameters_offset())));
     __ shll(rax, Interpreter::logStackElementSize);
     __ restore_locals(); // XXX do we need this?
@@ -1832,9 +1829,7 @@
   // remove the activation (without doing throws on illegalMonitorExceptions)
   __ remove_activation(vtos, rdx, false, true, false);
   // restore exception
-  __ movptr(rax, Address(r15_thread, JavaThread::vm_result_offset()));
-  __ movptr(Address(r15_thread, JavaThread::vm_result_offset()), (int32_t)NULL_WORD);
-  __ verify_oop(rax);
+  __ get_vm_result(rax, r15_thread);
 
   // In between activations - previous activation type unknown yet
   // compute continuation point - the continuation point expects the
--- a/src/cpu/x86/vm/templateTable_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/templateTable_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,7 +28,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -357,17 +357,13 @@
     __ load_unsigned_byte(rbx, at_bcp(1));
   }
   __ get_cpool_and_tags(rcx, rax);
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
 
   // get type
   __ xorptr(rdx, rdx);
   __ movb(rdx, Address(rax, rbx, Address::times_1, tags_offset));
 
-  // unresolved string - get the resolved string
-  __ cmpl(rdx, JVM_CONSTANT_UnresolvedString);
-  __ jccb(Assembler::equal, call_ldc);
-
   // unresolved class - get the resolved class
   __ cmpl(rdx, JVM_CONSTANT_UnresolvedClass);
   __ jccb(Assembler::equal, call_ldc);
@@ -400,73 +396,46 @@
   { Label L;
     __ cmpl(rdx, JVM_CONSTANT_Integer);
     __ jcc(Assembler::equal, L);
-    __ cmpl(rdx, JVM_CONSTANT_String);
-    __ jcc(Assembler::equal, L);
-    __ cmpl(rdx, JVM_CONSTANT_Object);
-    __ jcc(Assembler::equal, L);
+    // String and Object are rewritten to fast_aldc
     __ stop("unexpected tag type in ldc");
     __ bind(L);
   }
 #endif
-  Label isOop;
-  // atos and itos
-  // Integer is only non-oop type we will see here
-  __ cmpl(rdx, JVM_CONSTANT_Integer);
-  __ jccb(Assembler::notEqual, isOop);
+  // itos JVM_CONSTANT_Integer only
   __ movl(rax, Address(rcx, rbx, Address::times_ptr, base_offset));
   __ push(itos);
-  __ jmp(Done);
-  __ bind(isOop);
-  __ movptr(rax, Address(rcx, rbx, Address::times_ptr, base_offset));
-  __ push(atos);
-
-  if (VerifyOops) {
-    __ verify_oop(rax);
-  }
   __ bind(Done);
 }
 
 // Fast path for caching oop constants.
-// %%% We should use this to handle Class and String constants also.
-// %%% It will simplify the ldc/primitive path considerably.
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableInvokeDynamic) {
-    // We should not encounter this bytecode if !EnableInvokeDynamic.
-    // The verifier will stop it.  However, if we get past the verifier,
-    // this will stop the thread in a reasonable way, without crashing the JVM.
-    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
-                     InterpreterRuntime::throw_IncompatibleClassChangeError));
-    // the call_VM checks for exception, so we should never return here.
-    __ should_not_reach_here();
-    return;
-  }
-
-  const Register cache = rcx;
-  const Register index = rdx;
-
-  resolve_cache_and_index(f12_oop, rax, cache, index, wide ? sizeof(u2) : sizeof(u1));
+  Register result = rax;
+  Register tmp = rdx;
+  int index_size = wide ? sizeof(u2) : sizeof(u1);
+
+  Label resolved;
+
+  // We are resolved if the resolved reference cache entry contains a
+  // non-null object (String, MethodType, etc.)
+  assert_different_registers(result, tmp);
+  __ get_cache_index_at_bcp(tmp, 1, index_size);
+  __ load_resolved_reference_at_index(result, tmp);
+  __ testl(result, result);
+  __ jcc(Assembler::notZero, resolved);
+
+  address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);
+
+  // first time invocation - must resolve first
+  __ movl(tmp, (int)bytecode());
+  __ call_VM(result, entry, tmp);
+
+  __ bind(resolved);
+
   if (VerifyOops) {
-    __ verify_oop(rax);
+    __ verify_oop(result);
   }
-
-  Label L_done, L_throw_exception;
-  const Register con_klass_temp = rcx;  // same as cache
-  __ load_klass(con_klass_temp, rax);
-  __ cmpptr(con_klass_temp, ExternalAddress((address)Universe::systemObjArrayKlassObj_addr()));
-  __ jcc(Assembler::notEqual, L_done);
-  __ cmpl(Address(rax, arrayOopDesc::length_offset_in_bytes()), 0);
-  __ jcc(Assembler::notEqual, L_throw_exception);
-  __ xorptr(rax, rax);
-  __ jmp(L_done);
-
-  // Load the exception from the system-array which wraps it:
-  __ bind(L_throw_exception);
-  __ load_heap_oop(rax, Address(rax, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
-  __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
-
-  __ bind(L_done);
 }
 
 void TemplateTable::ldc2_w() {
@@ -475,8 +444,8 @@
   __ get_unsigned_2_byte_index_at_bcp(rbx, 1);
 
   __ get_cpool_and_tags(rcx, rax);
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
 
   // get type
   __ cmpb(Address(rax, rbx, Address::times_1, tags_offset), JVM_CONSTANT_Double);
@@ -1328,7 +1297,7 @@
     case mul: {
       Label L_strict;
       Label L_join;
-      const Address access_flags      (rcx, methodOopDesc::access_flags_offset());
+      const Address access_flags      (rcx, Method::access_flags_offset());
       __ get_method(rcx);
       __ movl(rcx, access_flags);
       __ testl(rcx, JVM_ACC_STRICT);
@@ -1347,7 +1316,7 @@
     case div: {
       Label L_strict;
       Label L_join;
-      const Address access_flags      (rcx, methodOopDesc::access_flags_offset());
+      const Address access_flags      (rcx, Method::access_flags_offset());
       __ get_method(rcx);
       __ movl(rcx, access_flags);
       __ testl(rcx, JVM_ACC_STRICT);
@@ -1576,8 +1545,8 @@
   __ get_method(rcx);           // ECX holds method
   __ profile_taken_branch(rax,rbx); // EAX holds updated MDP, EBX holds bumped taken count
 
-  const ByteSize be_offset = methodOopDesc::backedge_counter_offset() + InvocationCounter::counter_offset();
-  const ByteSize inv_offset = methodOopDesc::invocation_counter_offset() + InvocationCounter::counter_offset();
+  const ByteSize be_offset = Method::backedge_counter_offset() + InvocationCounter::counter_offset();
+  const ByteSize inv_offset = Method::invocation_counter_offset() + InvocationCounter::counter_offset();
   const int method_offset = frame::interpreter_frame_method_offset * wordSize;
 
   // Load up EDX with the branch displacement
@@ -1595,8 +1564,8 @@
     __ load_unsigned_byte(rbx, Address(rsi, rdx, Address::times_1, 0));
 
     // compute return address as bci in rax,
-    __ lea(rax, at_bcp((is_wide ? 5 : 3) - in_bytes(constMethodOopDesc::codes_offset())));
-    __ subptr(rax, Address(rcx, methodOopDesc::const_offset()));
+    __ lea(rax, at_bcp((is_wide ? 5 : 3) - in_bytes(ConstMethod::codes_offset())));
+    __ subptr(rax, Address(rcx, Method::const_offset()));
     // Adjust the bcp in RSI by the displacement in EDX
     __ addptr(rsi, rdx);
     // Push return address
@@ -1632,18 +1601,18 @@
       int mask = ((1 << Tier0BackedgeNotifyFreqLog) - 1) << InvocationCounter::count_shift;
       if (ProfileInterpreter) {
         // Are we profiling?
-        __ movptr(rbx, Address(rcx, in_bytes(methodOopDesc::method_data_offset())));
+        __ movptr(rbx, Address(rcx, in_bytes(Method::method_data_offset())));
         __ testptr(rbx, rbx);
         __ jccb(Assembler::zero, no_mdo);
         // Increment the MDO backedge counter
-        const Address mdo_backedge_counter(rbx, in_bytes(methodDataOopDesc::backedge_counter_offset()) +
+        const Address mdo_backedge_counter(rbx, in_bytes(MethodData::backedge_counter_offset()) +
                                                 in_bytes(InvocationCounter::counter_offset()));
         __ increment_mask_and_jump(mdo_backedge_counter, increment, mask,
                                    rax, false, Assembler::zero, &backedge_counter_overflow);
         __ jmp(dispatch);
       }
       __ bind(no_mdo);
-      // Increment backedge counter in methodOop
+      // Increment backedge counter in Method*
       __ increment_mask_and_jump(Address(rcx, be_offset), increment, mask,
                                  rax, false, Assembler::zero, &backedge_counter_overflow);
     } else {
@@ -1672,7 +1641,7 @@
           __ jcc(Assembler::below, dispatch);
 
           // When ProfileInterpreter is on, the backedge_count comes from the
-          // methodDataOop, which value does not get reset on the call to
+          // MethodData*, which value does not get reset on the call to
           // frequency_counter_overflow().  To avoid excessive calls to the overflow
           // routine while the method is being compiled, add a second test to make
           // sure the overflow function is called only once every overflow_frequency.
@@ -1822,9 +1791,9 @@
   __ movptr(rbx, iaddress(rbx));                   // get return bci, compute return bcp
   __ profile_ret(rbx, rcx);
   __ get_method(rax);
-  __ movptr(rsi, Address(rax, methodOopDesc::const_offset()));
+  __ movptr(rsi, Address(rax, Method::const_offset()));
   __ lea(rsi, Address(rsi, rbx, Address::times_1,
-                      constMethodOopDesc::codes_offset()));
+                      ConstMethod::codes_offset()));
   __ dispatch_next(vtos);
 }
 
@@ -1835,8 +1804,8 @@
   __ movptr(rbx, iaddress(rbx));                   // get return bci, compute return bcp
   __ profile_ret(rbx, rcx);
   __ get_method(rax);
-  __ movptr(rsi, Address(rax, methodOopDesc::const_offset()));
-  __ lea(rsi, Address(rsi, rbx, Address::times_1, constMethodOopDesc::codes_offset()));
+  __ movptr(rsi, Address(rax, Method::const_offset()));
+  __ lea(rsi, Address(rsi, rbx, Address::times_1, ConstMethod::codes_offset()));
   __ dispatch_next(vtos);
 }
 
@@ -2080,31 +2049,17 @@
 }
 
 void TemplateTable::resolve_cache_and_index(int byte_no,
-                                            Register result,
                                             Register Rcache,
                                             Register index,
                                             size_t index_size) {
   const Register temp = rbx;
-  assert_different_registers(result, Rcache, index, temp);
+  assert_different_registers(Rcache, index, temp);
 
   Label resolved;
-  if (byte_no == f12_oop) {
-    // We are resolved if the f1 field contains a non-null object (CallSite, MethodType, etc.)
-    // This kind of CP cache entry does not need to match bytecode_1 or bytecode_2, because
-    // there is a 1-1 relation between bytecode type and CP entry type.
-    // The caller will also load a methodOop from f2.
-    assert(result != noreg, ""); //else do cmpptr(Address(...), (int32_t) NULL_WORD)
-    __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-    __ movptr(result, Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()));
-    __ testptr(result, result);
-    __ jcc(Assembler::notEqual, resolved);
-  } else {
     assert(byte_no == f1_byte || byte_no == f2_byte, "byte_no out of range");
-    assert(result == noreg, "");  //else change code for setting result
     __ get_cache_and_index_and_bytecode_at_bcp(Rcache, index, temp, byte_no, 1, index_size);
     __ cmpl(temp, (int) bytecode());  // have we resolved this bytecode?
     __ jcc(Assembler::equal, resolved);
-  }
 
   // resolve first time through
   address entry;
@@ -2119,8 +2074,6 @@
     case Bytecodes::_invokeinterface: entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invoke);         break;
     case Bytecodes::_invokehandle   : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokehandle);   break;
     case Bytecodes::_invokedynamic  : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic);  break;
-    case Bytecodes::_fast_aldc      : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);            break;
-    case Bytecodes::_fast_aldc_w    : entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);            break;
     default:
       fatal(err_msg("unexpected bytecode: %s", Bytecodes::name(bytecode())));
       break;
@@ -2129,8 +2082,6 @@
   __ call_VM(noreg, entry, temp);
   // Update registers with resolved info
   __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-  if (result != noreg)
-    __ movptr(result, Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()));
   __ bind(resolved);
 }
 
@@ -2144,7 +2095,7 @@
                                               bool is_static = false) {
   assert_different_registers(cache, index, flags, off);
 
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
   // Field offset
   __ movptr(off, Address(cache, index, Address::times_ptr,
                          in_bytes(cp_base_offset + ConstantPoolCacheEntry::f2_offset())));
@@ -2156,6 +2107,8 @@
   if (is_static) {
     __ movptr(obj, Address(cache, index, Address::times_ptr,
                            in_bytes(cp_base_offset + ConstantPoolCacheEntry::f1_offset())));
+    const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+    __ movptr(obj, Address(obj, mirror_offset));
   }
 }
 
@@ -2176,31 +2129,21 @@
   // determine constant pool cache field offsets
   assert(is_invokevirtual == (byte_no == f2_byte), "is_invokevirtual flag redundant");
   const int method_offset = in_bytes(
-    constantPoolCacheOopDesc::base_offset() +
+    ConstantPoolCache::base_offset() +
       ((byte_no == f2_byte)
        ? ConstantPoolCacheEntry::f2_offset()
        : ConstantPoolCacheEntry::f1_offset()));
-  const int flags_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int flags_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::flags_offset());
   // access constant pool cache fields
-  const int index_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int index_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::f2_offset());
 
-  if (byte_no == f12_oop) {
-    // Resolved f1_oop (CallSite, MethodType, etc.) goes into 'itable_index'.
-    // Resolved f2_oop (methodOop invoker) will go into 'method' (at index_offset).
-    // See ConstantPoolCacheEntry::set_dynamic_call and set_method_handle.
     size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2));
-    resolve_cache_and_index(byte_no, itable_index, cache, index, index_size);
-    __ movptr(method, Address(cache, index, Address::times_ptr, index_offset));
-    itable_index = noreg;  // hack to disable load below
-  } else {
-    resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, index_size);
     __ movptr(method, Address(cache, index, Address::times_ptr, method_offset));
-  }
+
   if (itable_index != noreg) {
-    // pick up itable index from f2 also:
-    assert(byte_no == f1_byte, "already picked up f1");
     __ movptr(itable_index, Address(cache, index, Address::times_ptr, index_offset));
   }
   __ movl(flags, Address(cache, index, Address::times_ptr, flags_offset));
@@ -2223,7 +2166,7 @@
     __ jcc(Assembler::zero, L1);
 
     // cache entry pointer
-    __ addptr(cache, in_bytes(constantPoolCacheOopDesc::base_offset()));
+    __ addptr(cache, in_bytes(ConstantPoolCache::base_offset()));
     __ shll(index, LogBytesPerWord);
     __ addptr(cache, index);
     if (is_static) {
@@ -2257,7 +2200,7 @@
   const Register off   = rbx;
   const Register flags = rax;
 
-  resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
   jvmti_post_field_access(cache, index, is_static, false);
   load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
 
@@ -2395,7 +2338,7 @@
 // The function may destroy various registers, just not the cache and index registers.
 void TemplateTable::jvmti_post_field_mod(Register cache, Register index, bool is_static) {
 
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   if (JvmtiExport::can_post_field_modification()) {
     // Check to see if a field modification watch has been set before we take
@@ -2466,7 +2409,7 @@
   const Register off   = rbx;
   const Register flags = rax;
 
-  resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
   jvmti_post_field_mod(cache, index, is_static);
   load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
 
@@ -2708,7 +2651,7 @@
 void TemplateTable::fast_storefield(TosState state) {
   transition(state, vtos);
 
-  ByteSize base = constantPoolCacheOopDesc::base_offset();
+  ByteSize base = ConstantPoolCache::base_offset();
 
   jvmti_post_fast_field_mod();
 
@@ -2827,7 +2770,7 @@
   __ movptr(rbx, Address(rcx,
                          rbx,
                          Address::times_ptr,
-                         in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset())));
+                         in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset())));
 
 
   // rax,: object
@@ -2864,7 +2807,7 @@
   __ movptr(rbx, Address(rcx,
                          rdx,
                          Address::times_ptr,
-                         in_bytes(constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f2_offset())));
+                         in_bytes(ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::f2_offset())));
   // make sure exception is reported in correct bcp range (getfield is next instruction)
   __ increment(rsi);
   __ null_check(rax);
@@ -2926,12 +2869,15 @@
   // maybe push appendix to arguments (just before return address)
   if (is_invokedynamic || is_invokehandle) {
     Label L_no_push;
-    __ verify_oop(index);
     __ testl(flags, (1 << ConstantPoolCacheEntry::has_appendix_shift));
     __ jccb(Assembler::zero, L_no_push);
     // Push the appendix as a trailing parameter.
     // This must be done before we get the receiver,
     // since the parameter_size includes it.
+    __ push(rbx);
+    __ mov(rbx, index);
+    __ load_resolved_reference_at_index(index, rbx);
+    __ pop(rbx);
     __ push(index);  // push appendix (MethodType, CallSite, etc.)
     __ bind(L_no_push);
   }
@@ -2992,11 +2938,10 @@
 
   const Register method = index;  // method must be rbx
   assert(method == rbx,
-         "methodOop must be rbx for interpreter calling convention");
+         "Method* must be rbx for interpreter calling convention");
 
   // do the call - the index is actually the method to call
-  // that is, f2 is a vtable index if !is_vfinal, else f2 is a methodOop
-  __ verify_oop(method);
+  // that is, f2 is a vtable index if !is_vfinal, else f2 is a Method*
 
   // It's final, need a null check here!
   __ null_check(recv);
@@ -3011,12 +2956,11 @@
   // get receiver klass
   __ null_check(recv, oopDesc::klass_offset_in_bytes());
   __ load_klass(rax, recv);
-  __ verify_oop(rax);
 
   // profile this call
   __ profile_virtual_call(rax, rdi, rdx);
 
-  // get target methodOop & entry point
+  // get target Method* & entry point
   __ lookup_virtual_method(rax, index, method);
   __ jump_from_interpreted(method, rdx);
 }
@@ -3041,12 +2985,11 @@
 void TemplateTable::invokespecial(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rbx, noreg,  // get f1 methodOop
+  prepare_invoke(byte_no, rbx, noreg,  // get f1 Method*
                  rcx);  // get receiver also for null check
   __ verify_oop(rcx);
   __ null_check(rcx);
   // do the call
-  __ verify_oop(rbx);
   __ profile_call(rax);
   __ jump_from_interpreted(rbx, rax);
 }
@@ -3055,9 +2998,8 @@
 void TemplateTable::invokestatic(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rbx);  // get f1 methodOop
+  prepare_invoke(byte_no, rbx);  // get f1 Method*
   // do the call
-  __ verify_oop(rbx);
   __ profile_call(rax);
   __ jump_from_interpreted(rbx, rax);
 }
@@ -3073,7 +3015,7 @@
 void TemplateTable::invokeinterface(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rax, rbx,  // get f1 klassOop, f2 itable index
+  prepare_invoke(byte_no, rax, rbx,  // get f1 Klass*, f2 itable index
                  rcx, rdx); // recv, flags
 
   // rax: interface klass (from f1)
@@ -3097,7 +3039,6 @@
   __ restore_locals();  // restore rdi
   __ null_check(rcx, oopDesc::klass_offset_in_bytes());
   __ load_klass(rdx, rcx);
-  __ verify_oop(rdx);
 
   // profile this call
   __ profile_virtual_call(rdx, rsi, rdi);
@@ -3110,7 +3051,7 @@
                              rbx, rsi,
                              no_such_interface);
 
-  // rbx: methodOop to call
+  // rbx: Method* to call
   // rcx: receiver
   // Check for abstract method error
   // Note: This should be done more efficiently via a throw_abstract_method_error
@@ -3121,7 +3062,7 @@
 
   // do the call
   // rcx: receiver
-  // rbx,: methodOop
+  // rbx,: Method*
   __ jump_from_interpreted(rbx, rdx);
   __ should_not_reach_here();
 
@@ -3151,7 +3092,7 @@
 
 void TemplateTable::invokehandle(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
   const Register rbx_method = rbx;  // (from f2)
   const Register rax_mtype  = rax;  // (from f1)
   const Register rcx_recv   = rcx;
@@ -3164,9 +3105,9 @@
   }
 
   prepare_invoke(byte_no,
-                 rbx_method, rax_mtype,  // get f2 methodOop, f1 MethodType
+                 rbx_method, rax_mtype,  // get f2 Method*, f1 MethodType
                  rcx_recv);
-  __ verify_oop(rbx_method);
+  __ verify_method_ptr(rbx_method);
   __ verify_oop(rcx_recv);
   __ null_check(rcx_recv);
 
@@ -3181,7 +3122,7 @@
 
 void TemplateTable::invokedynamic(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
 
   if (!EnableInvokeDynamic) {
     // We should not encounter this bytecode if !EnableInvokeDynamic.
@@ -3199,7 +3140,7 @@
 
   prepare_invoke(byte_no, rbx_method, rax_callsite);
 
-  // rax: CallSite object (from f1)
+  // rax: CallSite object (from cpool->resolved_references[])
   // rbx: MH.linkToCallSite method (from f2)
 
   // Note:  rax_callsite is already pushed by prepare_invoke
@@ -3229,22 +3170,22 @@
   __ get_cpool_and_tags(rcx, rax);
 
   // Make sure the class we're about to instantiate has been resolved.
-  // This is done before loading instanceKlass to be consistent with the order
-  // how Constant Pool is updated (see constantPoolOopDesc::klass_at_put)
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  // This is done before loading InstanceKlass to be consistent with the order
+  // how Constant Pool is updated (see ConstantPool::klass_at_put)
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
   __ cmpb(Address(rax, rdx, Address::times_1, tags_offset), JVM_CONSTANT_Class);
   __ jcc(Assembler::notEqual, slow_case_no_pop);
 
-  // get instanceKlass
-  __ movptr(rcx, Address(rcx, rdx, Address::times_ptr, sizeof(constantPoolOopDesc)));
+  // get InstanceKlass
+  __ movptr(rcx, Address(rcx, rdx, Address::times_ptr, sizeof(ConstantPool)));
   __ push(rcx);  // save the contexts of klass for initializing the header
 
   // make sure klass is initialized & doesn't have finalizer
   // make sure klass is fully initialized
-  __ cmpb(Address(rcx, instanceKlass::init_state_offset()), instanceKlass::fully_initialized);
+  __ cmpb(Address(rcx, InstanceKlass::init_state_offset()), InstanceKlass::fully_initialized);
   __ jcc(Assembler::notEqual, slow_case);
 
-  // get instance_size in instanceKlass (scaled to a count of bytes)
+  // get instance_size in InstanceKlass (scaled to a count of bytes)
   __ movl(rdx, Address(rcx, Klass::layout_helper_offset()));
   // test to see if it has a finalizer or is malformed in some way
   __ testl(rdx, Klass::_lh_instance_slow_path_bit);
@@ -3414,18 +3355,23 @@
   __ get_cpool_and_tags(rcx, rdx); // ECX=cpool, EDX=tags array
   __ get_unsigned_2_byte_index_at_bcp(rbx, 1); // EBX=index
   // See if bytecode has already been quicked
-  __ cmpb(Address(rdx, rbx, Address::times_1, typeArrayOopDesc::header_size(T_BYTE) * wordSize), JVM_CONSTANT_Class);
+  __ cmpb(Address(rdx, rbx, Address::times_1, Array<u1>::base_offset_in_bytes()), JVM_CONSTANT_Class);
   __ jcc(Assembler::equal, quicked);
 
   __ push(atos);
-  call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  // vm_result_2 has metadata result
+  // borrow rdi from locals
+  __ get_thread(rdi);
+  __ get_vm_result_2(rax, rdi);
+  __ restore_locals();
   __ pop_ptr(rdx);
   __ jmpb(resolved);
 
   // Get superklass in EAX and subklass in EBX
   __ bind(quicked);
   __ mov(rdx, rax);          // Save object in EDX; EAX needed for subtype check
-  __ movptr(rax, Address(rcx, rbx, Address::times_ptr, sizeof(constantPoolOopDesc)));
+  __ movptr(rax, Address(rcx, rbx, Address::times_ptr, sizeof(ConstantPool)));
 
   __ bind(resolved);
   __ load_klass(rbx, rdx);
@@ -3465,11 +3411,16 @@
   __ get_cpool_and_tags(rcx, rdx); // ECX=cpool, EDX=tags array
   __ get_unsigned_2_byte_index_at_bcp(rbx, 1); // EBX=index
   // See if bytecode has already been quicked
-  __ cmpb(Address(rdx, rbx, Address::times_1, typeArrayOopDesc::header_size(T_BYTE) * wordSize), JVM_CONSTANT_Class);
+  __ cmpb(Address(rdx, rbx, Address::times_1, Array<u1>::base_offset_in_bytes()), JVM_CONSTANT_Class);
   __ jcc(Assembler::equal, quicked);
 
   __ push(atos);
-  call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc) );
+  // vm_result_2 has metadata result
+  // borrow rdi from locals
+  __ get_thread(rdi);
+  __ get_vm_result_2(rax, rdi);
+  __ restore_locals();
   __ pop_ptr(rdx);
   __ load_klass(rdx, rdx);
   __ jmp(resolved);
@@ -3477,7 +3428,7 @@
   // Get superklass in EAX and subklass in EDX
   __ bind(quicked);
   __ load_klass(rdx, rax);
-  __ movptr(rax, Address(rcx, rbx, Address::times_ptr, sizeof(constantPoolOopDesc)));
+  __ movptr(rax, Address(rcx, rbx, Address::times_ptr, sizeof(ConstantPool)));
 
   __ bind(resolved);
 
--- a/src/cpu/x86/vm/templateTable_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/templateTable_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -27,7 +27,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -367,16 +367,12 @@
   }
 
   __ get_cpool_and_tags(rcx, rax);
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
 
   // get type
   __ movzbl(rdx, Address(rax, rbx, Address::times_1, tags_offset));
 
-  // unresolved string - get the resolved string
-  __ cmpl(rdx, JVM_CONSTANT_UnresolvedString);
-  __ jccb(Assembler::equal, call_ldc);
-
   // unresolved class - get the resolved class
   __ cmpl(rdx, JVM_CONSTANT_UnresolvedClass);
   __ jccb(Assembler::equal, call_ldc);
@@ -411,76 +407,46 @@
     Label L;
     __ cmpl(rdx, JVM_CONSTANT_Integer);
     __ jcc(Assembler::equal, L);
-    __ cmpl(rdx, JVM_CONSTANT_String);
-    __ jcc(Assembler::equal, L);
-    __ cmpl(rdx, JVM_CONSTANT_Object);
-    __ jcc(Assembler::equal, L);
+    // String and Object are rewritten to fast_aldc
     __ stop("unexpected tag type in ldc");
     __ bind(L);
   }
 #endif
-  // atos and itos
-  Label isOop;
-  __ cmpl(rdx, JVM_CONSTANT_Integer);
-  __ jcc(Assembler::notEqual, isOop);
+  // itos JVM_CONSTANT_Integer only
   __ movl(rax, Address(rcx, rbx, Address::times_8, base_offset));
   __ push_i(rax);
-  __ jmp(Done);
-
-  __ bind(isOop);
-  __ movptr(rax, Address(rcx, rbx, Address::times_8, base_offset));
-  __ push_ptr(rax);
-
-  if (VerifyOops) {
-    __ verify_oop(rax);
-  }
-
   __ bind(Done);
 }
 
 // Fast path for caching oop constants.
-// %%% We should use this to handle Class and String constants also.
-// %%% It will simplify the ldc/primitive path considerably.
 void TemplateTable::fast_aldc(bool wide) {
   transition(vtos, atos);
 
-  if (!EnableInvokeDynamic) {
-    // We should not encounter this bytecode if !EnableInvokeDynamic.
-    // The verifier will stop it.  However, if we get past the verifier,
-    // this will stop the thread in a reasonable way, without crashing the JVM.
-    __ call_VM(noreg, CAST_FROM_FN_PTR(address,
-                     InterpreterRuntime::throw_IncompatibleClassChangeError));
-    // the call_VM checks for exception, so we should never return here.
-    __ should_not_reach_here();
-    return;
-  }
-
-  const Register cache = rcx;
-  const Register index = rdx;
-
-  resolve_cache_and_index(f12_oop, rax, cache, index, wide ? sizeof(u2) : sizeof(u1));
+  Register result = rax;
+  Register tmp = rdx;
+  int index_size = wide ? sizeof(u2) : sizeof(u1);
+
+  Label resolved;
+
+  // We are resolved if the resolved reference cache entry contains a
+  // non-null object (String, MethodType, etc.)
+  assert_different_registers(result, tmp);
+  __ get_cache_index_at_bcp(tmp, 1, index_size);
+  __ load_resolved_reference_at_index(result, tmp);
+  __ testl(result, result);
+  __ jcc(Assembler::notZero, resolved);
+
+  address entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);
+
+  // first time invocation - must resolve first
+  __ movl(tmp, (int)bytecode());
+  __ call_VM(result, entry, tmp);
+
+  __ bind(resolved);
+
   if (VerifyOops) {
-    __ verify_oop(rax);
+    __ verify_oop(result);
   }
-
-  Label L_done, L_throw_exception;
-  const Register con_klass_temp = rcx;  // same as cache
-  const Register array_klass_temp = rdx;  // same as index
-  __ load_klass(con_klass_temp, rax);
-  __ lea(array_klass_temp, ExternalAddress((address)Universe::systemObjArrayKlassObj_addr()));
-  __ cmpptr(con_klass_temp, Address(array_klass_temp, 0));
-  __ jcc(Assembler::notEqual, L_done);
-  __ cmpl(Address(rax, arrayOopDesc::length_offset_in_bytes()), 0);
-  __ jcc(Assembler::notEqual, L_throw_exception);
-  __ xorptr(rax, rax);
-  __ jmp(L_done);
-
-  // Load the exception from the system-array which wraps it:
-  __ bind(L_throw_exception);
-  __ load_heap_oop(rax, Address(rax, arrayOopDesc::base_offset_in_bytes(T_OBJECT)));
-  __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
-
-  __ bind(L_done);
 }
 
 void TemplateTable::ldc2_w() {
@@ -489,8 +455,8 @@
   __ get_unsigned_2_byte_index_at_bcp(rbx, 1);
 
   __ get_cpool_and_tags(rcx, rax);
-  const int base_offset = constantPoolOopDesc::header_size() * wordSize;
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  const int base_offset = ConstantPool::header_size() * wordSize;
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
 
   // get type
   __ cmpb(Address(rax, rbx, Address::times_1, tags_offset),
@@ -1596,9 +1562,9 @@
   __ profile_taken_branch(rax, rbx); // rax holds updated MDP, rbx
                                      // holds bumped taken count
 
-  const ByteSize be_offset = methodOopDesc::backedge_counter_offset() +
+  const ByteSize be_offset = Method::backedge_counter_offset() +
                              InvocationCounter::counter_offset();
-  const ByteSize inv_offset = methodOopDesc::invocation_counter_offset() +
+  const ByteSize inv_offset = Method::invocation_counter_offset() +
                               InvocationCounter::counter_offset();
   const int method_offset = frame::interpreter_frame_method_offset * wordSize;
 
@@ -1620,8 +1586,8 @@
 
     // compute return address as bci in rax
     __ lea(rax, at_bcp((is_wide ? 5 : 3) -
-                        in_bytes(constMethodOopDesc::codes_offset())));
-    __ subptr(rax, Address(rcx, methodOopDesc::const_offset()));
+                        in_bytes(ConstMethod::codes_offset())));
+    __ subptr(rax, Address(rcx, Method::const_offset()));
     // Adjust the bcp in r13 by the displacement in rdx
     __ addptr(r13, rdx);
     // jsr returns atos that is not an oop
@@ -1656,18 +1622,18 @@
       int mask = ((1 << Tier0BackedgeNotifyFreqLog) - 1) << InvocationCounter::count_shift;
       if (ProfileInterpreter) {
         // Are we profiling?
-        __ movptr(rbx, Address(rcx, in_bytes(methodOopDesc::method_data_offset())));
+        __ movptr(rbx, Address(rcx, in_bytes(Method::method_data_offset())));
         __ testptr(rbx, rbx);
         __ jccb(Assembler::zero, no_mdo);
         // Increment the MDO backedge counter
-        const Address mdo_backedge_counter(rbx, in_bytes(methodDataOopDesc::backedge_counter_offset()) +
+        const Address mdo_backedge_counter(rbx, in_bytes(MethodData::backedge_counter_offset()) +
                                            in_bytes(InvocationCounter::counter_offset()));
         __ increment_mask_and_jump(mdo_backedge_counter, increment, mask,
                                    rax, false, Assembler::zero, &backedge_counter_overflow);
         __ jmp(dispatch);
       }
       __ bind(no_mdo);
-      // Increment backedge counter in methodOop
+      // Increment backedge counter in Method*
       __ increment_mask_and_jump(Address(rcx, be_offset), increment, mask,
                                  rax, false, Assembler::zero, &backedge_counter_overflow);
     } else {
@@ -1696,7 +1662,7 @@
           __ jcc(Assembler::below, dispatch);
 
           // When ProfileInterpreter is on, the backedge_count comes
-          // from the methodDataOop, which value does not get reset on
+          // from the MethodData*, which value does not get reset on
           // the call to frequency_counter_overflow().  To avoid
           // excessive calls to the overflow routine while the method is
           // being compiled, add a second test to make sure the overflow
@@ -1854,9 +1820,9 @@
   __ movslq(rbx, iaddress(rbx)); // get return bci, compute return bcp
   __ profile_ret(rbx, rcx);
   __ get_method(rax);
-  __ movptr(r13, Address(rax, methodOopDesc::const_offset()));
+  __ movptr(r13, Address(rax, Method::const_offset()));
   __ lea(r13, Address(r13, rbx, Address::times_1,
-                      constMethodOopDesc::codes_offset()));
+                      ConstMethod::codes_offset()));
   __ dispatch_next(vtos);
 }
 
@@ -1866,8 +1832,8 @@
   __ movptr(rbx, aaddress(rbx)); // get return bci, compute return bcp
   __ profile_ret(rbx, rcx);
   __ get_method(rax);
-  __ movptr(r13, Address(rax, methodOopDesc::const_offset()));
-  __ lea(r13, Address(r13, rbx, Address::times_1, constMethodOopDesc::codes_offset()));
+  __ movptr(r13, Address(rax, Method::const_offset()));
+  __ lea(r13, Address(r13, rbx, Address::times_1, ConstMethod::codes_offset()));
   __ dispatch_next(vtos);
 }
 
@@ -2117,31 +2083,17 @@
 }
 
 void TemplateTable::resolve_cache_and_index(int byte_no,
-                                            Register result,
                                             Register Rcache,
                                             Register index,
                                             size_t index_size) {
   const Register temp = rbx;
-  assert_different_registers(result, Rcache, index, temp);
+  assert_different_registers(Rcache, index, temp);
 
   Label resolved;
-  if (byte_no == f12_oop) {
-    // We are resolved if the f1 field contains a non-null object (CallSite, MethodType, etc.)
-    // This kind of CP cache entry does not need to match bytecode_1 or bytecode_2, because
-    // there is a 1-1 relation between bytecode type and CP entry type.
-    // The caller will also load a methodOop from f2.
-    assert(result != noreg, ""); //else do cmpptr(Address(...), (int32_t) NULL_WORD)
-    __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-    __ movptr(result, Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()));
-    __ testptr(result, result);
-    __ jcc(Assembler::notEqual, resolved);
-  } else {
     assert(byte_no == f1_byte || byte_no == f2_byte, "byte_no out of range");
-    assert(result == noreg, "");  //else change code for setting result
     __ get_cache_and_index_and_bytecode_at_bcp(Rcache, index, temp, byte_no, 1, index_size);
     __ cmpl(temp, (int) bytecode());  // have we resolved this bytecode?
     __ jcc(Assembler::equal, resolved);
-  }
 
   // resolve first time through
   address entry;
@@ -2164,12 +2116,6 @@
   case Bytecodes::_invokedynamic:
     entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_invokedynamic);
     break;
-  case Bytecodes::_fast_aldc:
-    entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);
-    break;
-  case Bytecodes::_fast_aldc_w:
-    entry = CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_ldc);
-    break;
   default:
     fatal(err_msg("unexpected bytecode: %s", Bytecodes::name(bytecode())));
     break;
@@ -2179,8 +2125,6 @@
 
   // Update registers with resolved info
   __ get_cache_and_index_at_bcp(Rcache, index, 1, index_size);
-  if (result != noreg)
-    __ movptr(result, Address(Rcache, index, Address::times_ptr, constantPoolCacheOopDesc::base_offset() + ConstantPoolCacheEntry::f1_offset()));
   __ bind(resolved);
 }
 
@@ -2193,7 +2137,7 @@
                                               bool is_static = false) {
   assert_different_registers(cache, index, flags, off);
 
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
   // Field offset
   __ movptr(off, Address(cache, index, Address::times_ptr,
                          in_bytes(cp_base_offset +
@@ -2208,6 +2152,8 @@
     __ movptr(obj, Address(cache, index, Address::times_ptr,
                            in_bytes(cp_base_offset +
                                     ConstantPoolCacheEntry::f1_offset())));
+    const int mirror_offset = in_bytes(Klass::java_mirror_offset());
+    __ movptr(obj, Address(obj, mirror_offset));
   }
 }
 
@@ -2228,38 +2174,27 @@
   // determine constant pool cache field offsets
   assert(is_invokevirtual == (byte_no == f2_byte), "is_invokevirtual flag redundant");
   const int method_offset = in_bytes(
-    constantPoolCacheOopDesc::base_offset() +
+    ConstantPoolCache::base_offset() +
       ((byte_no == f2_byte)
        ? ConstantPoolCacheEntry::f2_offset()
        : ConstantPoolCacheEntry::f1_offset()));
-  const int flags_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int flags_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::flags_offset());
   // access constant pool cache fields
-  const int index_offset = in_bytes(constantPoolCacheOopDesc::base_offset() +
+  const int index_offset = in_bytes(ConstantPoolCache::base_offset() +
                                     ConstantPoolCacheEntry::f2_offset());
 
-  if (byte_no == f12_oop) {
-    // Resolved f1_oop (CallSite, MethodType, etc.) goes into 'itable_index'.
-    // Resolved f2_oop (methodOop invoker) will go into 'method' (at index_offset).
-    // See ConstantPoolCacheEntry::set_dynamic_call and set_method_handle.
     size_t index_size = (is_invokedynamic ? sizeof(u4) : sizeof(u2));
-    resolve_cache_and_index(byte_no, itable_index, cache, index, index_size);
-    __ movptr(method, Address(cache, index, Address::times_ptr, index_offset));
-    itable_index = noreg;  // hack to disable load below
-  } else {
-    resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, index_size);
     __ movptr(method, Address(cache, index, Address::times_ptr, method_offset));
-  }
+
   if (itable_index != noreg) {
-    // pick up itable index from f2 also:
-    assert(byte_no == f1_byte, "already picked up f1");
+    // pick up itable or appendix index from f2 also:
     __ movptr(itable_index, Address(cache, index, Address::times_ptr, index_offset));
   }
   __ movl(flags, Address(cache, index, Address::times_ptr, flags_offset));
 }
 
-
-// The registers cache and index expected to be set before call.
 // Correct values of the cache and index registers are preserved.
 void TemplateTable::jvmti_post_field_access(Register cache, Register index,
                                             bool is_static, bool has_tos) {
@@ -2278,7 +2213,7 @@
     __ get_cache_and_index_at_bcp(c_rarg2, c_rarg3, 1);
 
     // cache entry pointer
-    __ addptr(c_rarg2, in_bytes(constantPoolCacheOopDesc::base_offset()));
+    __ addptr(c_rarg2, in_bytes(ConstantPoolCache::base_offset()));
     __ shll(c_rarg3, LogBytesPerWord);
     __ addptr(c_rarg2, c_rarg3);
     if (is_static) {
@@ -2314,7 +2249,7 @@
   const Register flags = rax;
   const Register bc = c_rarg3; // uses same reg as obj, so don't mix them
 
-  resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
   jvmti_post_field_access(cache, index, is_static, false);
   load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
 
@@ -2453,7 +2388,7 @@
 void TemplateTable::jvmti_post_field_mod(Register cache, Register index, bool is_static) {
   transition(vtos, vtos);
 
-  ByteSize cp_base_offset = constantPoolCacheOopDesc::base_offset();
+  ByteSize cp_base_offset = ConstantPoolCache::base_offset();
 
   if (JvmtiExport::can_post_field_modification()) {
     // Check to see if a field modification watch has been set before
@@ -2517,7 +2452,7 @@
   const Register flags = rax;
   const Register bc    = c_rarg3;
 
-  resolve_cache_and_index(byte_no, noreg, cache, index, sizeof(u2));
+  resolve_cache_and_index(byte_no, cache, index, sizeof(u2));
   jvmti_post_field_mod(cache, index, is_static);
   load_field_cp_cache_entry(obj, cache, index, off, flags, is_static);
 
@@ -2741,7 +2676,7 @@
 void TemplateTable::fast_storefield(TosState state) {
   transition(state, vtos);
 
-  ByteSize base = constantPoolCacheOopDesc::base_offset();
+  ByteSize base = ConstantPoolCache::base_offset();
 
   jvmti_post_fast_field_mod();
 
@@ -2841,13 +2776,13 @@
   // [jk] not needed currently
   // if (os::is_MP()) {
   //   __ movl(rdx, Address(rcx, rbx, Address::times_8,
-  //                        in_bytes(constantPoolCacheOopDesc::base_offset() +
+  //                        in_bytes(ConstantPoolCache::base_offset() +
   //                                 ConstantPoolCacheEntry::flags_offset())));
   //   __ shrl(rdx, ConstantPoolCacheEntry::is_volatile_shift);
   //   __ andl(rdx, 0x1);
   // }
   __ movptr(rbx, Address(rcx, rbx, Address::times_8,
-                         in_bytes(constantPoolCacheOopDesc::base_offset() +
+                         in_bytes(ConstantPoolCache::base_offset() +
                                   ConstantPoolCacheEntry::f2_offset())));
 
   // rax: object
@@ -2904,7 +2839,7 @@
   __ get_cache_and_index_at_bcp(rcx, rdx, 2);
   __ movptr(rbx,
             Address(rcx, rdx, Address::times_8,
-                    in_bytes(constantPoolCacheOopDesc::base_offset() +
+                    in_bytes(ConstantPoolCache::base_offset() +
                              ConstantPoolCacheEntry::f2_offset())));
   // make sure exception is reported in correct bcp range (getfield is
   // next instruction)
@@ -2929,7 +2864,7 @@
   // if (os::is_MP()) {
   //   Label notVolatile;
   //   __ movl(rdx, Address(rcx, rdx, Address::times_8,
-  //                        in_bytes(constantPoolCacheOopDesc::base_offset() +
+  //                        in_bytes(ConstantPoolCache::base_offset() +
   //                                 ConstantPoolCacheEntry::flags_offset())));
   //   __ shrl(rdx, ConstantPoolCacheEntry::is_volatile_shift);
   //   __ testl(rdx, 0x1);
@@ -2984,12 +2919,15 @@
   // maybe push appendix to arguments (just before return address)
   if (is_invokedynamic || is_invokehandle) {
     Label L_no_push;
-    __ verify_oop(index);
     __ testl(flags, (1 << ConstantPoolCacheEntry::has_appendix_shift));
-    __ jccb(Assembler::zero, L_no_push);
+    __ jcc(Assembler::zero, L_no_push);
     // Push the appendix as a trailing parameter.
     // This must be done before we get the receiver,
     // since the parameter_size includes it.
+    __ push(rbx);
+    __ mov(rbx, index);
+    __ load_resolved_reference_at_index(index, rbx);
+    __ pop(rbx);
     __ push(index);  // push appendix (MethodType, CallSite, etc.)
     __ bind(L_no_push);
   }
@@ -3052,11 +2990,10 @@
 
   const Register method = index;  // method must be rbx
   assert(method == rbx,
-         "methodOop must be rbx for interpreter calling convention");
+         "Method* must be rbx for interpreter calling convention");
 
   // do the call - the index is actually the method to call
-  // that is, f2 is a vtable index if !is_vfinal, else f2 is a methodOop
-  __ verify_oop(method);
+  // that is, f2 is a vtable index if !is_vfinal, else f2 is a Method*
 
   // It's final, need a null check here!
   __ null_check(recv);
@@ -3071,12 +3008,11 @@
   // get receiver klass
   __ null_check(recv, oopDesc::klass_offset_in_bytes());
   __ load_klass(rax, recv);
-  __ verify_oop(rax);
 
   // profile this call
   __ profile_virtual_call(rax, r14, rdx);
 
-  // get target methodOop & entry point
+  // get target Method* & entry point
   __ lookup_virtual_method(rax, index, method);
   __ jump_from_interpreted(method, rdx);
 }
@@ -3101,12 +3037,11 @@
 void TemplateTable::invokespecial(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rbx, noreg,  // get f1 methodOop
+  prepare_invoke(byte_no, rbx, noreg,  // get f1 Method*
                  rcx);  // get receiver also for null check
   __ verify_oop(rcx);
   __ null_check(rcx);
   // do the call
-  __ verify_oop(rbx);
   __ profile_call(rax);
   __ jump_from_interpreted(rbx, rax);
 }
@@ -3115,9 +3050,8 @@
 void TemplateTable::invokestatic(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rbx);  // get f1 methodOop
+  prepare_invoke(byte_no, rbx);  // get f1 Method*
   // do the call
-  __ verify_oop(rbx);
   __ profile_call(rax);
   __ jump_from_interpreted(rbx, rax);
 }
@@ -3131,7 +3065,7 @@
 void TemplateTable::invokeinterface(int byte_no) {
   transition(vtos, vtos);
   assert(byte_no == f1_byte, "use this argument");
-  prepare_invoke(byte_no, rax, rbx,  // get f1 klassOop, f2 itable index
+  prepare_invoke(byte_no, rax, rbx,  // get f1 Klass*, f2 itable index
                  rcx, rdx); // recv, flags
 
   // rax: interface klass (from f1)
@@ -3155,7 +3089,6 @@
   __ restore_locals();  // restore r14
   __ null_check(rcx, oopDesc::klass_offset_in_bytes());
   __ load_klass(rdx, rcx);
-  __ verify_oop(rdx);
 
   // profile this call
   __ profile_virtual_call(rdx, r13, r14);
@@ -3168,7 +3101,7 @@
                              rbx, r13,
                              no_such_interface);
 
-  // rbx: methodOop to call
+  // rbx: Method* to call
   // rcx: receiver
   // Check for abstract method error
   // Note: This should be done more efficiently via a throw_abstract_method_error
@@ -3179,7 +3112,7 @@
 
   // do the call
   // rcx: receiver
-  // rbx,: methodOop
+  // rbx,: Method*
   __ jump_from_interpreted(rbx, rdx);
   __ should_not_reach_here();
 
@@ -3210,7 +3143,7 @@
 
 void TemplateTable::invokehandle(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
   const Register rbx_method = rbx;  // f2
   const Register rax_mtype  = rax;  // f1
   const Register rcx_recv   = rcx;
@@ -3223,9 +3156,9 @@
   }
 
   prepare_invoke(byte_no,
-                 rbx_method, rax_mtype,  // get f2 methodOop, f1 MethodType
+                 rbx_method, rax_mtype,  // get f2 Method*, f1 MethodType
                  rcx_recv);
-  __ verify_oop(rbx_method);
+  __ verify_method_ptr(rbx_method);
   __ verify_oop(rcx_recv);
   __ null_check(rcx_recv);
 
@@ -3240,7 +3173,7 @@
 
 void TemplateTable::invokedynamic(int byte_no) {
   transition(vtos, vtos);
-  assert(byte_no == f12_oop, "use this argument");
+  assert(byte_no == f1_byte, "use this argument");
 
   if (!EnableInvokeDynamic) {
     // We should not encounter this bytecode if !EnableInvokeDynamic.
@@ -3258,7 +3191,7 @@
 
   prepare_invoke(byte_no, rbx_method, rax_callsite);
 
-  // rax: CallSite object (from f1)
+  // rax: CallSite object (from cpool->resolved_references[])
   // rbx: MH.linkToCallSite method (from f2)
 
   // Note:  rax_callsite is already pushed by prepare_invoke
@@ -3287,25 +3220,25 @@
 
   __ get_cpool_and_tags(rsi, rax);
   // Make sure the class we're about to instantiate has been resolved.
-  // This is done before loading instanceKlass to be consistent with the order
-  // how Constant Pool is updated (see constantPoolOopDesc::klass_at_put)
-  const int tags_offset = typeArrayOopDesc::header_size(T_BYTE) * wordSize;
+  // This is done before loading InstanceKlass to be consistent with the order
+  // how Constant Pool is updated (see ConstantPool::klass_at_put)
+  const int tags_offset = Array<u1>::base_offset_in_bytes();
   __ cmpb(Address(rax, rdx, Address::times_1, tags_offset),
           JVM_CONSTANT_Class);
   __ jcc(Assembler::notEqual, slow_case);
 
-  // get instanceKlass
+  // get InstanceKlass
   __ movptr(rsi, Address(rsi, rdx,
-            Address::times_8, sizeof(constantPoolOopDesc)));
+            Address::times_8, sizeof(ConstantPool)));
 
   // make sure klass is initialized & doesn't have finalizer
   // make sure klass is fully initialized
   __ cmpb(Address(rsi,
-                  instanceKlass::init_state_offset()),
-          instanceKlass::fully_initialized);
+                  InstanceKlass::init_state_offset()),
+          InstanceKlass::fully_initialized);
   __ jcc(Assembler::notEqual, slow_case);
 
-  // get instance_size in instanceKlass (scaled to a count of bytes)
+  // get instance_size in InstanceKlass (scaled to a count of bytes)
   __ movl(rdx,
           Address(rsi,
                   Klass::layout_helper_offset()));
@@ -3470,11 +3403,13 @@
   // See if bytecode has already been quicked
   __ cmpb(Address(rdx, rbx,
                   Address::times_1,
-                  typeArrayOopDesc::header_size(T_BYTE) * wordSize),
+                  Array<u1>::base_offset_in_bytes()),
           JVM_CONSTANT_Class);
   __ jcc(Assembler::equal, quicked);
   __ push(atos); // save receiver for result, and for GC
-  call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
+  // vm_result_2 has metadata result
+  __ get_vm_result_2(rax, r15_thread);
   __ pop_ptr(rdx); // restore receiver
   __ jmpb(resolved);
 
@@ -3482,7 +3417,7 @@
   __ bind(quicked);
   __ mov(rdx, rax); // Save object in rdx; rax needed for subtype check
   __ movptr(rax, Address(rcx, rbx,
-                       Address::times_8, sizeof(constantPoolOopDesc)));
+                       Address::times_8, sizeof(ConstantPool)));
 
   __ bind(resolved);
   __ load_klass(rbx, rdx);
@@ -3523,12 +3458,14 @@
   // See if bytecode has already been quicked
   __ cmpb(Address(rdx, rbx,
                   Address::times_1,
-                  typeArrayOopDesc::header_size(T_BYTE) * wordSize),
+                  Array<u1>::base_offset_in_bytes()),
           JVM_CONSTANT_Class);
   __ jcc(Assembler::equal, quicked);
 
   __ push(atos); // save receiver for result, and for GC
-  call_VM(rax, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
+  call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
+  // vm_result_2 has metadata result
+  __ get_vm_result_2(rax, r15_thread);
   __ pop_ptr(rdx); // restore receiver
   __ verify_oop(rdx);
   __ load_klass(rdx, rdx);
@@ -3538,7 +3475,7 @@
   __ bind(quicked);
   __ load_klass(rdx, rax);
   __ movptr(rax, Address(rcx, rbx,
-                         Address::times_8, sizeof(constantPoolOopDesc)));
+                         Address::times_8, sizeof(ConstantPool)));
 
   __ bind(resolved);
 
--- a/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/vtableStubs_x86_32.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -81,7 +81,7 @@
   if (DebugVtables) {
     Label L;
     // check offset vs vtable length
-    __ cmpl(Address(rax, instanceKlass::vtable_length_offset()*wordSize), vtable_index*vtableEntry::size());
+    __ cmpl(Address(rax, InstanceKlass::vtable_length_offset()*wordSize), vtable_index*vtableEntry::size());
     __ jcc(Assembler::greater, L);
     __ movl(rbx, vtable_index);
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, bad_compiled_vtable_index), rcx, rbx);
@@ -91,24 +91,24 @@
 
   const Register method = rbx;
 
-  // load methodOop and target address
+  // load Method* and target address
   __ lookup_virtual_method(rax, vtable_index, method);
 
   if (DebugVtables) {
     Label L;
     __ cmpptr(method, (int32_t)NULL_WORD);
     __ jcc(Assembler::equal, L);
-    __ cmpptr(Address(method, methodOopDesc::from_compiled_offset()), (int32_t)NULL_WORD);
+    __ cmpptr(Address(method, Method::from_compiled_offset()), (int32_t)NULL_WORD);
     __ jcc(Assembler::notZero, L);
     __ stop("Vtable entry is NULL");
     __ bind(L);
   }
 
   // rax,: receiver klass
-  // method (rbx): methodOop
+  // method (rbx): Method*
   // rcx: receiver
   address ame_addr = __ pc();
-  __ jmp( Address(method, methodOopDesc::from_compiled_offset()));
+  __ jmp( Address(method, Method::from_compiled_offset()));
 
   masm->flush();
 
@@ -159,14 +159,14 @@
   const Register method = rbx;
   Label throw_icce;
 
-  // Get methodOop and entrypoint for compiler
+  // Get Method* and entrypoint for compiler
   __ lookup_interface_method(// inputs: rec. class, interface, itable index
                              rsi, rax, itable_index,
                              // outputs: method, scan temp. reg
                              method, rdi,
                              throw_icce);
 
-  // method (rbx): methodOop
+  // method (rbx): Method*
   // rcx: receiver
 
 #ifdef ASSERT
@@ -174,15 +174,15 @@
       Label L1;
       __ cmpptr(method, (int32_t)NULL_WORD);
       __ jcc(Assembler::equal, L1);
-      __ cmpptr(Address(method, methodOopDesc::from_compiled_offset()), (int32_t)NULL_WORD);
+      __ cmpptr(Address(method, Method::from_compiled_offset()), (int32_t)NULL_WORD);
       __ jcc(Assembler::notZero, L1);
-      __ stop("methodOop is null");
+      __ stop("Method* is null");
       __ bind(L1);
     }
 #endif // ASSERT
 
   address ame_addr = __ pc();
-  __ jmp(Address(method, methodOopDesc::from_compiled_offset()));
+  __ jmp(Address(method, Method::from_compiled_offset()));
 
   __ bind(throw_icce);
   __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
--- a/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -73,7 +73,7 @@
   if (DebugVtables) {
     Label L;
     // check offset vs vtable length
-    __ cmpl(Address(rax, instanceKlass::vtable_length_offset() * wordSize),
+    __ cmpl(Address(rax, InstanceKlass::vtable_length_offset() * wordSize),
             vtable_index * vtableEntry::size());
     __ jcc(Assembler::greater, L);
     __ movl(rbx, vtable_index);
@@ -83,7 +83,7 @@
   }
 #endif // PRODUCT
 
-  // load methodOop and target address
+  // load Method* and target address
   const Register method = rbx;
 
   __ lookup_virtual_method(rax, vtable_index, method);
@@ -92,16 +92,16 @@
     Label L;
     __ cmpptr(method, (int32_t)NULL_WORD);
     __ jcc(Assembler::equal, L);
-    __ cmpptr(Address(method, methodOopDesc::from_compiled_offset()), (int32_t)NULL_WORD);
+    __ cmpptr(Address(method, Method::from_compiled_offset()), (int32_t)NULL_WORD);
     __ jcc(Assembler::notZero, L);
     __ stop("Vtable entry is NULL");
     __ bind(L);
   }
   // rax: receiver klass
-  // rbx: methodOop
+  // rbx: Method*
   // rcx: receiver
   address ame_addr = __ pc();
-  __ jmp( Address(rbx, methodOopDesc::from_compiled_offset()));
+  __ jmp( Address(rbx, Method::from_compiled_offset()));
 
   __ flush();
 
@@ -161,14 +161,14 @@
   const Register method = rbx;
   Label throw_icce;
 
-  // Get methodOop and entrypoint for compiler
+  // Get Method* and entrypoint for compiler
   __ lookup_interface_method(// inputs: rec. class, interface, itable index
                              r10, rax, itable_index,
                              // outputs: method, scan temp. reg
                              method, r11,
                              throw_icce);
 
-  // method (rbx): methodOop
+  // method (rbx): Method*
   // j_rarg0: receiver
 
 #ifdef ASSERT
@@ -176,17 +176,17 @@
     Label L2;
     __ cmpptr(method, (int32_t)NULL_WORD);
     __ jcc(Assembler::equal, L2);
-    __ cmpptr(Address(method, methodOopDesc::from_compiled_offset()), (int32_t)NULL_WORD);
+    __ cmpptr(Address(method, Method::from_compiled_offset()), (int32_t)NULL_WORD);
     __ jcc(Assembler::notZero, L2);
     __ stop("compiler entrypoint is null");
     __ bind(L2);
   }
 #endif // ASSERT
 
-  // rbx: methodOop
+  // rbx: Method*
   // j_rarg0: receiver
   address ame_addr = __ pc();
-  __ jmp(Address(method, methodOopDesc::from_compiled_offset()));
+  __ jmp(Address(method, Method::from_compiled_offset()));
 
   __ bind(throw_icce);
   __ jump(RuntimeAddress(StubRoutines::throw_IncompatibleClassChangeError_entry()));
--- a/src/cpu/x86/vm/x86.ad	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/x86.ad	Fri Sep 14 21:50:58 2012 -0700
@@ -488,17 +488,6 @@
   static address double_signflip() { return (address)double_signflip_pool; }
 #endif
 
-// Map Types to machine register types
-const int Matcher::base2reg[Type::lastype] = {
-  Node::NotAMachineReg,0,0, Op_RegI, Op_RegL, 0, Op_RegN,
-  Node::NotAMachineReg, Node::NotAMachineReg, /* tuple, array */
-  Op_VecS, Op_VecD, Op_VecX, Op_VecY, /* Vectors */
-  Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, Op_RegP, /* the pointers */
-  0, 0/*abio*/,
-  Op_RegP /* Return address */, 0, /* the memories */
-  Op_RegF, Op_RegF, Op_RegF, Op_RegD, Op_RegD, Op_RegD,
-  0  /*bottom*/
-};
 
 const bool Matcher::match_rule_supported(int opcode) {
   if (!has_match_rule(opcode))
--- a/src/cpu/x86/vm/x86_32.ad	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/x86_32.ad	Fri Sep 14 21:50:58 2012 -0700
@@ -367,7 +367,7 @@
 }
 
    // rRegI ereg, memory mem) %{    // emit_reg_mem
-void encode_RegMem( CodeBuffer &cbuf, int reg_encoding, int base, int index, int scale, int displace, bool displace_is_oop ) {
+void encode_RegMem( CodeBuffer &cbuf, int reg_encoding, int base, int index, int scale, int displace, relocInfo::relocType disp_reloc ) {
   // There is no index & no scale, use form without SIB byte
   if ((index == 0x4) &&
       (scale == 0) && (base != ESP_enc)) {
@@ -377,7 +377,7 @@
     }
     else {                    // If 8-bit displacement, mode 0x1
       if ((displace >= -128) && (displace <= 127)
-          && !(displace_is_oop) ) {
+          && (disp_reloc == relocInfo::none) ) {
         emit_rm(cbuf, 0x1, reg_encoding, base);
         emit_d8(cbuf, displace);
       }
@@ -385,16 +385,16 @@
         if (base == -1) { // Special flag for absolute address
           emit_rm(cbuf, 0x0, reg_encoding, 0x5);
           // (manual lies; no SIB needed here)
-          if ( displace_is_oop ) {
-            emit_d32_reloc(cbuf, displace, relocInfo::oop_type, 1);
+          if ( disp_reloc != relocInfo::none ) {
+            emit_d32_reloc(cbuf, displace, disp_reloc, 1);
           } else {
             emit_d32      (cbuf, displace);
           }
         }
         else {                // Normal base + offset
           emit_rm(cbuf, 0x2, reg_encoding, base);
-          if ( displace_is_oop ) {
-            emit_d32_reloc(cbuf, displace, relocInfo::oop_type, 1);
+          if ( disp_reloc != relocInfo::none ) {
+            emit_d32_reloc(cbuf, displace, disp_reloc, 1);
           } else {
             emit_d32      (cbuf, displace);
           }
@@ -410,7 +410,7 @@
     }
     else {                    // If 8-bit displacement, mode 0x1
       if ((displace >= -128) && (displace <= 127)
-          && !(displace_is_oop) ) {
+          && (disp_reloc == relocInfo::none) ) {
         emit_rm(cbuf, 0x1, reg_encoding, 0x4);
         emit_rm(cbuf, scale, index, base);
         emit_d8(cbuf, displace);
@@ -423,8 +423,8 @@
           emit_rm(cbuf, 0x2, reg_encoding, 0x4);
           emit_rm(cbuf, scale, index, base);
         }
-        if ( displace_is_oop ) {
-          emit_d32_reloc(cbuf, displace, relocInfo::oop_type, 1);
+        if ( disp_reloc != relocInfo::none ) {
+          emit_d32_reloc(cbuf, displace, disp_reloc, 1);
         } else {
           emit_d32      (cbuf, displace);
         }
@@ -689,7 +689,7 @@
                         int opcode, const char *op_str, int size, outputStream* st ) {
   if( cbuf ) {
     emit_opcode  (*cbuf, opcode );
-    encode_RegMem(*cbuf, Matcher::_regEncode[reg], ESP_enc, 0x4, 0, offset, false);
+    encode_RegMem(*cbuf, Matcher::_regEncode[reg], ESP_enc, 0x4, 0, offset, relocInfo::none);
 #ifndef PRODUCT
   } else if( !do_size ) {
     if( size != 0 ) st->print("\n\t");
@@ -1090,7 +1090,7 @@
     }
     if( cbuf ) {
       emit_opcode  (*cbuf, op );
-      encode_RegMem(*cbuf, 0x0, ESP_enc, 0x4, 0, offset, false);
+      encode_RegMem(*cbuf, 0x0, ESP_enc, 0x4, 0, offset, relocInfo::none);
       emit_opcode  (*cbuf, 0xDD );           // FSTP   ST(i)
       emit_d8      (*cbuf, 0xD8+Matcher::_regEncode[dst_first] );
 #ifndef PRODUCT
@@ -1260,8 +1260,8 @@
   if (base == NULL)  return;  // CodeBuffer::expand failed
   // static stub relocation stores the instruction address of the call
   __ relocate(static_stub_Relocation::spec(mark), RELOC_IMM32);
-  // static stub relocation also tags the methodOop in the code-stream.
-  __ movoop(rbx, (jobject)NULL);  // method is zapped till fixup time
+  // static stub relocation also tags the Method* in the code-stream.
+  __ mov_metadata(rbx, (Metadata*)NULL);  // method is zapped till fixup time
   // This is recognized as unresolved by relocs/nativeInst/ic code
   __ jump(RuntimeAddress(__ pc()));
 
@@ -1891,26 +1891,15 @@
   %}
 
   enc_class Java_Dynamic_Call (method meth) %{    // JAVA DYNAMIC CALL
-    // !!!!!
-    // Generate  "Mov EAX,0x00", placeholder instruction to load oop-info
-    // emit_call_dynamic_prologue( cbuf );
-    cbuf.set_insts_mark();
-    emit_opcode(cbuf, 0xB8 + EAX_enc);        // mov    EAX,-1
-    emit_d32_reloc(cbuf, (int)Universe::non_oop_word(), oop_Relocation::spec_for_immediate(), RELOC_IMM32);
-    address  virtual_call_oop_addr = cbuf.insts_mark();
-    // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
-    // who we intended to call.
-    cbuf.set_insts_mark();
-    $$$emit8$primary;
-    emit_d32_reloc(cbuf, ($meth$$method - (int)(cbuf.insts_end()) - 4),
-                virtual_call_Relocation::spec(virtual_call_oop_addr), RELOC_IMM32 );
+    MacroAssembler _masm(&cbuf);
+    __ ic_call((address)$meth$$method);
   %}
 
   enc_class Java_Compiled_Call (method meth) %{    // JAVA COMPILED CALL
-    int disp = in_bytes(methodOopDesc::from_compiled_offset());
+    int disp = in_bytes(Method::from_compiled_offset());
     assert( -128 <= disp && disp <= 127, "compiled_code_offset isn't small");
 
-    // CALL *[EAX+in_bytes(methodOopDesc::from_compiled_code_entry_point_offset())]
+    // CALL *[EAX+in_bytes(Method::from_compiled_code_entry_point_offset())]
     cbuf.set_insts_mark();
     $$$emit8$primary;
     emit_rm(cbuf, 0x01, $secondary, EAX_enc );  // R/M byte
@@ -2127,8 +2116,8 @@
     int index = $mem$$index;
     int scale = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop();
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc();
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_reloc);
   %}
 
   enc_class RegMem_Hi(eRegL ereg, memory mem) %{    // emit_reg_mem
@@ -2137,8 +2126,8 @@
     int index = $mem$$index;
     int scale = $mem$$scale;
     int displace = $mem$$disp + 4;      // Offset is 4 further in memory
-    assert( !$mem->disp_is_oop(), "Cannot add 4 to oop" );
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, false/*disp_is_oop*/);
+    assert( $mem->disp_reloc() == relocInfo::none, "Cannot add 4 to oop" );
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, relocInfo::none);
   %}
 
   enc_class move_long_small_shift( eRegL dst, immI_1_31 cnt ) %{
@@ -2192,8 +2181,8 @@
     int index    = $mem$$index;
     int scale    = $mem$$scale;
     int displace = $mem$$disp + $disp_for_half$$constant;
-    bool disp_is_oop = false;
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = relocInfo::none;
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_reloc);
   %}
 
   // !!!!! Special Custom Code used by MemMove, and stack access instructions !!!!!
@@ -2207,8 +2196,8 @@
     int index    = $mem$$index;
     int scale    = $mem$$scale;
     int displace = $mem$$disp;
-    assert( !$mem->disp_is_oop(), "No oops here because no relo info allowed" );
-    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, false);
+    assert( $mem->disp_reloc() == relocInfo::none, "No oops here because no reloc info allowed" );
+    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, relocInfo::none);
   %}
 
   enc_class RMopc_Mem (immI rm_opcode, memory mem) %{
@@ -2217,8 +2206,8 @@
     int index    = $mem$$index;
     int scale    = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop(); // disp-as-oop when working with static globals
-    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc(); // disp-as-oop when working with static globals
+    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_reloc);
   %}
 
   enc_class RegLea (rRegI dst, rRegI src0, immI src1 ) %{    // emit_reg_lea
@@ -2227,8 +2216,8 @@
     int index        = 0x04;            // 0x04 indicates no index
     int scale        = 0x00;            // 0x00 indicates no scale
     int displace     = $src1$$constant; // 0x00 indicates no displacement
-    bool disp_is_oop = false;
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = relocInfo::none;
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_reloc);
   %}
 
   enc_class min_enc (rRegI dst, rRegI src) %{    // MIN
@@ -2263,7 +2252,7 @@
     int index = $mem$$index;
     int scale = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop(); // disp-as-oop when working with static globals
+    relocInfo::relocType disp_reloc = $mem->disp_reloc(); // disp-as-oop when working with static globals
     if( $src$$reg != FPR1L_enc ) {
       reg_encoding = 0x3;  // Store & pop
       emit_opcode( cbuf, 0xD9 ); // FLD (i.e., push it)
@@ -2271,7 +2260,7 @@
     }
     cbuf.set_insts_mark();       // Mark start of opcode for reloc info in mem operand
     emit_opcode(cbuf,$primary);
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_reloc);
   %}
 
   enc_class neg_reg(rRegI dst) %{
@@ -2321,8 +2310,8 @@
     int index = $mem$$index;
     int scale = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop();
-    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc();
+    encode_RegMem(cbuf, reg_encoding, base, index, scale, displace, disp_reloc);
     // ADD $p,$tmp
     emit_opcode(cbuf,0x03);
     emit_rm(cbuf, 0x3, $p$$reg, tmpReg);
@@ -3645,8 +3634,8 @@
     int index    = $mem$$index;
     int scale    = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop(); // disp-as-oop when working with static globals
-    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc(); // disp-as-oop when working with static globals
+    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_reloc);
     store_to_stackslot( cbuf, 0x0DF, 0x07, $dst$$disp );
   %}
 
@@ -3663,8 +3652,8 @@
     int index    = $mem$$index;
     int scale    = $mem$$scale;
     int displace = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop(); // disp-as-oop when working with static globals
-    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc(); // disp-as-oop when working with static globals
+    encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace, disp_reloc);
   %}
 
   // Safepoint Poll.  This polls the safepoint page, and causes an
@@ -5817,8 +5806,8 @@
   ins_encode %{
     //__ popcntl($dst$$Register, $mem$$Address$$first);
     //__ popcntl($tmp$$Register, $mem$$Address$$second);
-    __ popcntl($dst$$Register, Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp, false));
-    __ popcntl($tmp$$Register, Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp + 4, false));
+    __ popcntl($dst$$Register, Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp, relocInfo::none));
+    __ popcntl($tmp$$Register, Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp + 4, relocInfo::none));
     __ addl($dst$$Register, $tmp$$Register);
   %}
   ins_pipe(ialu_reg);
@@ -6185,8 +6174,8 @@
             "MOV    $dst.hi,$mem+4" %}
 
   ins_encode %{
-    Address Amemlo = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp, false);
-    Address Amemhi = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp + 4, false);
+    Address Amemlo = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp, relocInfo::none);
+    Address Amemhi = Address::make_raw($mem$$base, $mem$$index, $mem$$scale, $mem$$disp + 4, relocInfo::none);
     __ movl($dst$$Register, Amemlo);
     __ movl(HIGH_FROM_LOW($dst$$Register), Amemhi);
   %}
@@ -11795,7 +11784,7 @@
 // Only works because non-oop pointers must be raw pointers
 // and raw pointers have no anti-dependencies.
 instruct compP_mem_eReg( eFlagsRegU cr, eRegP op1, memory op2 ) %{
-  predicate( !n->in(2)->in(2)->bottom_type()->isa_oop_ptr() );
+  predicate( n->in(2)->in(2)->bottom_type()->reloc() == relocInfo::none );
   match(Set cr (CmpP op1 (LoadP op2)));
 
   format %{ "CMPu   $op1,$op2" %}
--- a/src/cpu/x86/vm/x86_64.ad	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/x86/vm/x86_64.ad	Fri Sep 14 21:50:58 2012 -0700
@@ -516,6 +516,7 @@
 #ifdef ASSERT
   if (rspec.reloc()->type() == relocInfo::oop_type &&
       d32 != 0 && d32 != (intptr_t) Universe::non_oop_word()) {
+    assert(Universe::heap()->is_in_reserved((address)(intptr_t)d32), "should be real oop");
     assert(oop((intptr_t)d32)->is_oop() && (ScavengeRootsInCode || !oop((intptr_t)d32)->is_scavengable()), "cannot embed scavengable oops in code");
   }
 #endif
@@ -542,6 +543,7 @@
 #ifdef ASSERT
   if (rspec.reloc()->type() == relocInfo::oop_type &&
       d64 != 0 && d64 != (int64_t) Universe::non_oop_word()) {
+    assert(Universe::heap()->is_in_reserved((address)d64), "should be real oop");
     assert(oop(d64)->is_oop() && (ScavengeRootsInCode || !oop(d64)->is_scavengable()),
            "cannot embed scavengable oops in code");
   }
@@ -568,9 +570,9 @@
    // rRegI ereg, memory mem) %{    // emit_reg_mem
 void encode_RegMem(CodeBuffer &cbuf,
                    int reg,
-                   int base, int index, int scale, int disp, bool disp_is_oop)
+                   int base, int index, int scale, int disp, relocInfo::relocType disp_reloc)
 {
-  assert(!disp_is_oop, "cannot have disp");
+  assert(disp_reloc == relocInfo::none, "cannot have disp");
   int regenc = reg & 7;
   int baseenc = base & 7;
   int indexenc = index & 7;
@@ -580,7 +582,7 @@
     // If no displacement, mode is 0x0; unless base is [RBP] or [R13]
     if (disp == 0 && base != RBP_enc && base != R13_enc) {
       emit_rm(cbuf, 0x0, regenc, baseenc); // *
-    } else if (-0x80 <= disp && disp < 0x80 && !disp_is_oop) {
+    } else if (-0x80 <= disp && disp < 0x80 && disp_reloc == relocInfo::none) {
       // If 8-bit displacement, mode 0x1
       emit_rm(cbuf, 0x1, regenc, baseenc); // *
       emit_d8(cbuf, disp);
@@ -588,7 +590,7 @@
       // If 32-bit displacement
       if (base == -1) { // Special flag for absolute address
         emit_rm(cbuf, 0x0, regenc, 0x5); // *
-        if (disp_is_oop) {
+        if (disp_reloc != relocInfo::none) {
           emit_d32_reloc(cbuf, disp, relocInfo::oop_type, RELOC_DISP32);
         } else {
           emit_d32(cbuf, disp);
@@ -596,7 +598,7 @@
       } else {
         // Normal base + offset
         emit_rm(cbuf, 0x2, regenc, baseenc); // *
-        if (disp_is_oop) {
+        if (disp_reloc != relocInfo::none) {
           emit_d32_reloc(cbuf, disp, relocInfo::oop_type, RELOC_DISP32);
         } else {
           emit_d32(cbuf, disp);
@@ -611,7 +613,7 @@
       emit_rm(cbuf, 0x0, regenc, 0x4); // *
       emit_rm(cbuf, scale, indexenc, baseenc);
     } else {
-      if (-0x80 <= disp && disp < 0x80 && !disp_is_oop) {
+      if (-0x80 <= disp && disp < 0x80 && disp_reloc == relocInfo::none) {
         // If 8-bit displacement, mode 0x1
         emit_rm(cbuf, 0x1, regenc, 0x4); // *
         emit_rm(cbuf, scale, indexenc, baseenc);
@@ -625,7 +627,7 @@
           emit_rm(cbuf, 0x2, regenc, 0x4);
           emit_rm(cbuf, scale, indexenc, baseenc); // *
         }
-        if (disp_is_oop) {
+        if (disp_reloc != relocInfo::none) {
           emit_d32_reloc(cbuf, disp, relocInfo::oop_type, RELOC_DISP32);
         } else {
           emit_d32(cbuf, disp);
@@ -1382,8 +1384,8 @@
   if (base == NULL)  return;  // CodeBuffer::expand failed
   // static stub relocation stores the instruction address of the call
   __ relocate(static_stub_Relocation::spec(mark), RELOC_IMM64);
-  // static stub relocation also tags the methodOop in the code-stream.
-  __ movoop(rbx, (jobject) NULL);  // method is zapped till fixup time
+  // static stub relocation also tags the Method* in the code-stream.
+  __ mov_metadata(rbx, (Metadata*) NULL);  // method is zapped till fixup time
   // This is recognized as unresolved by relocs/nativeinst/ic code
   __ jump(RuntimeAddress(__ pc()));
 
@@ -2044,35 +2046,15 @@
     }
   %}
 
-  enc_class Java_Dynamic_Call(method meth)
-  %{
-    // JAVA DYNAMIC CALL
-    // !!!!!
-    // Generate  "movq rax, -1", placeholder instruction to load oop-info
-    // emit_call_dynamic_prologue( cbuf );
-    cbuf.set_insts_mark();
-
-    // movq rax, -1
-    emit_opcode(cbuf, Assembler::REX_W);
-    emit_opcode(cbuf, 0xB8 | RAX_enc);
-    emit_d64_reloc(cbuf,
-                   (int64_t) Universe::non_oop_word(),
-                   oop_Relocation::spec_for_immediate(), RELOC_IMM64);
-    address virtual_call_oop_addr = cbuf.insts_mark();
-    // CALL to fixup routine.  Fixup routine uses ScopeDesc info to determine
-    // who we intended to call.
-    cbuf.set_insts_mark();
-    $$$emit8$primary;
-    emit_d32_reloc(cbuf,
-                   (int) ($meth$$method - ((intptr_t) cbuf.insts_end()) - 4),
-                   virtual_call_Relocation::spec(virtual_call_oop_addr),
-                   RELOC_DISP32);
+  enc_class Java_Dynamic_Call(method meth) %{
+    MacroAssembler _masm(&cbuf);
+    __ ic_call((address)$meth$$method);
   %}
 
   enc_class Java_Compiled_Call(method meth)
   %{
     // JAVA COMPILED CALL
-    int disp = in_bytes(methodOopDesc:: from_compiled_offset());
+    int disp = in_bytes(Method:: from_compiled_offset());
 
     // XXX XXX offset is 128 is 1.5 NON-PRODUCT !!!
     // assert(-0x80 <= disp && disp < 0x80, "compiled_code_offset isn't small");
@@ -2190,8 +2172,8 @@
     }
     emit_opcode(cbuf, 0xB8 | dstenc);
     // This next line should be generated from ADLC
-    if ($src->constant_is_oop()) {
-      emit_d64_reloc(cbuf, $src$$constant, relocInfo::oop_type, RELOC_IMM64);
+    if ($src->constant_reloc() != relocInfo::none) {
+      emit_d64_reloc(cbuf, $src$$constant, $src->constant_reloc(), RELOC_IMM64);
     } else {
       emit_d64(cbuf, $src$$constant);
     }
@@ -2452,9 +2434,9 @@
     int index = $mem$$index;
     int scale = $mem$$scale;
     int disp = $mem$$disp;
-    bool disp_is_oop = $mem->disp_is_oop();
-
-    encode_RegMem(cbuf, reg, base, index, scale, disp, disp_is_oop);
+    relocInfo::relocType disp_reloc = $mem->disp_reloc();
+
+    encode_RegMem(cbuf, reg, base, index, scale, disp, disp_reloc);
   %}
 
   enc_class RM_opc_mem(immI rm_opcode, memory mem)
@@ -2467,11 +2449,11 @@
     int scale = $mem$$scale;
     int displace = $mem$$disp;
 
-    bool disp_is_oop = $mem->disp_is_oop(); // disp-as-oop when
+    relocInfo::relocType disp_reloc = $mem->disp_reloc();       // disp-as-oop when
                                             // working with static
                                             // globals
     encode_RegMem(cbuf, rm_byte_opcode, base, index, scale, displace,
-                  disp_is_oop);
+                  disp_reloc);
   %}
 
   enc_class reg_lea(rRegI dst, rRegI src0, immI src1)
@@ -2481,9 +2463,9 @@
     int index        = 0x04;            // 0x04 indicates no index
     int scale        = 0x00;            // 0x00 indicates no scale
     int displace     = $src1$$constant; // 0x00 indicates no displacement
-    bool disp_is_oop = false;
+    relocInfo::relocType disp_reloc = relocInfo::none;
     encode_RegMem(cbuf, reg_encoding, base, index, scale, displace,
-                  disp_is_oop);
+                  disp_reloc);
   %}
 
   enc_class neg_reg(rRegI dst)
@@ -3169,7 +3151,7 @@
 
 operand immP31()
 %{
-  predicate(!n->as_Type()->type()->isa_oopptr()
+  predicate(n->as_Type()->type()->reloc() == relocInfo::none
             && (n->get_ptr() >> 31) == 0);
   match(ConP);
 
@@ -6466,8 +6448,8 @@
 %}
 
 instruct decodeHeapOop(rRegP dst, rRegN src, rFlagsReg cr) %{
-  predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull &&
-            n->bottom_type()->is_oopptr()->ptr() != TypePtr::Constant);
+  predicate(n->bottom_type()->is_ptr()->ptr() != TypePtr::NotNull &&
+            n->bottom_type()->is_ptr()->ptr() != TypePtr::Constant);
   match(Set dst (DecodeN src));
   effect(KILL cr);
   format %{ "decode_heap_oop $dst,$src" %}
@@ -6483,8 +6465,8 @@
 %}
 
 instruct decodeHeapOop_not_null(rRegP dst, rRegN src, rFlagsReg cr) %{
-  predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull ||
-            n->bottom_type()->is_oopptr()->ptr() == TypePtr::Constant);
+  predicate(n->bottom_type()->is_ptr()->ptr() == TypePtr::NotNull ||
+            n->bottom_type()->is_ptr()->ptr() == TypePtr::Constant);
   match(Set dst (DecodeN src));
   effect(KILL cr);
   format %{ "decode_heap_oop_not_null $dst,$src" %}
@@ -10348,7 +10330,7 @@
 // and raw pointers have no anti-dependencies.
 instruct compP_mem_rReg(rFlagsRegU cr, rRegP op1, memory op2)
 %{
-  predicate(!n->in(2)->in(2)->bottom_type()->isa_oop_ptr());
+  predicate(n->in(2)->in(2)->bottom_type()->reloc() == relocInfo::none);
   match(Set cr (CmpP op1 (LoadP op2)));
 
   format %{ "cmpq    $op1, $op2\t# raw ptr" %}
@@ -10757,8 +10739,8 @@
 
   ins_cost(1100);  // slightly larger than the next version
   format %{ "movq    rdi, [$sub + in_bytes(Klass::secondary_supers_offset())]\n\t"
-            "movl    rcx, [rdi + arrayOopDesc::length_offset_in_bytes()]\t# length to scan\n\t"
-            "addq    rdi, arrayOopDex::base_offset_in_bytes(T_OBJECT)\t# Skip to start of data; set NZ in case count is zero\n\t"
+            "movl    rcx, [rdi + Array<Klass*>::length_offset_in_bytes()]\t# length to scan\n\t"
+            "addq    rdi, Array<Klass*>::base_offset_in_bytes()\t# Skip to start of data; set NZ in case count is zero\n\t"
             "repne   scasq\t# Scan *rdi++ for a match with rax while rcx--\n\t"
             "jne,s   miss\t\t# Missed: rdi not-zero\n\t"
             "movq    [$sub + in_bytes(Klass::secondary_super_cache_offset())], $super\t# Hit: update cache\n\t"
@@ -10780,8 +10762,8 @@
 
   ins_cost(1000);
   format %{ "movq    rdi, [$sub + in_bytes(Klass::secondary_supers_offset())]\n\t"
-            "movl    rcx, [rdi + arrayOopDesc::length_offset_in_bytes()]\t# length to scan\n\t"
-            "addq    rdi, arrayOopDex::base_offset_in_bytes(T_OBJECT)\t# Skip to start of data; set NZ in case count is zero\n\t"
+            "movl    rcx, [rdi + Array<Klass*>::length_offset_in_bytes()]\t# length to scan\n\t"
+            "addq    rdi, Array<Klass*>::base_offset_in_bytes()\t# Skip to start of data; set NZ in case count is zero\n\t"
             "repne   scasq\t# Scan *rdi++ for a match with rax while cx-- != 0\n\t"
             "jne,s   miss\t\t# Missed: flags nz\n\t"
             "movq    [$sub + in_bytes(Klass::secondary_super_cache_offset())], $super\t# Hit: update cache\n\t"
@@ -11060,7 +11042,6 @@
   ins_cost(300);
   format %{ "movq    rax, #Universe::non_oop_word()\n\t"
             "call,dynamic " %}
-  opcode(0xE8); /* E8 cd */
   ins_encode(Java_Dynamic_Call(meth), call_epilog);
   ins_pipe(pipe_slow);
   ins_alignment(4);
--- a/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/bytecodeInterpreter_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -30,8 +30,8 @@
 #include "interpreter/bytecodeInterpreter.inline.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interpreterRuntime.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/bytecodeInterpreter_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -41,7 +41,7 @@
   inline void set_locals(intptr_t* new_locals) {
     _locals = new_locals;
   }
-  inline void set_method(methodOop new_method) {
+  inline void set_method(Method* new_method) {
     _method = new_method;
   }
   inline interpreterState self_link() {
@@ -68,7 +68,7 @@
   inline void set_thread(JavaThread* new_thread) {
     _thread = new_thread;
   }
-  inline void set_constants(constantPoolCacheOop new_constants) {
+  inline void set_constants(ConstantPoolCache* new_constants) {
     _constants = new_constants;
   }
   inline oop oop_temp() {
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -31,8 +31,8 @@
 #include "interpreter/interpreterGenerator.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
@@ -65,7 +65,7 @@
   CALL_VM_NOCHECK_NOFIX(func)                   \
   fixup_after_potential_safepoint()
 
-int CppInterpreter::normal_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::normal_entry(Method* method, intptr_t UNUSED, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
 
   // Allocate and initialize our frame.
@@ -90,7 +90,7 @@
 
   InterpreterFrame *frame = thread->top_zero_frame()->as_interpreter_frame();
   interpreterState istate = frame->interpreter_state();
-  methodOop method = istate->method();
+  Method* method = istate->method();
 
   intptr_t *result = NULL;
   int result_slots = 0;
@@ -114,7 +114,7 @@
 
     // Examine the message from the interpreter to decide what to do
     if (istate->msg() == BytecodeInterpreter::call_method) {
-      methodOop callee = istate->callee();
+      Method* callee = istate->callee();
 
       // Trim back the stack to put the parameters at the top
       stack->set_sp(istate->stack() + 1);
@@ -215,7 +215,7 @@
     stack->push(result[-i]);
 }
 
-int CppInterpreter::native_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::native_entry(Method* method, intptr_t UNUSED, TRAPS) {
   // Make sure method is native and not abstract
   assert(method->is_native() && !method->is_abstract(), "should be");
 
@@ -485,7 +485,7 @@
   return 0;
 }
 
-int CppInterpreter::accessor_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::accessor_entry(Method* method, intptr_t UNUSED, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
   ZeroStack *stack = thread->zero_stack();
   intptr_t *locals = stack->sp();
@@ -518,7 +518,7 @@
 
   // Get the entry from the constant pool cache, and drop into
   // the slow path if it has not been resolved
-  constantPoolCacheOop cache = method->constants()->cache();
+  ConstantPoolCache* cache = method->constants()->cache();
   ConstantPoolCacheEntry* entry = cache->entry_at(index);
   if (!entry->is_resolved(Bytecodes::_getfield)) {
     return normal_entry(method, 0, THREAD);
@@ -613,7 +613,7 @@
   return 0;
 }
 
-int CppInterpreter::empty_entry(methodOop method, intptr_t UNUSED, TRAPS) {
+int CppInterpreter::empty_entry(Method* method, intptr_t UNUSED, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
   ZeroStack *stack = thread->zero_stack();
 
@@ -629,7 +629,7 @@
   return 0;
 }
 
-int CppInterpreter::method_handle_entry(methodOop method,
+int CppInterpreter::method_handle_entry(Method* method,
                                         intptr_t UNUSED, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
   ZeroStack *stack = thread->zero_stack();
@@ -737,7 +737,7 @@
   MethodHandles::EntryKind entry_kind =
     (MethodHandles::EntryKind) (((intptr_t) entry) & 0xffffffff);
 
-  methodOop method = NULL;
+  Method* method = NULL;
   switch (entry_kind) {
   case MethodHandles::_invokestatic_mh:
     direct_to_method = true;
@@ -761,13 +761,13 @@
       }
       if (entry_kind != MethodHandles::_invokespecial_mh) {
         intptr_t index = java_lang_invoke_DirectMethodHandle::vmindex(method_handle);
-        instanceKlass* rcvrKlass =
-          (instanceKlass *) receiver->klass()->klass_part();
+        InstanceKlass* rcvrKlass =
+          (InstanceKlass *) receiver->klass();
         if (entry_kind == MethodHandles::_invokevirtual_mh) {
-          method = (methodOop) rcvrKlass->start_of_vtable()[index];
+          method = (Method*) rcvrKlass->start_of_vtable()[index];
         }
         else {
-          oop iclass = java_lang_invoke_MethodHandle::vmtarget(method_handle);
+          oop iclass = java_lang_invoke_MethodHandle::next_target(method_handle);
           itableOffsetEntry* ki =
             (itableOffsetEntry *) rcvrKlass->start_of_itable();
           int i, length = rcvrKlass->itable_length();
@@ -873,7 +873,7 @@
   case MethodHandles::_adapter_retype_only:
   case MethodHandles::_adapter_retype_raw:
     src_rtype = result_type_of_handle(
-      java_lang_invoke_MethodHandle::vmtarget(method_handle));
+      java_lang_invoke_MethodHandle::next_target(method_handle));
     dst_rtype = result_type_of_handle(method_handle);
     break;
 
@@ -883,12 +883,12 @@
         java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
       oop arg = VMSLOTS_OBJECT(arg_slot);
       if (arg != NULL) {
-        klassOop objKlassOop = arg->klass();
-        klassOop klassOf = java_lang_Class::as_klassOop(
+        Klass* objKlassOop = arg->klass();
+        Klass* klassOf = java_lang_Class::as_Klass(
           java_lang_invoke_AdapterMethodHandle::argument(method_handle));
 
         if (objKlassOop != klassOf &&
-            !objKlassOop->klass_part()->is_subtype_of(klassOf)) {
+            !objKlassOop->is_subtype_of(klassOf)) {
           ResourceMark rm(THREAD);
           const char* objName = Klass::cast(objKlassOop)->external_name();
           const char* klassName = Klass::cast(klassOf)->external_name();
@@ -1089,14 +1089,14 @@
   if (direct_to_method) {
     if (method == NULL) {
       method =
-        (methodOop) java_lang_invoke_MethodHandle::vmtarget(method_handle);
+        (Method*) java_lang_invoke_MethodHandle::vmtarget(method_handle);
     }
     address entry_point = method->from_interpreted_entry();
     Interpreter::invoke_method(method, entry_point, THREAD);
   }
   else {
     process_method_handle(
-      java_lang_invoke_MethodHandle::vmtarget(method_handle), THREAD);
+      java_lang_invoke_MethodHandle::next_target(method_handle), THREAD);
   }
   // NB all oops now trashed
 
@@ -1172,7 +1172,7 @@
 BasicType CppInterpreter::result_type_of_handle(oop method_handle) {
   oop method_type = java_lang_invoke_MethodHandle::type(method_handle);
   oop return_type = java_lang_invoke_MethodType::rtype(method_type);
-  return java_lang_Class::as_BasicType(return_type, (klassOop *) NULL);
+  return java_lang_Class::as_BasicType(return_type, (Klass* *) NULL);
 }
 
 intptr_t* CppInterpreter::calculate_unwind_sp(ZeroStack* stack,
@@ -1189,7 +1189,7 @@
   THROW_MSG(name, message);
 IRT_END
 
-InterpreterFrame *InterpreterFrame::build(const methodOop method, TRAPS) {
+InterpreterFrame *InterpreterFrame::build(Method* const method, TRAPS) {
   JavaThread *thread = (JavaThread *) THREAD;
   ZeroStack *stack = thread->zero_stack();
 
@@ -1285,7 +1285,7 @@
   return i;
 }
 
-BasicType CppInterpreter::result_type_of(methodOop method) {
+BasicType CppInterpreter::result_type_of(Method* method) {
   BasicType t;
   switch (method->result_index()) {
     case 0 : t = T_BOOLEAN; break;
@@ -1440,7 +1440,7 @@
   return (InterpreterFrame *) fp;
 }
 
-int AbstractInterpreter::layout_activation(methodOop method,
+int AbstractInterpreter::layout_activation(Method* method,
                                            int       tempcount,
                                            int       popframe_extra_args,
                                            int       moncount,
@@ -1496,7 +1496,7 @@
 void BytecodeInterpreter::layout_interpreterState(interpreterState istate,
                                                   frame*    caller,
                                                   frame*    current,
-                                                  methodOop method,
+                                                  Method* method,
                                                   intptr_t* locals,
                                                   intptr_t* stack,
                                                   intptr_t* stack_base,
@@ -1539,7 +1539,7 @@
 
 // Helper for (runtime) stack overflow checks
 
-int AbstractInterpreter::size_top_interpreter_activation(methodOop method) {
+int AbstractInterpreter::size_top_interpreter_activation(Method* method) {
   return 0;
 }
 
--- a/src/cpu/zero/vm/cppInterpreter_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/cppInterpreter_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -32,11 +32,11 @@
 
  public:
   // Method entries
-  static int normal_entry(methodOop method, intptr_t UNUSED, TRAPS);
-  static int native_entry(methodOop method, intptr_t UNUSED, TRAPS);
-  static int accessor_entry(methodOop method, intptr_t UNUSED, TRAPS);
-  static int empty_entry(methodOop method, intptr_t UNUSED, TRAPS);
-  static int method_handle_entry(methodOop method, intptr_t UNUSED, TRAPS);
+  static int normal_entry(Method* method, intptr_t UNUSED, TRAPS);
+  static int native_entry(Method* method, intptr_t UNUSED, TRAPS);
+  static int accessor_entry(Method* method, intptr_t UNUSED, TRAPS);
+  static int empty_entry(Method* method, intptr_t UNUSED, TRAPS);
+  static int method_handle_entry(Method* method, intptr_t UNUSED, TRAPS);
 
  public:
   // Main loop of normal_entry
@@ -53,6 +53,6 @@
 
  private:
   // Fast result type determination
-  static BasicType result_type_of(methodOop method);
+  static BasicType result_type_of(Method* method);
 
 #endif // CPU_ZERO_VM_CPPINTERPRETER_ZERO_HPP
--- a/src/cpu/zero/vm/dump_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2007 Red Hat, Inc.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "assembler_zero.inline.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/space.inline.hpp"
-
-void CompactingPermGenGen::generate_vtable_methods(void** vtbl_list,
-                                                   void** vtable,
-                                                   char** md_top,
-                                                   char*  md_end,
-                                                   char** mc_top,
-                                                   char*  mc_end) {
-  ShouldNotCallThis();
-}
--- a/src/cpu/zero/vm/entry_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/entry_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -44,21 +44,21 @@
   }
 
  private:
-  typedef int (*NormalEntryFunc)(methodOop method,
+  typedef int (*NormalEntryFunc)(Method* method,
                                  intptr_t  base_pc,
                                  TRAPS);
-  typedef int (*OSREntryFunc)(methodOop method,
+  typedef int (*OSREntryFunc)(Method* method,
                               address   osr_buf,
                               intptr_t  base_pc,
                               TRAPS);
 
  public:
-  void invoke(methodOop method, TRAPS) const {
+  void invoke(Method* method, TRAPS) const {
     maybe_deoptimize(
       ((NormalEntryFunc) entry_point())(method, (intptr_t) this, THREAD),
       THREAD);
   }
-  void invoke_osr(methodOop method, address osr_buf, TRAPS) const {
+  void invoke_osr(Method* method, address osr_buf, TRAPS) const {
     maybe_deoptimize(
       ((OSREntryFunc) entry_point())(method, osr_buf, (intptr_t) this, THREAD),
       THREAD);
--- a/src/cpu/zero/vm/frame_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/frame_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -29,7 +29,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/frame.inline.hpp"
 #include "runtime/handles.inline.hpp"
@@ -118,7 +118,7 @@
 BasicType frame::interpreter_frame_result(oop* oop_result,
                                           jvalue* value_result) {
   assert(is_interpreted_frame(), "interpreted frame expected");
-  methodOop method = interpreter_frame_method();
+  Method* method = interpreter_frame_method();
   BasicType type = method->result_type();
   intptr_t* tos_addr = (intptr_t *) interpreter_frame_tos_address();
   oop obj;
--- a/src/cpu/zero/vm/frame_zero.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/frame_zero.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -93,11 +93,11 @@
   return (intptr_t*) &(get_interpreterState()->_bcp);
 }
 
-inline constantPoolCacheOop* frame::interpreter_frame_cache_addr() const {
+inline ConstantPoolCache** frame::interpreter_frame_cache_addr() const {
   return &(get_interpreterState()->_constants);
 }
 
-inline methodOop* frame::interpreter_frame_method_addr() const {
+inline Method** frame::interpreter_frame_method_addr() const {
   return &(get_interpreterState()->_method);
 }
 
--- a/src/cpu/zero/vm/icBuffer_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/icBuffer_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -40,7 +40,7 @@
 }
 
 void InlineCacheBuffer::assemble_ic_buffer_code(address code_begin,
-                                                oop cached_oop,
+                                                Metadata* cached_oop,
                                                 address entry_point) {
   // NB ic_stub_code_size() must return the size of the code we generate
   ShouldNotCallThis();
@@ -51,7 +51,7 @@
   ShouldNotCallThis();
 }
 
-oop InlineCacheBuffer::ic_buffer_cached_oop(address code_begin) {
+Metadata* InlineCacheBuffer::ic_buffer_cached_oop(address code_begin) {
   // NB ic_stub_code_size() must return the size of the code we generate
   ShouldNotCallThis();
 }
--- a/src/cpu/zero/vm/interp_masm_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/interp_masm_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -29,8 +29,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/zero/vm/interpreterFrame_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/interpreterFrame_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -27,7 +27,7 @@
 #define CPU_ZERO_VM_INTERPRETERFRAME_ZERO_HPP
 
 #include "interpreter/bytecodeInterpreter.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/thread.hpp"
 #include "stack_zero.hpp"
 
@@ -63,7 +63,7 @@
   };
 
  public:
-  static InterpreterFrame *build(const methodOop method, TRAPS);
+  static InterpreterFrame *build(Method* const method, TRAPS);
   static InterpreterFrame *build(int size, TRAPS);
 
  public:
--- a/src/cpu/zero/vm/interpreterRT_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/interpreterRT_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -28,7 +28,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/icache.hpp"
@@ -142,7 +142,7 @@
 
 IRT_ENTRY(address,
           InterpreterRuntime::slow_signature_handler(JavaThread* thread,
-                                                     methodOop   method,
+                                                     Method*     method,
                                                      intptr_t*   unused1,
                                                      intptr_t*   unused2))
   ZeroStack *stack = thread->zero_stack();
--- a/src/cpu/zero/vm/interpreter_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/interpreter_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -31,8 +31,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/zero/vm/interpreter_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/interpreter_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -27,10 +27,10 @@
 #define CPU_ZERO_VM_INTERPRETER_ZERO_HPP
 
  public:
-  static void invoke_method(methodOop method, address entry_point, TRAPS) {
+  static void invoke_method(Method* method, address entry_point, TRAPS) {
     ((ZeroEntry *) entry_point)->invoke(method, THREAD);
   }
-  static void invoke_osr(methodOop method,
+  static void invoke_osr(Method* method,
                          address   entry_point,
                          address   osr_buf,
                          TRAPS) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cpu/zero/vm/metaspaceShared_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2007 Red Hat, Inc.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "assembler_zero.inline.hpp"
+#include "memory/metaspaceShared.hpp"
+
+void MetaspaceShared::generate_vtable_methods(void** vtbl_list,
+                                                   void** vtable,
+                                                   char** md_top,
+                                                   char*  md_end,
+                                                   char** mc_top,
+                                                   char*  mc_end) {
+  ShouldNotCallThis();
+}
--- a/src/cpu/zero/vm/sharedRuntime_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/sharedRuntime_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -30,7 +30,7 @@
 #include "code/icBuffer.hpp"
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/compiledICHolderOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/vframeArray.hpp"
--- a/src/cpu/zero/vm/sharkFrame_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/sharkFrame_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -26,7 +26,7 @@
 #ifndef CPU_ZERO_VM_SHARKFRAME_ZERO_HPP
 #define CPU_ZERO_VM_SHARKFRAME_ZERO_HPP
 
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "stack_zero.hpp"
 
 // |  ...               |
@@ -72,8 +72,8 @@
     return (intptr_t *) value_of_word(unextended_sp_off);
   }
 
-  methodOop method() const {
-    return (methodOop) value_of_word(method_off);
+  Method* method() const {
+    return (Method*) value_of_word(method_off);
   }
 
  public:
--- a/src/cpu/zero/vm/shark_globals_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/shark_globals_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -58,8 +58,7 @@
 define_pd_global(bool,     ProfileInterpreter,           false);
 define_pd_global(intx,     CodeCacheExpansionSize,       32*K );
 define_pd_global(uintx,    CodeCacheMinBlockLength,      1    );
-define_pd_global(uintx,    PermSize,                     12*M );
-define_pd_global(uintx,    MaxPermSize,                  64*M );
+define_pd_global(uintx,    MetaspaceSize,                     12*M );
 define_pd_global(bool,     NeverActAsServerClassMachine, true );
 define_pd_global(uint64_t, MaxRAM,                       1ULL*G);
 define_pd_global(bool,     CICompileOSR,                 true );
--- a/src/cpu/zero/vm/stubGenerator_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/stubGenerator_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -29,7 +29,7 @@
 #include "interpreter/interpreter.hpp"
 #include "nativeInst_zero.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
@@ -61,7 +61,7 @@
     JavaCallWrapper *call_wrapper,
     intptr_t*        result,
     BasicType        result_type,
-    methodOop        method,
+    Method*          method,
     address          entry_point,
     intptr_t*        parameters,
     int              parameter_words,
--- a/src/cpu/zero/vm/templateInterpreter_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/templateInterpreter_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -31,8 +31,8 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
--- a/src/cpu/zero/vm/templateTable_zero.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/cpu/zero/vm/templateTable_zero.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -28,7 +28,7 @@
 #include "interpreter/interpreterRuntime.hpp"
 #include "interpreter/templateTable.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/methodHandles.hpp"
--- a/src/os/bsd/dtrace/generateJvmOffsets.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/bsd/dtrace/generateJvmOffsets.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -45,9 +45,9 @@
 #include "memory/heap.hpp"
 #include "memory/memRegion.hpp"
 #include "memory/universe.hpp"
-#include "oops/constMethodOop.hpp"
+#include "oops/constMethod.hpp"
 #include "oops/klass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/virtualspace.hpp"
@@ -210,7 +210,7 @@
 #endif
 
   GEN_OFFS(Klass, _name);
-  GEN_OFFS(constantPoolOopDesc, _pool_holder);
+  GEN_OFFS(ConstantPool, _pool_holder);
   printf("\n");
 
   GEN_VALUE(OFFSET_HeapBlockHeader_used, (int) offset_of(HeapBlock::Header, _used));
@@ -218,21 +218,21 @@
   printf("\n");
 
   GEN_VALUE(AccessFlags_NATIVE, JVM_ACC_NATIVE);
-  GEN_VALUE(constMethodOopDesc_has_linenumber_table, constMethodOopDesc::_has_linenumber_table);
+  GEN_VALUE(ConstMethod_has_linenumber_table, ConstMethod::_has_linenumber_table);
   GEN_OFFS(AccessFlags, _flags);
   GEN_OFFS(Symbol, _length);
   GEN_OFFS(Symbol, _body);
   printf("\n");
 
-  GEN_OFFS(methodOopDesc, _constMethod);
-  GEN_OFFS(methodOopDesc, _constants);
-  GEN_OFFS(methodOopDesc, _access_flags);
+  GEN_OFFS(Method, _constMethod);
+  GEN_OFFS(Method, _constants);
+  GEN_OFFS(Method, _access_flags);
   printf("\n");
 
-  GEN_OFFS(constMethodOopDesc, _flags);
-  GEN_OFFS(constMethodOopDesc, _code_size);
-  GEN_OFFS(constMethodOopDesc, _name_index);
-  GEN_OFFS(constMethodOopDesc, _signature_index);
+  GEN_OFFS(ConstMethod, _flags);
+  GEN_OFFS(ConstMethod, _code_size);
+  GEN_OFFS(ConstMethod, _name_index);
+  GEN_OFFS(ConstMethod, _signature_index);
   printf("\n");
 
   GEN_OFFS(CodeHeap, _memory);
@@ -273,12 +273,12 @@
 
   GEN_VALUE(SIZE_HeapBlockHeader, (int) sizeof(HeapBlock::Header));
   GEN_SIZE(oopDesc);
-  GEN_SIZE(constantPoolOopDesc);
+  GEN_SIZE(ConstantPool);
   printf("\n");
 
   GEN_SIZE(PcDesc);
-  GEN_SIZE(methodOopDesc);
-  GEN_SIZE(constMethodOopDesc);
+  GEN_SIZE(Method);
+  GEN_SIZE(ConstMethod);
   GEN_SIZE(nmethod);
   GEN_SIZE(CodeBlob);
   GEN_SIZE(BufferBlob);
--- a/src/os/bsd/dtrace/jhelper.d	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/bsd/dtrace/jhelper.d	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -44,7 +44,6 @@
 extern pointer __JvmOffsets;
 
 extern pointer __1cJCodeCacheF_heap_;
-extern pointer __1cIUniverseP_methodKlassObj_;
 extern pointer __1cIUniverseO_collectedHeap_;
 extern pointer __1cIUniverseL_narrow_oop_;
 #ifdef _LP64
@@ -52,6 +51,7 @@
 #endif
 
 extern pointer __1cHnmethodG__vtbl_;
+extern pointer __1cNMethodG__vtbl_;
 extern pointer __1cKBufferBlobG__vtbl_;
 
 #define copyin_ptr(ADDR)    *(pointer*)  copyin((pointer) (ADDR), sizeof(pointer))
@@ -81,7 +81,7 @@
   init_done  = 0;
   this->error = (char *) NULL;
   this->result = (char *) NULL;
-  this->methodOop = 0;
+  this->isMethod = 0;
   this->codecache = 0;
   this->klass = (pointer) NULL;
   this->vtbl  = (pointer) NULL;
@@ -109,7 +109,7 @@
 
   copyin_offset(OFFSET_interpreter_frame_method);
   copyin_offset(OFFSET_Klass_name);
-  copyin_offset(OFFSET_constantPoolOopDesc_pool_holder);
+  copyin_offset(OFFSET_ConstantPool_pool_holder);
 
   copyin_offset(OFFSET_HeapBlockHeader_used);
   copyin_offset(OFFSET_oopDesc_metadata);
@@ -117,10 +117,10 @@
   copyin_offset(OFFSET_Symbol_length);
   copyin_offset(OFFSET_Symbol_body);
 
-  copyin_offset(OFFSET_methodOopDesc_constMethod);
-  copyin_offset(OFFSET_methodOopDesc_constants);
-  copyin_offset(OFFSET_constMethodOopDesc_name_index);
-  copyin_offset(OFFSET_constMethodOopDesc_signature_index);
+  copyin_offset(OFFSET_Method_constMethod);
+  copyin_offset(OFFSET_ConstMethod_constants);
+  copyin_offset(OFFSET_ConstMethod_name_index);
+  copyin_offset(OFFSET_ConstMethod_signature_index);
 
   copyin_offset(OFFSET_CodeHeap_memory);
   copyin_offset(OFFSET_CodeHeap_segmap);
@@ -134,7 +134,7 @@
   copyin_offset(OFFSET_nmethod_method);
   copyin_offset(SIZE_HeapBlockHeader);
   copyin_offset(SIZE_oopDesc);
-  copyin_offset(SIZE_constantPoolOopDesc);
+  copyin_offset(SIZE_ConstantPool);
 
   copyin_offset(OFFSET_NarrowOopStruct_base);
   copyin_offset(OFFSET_NarrowOopStruct_shift);
@@ -145,18 +145,17 @@
   this->pc = arg0;
 
   /*
-   * The methodOopPtr is in %l2 on SPARC.  This can be found at
+   * The methodPtr is in %l2 on SPARC.  This can be found at
    * offset 8 from the frame pointer on 32-bit processes.
    */
 #if   defined(__sparc)
-  this->methodOopPtr = copyin_ptr(arg1 + 2 * sizeof(pointer) + STACK_BIAS);
+  this->methodPtr = copyin_ptr(arg1 + 2 * sizeof(pointer) + STACK_BIAS);
 #elif defined(__i386) || defined(__amd64)
-  this->methodOopPtr = copyin_ptr(arg1 + OFFSET_interpreter_frame_method);
+  this->methodPtr = copyin_ptr(arg1 + OFFSET_interpreter_frame_method);
 #else
 #error "Don't know architecture"
 #endif
 
-  this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_);
   this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_);
 
   /* Reading volatile values */
@@ -186,6 +185,8 @@
   this->CodeHeap_log2_segment_size = copyin_uint32(
       this->CodeCache_heap_address + OFFSET_CodeHeap_log2_segment_size);
 
+  this->Method_vtbl             = (pointer) &``__1cNMethodG__vtbl_;
+
   /*
    * Get Java heap bounds
    */
@@ -298,9 +299,9 @@
 /!this->done && this->vtbl == this->nmethod_vtbl/
 {
   MARK_LINE;
-  this->methodOopPtr = copyin_ptr(this->start + OFFSET_nmethod_method);
+  this->methodPtr = copyin_ptr(this->start + OFFSET_nmethod_method);
   this->suffix = '*';
-  this->methodOop = 1;
+  this->isMethod = 1;
 }
 
 dtrace:helper:ustack:
@@ -310,35 +311,18 @@
   this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
 }
 
+
 dtrace:helper:ustack:
-/!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Use_Compressed_Oops == 0 &&
-this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
+/!this->done && this->vtbl == this->BufferBlob_vtbl && this->methodPtr != 0/
 {
   MARK_LINE;
-  this->klass = copyin_ptr(this->methodOopPtr + OFFSET_oopDesc_metadata);
-  this->methodOop = this->klass == this->Universe_methodKlassOop;
-  this->done = !this->methodOop;
+  this->klass = copyin_ptr(this->methodPtr);
+  this->isMethod = this->klass == this->Method_vtbl;
+  this->done = !this->isMethod;
 }
 
 dtrace:helper:ustack:
-/!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Use_Compressed_Oops != 0 &&
-this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
-{
-  MARK_LINE;
-  /*
-   * Read compressed pointer and  decode heap oop, same as oop.inline.hpp
-   */
-  this->cklass = copyin_uint32(this->methodOopPtr + OFFSET_oopDesc_metadata);
-  this->klass = (uint64_t)((uintptr_t)this->Universe_narrow_oop_base +
-                ((uintptr_t)this->cklass << this->Universe_narrow_oop_shift));
-  this->methodOop = this->klass == this->Universe_methodKlassOop;
-  this->done = !this->methodOop;
-}
-
-dtrace:helper:ustack:
-/!this->done && !this->methodOop/
+/!this->done && !this->isMethod/
 {
   MARK_LINE;
   this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
@@ -347,38 +331,38 @@
 }
 
 dtrace:helper:ustack:
-/!this->done && this->methodOop/
+/!this->done && this->isMethod/
 {
   MARK_LINE;
-  this->constMethod = copyin_ptr(this->methodOopPtr +
-      OFFSET_methodOopDesc_constMethod);
+  this->constMethod = copyin_ptr(this->methodPtr +
+      OFFSET_Method_constMethod);
 
   this->nameIndex = copyin_uint16(this->constMethod +
-      OFFSET_constMethodOopDesc_name_index);
+      OFFSET_ConstMethod_name_index);
 
   this->signatureIndex = copyin_uint16(this->constMethod +
-      OFFSET_constMethodOopDesc_signature_index);
+      OFFSET_ConstMethod_signature_index);
 
-  this->constantPool = copyin_ptr(this->methodOopPtr +
-      OFFSET_methodOopDesc_constants);
+  this->constantPool = copyin_ptr(this->constMethod +
+      OFFSET_ConstMethod_constants);
 
   this->nameSymbol = copyin_ptr(this->constantPool +
-      this->nameIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
+      this->nameIndex * sizeof (pointer) + SIZE_ConstantPool);
 
   this->nameSymbolLength = copyin_uint16(this->nameSymbol +
       OFFSET_Symbol_length);
 
   this->signatureSymbol = copyin_ptr(this->constantPool +
-      this->signatureIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
+      this->signatureIndex * sizeof (pointer) + SIZE_ConstantPool);
 
   this->signatureSymbolLength = copyin_uint16(this->signatureSymbol +
       OFFSET_Symbol_length);
 
   this->klassPtr = copyin_ptr(this->constantPool +
-      OFFSET_constantPoolOopDesc_pool_holder);
+      OFFSET_ConstantPool_pool_holder);
 
   this->klassSymbol = copyin_ptr(this->klassPtr +
-      OFFSET_Klass_name + SIZE_oopDesc);
+      OFFSET_Klass_name);
 
   this->klassSymbolLength = copyin_uint16(this->klassSymbol +
       OFFSET_Symbol_length);
--- a/src/os/bsd/dtrace/libjvm_db.c	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/bsd/dtrace/libjvm_db.c	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -101,7 +101,7 @@
 #define MAX_VFRAMES_CNT 256
 
 typedef struct vframe {
-  uint64_t methodOop;
+  uint64_t method;
   int32_t  sender_decode_offset;
   int32_t  methodIdx;
   int32_t  bci;
@@ -129,8 +129,8 @@
   int32_t  deopt_beg;           /* _deoptimize_offset */
   int32_t  scopes_data_beg;     /* _scopes_data_offset */
   int32_t  scopes_data_end;
-  int32_t  oops_beg;            /* _oops_offset */
-  int32_t  oops_end;
+  int32_t  metadata_beg;        /* _metadata_offset */
+  int32_t  metadata_end;
   int32_t  scopes_pcs_beg;      /* _scopes_pcs_offset */
   int32_t  scopes_pcs_end;
 
@@ -145,16 +145,15 @@
   uint64_t CodeBlob_vtbl;
   uint64_t BufferBlob_vtbl;
   uint64_t RuntimeStub_vtbl;
+  uint64_t Method_vtbl;
 
   uint64_t Use_Compressed_Oops_address;
-  uint64_t Universe_methodKlassObj_address;
   uint64_t Universe_narrow_oop_base_address;
   uint64_t Universe_narrow_oop_shift_address;
   uint64_t CodeCache_heap_address;
 
   /* Volatiles */
   uint8_t  Use_Compressed_Oops;
-  uint64_t Universe_methodKlassObj;
   uint64_t Universe_narrow_oop_base;
   uint32_t Universe_narrow_oop_shift;
   uint64_t CodeCache_low;
@@ -164,7 +163,7 @@
 
   int32_t  SIZE_CodeCache_log2_segment;
 
-  uint64_t methodOopPtr;
+  uint64_t methodPtr;
   uint64_t bcx;
 
   Nmethod_t *N;                 /*Inlined methods support */
@@ -280,9 +279,6 @@
         err = read_pointer(J, vmp->address, &J->CodeCache_heap_address);
       }
     } else if (vmp->typeName[0] == 'U' && strcmp("Universe", vmp->typeName) == 0) {
-      if (strcmp("_methodKlassObj", vmp->fieldName) == 0) {
-        J->Universe_methodKlassObj_address = vmp->address;
-      }
       if (strcmp("_narrow_oop._base", vmp->fieldName) == 0) {
         J->Universe_narrow_oop_base_address = vmp->address;
       }
@@ -330,9 +326,6 @@
     J->Use_Compressed_Oops = 0;
   }
 
-  err = read_pointer(J, J->Universe_methodKlassObj_address, &J->Universe_methodKlassObj);
-  CHECK_FAIL(err);
-
   err = read_pointer(J, J->Universe_narrow_oop_base_address, &J->Universe_narrow_oop_base);
   CHECK_FAIL(err);
   err = ps_pread(J->P,  J->Universe_narrow_oop_shift_address, &J->Universe_narrow_oop_shift, sizeof(uint32_t));
@@ -455,6 +448,8 @@
   CHECK_FAIL(err);
   err = find_symbol(J, "__1cLRuntimeStubG__vtbl_", &J->RuntimeStub_vtbl);
   CHECK_FAIL(err);
+  err = find_symbol(J, "__1cNMethodG__vtbl_", &J->Method_vtbl);
+  CHECK_FAIL(err);
 
   err = parse_vmstructs(J);
   CHECK_FAIL(err);
@@ -474,29 +469,18 @@
   }
 }
 
-static int is_methodOop(jvm_agent_t* J, uint64_t methodOopPtr) {
+static int is_method(jvm_agent_t* J, uint64_t methodPtr) {
   uint64_t klass;
-  int err;
-  // If UseCompressedOops, this was a compressed oop.
-  if (J->Use_Compressed_Oops != 0) {
-    uint32_t cklass;
-    err = read_compressed_pointer(J, methodOopPtr + OFFSET_oopDesc_metadata,
-          &cklass);
-    // decode heap oop, same as oop.inline.hpp
-    klass = (uint64_t)((uintptr_t)J->Universe_narrow_oop_base +
-            ((uintptr_t)cklass << J->Universe_narrow_oop_shift));
-  } else {
-    err = read_pointer(J, methodOopPtr + OFFSET_oopDesc_metadata, &klass);
-  }
+  int err = read_pointer(J, methodPtr, &klass);
   if (err != PS_OK) goto fail;
-  return klass == J->Universe_methodKlassObj;
+  return klass == J->Method_vtbl;
 
  fail:
   return 0;
 }
 
 static int
-name_for_methodOop(jvm_agent_t* J, uint64_t methodOopPtr, char * result, size_t size)
+name_for_methodPtr(jvm_agent_t* J, uint64_t methodPtr, char * result, size_t size)
 {
   short nameIndex;
   short signatureIndex;
@@ -514,15 +498,15 @@
   char * signatureString = NULL;
   int err;
 
-  err = read_pointer(J, methodOopPtr + OFFSET_methodOopDesc_constants, &constantPool);
+  err = read_pointer(J, methodPtr + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
-  err = read_pointer(J, methodOopPtr + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, constMethod + OFFSET_ConstMethod_constants, &constantPool);
   CHECK_FAIL(err);
 
   /* To get name string */
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_name_index, &nameIndex, 2);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_name_index, &nameIndex, 2);
   CHECK_FAIL(err);
-  err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &nameSymbol);
+  err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_ConstantPool, &nameSymbol);
   CHECK_FAIL(err);
   // The symbol is a CPSlot and has lower bit set to indicate metadata
   nameSymbol &= (~1); // remove metadata lsb
@@ -533,9 +517,9 @@
   CHECK_FAIL(err);
 
   /* To get signature string */
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_signature_index, &signatureIndex, 2);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_signature_index, &signatureIndex, 2);
   CHECK_FAIL(err);
-  err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &signatureSymbol);
+  err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_ConstantPool, &signatureSymbol);
   CHECK_FAIL(err);
   signatureSymbol &= (~1);  // remove metadata lsb
   err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_length, &signatureSymbolLength, 2);
@@ -545,9 +529,9 @@
   CHECK_FAIL(err);
 
   /* To get klass string */
-  err = read_pointer(J, constantPool + OFFSET_constantPoolOopDesc_pool_holder, &klassPtr);
+  err = read_pointer(J, constantPool + OFFSET_ConstantPool_pool_holder, &klassPtr);
   CHECK_FAIL(err);
-  err = read_pointer(J, klassPtr + OFFSET_Klass_name + SIZE_oopDesc, &klassSymbol);
+  err = read_pointer(J, klassPtr + OFFSET_Klass_name, &klassSymbol);
   CHECK_FAIL(err);
   err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_length, &klassSymbolLength, 2);
   CHECK_FAIL(err);
@@ -572,7 +556,7 @@
 
  fail:
   if (debug) {
-      fprintf(stderr, "name_for_methodOop: FAIL \n\n");
+      fprintf(stderr, "name_for_methodPtr: FAIL \n\n");
   }
   if (nameString != NULL) free(nameString);
   if (klassString != NULL) free(klassString);
@@ -599,10 +583,10 @@
   err = ps_pread(J->P, nm + OFFSET_nmethod_orig_pc_offset, &N->orig_pc_offset, SZ32);
   CHECK_FAIL(err);
 
-  /* Oops */
-  err = ps_pread(J->P, nm + OFFSET_nmethod_oops_offset, &N->oops_beg, SZ32);
+  /* Metadata */
+  err = ps_pread(J->P, nm + OFFSET_nmethod_metadata_offset, &N->metadata_beg, SZ32);
   CHECK_FAIL(err);
-  err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->oops_end, SZ32);
+  err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->metadata_end, SZ32);
   CHECK_FAIL(err);
 
   /* scopes_pcs */
@@ -627,8 +611,8 @@
       fprintf(stderr, "\t nmethod_info: orig_pc_offset: %#x \n",
                        N->orig_pc_offset);
 
-      fprintf(stderr, "\t nmethod_info: oops_beg: %#x, oops_end: %#x\n",
-                       N->oops_beg, N->oops_end);
+      fprintf(stderr, "\t nmethod_info: metadata_beg: %#x, metadata_end: %#x\n",
+                       N->metadata_beg, N->metadata_end);
 
       fprintf(stderr, "\t nmethod_info: scopes_data_beg: %#x, scopes_data_end: %#x\n",
                        N->scopes_data_beg, N->scopes_data_end);
@@ -766,20 +750,20 @@
 
   if (debug > 2) {
       char name[256];
-      err = name_for_methodOop(J, vf->methodOop, name, 256);
+      err = name_for_methodPtr(J, vf->method, name, 256);
       CHECK_FAIL(err);
       fprintf(stderr, "\t line_number_from_bci: BEGIN, method name: %s, targ bci: %d\n",
                        name, vf->bci);
   }
 
-  err = read_pointer(J, vf->methodOop + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, vf->method + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
 
   vf->line = 0;
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_flags, &access_flags, sizeof(int8_t));
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_flags, &access_flags, sizeof(int8_t));
   CHECK_FAIL(err);
 
-  if (!(access_flags & constMethodOopDesc_has_linenumber_table)) {
+  if (!(access_flags & ConstMethod_has_linenumber_table)) {
       if (debug > 2)
           fprintf(stderr, "\t line_number_from_bci: END: !HAS_LINE_NUMBER_TABLE \n\n");
       return PS_OK;
@@ -789,16 +773,16 @@
    *  Not necessarily sorted and not necessarily one-to-one.
    */
 
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_code_size, &code_size, SZ16);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_code_size, &code_size, SZ16);
   CHECK_FAIL(err);
 
   /* inlined_table_start() */
   code_end_delta = (uint64_t) (access_flags & AccessFlags_NATIVE) ? 2*POINTER_SIZE : 0;
-  buffer = constMethod + (uint64_t) SIZE_constMethodOopDesc + (uint64_t) code_size + code_end_delta;
+  buffer = constMethod + (uint64_t) SIZE_ConstMethod + (uint64_t) code_size + code_end_delta;
 
   if (debug > 2) {
-      fprintf(stderr, "\t\t line_number_from_bci: methodOop: %#llx, native: %d\n",
-                      vf->methodOop, (access_flags & AccessFlags_NATIVE));
+      fprintf(stderr, "\t\t line_number_from_bci: method: %#llx, native: %d\n",
+                      vf->method, (access_flags & AccessFlags_NATIVE));
       fprintf(stderr, "\t\t line_number_from_bci: buffer: %#llx, code_size: %d\n",
                       buffer, (int) code_size);
   }
@@ -962,21 +946,21 @@
     err = scope_desc_at(N, decode_offset, vf);
     CHECK_FAIL(err);
 
-    if (vf->methodIdx > ((N->oops_end - N->oops_beg) / POINTER_SIZE)) {
-      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > oops length) !\n");
+    if (vf->methodIdx > ((N->metadata_end - N->metadata_beg) / POINTER_SIZE)) {
+      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > metadata length) !\n");
       return -1;
     }
-    err = read_pointer(N->J, N->nm + N->oops_beg + (vf->methodIdx-1)*POINTER_SIZE,
-                       &vf->methodOop);
+    err = read_pointer(N->J, N->nm + N->metadata_beg + (vf->methodIdx-1)*POINTER_SIZE,
+                       &vf->method);
     CHECK_FAIL(err);
 
-    if (vf->methodOop) {
+    if (vf->method) {
       N->vf_cnt++;
       err = line_number_from_bci(N->J, vf);
       CHECK_FAIL(err);
       if (debug > 2) {
-        fprintf(stderr, "\t scopeDesc_chain: methodOop: %#8llx, line: %ld\n",
-                vf->methodOop, vf->line);
+        fprintf(stderr, "\t scopeDesc_chain: method: %#8llx, line: %ld\n",
+                vf->method, vf->line);
       }
     }
     decode_offset = vf->sender_decode_offset;
@@ -998,7 +982,7 @@
 name_for_nmethod(jvm_agent_t* J,
                  uint64_t nm,
                  uint64_t pc,
-                 uint64_t methodOop,
+                 uint64_t method,
                  char *result,
                  size_t size,
                  Jframe_t *jframe
@@ -1062,10 +1046,10 @@
       jframe->vf_cnt = N->vf_cnt;
       jframe->bci  = vf->bci;
       jframe->line = vf->line;
-      err = name_for_methodOop(J, N->vframes[0].methodOop, result+1, size-1);
+      err = name_for_methodPtr(J, N->vframes[0].method, result+1, size-1);
       CHECK_FAIL(err);
   } else {
-      err = name_for_methodOop(J, methodOop, result+1, size-1);
+      err = name_for_methodPtr(J, method, result+1, size-1);
       CHECK_FAIL(err);
   }
   if (deoptimized) {
@@ -1097,7 +1081,7 @@
 static int
 name_for_imethod(jvm_agent_t* J,
                  uint64_t bcx,
-                 uint64_t methodOop,
+                 uint64_t method,
                  char *result,
                  size_t size,
                  Jframe_t *jframe
@@ -1108,21 +1092,21 @@
   Vframe_t *vf = &vframe;
   int32_t   err;
 
-  err = read_pointer(J, methodOop + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
 
-  bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_constMethodOopDesc);
+  bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod);
 
   if (debug)
-      fprintf(stderr, "\t name_for_imethod: BEGIN: methodOop: %#llx\n", methodOop);
+      fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
 
-  err = name_for_methodOop(J, methodOop, result, size);
+  err = name_for_methodPtr(J, method, result, size);
   CHECK_FAIL(err);
   if (debug)
       fprintf(stderr, "\t name_for_imethod: method name: %s\n", result);
 
   if (bci > 0) {
-      vf->methodOop = methodOop;
+      vf->method = method;
       vf->bci       = bci;
       err = line_number_from_bci(J, vf);
       CHECK_FAIL(err);
@@ -1161,16 +1145,16 @@
   CHECK_FAIL(err);
 
   if (vtbl == J->nmethod_vtbl) {
-    uint64_t methodOop;
+    uint64_t method;
 
-    err = read_pointer(J, start + OFFSET_nmethod_method, &methodOop);
+    err = read_pointer(J, start + OFFSET_nmethod_method, &method);
     CHECK_FAIL(err);
 
     if (debug) {
-        fprintf(stderr, "name_for_codecache: start: %#8llx, pc: %#8llx, methodOop: %#8llx \n",
-                        start, pc, methodOop);
+        fprintf(stderr, "name_for_codecache: start: %#8llx, pc: %#8llx, method: %#8llx \n",
+                        start, pc, method);
     }
-    err = name_for_nmethod(J, start, pc, methodOop, result, size, jframe);
+    err = name_for_nmethod(J, start, pc, method, result, size, jframe);
     CHECK_FAIL(err);
   } else if (vtbl == J->BufferBlob_vtbl) {
     const char * name;
@@ -1184,8 +1168,8 @@
      */
     if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
       *is_interpreted = 1;
-      if (is_methodOop(J, J->methodOopPtr)) {
-        return name_for_imethod(J, J->bcx, J->methodOopPtr, result, size, jframe);
+      if (is_method(J, J->methodPtr)) {
+        return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe);
       }
     }
 
@@ -1315,7 +1299,7 @@
   }
   vf = N->vframes + vframe_no;
   name[0] = COMP_METHOD_SIGN;
-  err = name_for_methodOop(J, vf->methodOop, name + 1, size);
+  err = name_for_methodPtr(J, vf->method, name + 1, size);
   CHECK_FAIL(err);
 
   jframe->bci = vf->bci;
@@ -1340,7 +1324,7 @@
   uintptr_t fp;
   uintptr_t pc;
   /* arguments given to read_pointer need to be worst case sized */
-  uint64_t methodOopPtr = 0;
+  uint64_t methodPtr = 0;
   uint64_t sender_sp;
   uint64_t bcx = 0;
   int is_interpreted = 0;
@@ -1374,7 +1358,7 @@
      */
     pc += 8;
     bcx          = (uintptr_t) regs[R_L1];
-    methodOopPtr = (uintptr_t) regs[R_L2];
+    methodPtr = (uintptr_t) regs[R_L2];
     sender_sp = regs[R_I5];
     if (debug > 2) {
         fprintf(stderr, "\nregs[R_I1]=%lx, regs[R_I2]=%lx, regs[R_I5]=%lx, regs[R_L1]=%lx, regs[R_L2]=%lx\n",
@@ -1395,8 +1379,8 @@
         printf("Jlookup_by_regs: J->prev_fr.fp = %#lx\n", J->prev_fr.fp);
     }
 
-    if (read_pointer(J,  fp + OFFSET_interpreter_frame_method, &methodOopPtr) != PS_OK) {
-      methodOopPtr = 0;
+    if (read_pointer(J,  fp + OFFSET_interpreter_frame_method, &methodPtr) != PS_OK) {
+      methodPtr = 0;
     }
     if (read_pointer(J,  fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
       sender_sp = 0;
@@ -1406,20 +1390,20 @@
     }
 #endif /* i386 */
 
-  J->methodOopPtr = methodOopPtr;
+  J->methodPtr = methodPtr;
   J->bcx = bcx;
 
   /* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
    * For example: JVM_SuspendThread frame poins to the top interpreted frame.
-   * If we call is_methodOop(J, methodOopPtr) before codecache_contains(J, pc)
+   * If we call is_method(J, methodPtr) before codecache_contains(J, pc)
    * then we go over and omit both: nmethod and I2CAdapter frames.
    * Note, that regs[R_PC] is always correct if frame defined correctly.
    * So it is better to call codecache_contains(J, pc) from the beginning.
    */
 #ifndef X86_COMPILER2
-  if (is_methodOop(J, J->methodOopPtr)) {
-    result = name_for_imethod(J, bcx, J->methodOopPtr, name, size, jframe);
-    /* If the methodOopPtr is a method then this is highly likely to be
+  if (is_method(J, J->methodPtr)) {
+    result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
+    /* If the methodPtr is a method then this is highly likely to be
        an interpreter frame */
     if (result >= 0) {
       is_interpreted = 1;
@@ -1431,9 +1415,9 @@
     result = name_for_codecache(J, fp, pc, name, size, jframe, &is_interpreted);
   }
 #ifdef X86_COMPILER2
-  else if (is_methodOop(J, J->methodOopPtr)) {
-    result = name_for_imethod(J, bcx, J->methodOopPtr, name, size, jframe);
-    /* If the methodOopPtr is a method then this is highly likely to be
+  else if (is_method(J, J->methodPtr)) {
+    result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
+    /* If the methodPtr is a method then this is highly likely to be
        an interpreter frame */
     if (result >= 0) {
       is_interpreted = 1;
--- a/src/os/solaris/dtrace/generateJvmOffsets.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/solaris/dtrace/generateJvmOffsets.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -45,9 +45,9 @@
 #include "memory/heap.hpp"
 #include "memory/memRegion.hpp"
 #include "memory/universe.hpp"
-#include "oops/constMethodOop.hpp"
+#include "oops/constMethod.hpp"
 #include "oops/klass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/virtualspace.hpp"
@@ -205,7 +205,7 @@
 #endif
 
   GEN_OFFS(Klass, _name);
-  GEN_OFFS(constantPoolOopDesc, _pool_holder);
+  GEN_OFFS(ConstantPool, _pool_holder);
   printf("\n");
 
   GEN_VALUE(OFFSET_HeapBlockHeader_used, offset_of(HeapBlock::Header, _used));
@@ -213,21 +213,21 @@
   printf("\n");
 
   GEN_VALUE(AccessFlags_NATIVE, JVM_ACC_NATIVE);
-  GEN_VALUE(constMethodOopDesc_has_linenumber_table, constMethodOopDesc::_has_linenumber_table);
+  GEN_VALUE(ConstMethod_has_linenumber_table, ConstMethod::_has_linenumber_table);
   GEN_OFFS(AccessFlags, _flags);
   GEN_OFFS(Symbol, _length);
   GEN_OFFS(Symbol, _body);
   printf("\n");
 
-  GEN_OFFS(methodOopDesc, _constMethod);
-  GEN_OFFS(methodOopDesc, _access_flags);
+  GEN_OFFS(Method, _constMethod);
+  GEN_OFFS(Method, _access_flags);
   printf("\n");
 
-  GEN_OFFS(constMethodOopDesc, _constants);
-  GEN_OFFS(constMethodOopDesc, _flags);
-  GEN_OFFS(constMethodOopDesc, _code_size);
-  GEN_OFFS(constMethodOopDesc, _name_index);
-  GEN_OFFS(constMethodOopDesc, _signature_index);
+  GEN_OFFS(ConstMethod, _constants);
+  GEN_OFFS(ConstMethod, _flags);
+  GEN_OFFS(ConstMethod, _code_size);
+  GEN_OFFS(ConstMethod, _name_index);
+  GEN_OFFS(ConstMethod, _signature_index);
   printf("\n");
 
   GEN_OFFS(CodeHeap, _memory);
@@ -250,7 +250,7 @@
   printf("\n");
 
   GEN_OFFS(nmethod, _method);
-  GEN_OFFS(nmethod, _oops_offset);
+  GEN_OFFS(nmethod, _metadata_offset);
   GEN_OFFS(nmethod, _scopes_data_offset);
   GEN_OFFS(nmethod, _scopes_pcs_offset);
   GEN_OFFS(nmethod, _handler_table_offset);
@@ -268,12 +268,12 @@
 
   GEN_VALUE(SIZE_HeapBlockHeader, sizeof(HeapBlock::Header));
   GEN_SIZE(oopDesc);
-  GEN_SIZE(constantPoolOopDesc);
+  GEN_SIZE(ConstantPool);
   printf("\n");
 
   GEN_SIZE(PcDesc);
-  GEN_SIZE(methodOopDesc);
-  GEN_SIZE(constMethodOopDesc);
+  GEN_SIZE(Method);
+  GEN_SIZE(ConstMethod);
   GEN_SIZE(nmethod);
   GEN_SIZE(CodeBlob);
   GEN_SIZE(BufferBlob);
--- a/src/os/solaris/dtrace/jhelper.d	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/solaris/dtrace/jhelper.d	Fri Sep 14 21:50:58 2012 -0700
@@ -44,7 +44,6 @@
 extern pointer __JvmOffsets;
 
 extern pointer __1cJCodeCacheF_heap_;
-extern pointer __1cIUniverseP_methodKlassObj_;
 extern pointer __1cIUniverseO_collectedHeap_;
 extern pointer __1cIUniverseL_narrow_oop_;
 #ifdef _LP64
@@ -52,6 +51,7 @@
 #endif
 
 extern pointer __1cHnmethodG__vtbl_;
+extern pointer __1cGMethodG__vtbl_;
 extern pointer __1cKBufferBlobG__vtbl_;
 
 #define copyin_ptr(ADDR)    *(pointer*)  copyin((pointer) (ADDR), sizeof(pointer))
@@ -81,7 +81,7 @@
   init_done  = 0;
   this->error = (char *) NULL;
   this->result = (char *) NULL;
-  this->methodOop = 0;
+  this->isMethod = 0;
   this->codecache = 0;
   this->klass = (pointer) NULL;
   this->vtbl  = (pointer) NULL;
@@ -109,7 +109,7 @@
 
   copyin_offset(OFFSET_interpreter_frame_method);
   copyin_offset(OFFSET_Klass_name);
-  copyin_offset(OFFSET_constantPoolOopDesc_pool_holder);
+  copyin_offset(OFFSET_ConstantPool_pool_holder);
 
   copyin_offset(OFFSET_HeapBlockHeader_used);
   copyin_offset(OFFSET_oopDesc_metadata);
@@ -117,10 +117,10 @@
   copyin_offset(OFFSET_Symbol_length);
   copyin_offset(OFFSET_Symbol_body);
 
-  copyin_offset(OFFSET_methodOopDesc_constMethod);
-  copyin_offset(OFFSET_constMethodOopDesc_constants);
-  copyin_offset(OFFSET_constMethodOopDesc_name_index);
-  copyin_offset(OFFSET_constMethodOopDesc_signature_index);
+  copyin_offset(OFFSET_Method_constMethod);
+  copyin_offset(OFFSET_ConstMethod_constants);
+  copyin_offset(OFFSET_ConstMethod_name_index);
+  copyin_offset(OFFSET_ConstMethod_signature_index);
 
   copyin_offset(OFFSET_CodeHeap_memory);
   copyin_offset(OFFSET_CodeHeap_segmap);
@@ -134,7 +134,7 @@
   copyin_offset(OFFSET_nmethod_method);
   copyin_offset(SIZE_HeapBlockHeader);
   copyin_offset(SIZE_oopDesc);
-  copyin_offset(SIZE_constantPoolOopDesc);
+  copyin_offset(SIZE_ConstantPool);
 
   copyin_offset(OFFSET_NarrowOopStruct_base);
   copyin_offset(OFFSET_NarrowOopStruct_shift);
@@ -145,18 +145,17 @@
   this->pc = arg0;
 
   /*
-   * The methodOopPtr is in %l2 on SPARC.  This can be found at
+   * The methodPtr is in %l2 on SPARC.  This can be found at
    * offset 8 from the frame pointer on 32-bit processes.
    */
 #if   defined(__sparc)
-  this->methodOopPtr = copyin_ptr(arg1 + 2 * sizeof(pointer) + STACK_BIAS);
+  this->methodPtr = copyin_ptr(arg1 + 2 * sizeof(pointer) + STACK_BIAS);
 #elif defined(__i386) || defined(__amd64)
-  this->methodOopPtr = copyin_ptr(arg1 + OFFSET_interpreter_frame_method);
+  this->methodPtr = copyin_ptr(arg1 + OFFSET_interpreter_frame_method);
 #else
 #error "Don't know architecture"
 #endif
 
-  this->Universe_methodKlassOop = copyin_ptr(&``__1cIUniverseP_methodKlassObj_);
   this->CodeCache_heap_address = copyin_ptr(&``__1cJCodeCacheF_heap_);
 
   /* Reading volatile values */
@@ -186,6 +185,8 @@
   this->CodeHeap_log2_segment_size = copyin_uint32(
       this->CodeCache_heap_address + OFFSET_CodeHeap_log2_segment_size);
 
+  this->Method_vtbl             = (pointer) &``__1cGMethodG__vtbl_;
+
   /*
    * Get Java heap bounds
    */
@@ -298,9 +299,9 @@
 /!this->done && this->vtbl == this->nmethod_vtbl/
 {
   MARK_LINE;
-  this->methodOopPtr = copyin_ptr(this->start + OFFSET_nmethod_method);
+  this->methodPtr = copyin_ptr(this->start + OFFSET_nmethod_method);
   this->suffix = '*';
-  this->methodOop = 1;
+  this->isMethod = 1;
 }
 
 dtrace:helper:ustack:
@@ -310,35 +311,18 @@
   this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
 }
 
+
 dtrace:helper:ustack:
-/!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Use_Compressed_Oops == 0 &&
-this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
+/!this->done && this->vtbl == this->BufferBlob_vtbl && this->methodPtr != 0/
 {
   MARK_LINE;
-  this->klass = copyin_ptr(this->methodOopPtr + OFFSET_oopDesc_metadata);
-  this->methodOop = this->klass == this->Universe_methodKlassOop;
-  this->done = !this->methodOop;
+  this->klass = copyin_ptr(this->methodPtr);
+  this->isMethod = this->klass == this->Method_vtbl;
+  this->done = !this->isMethod;
 }
 
 dtrace:helper:ustack:
-/!this->done && this->vtbl == this->BufferBlob_vtbl &&
-this->Use_Compressed_Oops != 0 &&
-this->methodOopPtr > this->heap_start && this->methodOopPtr < this->heap_end/
-{
-  MARK_LINE;
-  /*
-   * Read compressed pointer and  decode heap oop, same as oop.inline.hpp
-   */
-  this->cklass = copyin_uint32(this->methodOopPtr + OFFSET_oopDesc_metadata);
-  this->klass = (uint64_t)((uintptr_t)this->Universe_narrow_oop_base +
-                ((uintptr_t)this->cklass << this->Universe_narrow_oop_shift));
-  this->methodOop = this->klass == this->Universe_methodKlassOop;
-  this->done = !this->methodOop;
-}
-
-dtrace:helper:ustack:
-/!this->done && !this->methodOop/
+/!this->done && !this->isMethod/
 {
   MARK_LINE;
   this->name = copyin_ptr(this->start + OFFSET_CodeBlob_name);
@@ -347,38 +331,38 @@
 }
 
 dtrace:helper:ustack:
-/!this->done && this->methodOop/
+/!this->done && this->isMethod/
 {
   MARK_LINE;
-  this->constMethod = copyin_ptr(this->methodOopPtr +
-      OFFSET_methodOopDesc_constMethod);
+  this->constMethod = copyin_ptr(this->methodPtr +
+      OFFSET_Method_constMethod);
 
   this->nameIndex = copyin_uint16(this->constMethod +
-      OFFSET_constMethodOopDesc_name_index);
+      OFFSET_ConstMethod_name_index);
 
   this->signatureIndex = copyin_uint16(this->constMethod +
-      OFFSET_constMethodOopDesc_signature_index);
+      OFFSET_ConstMethod_signature_index);
 
   this->constantPool = copyin_ptr(this->constMethod +
-      OFFSET_constMethodOopDesc_constants);
+      OFFSET_ConstMethod_constants);
 
   this->nameSymbol = copyin_ptr(this->constantPool +
-      this->nameIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
+      this->nameIndex * sizeof (pointer) + SIZE_ConstantPool);
 
   this->nameSymbolLength = copyin_uint16(this->nameSymbol +
       OFFSET_Symbol_length);
 
   this->signatureSymbol = copyin_ptr(this->constantPool +
-      this->signatureIndex * sizeof (pointer) + SIZE_constantPoolOopDesc);
+      this->signatureIndex * sizeof (pointer) + SIZE_ConstantPool);
 
   this->signatureSymbolLength = copyin_uint16(this->signatureSymbol +
       OFFSET_Symbol_length);
 
   this->klassPtr = copyin_ptr(this->constantPool +
-      OFFSET_constantPoolOopDesc_pool_holder);
+      OFFSET_ConstantPool_pool_holder);
 
   this->klassSymbol = copyin_ptr(this->klassPtr +
-      OFFSET_Klass_name + SIZE_oopDesc);
+      OFFSET_Klass_name);
 
   this->klassSymbolLength = copyin_uint16(this->klassSymbol +
       OFFSET_Symbol_length);
--- a/src/os/solaris/dtrace/libjvm_db.c	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/solaris/dtrace/libjvm_db.c	Fri Sep 14 21:50:58 2012 -0700
@@ -101,7 +101,7 @@
 #define MAX_VFRAMES_CNT 256
 
 typedef struct vframe {
-  uint64_t methodOop;
+  uint64_t method;
   int32_t  sender_decode_offset;
   int32_t  methodIdx;
   int32_t  bci;
@@ -129,8 +129,8 @@
   int32_t  deopt_beg;           /* _deoptimize_offset */
   int32_t  scopes_data_beg;     /* _scopes_data_offset */
   int32_t  scopes_data_end;
-  int32_t  oops_beg;            /* _oops_offset */
-  int32_t  oops_end;
+  int32_t  metadata_beg;        /* _metadata_offset */
+  int32_t  metadata_end;
   int32_t  scopes_pcs_beg;      /* _scopes_pcs_offset */
   int32_t  scopes_pcs_end;
 
@@ -145,16 +145,15 @@
   uint64_t CodeBlob_vtbl;
   uint64_t BufferBlob_vtbl;
   uint64_t RuntimeStub_vtbl;
+  uint64_t Method_vtbl;
 
   uint64_t Use_Compressed_Oops_address;
-  uint64_t Universe_methodKlassObj_address;
   uint64_t Universe_narrow_oop_base_address;
   uint64_t Universe_narrow_oop_shift_address;
   uint64_t CodeCache_heap_address;
 
   /* Volatiles */
   uint8_t  Use_Compressed_Oops;
-  uint64_t Universe_methodKlassObj;
   uint64_t Universe_narrow_oop_base;
   uint32_t Universe_narrow_oop_shift;
   uint64_t CodeCache_low;
@@ -164,7 +163,7 @@
 
   int32_t  SIZE_CodeCache_log2_segment;
 
-  uint64_t methodOopPtr;
+  uint64_t methodPtr;
   uint64_t bcx;
 
   Nmethod_t *N;                 /*Inlined methods support */
@@ -280,9 +279,6 @@
         err = read_pointer(J, vmp->address, &J->CodeCache_heap_address);
       }
     } else if (vmp->typeName[0] == 'U' && strcmp("Universe", vmp->typeName) == 0) {
-      if (strcmp("_methodKlassObj", vmp->fieldName) == 0) {
-        J->Universe_methodKlassObj_address = vmp->address;
-      }
       if (strcmp("_narrow_oop._base", vmp->fieldName) == 0) {
         J->Universe_narrow_oop_base_address = vmp->address;
       }
@@ -330,9 +326,6 @@
     J->Use_Compressed_Oops = 0;
   }
 
-  err = read_pointer(J, J->Universe_methodKlassObj_address, &J->Universe_methodKlassObj);
-  CHECK_FAIL(err);
-
   err = read_pointer(J, J->Universe_narrow_oop_base_address, &J->Universe_narrow_oop_base);
   CHECK_FAIL(err);
   err = ps_pread(J->P,  J->Universe_narrow_oop_shift_address, &J->Universe_narrow_oop_shift, sizeof(uint32_t));
@@ -455,6 +448,8 @@
   CHECK_FAIL(err);
   err = find_symbol(J, "__1cLRuntimeStubG__vtbl_", &J->RuntimeStub_vtbl);
   CHECK_FAIL(err);
+  err = find_symbol(J, "__1cGMethodG__vtbl_", &J->Method_vtbl);
+  CHECK_FAIL(err);
 
   err = parse_vmstructs(J);
   CHECK_FAIL(err);
@@ -474,29 +469,18 @@
   }
 }
 
-static int is_methodOop(jvm_agent_t* J, uint64_t methodOopPtr) {
+static int is_method(jvm_agent_t* J, uint64_t methodPtr) {
   uint64_t klass;
-  int err;
-  // If UseCompressedOops, this was a compressed oop.
-  if (J->Use_Compressed_Oops != 0) {
-    uint32_t cklass;
-    err = read_compressed_pointer(J, methodOopPtr + OFFSET_oopDesc_metadata,
-          &cklass);
-    // decode heap oop, same as oop.inline.hpp
-    klass = (uint64_t)((uintptr_t)J->Universe_narrow_oop_base +
-            ((uintptr_t)cklass << J->Universe_narrow_oop_shift));
-  } else {
-    err = read_pointer(J, methodOopPtr + OFFSET_oopDesc_metadata, &klass);
-  }
+  int err = read_pointer(J, methodPtr, &klass);
   if (err != PS_OK) goto fail;
-  return klass == J->Universe_methodKlassObj;
+  return klass == J->Method_vtbl;
 
  fail:
   return 0;
 }
 
 static int
-name_for_methodOop(jvm_agent_t* J, uint64_t methodOopPtr, char * result, size_t size)
+name_for_methodPtr(jvm_agent_t* J, uint64_t methodPtr, char * result, size_t size)
 {
   short nameIndex;
   short signatureIndex;
@@ -514,15 +498,15 @@
   char * signatureString = NULL;
   int err;
 
-  err = read_pointer(J, methodOopPtr + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, methodPtr + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
-  err = read_pointer(J, constMethod + OFFSET_constMethodOopDesc_constants, &constantPool);
+  err = read_pointer(J, constMethod + OFFSET_ConstMethod_constants, &constantPool);
   CHECK_FAIL(err);
 
   /* To get name string */
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_name_index, &nameIndex, 2);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_name_index, &nameIndex, 2);
   CHECK_FAIL(err);
-  err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &nameSymbol);
+  err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_ConstantPool, &nameSymbol);
   CHECK_FAIL(err);
   // The symbol is a CPSlot and has lower bit set to indicate metadata
   nameSymbol &= (~1); // remove metadata lsb
@@ -533,9 +517,9 @@
   CHECK_FAIL(err);
 
   /* To get signature string */
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_signature_index, &signatureIndex, 2);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_signature_index, &signatureIndex, 2);
   CHECK_FAIL(err);
-  err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &signatureSymbol);
+  err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_ConstantPool, &signatureSymbol);
   CHECK_FAIL(err);
   signatureSymbol &= (~1);  // remove metadata lsb
   err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_length, &signatureSymbolLength, 2);
@@ -545,9 +529,9 @@
   CHECK_FAIL(err);
 
   /* To get klass string */
-  err = read_pointer(J, constantPool + OFFSET_constantPoolOopDesc_pool_holder, &klassPtr);
+  err = read_pointer(J, constantPool + OFFSET_ConstantPool_pool_holder, &klassPtr);
   CHECK_FAIL(err);
-  err = read_pointer(J, klassPtr + OFFSET_Klass_name + SIZE_oopDesc, &klassSymbol);
+  err = read_pointer(J, klassPtr + OFFSET_Klass_name, &klassSymbol);
   CHECK_FAIL(err);
   err = ps_pread(J->P, klassSymbol + OFFSET_Symbol_length, &klassSymbolLength, 2);
   CHECK_FAIL(err);
@@ -572,7 +556,7 @@
 
  fail:
   if (debug) {
-      fprintf(stderr, "name_for_methodOop: FAIL \n\n");
+      fprintf(stderr, "name_for_methodPtr: FAIL \n\n");
   }
   if (nameString != NULL) free(nameString);
   if (klassString != NULL) free(klassString);
@@ -599,10 +583,10 @@
   err = ps_pread(J->P, nm + OFFSET_nmethod_orig_pc_offset, &N->orig_pc_offset, SZ32);
   CHECK_FAIL(err);
 
-  /* Oops */
-  err = ps_pread(J->P, nm + OFFSET_nmethod_oops_offset, &N->oops_beg, SZ32);
+  /* Metadata */
+  err = ps_pread(J->P, nm + OFFSET_nmethod_metadata_offset, &N->metadata_beg, SZ32);
   CHECK_FAIL(err);
-  err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->oops_end, SZ32);
+  err = ps_pread(J->P, nm + OFFSET_nmethod_scopes_data_offset, &N->metadata_end, SZ32);
   CHECK_FAIL(err);
 
   /* scopes_pcs */
@@ -627,8 +611,8 @@
       fprintf(stderr, "\t nmethod_info: orig_pc_offset: %#x \n",
                        N->orig_pc_offset);
 
-      fprintf(stderr, "\t nmethod_info: oops_beg: %#x, oops_end: %#x\n",
-                       N->oops_beg, N->oops_end);
+      fprintf(stderr, "\t nmethod_info: metadata_beg: %#x, metadata_end: %#x\n",
+                       N->metadata_beg, N->metadata_end);
 
       fprintf(stderr, "\t nmethod_info: scopes_data_beg: %#x, scopes_data_end: %#x\n",
                        N->scopes_data_beg, N->scopes_data_end);
@@ -766,20 +750,20 @@
 
   if (debug > 2) {
       char name[256];
-      err = name_for_methodOop(J, vf->methodOop, name, 256);
+      err = name_for_methodPtr(J, vf->method, name, 256);
       CHECK_FAIL(err);
       fprintf(stderr, "\t line_number_from_bci: BEGIN, method name: %s, targ bci: %d\n",
                        name, vf->bci);
   }
 
-  err = read_pointer(J, vf->methodOop + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, vf->method + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
 
   vf->line = 0;
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_flags, &access_flags, sizeof(int8_t));
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_flags, &access_flags, sizeof(int8_t));
   CHECK_FAIL(err);
 
-  if (!(access_flags & constMethodOopDesc_has_linenumber_table)) {
+  if (!(access_flags & ConstMethod_has_linenumber_table)) {
       if (debug > 2)
           fprintf(stderr, "\t line_number_from_bci: END: !HAS_LINE_NUMBER_TABLE \n\n");
       return PS_OK;
@@ -789,16 +773,16 @@
    *  Not necessarily sorted and not necessarily one-to-one.
    */
 
-  err = ps_pread(J->P, constMethod + OFFSET_constMethodOopDesc_code_size, &code_size, SZ16);
+  err = ps_pread(J->P, constMethod + OFFSET_ConstMethod_code_size, &code_size, SZ16);
   CHECK_FAIL(err);
 
   /* inlined_table_start() */
   code_end_delta = (uint64_t) (access_flags & AccessFlags_NATIVE) ? 2*POINTER_SIZE : 0;
-  buffer = constMethod + (uint64_t) SIZE_constMethodOopDesc + (uint64_t) code_size + code_end_delta;
+  buffer = constMethod + (uint64_t) SIZE_ConstMethod + (uint64_t) code_size + code_end_delta;
 
   if (debug > 2) {
-      fprintf(stderr, "\t\t line_number_from_bci: methodOop: %#llx, native: %d\n",
-                      vf->methodOop, (access_flags & AccessFlags_NATIVE));
+      fprintf(stderr, "\t\t line_number_from_bci: method: %#llx, native: %d\n",
+                      vf->method, (access_flags & AccessFlags_NATIVE));
       fprintf(stderr, "\t\t line_number_from_bci: buffer: %#llx, code_size: %d\n",
                       buffer, (int) code_size);
   }
@@ -962,21 +946,21 @@
     err = scope_desc_at(N, decode_offset, vf);
     CHECK_FAIL(err);
 
-    if (vf->methodIdx > ((N->oops_end - N->oops_beg) / POINTER_SIZE)) {
-      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > oops length) !\n");
+    if (vf->methodIdx > ((N->metadata_end - N->metadata_beg) / POINTER_SIZE)) {
+      fprintf(stderr, "\t scopeDesc_chain: (methodIdx > metadata length) !\n");
       return -1;
     }
-    err = read_pointer(N->J, N->nm + N->oops_beg + (vf->methodIdx-1)*POINTER_SIZE,
-                       &vf->methodOop);
+    err = read_pointer(N->J, N->nm + N->metadata_beg + (vf->methodIdx-1)*POINTER_SIZE,
+                       &vf->method);
     CHECK_FAIL(err);
 
-    if (vf->methodOop) {
+    if (vf->method) {
       N->vf_cnt++;
       err = line_number_from_bci(N->J, vf);
       CHECK_FAIL(err);
       if (debug > 2) {
-        fprintf(stderr, "\t scopeDesc_chain: methodOop: %#8llx, line: %ld\n",
-                vf->methodOop, vf->line);
+        fprintf(stderr, "\t scopeDesc_chain: method: %#8llx, line: %ld\n",
+                vf->method, vf->line);
       }
     }
     decode_offset = vf->sender_decode_offset;
@@ -998,7 +982,7 @@
 name_for_nmethod(jvm_agent_t* J,
                  uint64_t nm,
                  uint64_t pc,
-                 uint64_t methodOop,
+                 uint64_t method,
                  char *result,
                  size_t size,
                  Jframe_t *jframe
@@ -1062,10 +1046,10 @@
       jframe->vf_cnt = N->vf_cnt;
       jframe->bci  = vf->bci;
       jframe->line = vf->line;
-      err = name_for_methodOop(J, N->vframes[0].methodOop, result+1, size-1);
+      err = name_for_methodPtr(J, N->vframes[0].method, result+1, size-1);
       CHECK_FAIL(err);
   } else {
-      err = name_for_methodOop(J, methodOop, result+1, size-1);
+      err = name_for_methodPtr(J, method, result+1, size-1);
       CHECK_FAIL(err);
   }
   if (deoptimized) {
@@ -1097,7 +1081,7 @@
 static int
 name_for_imethod(jvm_agent_t* J,
                  uint64_t bcx,
-                 uint64_t methodOop,
+                 uint64_t method,
                  char *result,
                  size_t size,
                  Jframe_t *jframe
@@ -1108,21 +1092,21 @@
   Vframe_t *vf = &vframe;
   int32_t   err;
 
-  err = read_pointer(J, methodOop + OFFSET_methodOopDesc_constMethod, &constMethod);
+  err = read_pointer(J, method + OFFSET_Method_constMethod, &constMethod);
   CHECK_FAIL(err);
 
-  bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_constMethodOopDesc);
+  bci = is_bci(bcx) ? bcx : bcx - (constMethod + (uint64_t) SIZE_ConstMethod);
 
   if (debug)
-      fprintf(stderr, "\t name_for_imethod: BEGIN: methodOop: %#llx\n", methodOop);
+      fprintf(stderr, "\t name_for_imethod: BEGIN: method: %#llx\n", method);
 
-  err = name_for_methodOop(J, methodOop, result, size);
+  err = name_for_methodPtr(J, method, result, size);
   CHECK_FAIL(err);
   if (debug)
       fprintf(stderr, "\t name_for_imethod: method name: %s\n", result);
 
   if (bci > 0) {
-      vf->methodOop = methodOop;
+      vf->method = method;
       vf->bci       = bci;
       err = line_number_from_bci(J, vf);
       CHECK_FAIL(err);
@@ -1161,16 +1145,16 @@
   CHECK_FAIL(err);
 
   if (vtbl == J->nmethod_vtbl) {
-    uint64_t methodOop;
+    uint64_t method;
 
-    err = read_pointer(J, start + OFFSET_nmethod_method, &methodOop);
+    err = read_pointer(J, start + OFFSET_nmethod_method, &method);
     CHECK_FAIL(err);
 
     if (debug) {
-        fprintf(stderr, "name_for_codecache: start: %#8llx, pc: %#8llx, methodOop: %#8llx \n",
-                        start, pc, methodOop);
+        fprintf(stderr, "name_for_codecache: start: %#8llx, pc: %#8llx, method: %#8llx \n",
+                        start, pc, method);
     }
-    err = name_for_nmethod(J, start, pc, methodOop, result, size, jframe);
+    err = name_for_nmethod(J, start, pc, method, result, size, jframe);
     CHECK_FAIL(err);
   } else if (vtbl == J->BufferBlob_vtbl) {
     const char * name;
@@ -1184,8 +1168,8 @@
      */
     if (err == PS_OK && strncmp(name, "Interpreter", 11) == 0) {
       *is_interpreted = 1;
-      if (is_methodOop(J, J->methodOopPtr)) {
-        return name_for_imethod(J, J->bcx, J->methodOopPtr, result, size, jframe);
+      if (is_method(J, J->methodPtr)) {
+        return name_for_imethod(J, J->bcx, J->methodPtr, result, size, jframe);
       }
     }
 
@@ -1315,7 +1299,7 @@
   }
   vf = N->vframes + vframe_no;
   name[0] = COMP_METHOD_SIGN;
-  err = name_for_methodOop(J, vf->methodOop, name + 1, size);
+  err = name_for_methodPtr(J, vf->method, name + 1, size);
   CHECK_FAIL(err);
 
   jframe->bci = vf->bci;
@@ -1340,7 +1324,7 @@
   uintptr_t fp;
   uintptr_t pc;
   /* arguments given to read_pointer need to be worst case sized */
-  uint64_t methodOopPtr = 0;
+  uint64_t methodPtr = 0;
   uint64_t sender_sp;
   uint64_t bcx = 0;
   int is_interpreted = 0;
@@ -1374,7 +1358,7 @@
      */
     pc += 8;
     bcx          = (uintptr_t) regs[R_L1];
-    methodOopPtr = (uintptr_t) regs[R_L2];
+    methodPtr = (uintptr_t) regs[R_L2];
     sender_sp = regs[R_I5];
     if (debug > 2) {
         fprintf(stderr, "\nregs[R_I1]=%lx, regs[R_I2]=%lx, regs[R_I5]=%lx, regs[R_L1]=%lx, regs[R_L2]=%lx\n",
@@ -1395,8 +1379,8 @@
         printf("Jlookup_by_regs: J->prev_fr.fp = %#lx\n", J->prev_fr.fp);
     }
 
-    if (read_pointer(J,  fp + OFFSET_interpreter_frame_method, &methodOopPtr) != PS_OK) {
-      methodOopPtr = 0;
+    if (read_pointer(J,  fp + OFFSET_interpreter_frame_method, &methodPtr) != PS_OK) {
+      methodPtr = 0;
     }
     if (read_pointer(J,  fp + OFFSET_interpreter_frame_sender_sp, &sender_sp) != PS_OK) {
       sender_sp = 0;
@@ -1406,20 +1390,20 @@
     }
 #endif /* i386 */
 
-  J->methodOopPtr = methodOopPtr;
+  J->methodPtr = methodPtr;
   J->bcx = bcx;
 
   /* On x86 with C2 JVM: native frame may have wrong regs[R_FP]
    * For example: JVM_SuspendThread frame poins to the top interpreted frame.
-   * If we call is_methodOop(J, methodOopPtr) before codecache_contains(J, pc)
+   * If we call is_method(J, methodPtr) before codecache_contains(J, pc)
    * then we go over and omit both: nmethod and I2CAdapter frames.
    * Note, that regs[R_PC] is always correct if frame defined correctly.
    * So it is better to call codecache_contains(J, pc) from the beginning.
    */
 #ifndef X86_COMPILER2
-  if (is_methodOop(J, J->methodOopPtr)) {
-    result = name_for_imethod(J, bcx, J->methodOopPtr, name, size, jframe);
-    /* If the methodOopPtr is a method then this is highly likely to be
+  if (is_method(J, J->methodPtr)) {
+    result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
+    /* If the methodPtr is a method then this is highly likely to be
        an interpreter frame */
     if (result >= 0) {
       is_interpreted = 1;
@@ -1431,9 +1415,9 @@
     result = name_for_codecache(J, fp, pc, name, size, jframe, &is_interpreted);
   }
 #ifdef X86_COMPILER2
-  else if (is_methodOop(J, J->methodOopPtr)) {
-    result = name_for_imethod(J, bcx, J->methodOopPtr, name, size, jframe);
-    /* If the methodOopPtr is a method then this is highly likely to be
+  else if (is_method(J, J->methodPtr)) {
+    result = name_for_imethod(J, bcx, J->methodPtr, name, size, jframe);
+    /* If the methodPtr is a method then this is highly likely to be
        an interpreter frame */
     if (result >= 0) {
       is_interpreted = 1;
--- a/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -142,7 +142,7 @@
     ++strcount;
     for(int prbc = 0; prbc < provider->probe_count; ++prbc) {
       JVM_DTraceProbe* p = &(provider->probes[prbc]);
-      Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature();
+      Symbol* sig = Method::resolve_jmethod_id(p->method)->signature();
       // function + name + one per argument
       strcount += 2 + ArgumentCount(sig).size();
     }
@@ -178,7 +178,7 @@
       stroffs[curstr++] = string_index;
       string_index += strlen(name) + 1;
 
-      Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature();
+      Symbol* sig = Method::resolve_jmethod_id(p->method)->signature();
       SignatureStream ss(sig);
       for ( ; !ss.at_return_type(); ss.next()) {
         BasicType bt = ss.type();
@@ -227,7 +227,7 @@
     uint32_t argscount = 0;
     for(int prbc = 0; prbc < provider->probe_count; ++prbc) {
        JVM_DTraceProbe* p = &(provider->probes[prbc]);
-       Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature();
+       Symbol* sig = Method::resolve_jmethod_id(p->method)->signature();
        argscount += ArgumentCount(sig).size();
     }
     secoffs[argoffs_sec] = align_size_up(offset, alignment_for[ARG_OFFSETS]);
@@ -298,7 +298,7 @@
       strcpy(str, name);
       str += strlen(name) + 1;
 
-      Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature();
+      Symbol* sig = Method::resolve_jmethod_id(p->method)->signature();
       SignatureStream ss(sig);
       for ( ; !ss.at_return_type(); ss.next()) {
         BasicType bt = ss.type();
@@ -377,7 +377,7 @@
     uint32_t argsoffs = 0;
     for(int prbc = 0; prbc < provider->probe_count; ++prbc) {
       JVM_DTraceProbe* probe = &(provider->probes[prbc]);
-      methodOop m = JNIHandles::resolve_jmethod_id(probe->method);
+      Method* m = Method::resolve_jmethod_id(probe->method);
       int arg_count = ArgumentCount(m->signature()).size();
       assert(m->code() != NULL, "must have an nmethod");
 
@@ -415,7 +415,7 @@
       uint32_t* pof =
           (uint32_t*)(dof + sec->dofs_offset + sizeof(uint32_t) * prbc);
       JVM_DTraceProbe* probe = &(provider->probes[prbc]);
-      methodOop m = JNIHandles::resolve_jmethod_id(probe->method);
+      Method* m = Method::resolve_jmethod_id(probe->method);
       *pof = m->code()->trap_offset();
     }
 
@@ -433,7 +433,7 @@
     uint8_t* par = (uint8_t*)(dof + sec->dofs_offset);
     for (int prbc = 0; prbc < provider->probe_count; ++prbc) {
       JVM_DTraceProbe* p = &(provider->probes[prbc]);
-      Symbol* sig = JNIHandles::resolve_jmethod_id(p->method)->signature();
+      Symbol* sig = Method::resolve_jmethod_id(p->method)->signature();
       uint8_t count = (uint8_t)ArgumentCount(sig).size();
       for (uint8_t i = 0; i < count; ++i) {
         *par++ = i;
--- a/src/os/solaris/vm/os_solaris.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os/solaris/vm/os_solaris.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -5587,7 +5587,7 @@
 // for n in $(eval whereis callcount | awk '{print $2}'); do print $n; done
 
 #define CHECK_POINTER_OK(p) \
-  (Universe::perm_gen() == NULL || !Universe::is_reserved_heap((oop)(p)))
+  (!Universe::is_fully_initialized() || !Universe::is_reserved_heap((oop)(p)))
 #define CHECK_MU \
   if (!CHECK_POINTER_OK(mu)) fatal("Mutex must be in C heap only.");
 #define CHECK_CV \
--- a/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/bsd_x86/vm/globals_bsd_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -46,7 +46,7 @@
 
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/bsd_zero/vm/globals_bsd_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -42,7 +42,7 @@
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
 define_pd_global(bool,  UseVectoredExceptions,   false);
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 
 #endif // OS_CPU_BSD_ZERO_VM_GLOBALS_BSD_ZERO_HPP
--- a/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -33,8 +33,8 @@
 define_pd_global(uintx, JVMInvokeMethodSlack,    12288);
 define_pd_global(intx, CompilerThreadStackSize,  0);
 
-// Only used on 64 bit platforms
-define_pd_global(uintx, HeapBaseMinAddress,      4*G);
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
+define_pd_global(uintx, HeapBaseMinAddress,      CONST64(4)*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions, false);
 
--- a/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/linux_x86/vm/globals_linux_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -44,7 +44,7 @@
 
 define_pd_global(uintx,JVMInvokeMethodSlack,     8192);
 
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx,HeapBaseMinAddress,       2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/linux_zero/vm/globals_linux_zero.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2007, 2008, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -42,7 +42,7 @@
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
 define_pd_global(bool,  UseVectoredExceptions,   false);
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 
 #endif // OS_CPU_LINUX_ZERO_VM_GLOBALS_LINUX_ZERO_HPP
--- a/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/solaris_sparc/vm/globals_solaris_sparc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -33,8 +33,12 @@
 define_pd_global(uintx, JVMInvokeMethodSlack,    12288);
 define_pd_global(intx, CompilerThreadStackSize,  0);
 
-// Only used on 64 bit platforms
-define_pd_global(uintx, HeapBaseMinAddress,      4*G);
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
+#ifdef _LP64
+define_pd_global(uintx, HeapBaseMinAddress,      CONST64(4)*G);
+#else
+define_pd_global(uintx, HeapBaseMinAddress,      2*G);
+#endif
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
 
--- a/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/solaris_x86/vm/globals_solaris_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -43,7 +43,7 @@
 
 define_pd_global(intx, CompilerThreadStackSize,  0);
 
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx,HeapBaseMinAddress,       256*M);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/os_cpu/windows_x86/vm/globals_windows_x86.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -45,7 +45,7 @@
 
 define_pd_global(uintx, JVMInvokeMethodSlack,    8192);
 
-// Only used on 64 bit platforms
+// Used on 64 bit platforms for UseCompressedOops base address or CDS
 define_pd_global(uintx, HeapBaseMinAddress,      2*G);
 // Only used on 64 bit Windows platforms
 define_pd_global(bool, UseVectoredExceptions,    false);
--- a/src/share/tools/whitebox/sun/hotspot/WhiteBox.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/tools/whitebox/sun/hotspot/WhiteBox.java	Fri Sep 14 21:50:58 2012 -0700
@@ -63,6 +63,13 @@
   public native long getObjectAddress(Object o);
   public native int  getHeapOopSize();
 
+  // Runtime
+  // Make sure class name is in the correct format
+  public boolean isClassAlive(String name) {
+    return isClassAlive0(name.replace('.', '/'));
+  }
+  private native boolean isClassAlive0(String name);
+
   // G1
   public native boolean g1InConcurrentMark();
   public native boolean g1IsHumongous(Object o);
--- a/src/share/vm/adlc/formssel.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/adlc/formssel.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -2383,8 +2383,8 @@
   if ( op->is_base_constant(globals) == Form::idealP ) {
     // Find the constant's index:  _c0, _c1, _c2, ... , _cN
     uint idx  = op->constant_position( globals, rep_var);
-    fprintf(fp,"  virtual bool disp_is_oop() const {");
-    fprintf(fp,  "  return _c%d->isa_oop_ptr();", idx);
+    fprintf(fp,"  virtual relocInfo::relocType disp_reloc() const {");
+    fprintf(fp,  "  return _c%d->reloc();", idx);
     fprintf(fp, " }\n");
   }
 }
--- a/src/share/vm/adlc/main.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/adlc/main.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -215,9 +215,9 @@
   AD.addInclude(AD._CPP_file, "asm/assembler.hpp");
   AD.addInclude(AD._CPP_file, "code/vmreg.hpp");
   AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
-  AD.addInclude(AD._CPP_file, "oops/compiledICHolderOop.hpp");
+  AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp");
   AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
-  AD.addInclude(AD._CPP_file, "oops/methodOop.hpp");
+  AD.addInclude(AD._CPP_file, "oops/method.hpp");
   AD.addInclude(AD._CPP_file, "oops/oop.inline.hpp");
   AD.addInclude(AD._CPP_file, "oops/oop.inline2.hpp");
   AD.addInclude(AD._CPP_file, "opto/cfgnode.hpp");
--- a/src/share/vm/adlc/output_c.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/adlc/output_c.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -1884,7 +1884,6 @@
   bool          _doing_emit_hi;
   bool          _doing_emit_lo;
   bool          _may_reloc;
-  bool          _must_reloc;
   reloc_format  _reloc_form;
   const char *  _reloc_type;
   bool          _processing_noninput;
@@ -1923,7 +1922,6 @@
     _doing_emit_hi = false;
     _doing_emit_lo = false;
     _may_reloc     = false;
-    _must_reloc    = false;
     _reloc_form    = RELOC_NONE;
     _reloc_type    = AdlcVMDeps::none_reloc_type();
     _strings_to_emit.clear();
@@ -2195,7 +2193,7 @@
 
           _reg_status = LITERAL_ACCESSED;
           emit_rep_var( rep_var );
-          fprintf(_fp,"->disp_is_oop())");
+          fprintf(_fp,"->disp_reloc())");
 
           // skip trailing $Address
           _strings_to_emit.iter();
@@ -2232,14 +2230,6 @@
   }
 
 
-  void gen_emit_x_reloc(const char *d32_lo_hi ) {
-    fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_lo_hi );
-    emit_replacement();             fprintf(_fp,", ");
-    emit_reloc_type( _reloc_type ); fprintf(_fp,", ");
-    fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");");
-  }
-
-
   void emit() {
     //
     //   "emit_d32_reloc(" or "emit_hi_reloc" or "emit_lo_reloc"
@@ -2254,10 +2244,6 @@
         fprintf( _fp, "emit_%s(cbuf, ", d32_hi_lo );
         emit_replacement(); fprintf(_fp, ")");
       }
-      else if ( _must_reloc ) {
-        // Must emit relocation information
-        gen_emit_x_reloc( d32_hi_lo );
-      }
       else {
         // Emit RUNTIME CHECK to see if value needs relocation info
         // If emitting a relocatable address, use 'emit_d32_reloc'
@@ -2266,10 +2252,15 @@
                 && !(_doing_disp && _doing_constant),
                 "Must be emitting either a displacement or a constant");
         fprintf(_fp,"\n");
-        fprintf(_fp,"if ( opnd_array(%d)->%s_is_oop() ) {\n",
+        fprintf(_fp,"if ( opnd_array(%d)->%s_reloc() != relocInfo::none ) {\n",
                 _operand_idx, disp_constant);
         fprintf(_fp,"  ");
-        gen_emit_x_reloc( d32_hi_lo ); fprintf(_fp,"\n");
+        fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_hi_lo );
+        emit_replacement();             fprintf(_fp,", ");
+        fprintf(_fp,"opnd_array(%d)->%s_reloc(), ",
+                _operand_idx, disp_constant);
+        fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");");
+        fprintf(_fp,"\n");
         fprintf(_fp,"} else {\n");
         fprintf(_fp,"  emit_%s(cbuf, ", d32_hi_lo);
         emit_replacement(); fprintf(_fp, ");\n"); fprintf(_fp,"}");
--- a/src/share/vm/adlc/output_h.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/adlc/output_h.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -1363,8 +1363,8 @@
           fprintf(fp,   " return _c0->get_con();");
           fprintf(fp, " }\n");
           // Generate query to determine if this pointer is an oop
-          fprintf(fp,"  virtual bool           constant_is_oop() const {");
-          fprintf(fp,   " return _c0->isa_oop_ptr();");
+          fprintf(fp,"  virtual relocInfo::relocType           constant_reloc() const {");
+          fprintf(fp,   " return _c0->reloc();");
           fprintf(fp, " }\n");
         }
         else if (!strcmp(oper->ideal_type(_globalNames), "ConN")) {
@@ -1373,8 +1373,8 @@
           fprintf(fp,   " return _c0->get_ptrtype()->get_con();");
           fprintf(fp, " }\n");
           // Generate query to determine if this pointer is an oop
-          fprintf(fp,"  virtual bool           constant_is_oop() const {");
-          fprintf(fp,   " return _c0->get_ptrtype()->isa_oop_ptr();");
+          fprintf(fp,"  virtual relocInfo::relocType           constant_reloc() const {");
+          fprintf(fp,   " return _c0->get_ptrtype()->reloc();");
           fprintf(fp, " }\n");
         }
         else if (!strcmp(oper->ideal_type(_globalNames), "ConL")) {
--- a/src/share/vm/asm/codeBuffer.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/asm/codeBuffer.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -25,6 +25,9 @@
 #include "precompiled.hpp"
 #include "asm/codeBuffer.hpp"
 #include "compiler/disassembler.hpp"
+#include "memory/gcLocker.hpp"
+#include "oops/methodData.hpp"
+#include "oops/oop.inline.hpp"
 #include "utilities/copy.hpp"
 #include "utilities/xmlstream.hpp"
 
@@ -142,7 +145,7 @@
 
 void CodeBuffer::initialize_oop_recorder(OopRecorder* r) {
   assert(_oop_recorder == &_default_oop_recorder && _default_oop_recorder.is_unused(), "do this once");
-  DEBUG_ONLY(_default_oop_recorder.oop_size());  // force unused OR to be frozen
+  DEBUG_ONLY(_default_oop_recorder.freeze());  // force unused OR to be frozen
   _oop_recorder = r;
 }
 
@@ -489,6 +492,87 @@
   dest->verify_section_allocation();
 }
 
+void CodeBuffer::finalize_oop_references(methodHandle mh) {
+  No_Safepoint_Verifier nsv;
+
+  GrowableArray<oop> oops;
+
+  // Make sure that immediate metadata records something in the OopRecorder
+  for (int n = (int) SECT_FIRST; n < (int) SECT_LIMIT; n++) {
+    // pull code out of each section
+    CodeSection* cs = code_section(n);
+    if (cs->is_empty())  continue;  // skip trivial section
+    RelocIterator iter(cs);
+    while (iter.next()) {
+      if (iter.type() == relocInfo::metadata_type) {
+        metadata_Relocation* md = iter.metadata_reloc();
+        if (md->metadata_is_immediate()) {
+          Metadata* m = md->metadata_value();
+          if (oop_recorder()->is_real(m)) {
+            oop o = NULL;
+            if (m->is_methodData()) {
+              m = ((MethodData*)m)->method();
+            }
+            if (m->is_method()) {
+              m = ((Method*)m)->method_holder();
+            }
+            if (m->is_klass()) {
+              o = ((Klass*)m)->class_loader();
+            } else {
+              // XXX This will currently occur for MDO which don't
+              // have a backpointer.  This has to be fixed later.
+              m->print();
+              ShouldNotReachHere();
+            }
+            if (o != NULL && oops.find(o) == -1) {
+              oops.append(o);
+            }
+          }
+        }
+      }
+    }
+  }
+
+  if (!oop_recorder()->is_unused()) {
+    for (int i = 0; i < oop_recorder()->metadata_count(); i++) {
+      Metadata* m = oop_recorder()->metadata_at(i);
+      if (oop_recorder()->is_real(m)) {
+        oop o = NULL;
+        if (m->is_methodData()) {
+          m = ((MethodData*)m)->method();
+        }
+        if (m->is_method()) {
+          m = ((Method*)m)->method_holder();
+        }
+        if (m->is_klass()) {
+          o = ((Klass*)m)->class_loader();
+        } else {
+          m->print();
+          ShouldNotReachHere();
+        }
+        if (o != NULL && oops.find(o) == -1) {
+          oops.append(o);
+        }
+      }
+    }
+
+  }
+
+  // Add the class loader of Method* for the nmethod itself
+  oop cl = mh->method_holder()->class_loader();
+  if (cl != NULL) {
+    oops.append(cl);
+  }
+
+  // Add any oops that we've found
+  Thread* thread = Thread::current();
+  for (int i = 0; i < oops.length(); i++) {
+    oop_recorder()->find_index((jobject)thread->handle_area()->allocate_handle(oops.at(i)));
+  }
+}
+
+
+
 csize_t CodeBuffer::total_offset_of(CodeSection* cs) const {
   csize_t size_so_far = 0;
   for (int n = (int) SECT_FIRST; n < (int) SECT_LIMIT; n++) {
--- a/src/share/vm/asm/codeBuffer.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/asm/codeBuffer.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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);
     }
   }
 
--- a/src/share/vm/c1/c1_CodeStubs.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_CodeStubs.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -346,7 +346,8 @@
  public:
   enum PatchID {
     access_field_id,
-    load_klass_id
+    load_klass_id,
+    load_mirror_id
   };
   enum constants {
     patch_info_size = 3
@@ -360,7 +361,7 @@
   Label         _patch_site_continuation;
   Register      _obj;
   CodeEmitInfo* _info;
-  int           _oop_index;  // index of the patchable oop in nmethod oop table if needed
+  int           _index;  // index of the patchable oop or Klass* in nmethod oop or metadata table if needed
   static int    _patch_info_offset;
 
   void align_patch_site(MacroAssembler* masm);
@@ -368,10 +369,10 @@
  public:
   static int patch_info_offset() { return _patch_info_offset; }
 
-  PatchingStub(MacroAssembler* masm, PatchID id, int oop_index = -1):
+  PatchingStub(MacroAssembler* masm, PatchID id, int index = -1):
       _id(id)
     , _info(NULL)
-    , _oop_index(oop_index) {
+    , _index(index) {
     if (os::is_MP()) {
       // force alignment of patch sites on MP hardware so we
       // can guarantee atomic writes to the patch site.
@@ -399,8 +400,8 @@
       }
       NativeMovRegMem* n_move = nativeMovRegMem_at(pc_start());
       n_move->set_offset(field_offset);
-    } else if (_id == load_klass_id) {
-      assert(_obj != noreg, "must have register object for load_klass");
+    } else if (_id == load_klass_id || _id == load_mirror_id) {
+      assert(_obj != noreg, "must have register object for load_klass/load_mirror");
 #ifdef ASSERT
       // verify that we're pointing at a NativeMovConstReg
       nativeMovConstReg_at(pc_start());
--- a/src/share/vm/c1/c1_FrameMap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_FrameMap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -194,6 +194,10 @@
     return LIR_OprFact::single_cpu_oop(cpu_reg2rnr(r));
   }
 
+  static LIR_Opr as_metadata_opr(Register r) {
+    return LIR_OprFact::single_cpu_metadata(cpu_reg2rnr(r));
+  }
+
   FrameMap(ciMethod* method, int monitors, int reserved_argument_area_size);
   bool finalize_frame(int nof_slots);
 
--- a/src/share/vm/c1/c1_GraphBuilder.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_GraphBuilder.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -887,7 +887,7 @@
           patch_state = copy_state_before();
           t = new ObjectConstant(obj);
         } else {
-          assert(!obj->is_klass(), "must be java_mirror of klass");
+          assert(obj->is_instance(), "must be java_mirror of klass");
           t = new InstanceConstant(obj->as_instance());
         }
         break;
@@ -1434,7 +1434,7 @@
     if (compilation()->env()->dtrace_method_probes()) {
       // Report exit from inline methods
       Values* args = new Values(1);
-      args->push(append(new Constant(new ObjectConstant(method()))));
+      args->push(append(new Constant(new MethodConstant(method()))));
       append(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args));
     }
 
@@ -1887,7 +1887,7 @@
     code == Bytecodes::_invokeinterface;
   Values* args = state()->pop_arguments(target->arg_size_no_receiver());
   Value recv = has_receiver ? apop() : NULL;
-  int vtable_index = methodOopDesc::invalid_vtable_index;
+  int vtable_index = Method::invalid_vtable_index;
 
 #ifdef SPARC
   // Currently only supported on Sparc.
@@ -3544,7 +3544,7 @@
     // Report exit from inline methods.  We don't have a stream here
     // so pass an explicit bci of SynchronizationEntryBCI.
     Values* args = new Values(1);
-    args->push(append_with_bci(new Constant(new ObjectConstant(method())), bci));
+    args->push(append_with_bci(new Constant(new MethodConstant(method())), bci));
     append_with_bci(new RuntimeCall(voidType, "dtrace_method_exit", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), args), bci);
   }
 
@@ -3732,7 +3732,7 @@
 
   if (compilation()->env()->dtrace_method_probes()) {
     Values* args = new Values(1);
-    args->push(append(new Constant(new ObjectConstant(method()))));
+    args->push(append(new Constant(new MethodConstant(method()))));
     append(new RuntimeCall(voidType, "dtrace_method_entry", CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), args));
   }
 
--- a/src/share/vm/c1/c1_Instruction.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_Instruction.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -396,6 +396,8 @@
     switch (type()->tag()) {
     case intTag:
       return HASH2(name(), type()->as_IntConstant()->value());
+    case addressTag:
+      return HASH2(name(), type()->as_AddressConstant()->value());
     case longTag:
       {
         jlong temp = type()->as_LongConstant()->value();
@@ -411,6 +413,11 @@
     case objectTag:
       assert(type()->as_ObjectType()->is_loaded(), "can't handle unloaded values");
       return HASH2(name(), type()->as_ObjectType()->constant_value());
+    case metaDataTag:
+      assert(type()->as_MetadataType()->is_loaded(), "can't handle unloaded values");
+      return HASH2(name(), type()->as_MetadataType()->constant_value());
+    default:
+      ShouldNotReachHere();
     }
   }
   return 0;
@@ -456,6 +463,14 @@
                 t1->is_loaded() && t2->is_loaded() &&
                 t1->constant_value() == t2->constant_value());
       }
+    case metaDataTag:
+      {
+        MetadataType* t1 =    type()->as_MetadataType();
+        MetadataType* t2 = v->type()->as_MetadataType();
+        return (t1 != NULL && t2 != NULL &&
+                t1->is_loaded() && t2->is_loaded() &&
+                t1->constant_value() == t2->constant_value());
+      }
   }
   return false;
 }
@@ -508,6 +523,18 @@
     }
     break;
   }
+  case metaDataTag: {
+    ciMetadata* xvalue = lt->as_MetadataType()->constant_value();
+    ciMetadata* yvalue = rt->as_MetadataType()->constant_value();
+    assert(xvalue != NULL && yvalue != NULL, "not constants");
+    if (xvalue->is_loaded() && yvalue->is_loaded()) {
+      switch (cond) {
+      case If::eql: return xvalue == yvalue ? cond_true : cond_false;
+      case If::neq: return xvalue != yvalue ? cond_true : cond_false;
+      }
+    }
+    break;
+  }
   }
   return not_comparable;
 }
--- a/src/share/vm/c1/c1_Instruction.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_Instruction.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -913,7 +913,7 @@
   Value value() const                            { return _value; }
   bool needs_write_barrier() const               { return check_flag(NeedsWriteBarrierFlag); }
   bool needs_store_check() const                 { return check_flag(NeedsStoreCheckFlag); }
-  // Helpers for methodDataOop profiling
+  // Helpers for MethodData* profiling
   void set_should_profile(bool value)                { set_flag(ProfileMDOFlag, value); }
   void set_profiled_method(ciMethod* method)         { _profiled_method = method;   }
   void set_profiled_bci(int bci)                     { _profiled_bci = bci;         }
@@ -1349,7 +1349,7 @@
   virtual bool can_trap() const                  { return true; }
   virtual void input_values_do(ValueVisitor* f)   { StateSplit::input_values_do(f); f->visit(&_obj); }
 
-  // Helpers for methodDataOop profiling
+  // Helpers for MethodData* profiling
   void set_should_profile(bool value)                { set_flag(ProfileMDOFlag, value); }
   void set_profiled_method(ciMethod* method)         { _profiled_method = method;   }
   void set_profiled_bci(int bci)                     { _profiled_bci = bci;         }
--- a/src/share/vm/c1/c1_InstructionPrinter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_InstructionPrinter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -133,9 +133,6 @@
       output()->print("null");
     } else if (!value->is_loaded()) {
       output()->print("<unloaded object " PTR_FORMAT ">", value);
-    } else if (value->is_method()) {
-      ciMethod* m = (ciMethod*)value;
-      output()->print("<method %s.%s>", m->holder()->name()->as_utf8(), m->name()->as_utf8());
     } else {
       output()->print("<object " PTR_FORMAT " klass=", value->constant_encoding());
       print_klass(value->klass());
@@ -159,6 +156,9 @@
     }
     output()->print("class ");
     print_klass(klass);
+  } else if (type->as_MethodConstant() != NULL) {
+    ciMethod* m = type->as_MethodConstant()->value();
+    output()->print("<method %s.%s>", m->holder()->name()->as_utf8(), m->name()->as_utf8());
   } else {
     output()->print("???");
   }
@@ -461,7 +461,10 @@
   output()->print("type_cast(");
   print_value(x->obj());
   output()->print(") ");
-  print_klass(x->declared_type()->klass());
+  if (x->declared_type()->is_klass())
+    print_klass(x->declared_type()->as_klass());
+  else
+    output()->print(type2name(x->declared_type()->basic_type()));
 }
 
 
--- a/src/share/vm/c1/c1_LIR.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIR.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -85,14 +85,21 @@
 LIR_Opr LIR_OprFact::value_type(ValueType* type) {
   ValueTag tag = type->tag();
   switch (tag) {
-  case objectTag : {
+  case metaDataTag : {
     ClassConstant* c = type->as_ClassConstant();
     if (c != NULL && !c->value()->is_loaded()) {
-      return LIR_OprFact::oopConst(NULL);
+      return LIR_OprFact::metadataConst(NULL);
+    } else if (c != NULL) {
+      return LIR_OprFact::metadataConst(c->value()->constant_encoding());
     } else {
+      MethodConstant* m = type->as_MethodConstant();
+      assert (m != NULL, "not a class or a method?");
+      return LIR_OprFact::metadataConst(m->value()->constant_encoding());
+    }
+  }
+  case objectTag : {
       return LIR_OprFact::oopConst(type->as_ObjectType()->encoding());
     }
-  }
   case addressTag: return LIR_OprFact::addressConst(type->as_AddressConstant()->value());
   case intTag    : return LIR_OprFact::intConst(type->as_IntConstant()->value());
   case floatTag  : return LIR_OprFact::floatConst(type->as_FloatConstant()->value());
@@ -148,12 +155,12 @@
 #ifdef _LP64
   assert(base()->is_cpu_register(), "wrong base operand");
   assert(index()->is_illegal() || index()->is_double_cpu(), "wrong index operand");
-  assert(base()->type() == T_OBJECT || base()->type() == T_LONG,
+  assert(base()->type() == T_OBJECT || base()->type() == T_LONG || base()->type() == T_METADATA,
          "wrong type for addresses");
 #else
   assert(base()->is_single_cpu(), "wrong base operand");
   assert(index()->is_illegal() || index()->is_single_cpu(), "wrong index operand");
-  assert(base()->type() == T_OBJECT || base()->type() == T_INT,
+  assert(base()->type() == T_OBJECT || base()->type() == T_INT || base()->type() == T_METADATA,
          "wrong type for addresses");
 #endif
 }
@@ -176,6 +183,7 @@
     case T_LONG:
     case T_OBJECT:
     case T_ADDRESS:
+    case T_METADATA:
     case T_VOID:
       return ::type2char(t);
 
@@ -219,6 +227,7 @@
     case T_INT:
     case T_ADDRESS:
     case T_OBJECT:
+    case T_METADATA:
     case T_ARRAY:
       assert((kind_field() == cpu_register || kind_field() == stack_value) &&
              size_field() == single_size, "must match");
@@ -1161,9 +1170,14 @@
 
 
 void LIR_List::oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info) {
+  assert(reg->type() == T_OBJECT, "bad reg");
   append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),  reg, T_OBJECT, lir_patch_normal, info));
 }
 
+void LIR_List::klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info) {
+  assert(reg->type() == T_METADATA, "bad reg");
+  append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg, T_METADATA, lir_patch_normal, info));
+}
 
 void LIR_List::load(LIR_Address* addr, LIR_Opr src, CodeEmitInfo* info, LIR_PatchCode patch_code) {
   append(new LIR_Op1(
@@ -1543,6 +1557,7 @@
     case T_FLOAT:  out->print("flt:%f",   as_jfloat());         break;
     case T_DOUBLE: out->print("dbl:%f",   as_jdouble());        break;
     case T_OBJECT: out->print("obj:0x%x", as_jobject());        break;
+    case T_METADATA: out->print("metadata:0x%x", as_metadata());break;
     default:       out->print("%3d:0x%x",type(), as_jdouble()); break;
   }
 }
--- a/src/share/vm/c1/c1_LIR.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIR.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,7 +26,7 @@
 #define SHARE_VM_C1_C1_LIR_HPP
 
 #include "c1/c1_ValueType.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 
 class BlockBegin;
 class BlockList;
@@ -108,6 +108,14 @@
     _value.set_type(T_INT);     _value.set_jint((jint)p);
 #endif
   }
+  LIR_Const(Metadata* m) {
+    _value.set_type(T_METADATA);
+#ifdef _LP64
+    _value.set_jlong((jlong)m);
+#else
+    _value.set_jint((jint)m);
+#endif // _LP64
+  }
 
   virtual BasicType type()       const { return _value.get_type(); }
   virtual LIR_Const* as_constant()     { return this; }
@@ -122,8 +130,10 @@
 
 #ifdef _LP64
   address   as_pointer() const         { type_check(T_LONG  ); return (address)_value.get_jlong(); }
+  Metadata* as_metadata() const        { type_check(T_METADATA); return (Metadata*)_value.get_jlong(); }
 #else
   address   as_pointer() const         { type_check(T_INT   ); return (address)_value.get_jint(); }
+  Metadata* as_metadata() const        { type_check(T_METADATA); return (Metadata*)_value.get_jint(); }
 #endif
 
 
@@ -289,6 +299,7 @@
     , address_type  = 4 << type_shift
     , float_type    = 5 << type_shift
     , double_type   = 6 << type_shift
+    , metadata_type = 7 << type_shift
   };
   friend OprType as_OprType(BasicType t);
   friend BasicType as_BasicType(OprType t);
@@ -312,6 +323,7 @@
       case T_ADDRESS:
       case T_OBJECT:
       case T_ARRAY:
+      case T_METADATA:
         return single_size;
         break;
 
@@ -464,6 +476,7 @@
   case T_OBJECT:
   case T_ARRAY:    return LIR_OprDesc::object_type;
   case T_ADDRESS:  return LIR_OprDesc::address_type;
+  case T_METADATA: return LIR_OprDesc::metadata_type;
   case T_ILLEGAL:  // fall through
   default: ShouldNotReachHere(); return LIR_OprDesc::unknown_type;
   }
@@ -477,6 +490,7 @@
   case LIR_OprDesc::double_type:  return T_DOUBLE;
   case LIR_OprDesc::object_type:  return T_OBJECT;
   case LIR_OprDesc::address_type: return T_ADDRESS;
+  case LIR_OprDesc::metadata_type:return T_METADATA;
   case LIR_OprDesc::unknown_type: // fall through
   default: ShouldNotReachHere();  return T_ILLEGAL;
   }
@@ -577,6 +591,12 @@
                                LIR_OprDesc::cpu_register         |
                                LIR_OprDesc::single_size);
   }
+  static LIR_Opr single_cpu_metadata(int reg) {
+    return (LIR_Opr)(intptr_t)((reg  << LIR_OprDesc::reg1_shift) |
+                               LIR_OprDesc::metadata_type        |
+                               LIR_OprDesc::cpu_register         |
+                               LIR_OprDesc::single_size);
+  }
   static LIR_Opr double_cpu(int reg1, int reg2) {
     LP64_ONLY(assert(reg1 == reg2, "must be identical"));
     return (LIR_Opr)(intptr_t)((reg1 << LIR_OprDesc::reg1_shift) |
@@ -650,6 +670,14 @@
                                             LIR_OprDesc::virtual_mask);
         break;
 
+      case T_METADATA:
+        res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift)  |
+                                            LIR_OprDesc::metadata_type|
+                                            LIR_OprDesc::cpu_register |
+                                            LIR_OprDesc::single_size  |
+                                            LIR_OprDesc::virtual_mask);
+        break;
+
       case T_INT:
         res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
                                   LIR_OprDesc::int_type              |
@@ -747,6 +775,12 @@
                                   LIR_OprDesc::single_size);
         break;
 
+      case T_METADATA:
+        res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
+                                  LIR_OprDesc::metadata_type         |
+                                  LIR_OprDesc::stack_value           |
+                                  LIR_OprDesc::single_size);
+        break;
       case T_INT:
         res = (LIR_Opr)(intptr_t)((index << LIR_OprDesc::data_shift) |
                                   LIR_OprDesc::int_type              |
@@ -808,6 +842,7 @@
   static LIR_Opr intptrConst(intptr_t v)         { return (LIR_Opr)(new LIR_Const((void*)v)); }
   static LIR_Opr illegal()                       { return (LIR_Opr)-1; }
   static LIR_Opr addressConst(jint i)            { return (LIR_Opr)(new LIR_Const(i, true)); }
+  static LIR_Opr metadataConst(Metadata* m)      { return (LIR_Opr)(new LIR_Const(m)); }
 
   static LIR_Opr value_type(ValueType* type);
   static LIR_Opr dummy_value_type(ValueType* type);
@@ -1541,7 +1576,7 @@
   CodeEmitInfo* info_for_exception() const       { return _info_for_exception; }
   CodeStub* stub() const                         { return _stub;           }
 
-  // methodDataOop profiling
+  // MethodData* profiling
   void set_profiled_method(ciMethod *method)     { _profiled_method = method; }
   void set_profiled_bci(int bci)                 { _profiled_bci = bci;       }
   void set_should_profile(bool b)                { _should_profile = b;       }
@@ -1995,9 +2030,12 @@
   }
   void volatile_move(LIR_Opr src, LIR_Opr dst, BasicType type, CodeEmitInfo* info = NULL, LIR_PatchCode patch_code = lir_patch_none) { append(new LIR_Op1(lir_move, src, dst, type, patch_code, info, lir_move_volatile)); }
 
-  void oop2reg  (jobject o, LIR_Opr reg)         { append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),    reg));   }
+  void oop2reg  (jobject o, LIR_Opr reg)         { assert(reg->type() == T_OBJECT, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::oopConst(o),    reg));   }
   void oop2reg_patch(jobject o, LIR_Opr reg, CodeEmitInfo* info);
 
+  void metadata2reg  (Metadata* o, LIR_Opr reg)  { assert(reg->type() == T_METADATA, "bad reg"); append(new LIR_Op1(lir_move, LIR_OprFact::metadataConst(o), reg));   }
+  void klass2reg_patch(Metadata* o, LIR_Opr reg, CodeEmitInfo* info);
+
   void return_op(LIR_Opr result)                 { append(new LIR_Op1(lir_return, result)); }
 
   void safepoint(LIR_Opr tmp, CodeEmitInfo* info)  { append(new LIR_Op1(lir_safepoint, tmp, info)); }
@@ -2149,7 +2187,7 @@
                   LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check,
                   CodeEmitInfo* info_for_exception, CodeEmitInfo* info_for_patch, CodeStub* stub,
                   ciMethod* profiled_method, int profiled_bci);
-  // methodDataOop profiling
+  // MethodData* profiling
   void profile_call(ciMethod* method, int bci, ciMethod* callee, LIR_Opr mdo, LIR_Opr recv, LIR_Opr t1, ciKlass* cha_klass) {
     append(new LIR_OpProfileCall(lir_profile_call, method, bci, callee, mdo, recv, t1, cha_klass));
   }
--- a/src/share/vm/c1/c1_LIRAssembler.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIRAssembler.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -74,13 +74,19 @@
     }
   } else if (patch->id() == PatchingStub::load_klass_id) {
     switch (code) {
-      case Bytecodes::_putstatic:
-      case Bytecodes::_getstatic:
       case Bytecodes::_new:
       case Bytecodes::_anewarray:
       case Bytecodes::_multianewarray:
       case Bytecodes::_instanceof:
       case Bytecodes::_checkcast:
+        break;
+      default:
+        ShouldNotReachHere();
+    }
+  } else if (patch->id() == PatchingStub::load_mirror_id) {
+    switch (code) {
+      case Bytecodes::_putstatic:
+      case Bytecodes::_getstatic:
       case Bytecodes::_ldc:
       case Bytecodes::_ldc_w:
         break;
--- a/src/share/vm/c1/c1_LIRAssembler.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIRAssembler.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,7 +27,7 @@
 
 #include "c1/c1_CodeStubs.hpp"
 #include "ci/ciMethodData.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "utilities/top.hpp"
 
 class Compilation;
@@ -84,6 +84,9 @@
   void jobject2reg(jobject o, Register reg);
   void jobject2reg_with_patching(Register reg, CodeEmitInfo* info);
 
+  void metadata2reg(Metadata* o, Register reg);
+  void klass2reg_with_patching(Register reg, CodeEmitInfo* info);
+
   void emit_stubs(CodeStubList* stub_list);
 
   // addresses
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,8 +30,8 @@
 #include "c1/c1_LIRGenerator.hpp"
 #include "c1/c1_ValueStack.hpp"
 #include "ci/ciArrayKlass.hpp"
-#include "ci/ciCPCache.hpp"
 #include "ci/ciInstance.hpp"
+#include "ci/ciObjArray.hpp"
 #include "runtime/sharedRuntime.hpp"
 #include "runtime/stubRoutines.hpp"
 #include "utilities/bitMap.inline.hpp"
@@ -461,13 +461,13 @@
 }
 
 
-void LIRGenerator::jobject2reg_with_patching(LIR_Opr r, ciObject* obj, CodeEmitInfo* info) {
+void LIRGenerator::klass2reg_with_patching(LIR_Opr r, ciMetadata* obj, CodeEmitInfo* info) {
   if (!obj->is_loaded() || PatchALot) {
     assert(info != NULL, "info must be set if class is not loaded");
-    __ oop2reg_patch(NULL, r, info);
+    __ klass2reg_patch(NULL, r, info);
   } else {
     // no patching needed
-    __ oop2reg(obj->constant_encoding(), r);
+    __ metadata2reg(obj->constant_encoding(), r);
   }
 }
 
@@ -657,7 +657,7 @@
 
 
 void LIRGenerator::new_instance(LIR_Opr dst, ciInstanceKlass* klass, LIR_Opr scratch1, LIR_Opr scratch2, LIR_Opr scratch3, LIR_Opr scratch4, LIR_Opr klass_reg, CodeEmitInfo* info) {
-  jobject2reg_with_patching(klass_reg, klass, info);
+  klass2reg_with_patching(klass_reg, klass, info);
   // If klass is not loaded we do not know if the klass has finalizers:
   if (UseFastNewInstance && klass->is_loaded()
       && !Klass::layout_helper_needs_slow_path(klass->layout_helper())) {
@@ -955,8 +955,8 @@
       not_taken_count_offset = t;
     }
 
-    LIR_Opr md_reg = new_register(T_OBJECT);
-    __ oop2reg(md->constant_encoding(), md_reg);
+    LIR_Opr md_reg = new_register(T_METADATA);
+    __ metadata2reg(md->constant_encoding(), md_reg);
 
     LIR_Opr data_offset_reg = new_pointer_register();
     __ cmove(lir_cond(cond),
@@ -1189,11 +1189,11 @@
   if (compilation()->env()->dtrace_method_probes()) {
     BasicTypeList signature;
     signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT));    // thread
-    signature.append(T_OBJECT); // methodOop
+    signature.append(T_OBJECT); // Method*
     LIR_OprList* args = new LIR_OprList();
     args->append(getThreadPointer());
-    LIR_Opr meth = new_register(T_OBJECT);
-    __ oop2reg(method()->constant_encoding(), meth);
+    LIR_Opr meth = new_register(T_METADATA);
+    __ metadata2reg(method()->constant_encoding(), meth);
     args->append(meth);
     call_runtime(&signature, args, CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_exit), voidType, NULL);
   }
@@ -1286,7 +1286,7 @@
   if (x->needs_null_check()) {
     info = state_for(x);
   }
-  __ move(new LIR_Address(rcvr.result(), oopDesc::klass_offset_in_bytes(), T_OBJECT), result, info);
+  __ move(new LIR_Address(rcvr.result(), oopDesc::klass_offset_in_bytes(), UseCompressedKlassPointers ? T_OBJECT : T_ADDRESS), result, info);
   __ move_wide(new LIR_Address(result, in_bytes(Klass::java_mirror_offset()), T_OBJECT), result);
 }
 
@@ -2292,8 +2292,8 @@
       if (gen_type_check) {
         // We have determined that offset == referent_offset && src != null.
         // if (src->_klass->_reference_type == REF_NONE) -> continue
-        __ move(new LIR_Address(src.result(), oopDesc::klass_offset_in_bytes(), T_OBJECT), src_klass);
-        LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(instanceKlass::reference_type_offset()), T_BYTE);
+        __ move(new LIR_Address(src.result(), oopDesc::klass_offset_in_bytes(), UseCompressedKlassPointers ? T_OBJECT : T_ADDRESS), src_klass);
+        LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(InstanceKlass::reference_type_offset()), T_BYTE);
         LIR_Opr reference_type = new_register(T_INT);
         __ move(reference_type_addr, reference_type);
         __ cmp(lir_cond_equal, reference_type, LIR_OprFact::intConst(REF_NONE));
@@ -2553,8 +2553,8 @@
       assert(data->is_JumpData(), "need JumpData for branches");
       offset = md->byte_offset_of_slot(data, JumpData::taken_offset());
     }
-    LIR_Opr md_reg = new_register(T_OBJECT);
-    __ oop2reg(md->constant_encoding(), md_reg);
+    LIR_Opr md_reg = new_register(T_METADATA);
+    __ metadata2reg(md->constant_encoding(), md_reg);
 
     increment_counter(new LIR_Address(md_reg, offset,
                                       NOT_LP64(T_INT) LP64_ONLY(T_LONG)), DataLayout::counter_increment);
@@ -2608,11 +2608,11 @@
   if (compilation()->env()->dtrace_method_probes()) {
     BasicTypeList signature;
     signature.append(LP64_ONLY(T_LONG) NOT_LP64(T_INT));    // thread
-    signature.append(T_OBJECT); // methodOop
+    signature.append(T_OBJECT); // Method*
     LIR_OprList* args = new LIR_OprList();
     args->append(getThreadPointer());
-    LIR_Opr meth = new_register(T_OBJECT);
-    __ oop2reg(method()->constant_encoding(), meth);
+    LIR_Opr meth = new_register(T_METADATA);
+    __ metadata2reg(method()->constant_encoding(), meth);
     args->append(meth);
     call_runtime(&signature, args, CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_method_entry), voidType, NULL);
   }
@@ -2794,7 +2794,7 @@
                           SharedRuntime::get_resolve_virtual_call_stub(),
                           arg_list, info);
       } else {
-        int entry_offset = instanceKlass::vtable_start_offset() + x->vtable_index() * vtableEntry::size();
+        int entry_offset = InstanceKlass::vtable_start_offset() + x->vtable_index() * vtableEntry::size();
         int vtable_offset = entry_offset * wordSize + vtableEntry::method_offset_in_bytes();
         __ call_virtual(target, receiver, result_register, vtable_offset, arg_list, info);
       }
@@ -2905,11 +2905,12 @@
 void LIRGenerator::do_ClassIDIntrinsic(Intrinsic* x) {
     CodeEmitInfo* info = state_for(x);
     CodeEmitInfo* info2 = new CodeEmitInfo(info); // Clone for the second null check
+    BasicType klass_pointer_type = NOT_LP64(T_INT) LP64_ONLY(T_LONG);
     assert(info != NULL, "must have info");
     LIRItem arg(x->argument_at(1), this);
     arg.load_item();
-    LIR_Opr klass = new_register(T_OBJECT);
-    __ move(new LIR_Address(arg.result(), java_lang_Class::klass_offset_in_bytes(), T_OBJECT), klass, info);
+    LIR_Opr klass = new_pointer_register();
+    __ move(new LIR_Address(arg.result(), java_lang_Class::klass_offset_in_bytes(), klass_pointer_type), klass, info);
     LIR_Opr id = new_register(T_LONG);
     ByteSize offset = TRACE_ID_OFFSET;
     LIR_Address* trace_id_addr = new LIR_Address(klass, in_bytes(offset), T_LONG);
@@ -3031,21 +3032,21 @@
   assert(level > CompLevel_simple, "Shouldn't be here");
 
   int offset = -1;
-  LIR_Opr counter_holder = new_register(T_OBJECT);
+  LIR_Opr counter_holder = new_register(T_METADATA);
   LIR_Opr meth;
   if (level == CompLevel_limited_profile) {
-    offset = in_bytes(backedge ? methodOopDesc::backedge_counter_offset() :
-                                 methodOopDesc::invocation_counter_offset());
-    __ oop2reg(method->constant_encoding(), counter_holder);
+    offset = in_bytes(backedge ? Method::backedge_counter_offset() :
+                                 Method::invocation_counter_offset());
+    __ metadata2reg(method->constant_encoding(), counter_holder);
     meth = counter_holder;
   } else if (level == CompLevel_full_profile) {
-    offset = in_bytes(backedge ? methodDataOopDesc::backedge_counter_offset() :
-                                 methodDataOopDesc::invocation_counter_offset());
+    offset = in_bytes(backedge ? MethodData::backedge_counter_offset() :
+                                 MethodData::invocation_counter_offset());
     ciMethodData* md = method->method_data_or_null();
     assert(md != NULL, "Sanity");
-    __ oop2reg(md->constant_encoding(), counter_holder);
-    meth = new_register(T_OBJECT);
-    __ oop2reg(method->constant_encoding(), meth);
+    __ metadata2reg(md->constant_encoding(), counter_holder);
+    meth = new_register(T_METADATA);
+    __ metadata2reg(method->constant_encoding(), meth);
   } else {
     ShouldNotReachHere();
   }
--- a/src/share/vm/c1/c1_LIRGenerator.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LIRGenerator.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -306,7 +306,7 @@
 
   void store_stack_parameter (LIR_Opr opr, ByteSize offset_from_sp_in_bytes);
 
-  void jobject2reg_with_patching(LIR_Opr r, ciObject* obj, CodeEmitInfo* info);
+  void klass2reg_with_patching(LIR_Opr r, ciMetadata* obj, CodeEmitInfo* info);
 
   // this loads the length and compares against the index
   void array_range_check          (LIR_Opr array, LIR_Opr index, CodeEmitInfo* null_check_info, CodeEmitInfo* range_check_info);
--- a/src/share/vm/c1/c1_LinearScan.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_LinearScan.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -2067,6 +2067,12 @@
         return LIR_OprFact::single_cpu_address(assigned_reg);
       }
 
+      case T_METADATA: {
+        assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
+        assert(interval->assigned_regHi() == any_reg, "must not have hi register");
+        return LIR_OprFact::single_cpu_metadata(assigned_reg);
+      }
+
 #ifdef __SOFTFP__
       case T_FLOAT:  // fall through
 #endif // __SOFTFP__
--- a/src/share/vm/c1/c1_MacroAssembler.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_MacroAssembler.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -107,10 +107,10 @@
   int stub_id() const                            { return _stub_id; }
 
   // runtime calls (return offset of call to be used by GC map)
-  int call_RT(Register oop_result1, Register oop_result2, address entry, int args_size = 0);
-  int call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1);
-  int call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2);
-  int call_RT(Register oop_result1, Register oop_result2, address entry, Register arg1, Register arg2, Register arg3);
+  int call_RT(Register oop_result1, Register metadata_result, address entry, int args_size = 0);
+  int call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1);
+  int call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2);
+  int call_RT(Register oop_result1, Register metadata_result, address entry, Register arg1, Register arg2, Register arg3);
 };
 
 #endif // SHARE_VM_C1_C1_MACROASSEMBLER_HPP
--- a/src/share/vm/c1/c1_Runtime1.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_Runtime1.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -307,10 +307,10 @@
 }
 
 
-JRT_ENTRY(void, Runtime1::new_instance(JavaThread* thread, klassOopDesc* klass))
+JRT_ENTRY(void, Runtime1::new_instance(JavaThread* thread, Klass* klass))
   NOT_PRODUCT(_new_instance_slowcase_cnt++;)
 
-  assert(oop(klass)->is_klass(), "not a class");
+  assert(klass->is_klass(), "not a class");
   instanceKlassHandle h(thread, klass);
   h->check_valid_for_instantiation(true, CHECK);
   // make sure klass is initialized
@@ -321,12 +321,12 @@
 JRT_END
 
 
-JRT_ENTRY(void, Runtime1::new_type_array(JavaThread* thread, klassOopDesc* klass, jint length))
+JRT_ENTRY(void, Runtime1::new_type_array(JavaThread* thread, Klass* klass, jint length))
   NOT_PRODUCT(_new_type_array_slowcase_cnt++;)
   // Note: no handle for klass needed since they are not used
   //       anymore after new_typeArray() and no GC can happen before.
   //       (This may have to change if this code changes!)
-  assert(oop(klass)->is_klass(), "not a class");
+  assert(klass->is_klass(), "not a class");
   BasicType elt_type = typeArrayKlass::cast(klass)->element_type();
   oop obj = oopFactory::new_typeArray(elt_type, length, CHECK);
   thread->set_vm_result(obj);
@@ -339,14 +339,14 @@
 JRT_END
 
 
-JRT_ENTRY(void, Runtime1::new_object_array(JavaThread* thread, klassOopDesc* array_klass, jint length))
+JRT_ENTRY(void, Runtime1::new_object_array(JavaThread* thread, Klass* array_klass, jint length))
   NOT_PRODUCT(_new_object_array_slowcase_cnt++;)
 
   // Note: no handle for klass needed since they are not used
   //       anymore after new_objArray() and no GC can happen before.
   //       (This may have to change if this code changes!)
-  assert(oop(array_klass)->is_klass(), "not a class");
-  klassOop elem_klass = objArrayKlass::cast(array_klass)->element_klass();
+  assert(array_klass->is_klass(), "not a class");
+  Klass* elem_klass = objArrayKlass::cast(array_klass)->element_klass();
   objArrayOop obj = oopFactory::new_objArray(elem_klass, length, CHECK);
   thread->set_vm_result(obj);
   // This is pretty rare but this runtime patch is stressful to deoptimization
@@ -357,10 +357,10 @@
 JRT_END
 
 
-JRT_ENTRY(void, Runtime1::new_multi_array(JavaThread* thread, klassOopDesc* klass, int rank, jint* dims))
+JRT_ENTRY(void, Runtime1::new_multi_array(JavaThread* thread, Klass* klass, int rank, jint* dims))
   NOT_PRODUCT(_new_multi_array_slowcase_cnt++;)
 
-  assert(oop(klass)->is_klass(), "not a class");
+  assert(klass->is_klass(), "not a class");
   assert(rank >= 1, "rank must be nonzero");
   oop obj = arrayKlass::cast(klass)->multi_allocate(rank, dims, CHECK);
   thread->set_vm_result(obj);
@@ -383,7 +383,7 @@
 // associated with the top activation record. The inlinee (that is possibly included in the enclosing
 // method) method oop is passed as an argument. In order to do that it is embedded in the code as
 // a constant.
-static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) {
+static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, Method* m) {
   nmethod* osr_nm = NULL;
   methodHandle method(THREAD, m);
 
@@ -423,7 +423,7 @@
   return osr_nm;
 }
 
-JRT_BLOCK_ENTRY(address, Runtime1::counter_overflow(JavaThread* thread, int bci, methodOopDesc* method))
+JRT_BLOCK_ENTRY(address, Runtime1::counter_overflow(JavaThread* thread, int bci, Method* method))
   nmethod* osr_nm;
   JRT_BLOCK
     osr_nm = counter_overflow_helper(thread, bci, method);
@@ -702,7 +702,7 @@
 JRT_END
 
 
-static klassOop resolve_field_return_klass(methodHandle caller, int bci, TRAPS) {
+static Klass* resolve_field_return_klass(methodHandle caller, int bci, TRAPS) {
   Bytecode_field field_access(caller, bci);
   // This can be static or non-static field access
   Bytecodes::Code code       = field_access.code();
@@ -815,8 +815,12 @@
 #endif // PRODUCT
   bool deoptimize_for_volatile = false;
   int patch_field_offset = -1;
-  KlassHandle init_klass(THREAD, klassOop(NULL)); // klass needed by access_field_patching code
-  Handle load_klass(THREAD, NULL);                // oop needed by load_klass_patching code
+  KlassHandle init_klass(THREAD, NULL); // klass needed by load_klass_patching code
+  KlassHandle load_klass(THREAD, NULL); // klass needed by load_klass_patching code
+  Handle mirror(THREAD, NULL);                    // oop needed by load_mirror_patching code
+  bool load_klass_or_mirror_patch_id =
+    (stub_id == Runtime1::load_klass_patching_id || stub_id == Runtime1::load_mirror_patching_id);
+
   if (stub_id == Runtime1::access_field_patching_id) {
 
     Bytecode_field field_access(caller_method, bci);
@@ -839,15 +843,14 @@
 #ifndef PRODUCT
     patch_field_type = result.field_type();
 #endif
-  } else if (stub_id == Runtime1::load_klass_patching_id) {
-    oop k;
+  } else if (load_klass_or_mirror_patch_id) {
+    Klass* k = NULL;
     switch (code) {
       case Bytecodes::_putstatic:
       case Bytecodes::_getstatic:
-        { klassOop klass = resolve_field_return_klass(caller_method, bci, CHECK);
-          // Save a reference to the class that has to be checked for initialization
+        { Klass* klass = resolve_field_return_klass(caller_method, bci, CHECK);
           init_klass = KlassHandle(THREAD, klass);
-          k = klass->java_mirror();
+          mirror = Handle(THREAD, klass->java_mirror());
         }
         break;
       case Bytecodes::_new:
@@ -872,7 +875,7 @@
         break;
       case Bytecodes::_anewarray:
         { Bytecode_anewarray anew(caller_method(), caller_method->bcp_from(bci));
-          klassOop ek = caller_method->constants()->klass_at(anew.index(), CHECK);
+          Klass* ek = caller_method->constants()->klass_at(anew.index(), CHECK);
           k = Klass::cast(ek)->array_klass(CHECK);
         }
         break;
@@ -880,14 +883,14 @@
       case Bytecodes::_ldc_w:
         {
           Bytecode_loadconstant cc(caller_method, bci);
-          k = cc.resolve_constant(CHECK);
-          assert(k != NULL && !k->is_klass(), "must be class mirror or other Java constant");
+          oop m = cc.resolve_constant(CHECK);
+          mirror = Handle(THREAD, m);
         }
         break;
       default: Unimplemented();
     }
     // convert to handle
-    load_klass = Handle(THREAD, k);
+    load_klass = KlassHandle(THREAD, k);
   } else {
     ShouldNotReachHere();
   }
@@ -913,7 +916,7 @@
 
   // If we are patching in a non-perm oop, make sure the nmethod
   // is on the right list.
-  if (ScavengeRootsInCode && load_klass.not_null() && load_klass->is_scavengable()) {
+  if (ScavengeRootsInCode && mirror.not_null() && mirror()->is_scavengable()) {
     MutexLockerEx ml_code (CodeCache_lock, Mutex::_no_safepoint_check_flag);
     nmethod* nm = CodeCache::find_nmethod(caller_frame.pc());
     guarantee(nm != NULL, "only nmethods can contain non-perm oops");
@@ -978,7 +981,7 @@
           assert(n_move->offset() == 0 || (n_move->offset() == 4 && (patch_field_type == T_DOUBLE || patch_field_type == T_LONG)), "illegal offset for type");
           assert(patch_field_offset >= 0, "illegal offset");
           n_move->add_offset_in_bytes(patch_field_offset);
-        } else if (stub_id == Runtime1::load_klass_patching_id) {
+        } else if (load_klass_or_mirror_patch_id) {
           // If a getstatic or putstatic is referencing a klass which
           // isn't fully initialized, the patch body isn't copied into
           // place until initialization is complete.  In this case the
@@ -986,7 +989,7 @@
           // initializing thread are forced to come into the VM and
           // block.
           do_patch = (code != Bytecodes::_getstatic && code != Bytecodes::_putstatic) ||
-                     instanceKlass::cast(init_klass())->is_initialized();
+                     InstanceKlass::cast(init_klass())->is_initialized();
           NativeGeneralJump* jump = nativeGeneralJump_at(instr_pc);
           if (jump->jump_destination() == being_initialized_entry) {
             assert(do_patch == true, "initialization must be complete at this point");
@@ -997,60 +1000,80 @@
             assert(n_copy->data() == 0 ||
                    n_copy->data() == (intptr_t)Universe::non_oop_word(),
                    "illegal init value");
+            if (stub_id == Runtime1::load_klass_patching_id) {
             assert(load_klass() != NULL, "klass not set");
             n_copy->set_data((intx) (load_klass()));
+            } else {
+              assert(mirror() != NULL, "klass not set");
+              n_copy->set_data((intx) (mirror()));
+            }
 
             if (TracePatching) {
               Disassembler::decode(copy_buff, copy_buff + *byte_count, tty);
             }
 
 #if defined(SPARC) || defined(PPC)
-            // Update the oop location in the nmethod with the proper
-            // oop.  When the code was generated, a NULL was stuffed
-            // in the oop table and that table needs to be update to
+            // Update the location in the nmethod with the proper
+            // metadata.  When the code was generated, a NULL was stuffed
+            // in the metadata table and that table needs to be update to
             // have the right value.  On intel the value is kept
-            // directly in the instruction instead of in the oop
+            // directly in the instruction instead of in the metadata
             // table, so set_data above effectively updated the value.
             nmethod* nm = CodeCache::find_nmethod(instr_pc);
             assert(nm != NULL, "invalid nmethod_pc");
-            RelocIterator oops(nm, copy_buff, copy_buff + 1);
+            RelocIterator mds(nm, copy_buff, copy_buff + 1);
             bool found = false;
-            while (oops.next() && !found) {
-              if (oops.type() == relocInfo::oop_type) {
-                oop_Relocation* r = oops.oop_reloc();
+            while (mds.next() && !found) {
+              if (mds.type() == relocInfo::oop_type) {
+                assert(stub_id == Runtime1::load_mirror_patching_id, "wrong stub id");
+                oop_Relocation* r = mds.oop_reloc();
                 oop* oop_adr = r->oop_addr();
-                *oop_adr = load_klass();
+                *oop_adr = mirror();
                 r->fix_oop_relocation();
                 found = true;
+              } else if (mds.type() == relocInfo::metadata_type) {
+                assert(stub_id == Runtime1::load_klass_patching_id, "wrong stub id");
+                metadata_Relocation* r = mds.metadata_reloc();
+                Metadata** metadata_adr = r->metadata_addr();
+                *metadata_adr = load_klass();
+                r->fix_metadata_relocation();
+                found = true;
               }
             }
-            assert(found, "the oop must exist!");
+            assert(found, "the metadata must exist!");
 #endif
 
           }
         } else {
           ShouldNotReachHere();
         }
+
         if (do_patch) {
           // replace instructions
           // first replace the tail, then the call
 #ifdef ARM
-          if(stub_id == Runtime1::load_klass_patching_id && !VM_Version::supports_movw()) {
+          if(load_klass_or_mirror_patch_id && !VM_Version::supports_movw()) {
             nmethod* nm = CodeCache::find_nmethod(instr_pc);
-            oop* oop_addr = NULL;
+            address addr = NULL;
             assert(nm != NULL, "invalid nmethod_pc");
-            RelocIterator oops(nm, copy_buff, copy_buff + 1);
-            while (oops.next()) {
-              if (oops.type() == relocInfo::oop_type) {
-                oop_Relocation* r = oops.oop_reloc();
-                oop_addr = r->oop_addr();
+            RelocIterator mds(nm, copy_buff, copy_buff + 1);
+            while (mds.next()) {
+              if (mds.type() == relocInfo::oop_type) {
+                assert(stub_id == Runtime1::load_mirror_patching_id, "wrong stub id");
+                oop_Relocation* r = mds.oop_reloc();
+                addr = (address)r->oop_addr();
+                break;
+              } else if (mds.type() == relocInfo::metadata_type) {
+                assert(stub_id == Runtime1::load_klass_patching_id, "wrong stub id");
+                metadata_Relocation* r = mds.metadata_reloc();
+                addr = (address)r->metadata_addr();
                 break;
               }
             }
-            assert(oop_addr != NULL, "oop relocation must exist");
+            assert(addr != NULL, "metadata relocation must exist");
             copy_buff -= *byte_count;
             NativeMovConstReg* n_copy2 = nativeMovConstReg_at(copy_buff);
-            n_copy2->set_pc_relative_offset((address)oop_addr, instr_pc);
+            n_copy2->set_pc_relative_offset(addr, instr_pc);
           }
 #endif
 
@@ -1063,8 +1086,12 @@
           ICache::invalidate_range(instr_pc, *byte_count);
           NativeGeneralJump::replace_mt_safe(instr_pc, copy_buff);
 
-          if (stub_id == Runtime1::load_klass_patching_id) {
-            // update relocInfo to oop
+          if (load_klass_or_mirror_patch_id) {
+            relocInfo::relocType rtype =
+              (stub_id == Runtime1::load_klass_patching_id) ?
+                                   relocInfo::metadata_type :
+                                   relocInfo::oop_type;
+            // update relocInfo to metadata
             nmethod* nm = CodeCache::find_nmethod(instr_pc);
             assert(nm != NULL, "invalid nmethod_pc");
 
@@ -1073,18 +1100,19 @@
             // future GCs.
             RelocIterator iter(nm, (address)instr_pc, (address)(instr_pc + 1));
             relocInfo::change_reloc_info_for_address(&iter, (address) instr_pc,
-                                                     relocInfo::none, relocInfo::oop_type);
+                                                     relocInfo::none, rtype);
 #ifdef SPARC
-            // Sparc takes two relocations for an oop so update the second one.
+            // Sparc takes two relocations for an metadata so update the second one.
             address instr_pc2 = instr_pc + NativeMovConstReg::add_offset;
             RelocIterator iter2(nm, instr_pc2, instr_pc2 + 1);
             relocInfo::change_reloc_info_for_address(&iter2, (address) instr_pc2,
-                                                     relocInfo::none, relocInfo::oop_type);
+                                                     relocInfo::none, rtype);
 #endif
 #ifdef PPC
           { address instr_pc2 = instr_pc + NativeMovConstReg::lo_offset;
             RelocIterator iter2(nm, instr_pc2, instr_pc2 + 1);
-            relocInfo::change_reloc_info_for_address(&iter2, (address) instr_pc2, relocInfo::none, relocInfo::oop_type);
+            relocInfo::change_reloc_info_for_address(&iter2, (address) instr_pc2,
+                                                     relocInfo::none, rtype);
           }
 #endif
           }
@@ -1126,6 +1154,25 @@
   return caller_is_deopted();
 }
 
+int Runtime1::move_mirror_patching(JavaThread* thread) {
+//
+// NOTE: we are still in Java
+//
+  Thread* THREAD = thread;
+  debug_only(NoHandleMark nhm;)
+  {
+    // Enter VM mode
+
+    ResetNoHandleMark rnhm;
+    patch_code(thread, load_mirror_patching_id);
+  }
+  // Back in JAVA, use no oops DON'T safepoint
+
+  // Return true if calling code is deoptimized
+
+  return caller_is_deopted();
+}
+
 //
 // Entry point for compiled code. We want to patch a nmethod.
 // We don't do a normal VM transition here because we want to
@@ -1187,8 +1234,8 @@
     bs->write_ref_array((HeapWord*)dst_addr, length);
     return ac_ok;
   } else {
-    klassOop bound = objArrayKlass::cast(dst->klass())->element_klass();
-    klassOop stype = objArrayKlass::cast(src->klass())->element_klass();
+    Klass* bound = objArrayKlass::cast(dst->klass())->element_klass();
+    Klass* stype = objArrayKlass::cast(src->klass())->element_klass();
     if (stype == bound || Klass::cast(stype)->is_subtype_of(bound)) {
       // Elements are guaranteed to be subtypes, so no check necessary
       bs->write_ref_array_pre(dst_addr, length);
@@ -1214,7 +1261,7 @@
 
   if (length == 0) return ac_ok;
   if (src->is_typeArray()) {
-    const klassOop klass_oop = src->klass();
+    Klass* const klass_oop = src->klass();
     if (klass_oop != dst->klass()) return ac_failed;
     typeArrayKlass* klass = typeArrayKlass::cast(klass_oop);
     const int l2es = klass->log2_element_size();
@@ -1279,7 +1326,7 @@
   // the return value as a boolean true.
 
   assert(mirror != NULL, "should null-check on mirror before calling");
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
   return (k != NULL && obj != NULL && obj->is_a(k)) ? 1 : 0;
 JRT_END
 
--- a/src/share/vm/c1/c1_Runtime1.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_Runtime1.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -66,6 +66,7 @@
   stub(deoptimize)                   \
   stub(access_field_patching)        \
   stub(load_klass_patching)          \
+  stub(load_mirror_patching)         \
   stub(g1_pre_barrier_slow)          \
   stub(g1_post_barrier_slow)         \
   stub(fpu2long_stub)                \
@@ -131,12 +132,12 @@
                                        Register arg1 = noreg, Register arg2 = noreg, Register arg3 = noreg);
 
   // runtime entry points
-  static void new_instance    (JavaThread* thread, klassOopDesc* klass);
-  static void new_type_array  (JavaThread* thread, klassOopDesc* klass, jint length);
-  static void new_object_array(JavaThread* thread, klassOopDesc* klass, jint length);
-  static void new_multi_array (JavaThread* thread, klassOopDesc* klass, int rank, jint* dims);
+  static void new_instance    (JavaThread* thread, Klass* klass);
+  static void new_type_array  (JavaThread* thread, Klass* klass, jint length);
+  static void new_object_array(JavaThread* thread, Klass* klass, jint length);
+  static void new_multi_array (JavaThread* thread, Klass* klass, int rank, jint* dims);
 
-  static address counter_overflow(JavaThread* thread, int bci, methodOopDesc* method);
+  static address counter_overflow(JavaThread* thread, int bci, Method* method);
 
   static void unimplemented_entry   (JavaThread* thread, StubID id);
 
@@ -157,6 +158,7 @@
 
   static int access_field_patching(JavaThread* thread);
   static int move_klass_patching(JavaThread* thread);
+  static int move_mirror_patching(JavaThread* thread);
 
   static void patch_code(JavaThread* thread, StubID stub_id);
 
--- a/src/share/vm/c1/c1_ValueType.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_ValueType.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -85,22 +85,6 @@
 }
 
 
-
-jobject ObjectType::encoding() const {
-  assert(is_constant(), "must be");
-  return constant_value()->constant_encoding();
-}
-
-bool ObjectType::is_loaded() const {
-  assert(is_constant(), "must be");
-  return constant_value()->is_loaded();
-}
-
-ciObject* ObjectConstant::constant_value() const                   { return _value; }
-ciObject* ArrayConstant::constant_value() const                    { return _value; }
-ciObject* InstanceConstant::constant_value() const                 { return _value; }
-ciObject* ClassConstant::constant_value() const                    { return _value; }
-
 ciType* ObjectConstant::exact_type() const {
   ciObject* c = constant_value();
   return (c != NULL && !c->is_null_object()) ? c->klass() : NULL;
@@ -114,10 +98,28 @@
   return (c != NULL && !c->is_null_object()) ? c->klass() : NULL;
 }
 ciType* ClassConstant::exact_type() const {
-  ciObject* c = constant_value();
-  return (c != NULL && !c->is_null_object()) ? c->klass() : NULL;
+  return Compilation::current()->env()->Class_klass();
+}
+
+
+jobject ObjectType::encoding() const {
+  assert(is_constant(), "must be");
+  return constant_value()->constant_encoding();
 }
 
+bool ObjectType::is_loaded() const {
+  assert(is_constant(), "must be");
+  return constant_value()->is_loaded();
+}
+
+bool MetadataType::is_loaded() const {
+  assert(is_constant(), "must be");
+  return constant_value()->is_loaded();
+}
+
+ciObject* ObjectConstant::constant_value() const                   { return _value; }
+ciObject* ArrayConstant::constant_value() const                    { return _value; }
+ciObject* InstanceConstant::constant_value() const                 { return _value; }
 
 ValueType* as_ValueType(BasicType type) {
   switch (type) {
@@ -166,6 +168,7 @@
     case floatTag:   return T_FLOAT;
     case doubleTag:  return T_DOUBLE;
     case objectTag:  return T_OBJECT;
+    case metaDataTag:return T_METADATA;
     case addressTag: return T_ADDRESS;
     case illegalTag: return T_ILLEGAL;
   }
--- a/src/share/vm/c1/c1_ValueType.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_ValueType.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -27,6 +27,7 @@
 
 #include "c1/c1_Compilation.hpp"
 #include "ci/ciConstant.hpp"
+#include "ci/ciMethodData.hpp"
 
 // type hierarchy
 class ValueType;
@@ -46,8 +47,13 @@
 class       ArrayConstant;
 class     InstanceType;
 class       InstanceConstant;
+class   MetadataType;
 class     ClassType;
 class       ClassConstant;
+class     MethodType;
+class       MethodConstant;
+class     MethodDataType;
+class       MethodDataConstant;
 class   AddressType;
 class     AddressConstant;
 class   IllegalType;
@@ -82,6 +88,7 @@
   doubleTag,
   objectTag,
   addressTag,
+  metaDataTag,
   number_of_legal_tags,
   // all other tags must follow afterwards
   voidTag = number_of_legal_tags,
@@ -123,6 +130,8 @@
   bool is_array()                                { return as_ArrayType()    != NULL; }
   bool is_instance()                             { return as_InstanceType() != NULL; }
   bool is_class()                                { return as_ClassType()    != NULL; }
+  bool is_method()                               { return as_MethodType()   != NULL; }
+  bool is_method_data()                          { return as_MethodDataType() != NULL; }
   bool is_address()                              { return as_AddressType()  != NULL; }
   bool is_illegal()                              { return tag() == illegalTag; }
 
@@ -143,6 +152,9 @@
   virtual ArrayType*        as_ArrayType()       { return NULL; }
   virtual InstanceType*     as_InstanceType()    { return NULL; }
   virtual ClassType*        as_ClassType()       { return NULL; }
+  virtual MetadataType*     as_MetadataType()    { return NULL; }
+  virtual MethodType*       as_MethodType()      { return NULL; }
+  virtual MethodDataType*   as_MethodDataType()  { return NULL; }
   virtual AddressType*      as_AddressType()     { return NULL; }
   virtual IllegalType*      as_IllegalType()     { return NULL; }
 
@@ -153,6 +165,8 @@
   virtual ObjectConstant*   as_ObjectConstant()  { return NULL; }
   virtual InstanceConstant* as_InstanceConstant(){ return NULL; }
   virtual ClassConstant*    as_ClassConstant()   { return NULL; }
+  virtual MethodConstant*   as_MethodConstant()  { return NULL; }
+  virtual MethodDataConstant* as_MethodDataConstant() { return NULL; }
   virtual ArrayConstant*    as_ArrayConstant()   { return NULL; }
   virtual AddressConstant*  as_AddressConstant() { return NULL; }
 
@@ -364,7 +378,20 @@
 };
 
 
-class ClassType: public ObjectType {
+class MetadataType: public ValueType {
+ public:
+  MetadataType(): ValueType(metaDataTag, 1) {}
+  virtual ValueType* base() const                       { return objectType; }
+  virtual const char tchar() const                      { return 'a'; }
+  virtual const char* name() const                      { return "object"; }
+  virtual MetadataType* as_MetadataType()               { return this; }
+  bool is_loaded() const;
+  jobject encoding() const;
+  virtual ciMetadata* constant_value() const            { ShouldNotReachHere(); return NULL;  }
+};
+
+
+class ClassType: public MetadataType {
  public:
   virtual ClassType* as_ClassType()              { return this; }
 };
@@ -381,11 +408,55 @@
 
   virtual bool is_constant() const               { return true; }
   virtual ClassConstant* as_ClassConstant()      { return this; }
-  virtual ciObject* constant_value() const;
+  virtual ciMetadata* constant_value() const            { return _value; }
   virtual ciType* exact_type() const;
 };
 
 
+class MethodType: public MetadataType {
+ public:
+  virtual MethodType* as_MethodType()                   { return this; }
+};
+
+
+class MethodConstant: public MethodType {
+ private:
+  ciMethod* _value;
+
+ public:
+  MethodConstant(ciMethod* value)                       { _value = value; }
+
+  ciMethod* value() const                               { return _value; }
+
+  virtual bool is_constant() const                      { return true; }
+
+  virtual MethodConstant* as_MethodConstant()           { return this; }
+  virtual ciMetadata* constant_value() const            { return _value; }
+};
+
+
+class MethodDataType: public MetadataType {
+ public:
+  virtual MethodDataType* as_MethodDataType()           { return this; }
+};
+
+
+class MethodDataConstant: public MethodDataType {
+ private:
+  ciMethodData* _value;
+
+ public:
+  MethodDataConstant(ciMethodData* value)               { _value = value; }
+
+  ciMethodData* value() const                           { return _value; }
+
+  virtual bool is_constant() const                      { return true; }
+
+  virtual MethodDataConstant* as_MethodDataConstant()   { return this; }
+  virtual ciMetadata* constant_value() const            { return _value; }
+};
+
+
 class AddressType: public ValueType {
  public:
   AddressType(): ValueType(addressTag, 1) {}
--- a/src/share/vm/c1/c1_globals.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/c1/c1_globals.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -315,7 +315,7 @@
           "Use CHA and exact type results at call sites when updating MDOs")\
                                                                             \
   product(bool, C1UpdateMethodData, trueInTiered,                           \
-          "Update methodDataOops in Tier1-generated code")                  \
+          "Update MethodData*s in Tier1-generated code")                  \
                                                                             \
   develop(bool, PrintCFGToFile, false,                                      \
           "print control flow graph to a separate file during compilation") \
--- a/src/share/vm/ci/bcEscapeAnalyzer.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1302,9 +1302,9 @@
     // Clear all info since method's bytecode was not analysed and
     // set pessimistic escape information.
     clear_escape_info();
-    methodData()->set_eflag(methodDataOopDesc::allocated_escapes);
-    methodData()->set_eflag(methodDataOopDesc::unknown_modified);
-    methodData()->set_eflag(methodDataOopDesc::estimated);
+    methodData()->set_eflag(MethodData::allocated_escapes);
+    methodData()->set_eflag(MethodData::unknown_modified);
+    methodData()->set_eflag(MethodData::estimated);
     return;
   }
 
@@ -1332,18 +1332,18 @@
       methodData()->set_arg_modified(i, _arg_modified[i]);
     }
     if (_return_local) {
-      methodData()->set_eflag(methodDataOopDesc::return_local);
+      methodData()->set_eflag(MethodData::return_local);
     }
     if (_return_allocated) {
-      methodData()->set_eflag(methodDataOopDesc::return_allocated);
+      methodData()->set_eflag(MethodData::return_allocated);
     }
     if (_allocated_escapes) {
-      methodData()->set_eflag(methodDataOopDesc::allocated_escapes);
+      methodData()->set_eflag(MethodData::allocated_escapes);
     }
     if (_unknown_modified) {
-      methodData()->set_eflag(methodDataOopDesc::unknown_modified);
+      methodData()->set_eflag(MethodData::unknown_modified);
     }
-    methodData()->set_eflag(methodDataOopDesc::estimated);
+    methodData()->set_eflag(MethodData::estimated);
   }
 }
 
@@ -1360,10 +1360,10 @@
       _arg_returned.set(i);
     _arg_modified[i] = methodData()->arg_modified(i);
   }
-  _return_local = methodData()->eflag_set(methodDataOopDesc::return_local);
-  _return_allocated = methodData()->eflag_set(methodDataOopDesc::return_allocated);
-  _allocated_escapes = methodData()->eflag_set(methodDataOopDesc::allocated_escapes);
-  _unknown_modified = methodData()->eflag_set(methodDataOopDesc::unknown_modified);
+  _return_local = methodData()->eflag_set(MethodData::return_local);
+  _return_allocated = methodData()->eflag_set(MethodData::return_allocated);
+  _allocated_escapes = methodData()->eflag_set(MethodData::allocated_escapes);
+  _unknown_modified = methodData()->eflag_set(MethodData::unknown_modified);
 
 }
 
--- a/src/share/vm/ci/bcEscapeAnalyzer.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/bcEscapeAnalyzer.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -26,6 +26,7 @@
 #define SHARE_VM_CI_BCESCAPEANALYZER_HPP
 
 #ifdef COMPILER2
+#include "ci/ciObject.hpp"
 #include "ci/ciMethod.hpp"
 #include "ci/ciMethodData.hpp"
 #include "code/dependencies.hpp"
@@ -62,7 +63,7 @@
   bool              _allocated_escapes;
   bool              _unknown_modified;
 
-  GrowableArray<ciObject *> _dependencies;
+  GrowableArray<ciMetadata *> _dependencies;
 
   ciMethodBlocks   *_methodBlocks;
 
@@ -114,7 +115,7 @@
   ciMethodData*     methodData() const           { return _methodData; }
   BCEscapeAnalyzer* parent() const               { return _parent; }
   int               level() const                { return _level; }
-  GrowableArray<ciObject *>* dependencies()               { return &_dependencies; }
+  GrowableArray<ciMetadata *>* dependencies()    { return &_dependencies; }
   bool              has_dependencies() const     { return !_dependencies.is_empty(); }
 
   // retrieval of interprocedural escape information
--- a/src/share/vm/ci/ciArrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciArrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -30,7 +30,7 @@
 
 // ciArrayKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
+// This class represents a Klass* in the HotSpot virtual machine
 // whose Klass part in an arrayKlass.
 
 // ------------------------------------------------------------------
@@ -46,8 +46,8 @@
 // ciArrayKlass::ciArrayKlass
 //
 // Unloaded array klass.
-ciArrayKlass::ciArrayKlass(ciSymbol* name, int dimension, ciKlass* klass)
-  : ciKlass(name, klass) {
+ciArrayKlass::ciArrayKlass(ciSymbol* name, int dimension, BasicType bt)
+  : ciKlass(name, bt) {
   _dimension = dimension;
 }
 
--- a/src/share/vm/ci/ciArrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciArrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -29,7 +29,7 @@
 
 // ciArrayKlass
 //
-// This class, and its subclasses represent klassOops in the
+// This class, and its subclasses represent Klass*s in the
 // HotSpot virtual machine whose Klass part is an arrayKlass.
 class ciArrayKlass : public ciKlass {
   CI_PACKAGE_ACCESS
@@ -38,7 +38,7 @@
 
 protected:
   ciArrayKlass(KlassHandle h_k);
-  ciArrayKlass(ciSymbol* name, int dimension, ciKlass* klass);
+  ciArrayKlass(ciSymbol* name, int dimension, BasicType bt);
 
   arrayKlass* get_arrayKlass() {
     return (arrayKlass*)get_Klass();
@@ -58,8 +58,8 @@
   }
 
   // What kind of vmObject is this?
-  bool is_array_klass() { return true; }
-  bool is_java_klass()  { return true; }
+  bool is_array_klass() const { return true; }
+  bool is_java_klass() const  { return true; }
 
   static ciArrayKlass* make(ciType* element_type);
 };
--- a/src/share/vm/ci/ciArrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
-#define SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
-
-#include "ci/ciKlassKlass.hpp"
-
-// ciArrayKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part in a arrayKlassKlass.
-class ciArrayKlassKlass : public ciKlassKlass {
-protected:
-  ciArrayKlassKlass(KlassHandle h_k, ciSymbol* name)
-    : ciKlassKlass(h_k, name) {}
-
-  arrayKlassKlass* get_arrayKlassKlass() {
-    return (arrayKlassKlass*)get_Klass();
-  }
-
-  const char* type_string() { return "ciArrayKlassKlass"; }
-
-public:
-  // What kind of ciObject is this?
-  bool is_array_klass_klass() { return true; }
-};
-
-#endif // SHARE_VM_CI_CIARRAYKLASSKLASS_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/ci/ciBaseObject.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "ci/ciBaseObject.hpp"
+#include "ci/ciUtilities.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/oop.inline2.hpp"
+
+// ------------------------------------------------------------------
+// ciBaseObject::set_ident
+//
+// Set the unique identity number of a ciBaseObject.
+void ciBaseObject::set_ident(uint id) {
+  assert((_ident >> FLAG_BITS) == 0, "must only initialize once");
+  assert( id < ((uint)1 << (BitsPerInt-FLAG_BITS)), "id too big");
+  _ident = _ident + (id << FLAG_BITS);
+}
+
+// ------------------------------------------------------------------
+// ciBaseObject::ident
+//
+// Report the unique identity number of a ciBaseObject.
+uint ciBaseObject::ident() {
+  uint id = _ident >> FLAG_BITS;
+  assert(id != 0, "must be initialized");
+  return id;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/ci/ciBaseObject.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_CI_CIBASEOBJECT_HPP
+#define SHARE_VM_CI_CIBASEOBJECT_HPP
+
+#include "ci/ciClassList.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+
+// ciBaseObject
+//
+// This class represents an oop in the HotSpot virtual machine.
+// Its subclasses are structured in a hierarchy which mirrors
+// an aggregate of the VM's oop and klass hierarchies (see
+// oopHierarchy.hpp).  Each instance of ciBaseObject holds a handle
+// to a corresponding oop on the VM side and provides routines
+// for accessing the information in its oop.  By using the ciBaseObject
+// hierarchy for accessing oops in the VM, the compiler ensures
+// that it is safe with respect to garbage collection; that is,
+// GC and compilation can proceed independently without
+// interference.
+//
+// Within the VM, the oop and klass hierarchies are separate.
+// The compiler interface does not preserve this separation --
+// the distinction between `Klass*' and `Klass' are not
+// reflected in the interface and instead the Klass hierarchy
+// is directly modeled as the subclasses of ciKlass.
+class ciBaseObject : public ResourceObj {
+  CI_PACKAGE_ACCESS
+  friend class ciEnv;
+
+protected:
+  uint     _ident;
+
+  enum { FLAG_BITS   = 1 };
+  enum {
+         SCAVENGABLE_FLAG = 1
+       };
+protected:
+  ciBaseObject(): _ident(0) {}
+
+  virtual const char* type_string() { return "ciBaseObject"; }
+
+  void set_ident(uint id);
+
+public:
+  // A number unique to this object.
+  uint ident();
+
+  // What kind of ciBaseObject is this?
+  virtual bool is_symbol() const       { return false; }
+  virtual bool is_object() const       { return false; }
+  virtual bool is_metadata() const     { return false; }
+
+  ciSymbol* as_symbol() {
+    assert(is_symbol(), "must be");
+    return (ciSymbol*)this;
+  }
+  ciObject* as_object() {
+    assert(is_object(), "must be");
+    return (ciObject*)this;
+  }
+  ciMetadata* as_metadata() {
+    assert(is_metadata(), "must be");
+    return (ciMetadata*)this;
+  }
+};
+#endif // SHARE_VM_CI_CIBASEOBJECT_HPP
--- a/src/share/vm/ci/ciCPCache.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2009, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciCPCache.hpp"
-#include "ci/ciUtilities.hpp"
-#include "oops/cpCacheOop.hpp"
-
-// ciCPCache
-
-// ------------------------------------------------------------------
-// ciCPCache::get_f1_offset
-size_t ciCPCache::get_f1_offset(int index) {
-  // Calculate the offset from the constantPoolCacheOop to the f1
-  // field.
-  ByteSize f1_offset =
-    constantPoolCacheOopDesc::entry_offset(index) +
-    ConstantPoolCacheEntry::f1_offset();
-
-  return in_bytes(f1_offset);
-}
-
-
-// ------------------------------------------------------------------
-// ciCPCache::is_f1_null_at
-bool ciCPCache::is_f1_null_at(int index) {
-  VM_ENTRY_MARK;
-  return entry_at(index)->is_f1_null();
-}
-
-
-// ------------------------------------------------------------------
-// ciCPCache::get_pool_index
-int ciCPCache::get_pool_index(int index) {
-  VM_ENTRY_MARK;
-  ConstantPoolCacheEntry* e = entry_at(index);
-  if (e->is_secondary_entry())
-    e = entry_at(e->main_entry_index());
-  return e->constant_pool_index();
-}
-
-
-// ------------------------------------------------------------------
-// ciCPCache::print
-//
-// Print debugging information about the cache.
-void ciCPCache::print() {
-  Unimplemented();
-}
--- a/src/share/vm/ci/ciCPCache.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CICPCACHE_HPP
-#define SHARE_VM_CI_CICPCACHE_HPP
-
-#include "ci/ciClassList.hpp"
-#include "ci/ciObject.hpp"
-#include "oops/cpCacheOop.hpp"
-
-// ciCPCache
-//
-// This class represents a constant pool cache.
-//
-// Note: This class is called ciCPCache as ciConstantPoolCache is used
-// for something different.
-class ciCPCache : public ciObject {
-private:
-  constantPoolCacheOop get_cpCacheOop() {   // must be called inside a VM_ENTRY_MARK
-    return (constantPoolCacheOop) get_oop();
-  }
-
-  ConstantPoolCacheEntry* entry_at(int i) {
-    int raw_index = i;
-    if (constantPoolCacheOopDesc::is_secondary_index(i))
-      raw_index = constantPoolCacheOopDesc::decode_secondary_index(i);
-    return get_cpCacheOop()->entry_at(raw_index);
-  }
-
-public:
-  ciCPCache(constantPoolCacheHandle cpcache) : ciObject(cpcache) {}
-
-  // What kind of ciObject is this?
-  bool is_cpcache() const { return true; }
-
-  // Get the offset in bytes from the oop to the f1 field of the
-  // requested entry.
-  size_t get_f1_offset(int index);
-
-  bool is_f1_null_at(int index);
-
-  int get_pool_index(int index);
-
-  void print();
-};
-
-#endif // SHARE_VM_CI_CICPCACHE_HPP
--- a/src/share/vm/ci/ciClassList.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciClassList.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,7 +28,6 @@
 class ciEnv;
 class ciObjectFactory;
 class ciConstantPoolCache;
-class ciCPCache;
 
 class ciField;
 class ciConstant;
@@ -43,32 +42,28 @@
 
 class ciTypeFlow;
 
+class ciBaseObject;
 class ciObject;
 class   ciNullObject;
 class   ciInstance;
 class     ciCallSite;
 class     ciMemberName;
 class     ciMethodHandle;
+class     ciArray;
+class       ciObjArray;
+class       ciTypeArray;
+class   ciSymbol;
+class   ciMetadata;
 class   ciMethod;
 class   ciMethodData;
 class     ciReceiverTypeData;  // part of ciMethodData
-class   ciSymbol;
-class   ciArray;
-class     ciObjArray;
-class     ciTypeArray;
 class   ciType;
 class    ciReturnAddress;
 class    ciKlass;
 class     ciInstanceKlass;
-class     ciMethodKlass;
 class     ciArrayKlass;
 class       ciObjArrayKlass;
 class       ciTypeArrayKlass;
-class     ciKlassKlass;
-class       ciInstanceKlassKlass;
-class       ciArrayKlassKlass;
-class         ciObjArrayKlassKlass;
-class         ciTypeArrayKlassKlass;
 
 // Simulate Java Language style package-private access with
 // friend declarations.
@@ -90,7 +85,6 @@
 friend class ciConstantPoolCache;      \
 friend class ciField;                  \
 friend class ciConstant;               \
-friend class ciCPCache;                \
 friend class ciFlags;                  \
 friend class ciExceptionHandler;       \
 friend class ciCallProfile;            \
@@ -109,19 +103,14 @@
 friend class ciSymbol;                 \
 friend class ciArray;                  \
 friend class ciObjArray;               \
+friend class ciMetadata;               \
 friend class ciTypeArray;              \
 friend class ciType;                   \
 friend class ciReturnAddress;          \
 friend class ciKlass;                  \
 friend class ciInstanceKlass;          \
-friend class ciMethodKlass;            \
 friend class ciArrayKlass;             \
 friend class ciObjArrayKlass;          \
 friend class ciTypeArrayKlass;         \
-friend class ciKlassKlass;             \
-friend class ciInstanceKlassKlass;     \
-friend class ciArrayKlassKlass;        \
-friend class ciObjArrayKlassKlass;     \
-friend class ciTypeArrayKlassKlass;
 
 #endif // SHARE_VM_CI_CICLASSLIST_HPP
--- a/src/share/vm/ci/ciConstantPoolCache.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciConstantPoolCache.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -32,7 +32,7 @@
 //
 // The class caches indexed constant pool lookups.
 //
-// Usage note: this klass has nothing to do with constantPoolCacheOop.
+// Usage note: this klass has nothing to do with ConstantPoolCache*.
 class ciConstantPoolCache : public ResourceObj {
 private:
   GrowableArray<intptr_t>*   _keys;
--- a/src/share/vm/ci/ciEnv.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciEnv.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,11 +28,8 @@
 #include "ci/ciField.hpp"
 #include "ci/ciInstance.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciInstanceKlassKlass.hpp"
 #include "ci/ciMethod.hpp"
 #include "ci/ciNullObject.hpp"
-#include "ci/ciObjArrayKlassKlass.hpp"
-#include "ci/ciTypeArrayKlassKlass.hpp"
 #include "ci/ciUtilities.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -45,7 +42,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
@@ -67,11 +64,6 @@
 // to the VM.
 
 ciObject*              ciEnv::_null_object_instance;
-ciMethodKlass*         ciEnv::_method_klass_instance;
-ciKlassKlass*          ciEnv::_klass_klass_instance;
-ciInstanceKlassKlass*  ciEnv::_instance_klass_klass_instance;
-ciTypeArrayKlassKlass* ciEnv::_type_array_klass_klass_instance;
-ciObjArrayKlassKlass*  ciEnv::_obj_array_klass_klass_instance;
 
 #define WK_KLASS_DEFN(name, ignore_s, ignore_o) ciInstanceKlass* ciEnv::_##name = NULL;
 WK_KLASSES_DO(WK_KLASS_DEFN)
@@ -185,13 +177,8 @@
 
   assert(Universe::is_fully_initialized(), "must be");
 
-  oop o = Universe::null_ptr_exception_instance();
-  assert(o != NULL, "should have been initialized");
-  _NullPointerException_instance = get_object(o)->as_instance();
-  o = Universe::arithmetic_exception_instance();
-  assert(o != NULL, "should have been initialized");
-  _ArithmeticException_instance = get_object(o)->as_instance();
-
+  _NullPointerException_instance = NULL;
+  _ArithmeticException_instance = NULL;
   _ArrayIndexOutOfBoundsException_instance = NULL;
   _ArrayStoreException_instance = NULL;
   _ClassCastException_instance = NULL;
@@ -202,7 +189,9 @@
 ciEnv::~ciEnv() {
   CompilerThread* current_thread = CompilerThread::current();
   _factory->remove_symbols();
-  current_thread->set_env(NULL);
+  // Need safepoint to clear the env on the thread.  RedefineClasses might
+  // be reading it.
+  GUARDED_VM_ENTRY(current_thread->set_env(NULL);)
 }
 
 // ------------------------------------------------------------------
@@ -238,10 +227,10 @@
   VM_ENTRY_MARK;
   if (handle == NULL) {
     // Cf. universe.cpp, creation of Universe::_null_ptr_exception_instance.
-    klassOop k = SystemDictionary::find(name, Handle(), Handle(), THREAD);
+    Klass* k = SystemDictionary::find(name, Handle(), Handle(), THREAD);
     jobject objh = NULL;
     if (!HAS_PENDING_EXCEPTION && k != NULL) {
-      oop obj = instanceKlass::cast(k)->allocate_permanent_instance(THREAD);
+      oop obj = InstanceKlass::cast(k)->allocate_instance(THREAD);
       if (!HAS_PENDING_EXCEPTION)
         objh = JNIHandles::make_global(obj);
     }
@@ -255,8 +244,6 @@
   return obj == NULL? NULL: get_object(obj)->as_instance();
 }
 
-// ------------------------------------------------------------------
-// ciEnv::ArrayIndexOutOfBoundsException_instance, etc.
 ciInstance* ciEnv::ArrayIndexOutOfBoundsException_instance() {
   if (_ArrayIndexOutOfBoundsException_instance == NULL) {
     _ArrayIndexOutOfBoundsException_instance
@@ -300,30 +287,11 @@
 
 // ------------------------------------------------------------------
 // ciEnv::get_method_from_handle
-ciMethod* ciEnv::get_method_from_handle(jobject method) {
-  VM_ENTRY_MARK;
-  return get_object(JNIHandles::resolve(method))->as_method();
-}
-
-// ------------------------------------------------------------------
-// ciEnv::make_array
-ciArray* ciEnv::make_system_array(GrowableArray<ciObject*>* objects) {
+ciMethod* ciEnv::get_method_from_handle(Method* method) {
   VM_ENTRY_MARK;
-  int length = objects->length();
-  objArrayOop a = oopFactory::new_system_objArray(length, THREAD);
-  if (HAS_PENDING_EXCEPTION) {
-    CLEAR_PENDING_EXCEPTION;
-    record_out_of_memory_failure();
-    return NULL;
-  }
-  for (int i = 0; i < length; i++) {
-    a->obj_at_put(i, objects->at(i)->get_oop());
-  }
-  assert(a->is_perm(), "");
-  return get_object(a)->as_array();
+  return get_metadata(method)->as_method();
 }
 
-
 // ------------------------------------------------------------------
 // ciEnv::array_element_offset_in_bytes
 int ciEnv::array_element_offset_in_bytes(ciArray* a_h, ciObject* o_h) {
@@ -343,25 +311,25 @@
 // ciEnv::check_klass_accessiblity
 //
 // Note: the logic of this method should mirror the logic of
-// constantPoolOopDesc::verify_constant_pool_resolve.
+// ConstantPool::verify_constant_pool_resolve.
 bool ciEnv::check_klass_accessibility(ciKlass* accessing_klass,
-                                      klassOop resolved_klass) {
+                                      Klass* resolved_klass) {
   if (accessing_klass == NULL || !accessing_klass->is_loaded()) {
     return true;
   }
-  if (accessing_klass->is_obj_array()) {
+  if (accessing_klass->is_obj_array_klass()) {
     accessing_klass = accessing_klass->as_obj_array_klass()->base_element_klass();
   }
   if (!accessing_klass->is_instance_klass()) {
     return true;
   }
 
-  if (resolved_klass->klass_part()->oop_is_objArray()) {
+  if (resolved_klass->oop_is_objArray()) {
     // Find the element klass, if this is an array.
     resolved_klass = objArrayKlass::cast(resolved_klass)->bottom_klass();
   }
-  if (resolved_klass->klass_part()->oop_is_instance()) {
-    return Reflection::verify_class_access(accessing_klass->get_klassOop(),
+  if (resolved_klass->oop_is_instance()) {
+    return Reflection::verify_class_access(accessing_klass->get_Klass(),
                                            resolved_klass,
                                            true);
   }
@@ -416,7 +384,7 @@
   {
     ttyUnlocker ttyul;  // release tty lock to avoid ordering problems
     MutexLocker ml(Compile_lock);
-    klassOop kls;
+    Klass* kls;
     if (!require_local) {
       kls = SystemDictionary::find_constrained_instance_or_array_klass(sym, loader,
                                                                        KILL_COMPILE_ON_FATAL_(fail_type));
@@ -457,7 +425,7 @@
     // Look inside the constant pool for pre-resolved class entries.
     for (int i = cpool->length() - 1; i >= 1; i--) {
       if (cpool->tag_at(i).is_klass()) {
-        klassOop kls = cpool->resolved_klass_at(i);
+        Klass* kls = cpool->resolved_klass_at(i);
         if (Klass::cast(kls)->name() == sym) {
           found_klass = KlassHandle(THREAD, kls);
           break;
@@ -468,7 +436,7 @@
 
   if (found_klass() != NULL) {
     // Found it.  Build a CI handle.
-    return get_object(found_klass())->as_klass();
+    return get_klass(found_klass());
   }
 
   if (require_local)  return NULL;
@@ -498,29 +466,34 @@
                                         bool& is_accessible,
                                         ciInstanceKlass* accessor) {
   EXCEPTION_CONTEXT;
-  KlassHandle klass(THREAD, constantPoolOopDesc::klass_at_if_loaded(cpool, index));
+  KlassHandle klass; // = NULL;
   Symbol* klass_name = NULL;
+
+  if (cpool->tag_at(index).is_symbol()) {
+    klass_name = cpool->symbol_at(index);
+  } else {
+    // Check if it's resolved if it's not a symbol constant pool entry.
+    klass = KlassHandle(THREAD, ConstantPool::klass_at_if_loaded(cpool, index));
+
   if (klass.is_null()) {
     // The klass has not been inserted into the constant pool.
     // Try to look it up by name.
     {
       // We have to lock the cpool to keep the oop from being resolved
       // while we are accessing it.
-      ObjectLocker ol(cpool, THREAD);
-
+        MonitorLockerEx ml(cpool->lock());
       constantTag tag = cpool->tag_at(index);
       if (tag.is_klass()) {
         // The klass has been inserted into the constant pool
         // very recently.
         klass = KlassHandle(THREAD, cpool->resolved_klass_at(index));
-      } else if (tag.is_symbol()) {
-        klass_name = cpool->symbol_at(index);
       } else {
         assert(cpool->tag_at(index).is_unresolved_klass(), "wrong tag");
         klass_name = cpool->unresolved_klass_at(index);
       }
     }
   }
+  }
 
   if (klass.is_null()) {
     // Not found in constant pool.  Use the name to do the lookup.
@@ -537,14 +510,14 @@
       is_accessible = false;
     } else {
       // Linked locally, and we must also check public/private, etc.
-      is_accessible = check_klass_accessibility(accessor, k->get_klassOop());
+      is_accessible = check_klass_accessibility(accessor, k->get_Klass());
     }
     return k;
   }
 
   // Check for prior unloaded klass.  The SystemDictionary's answers
   // can vary over time but the compiler needs consistency.
-  ciSymbol* name = get_symbol(klass()->klass_part()->name());
+  ciSymbol* name = get_symbol(klass()->name());
   ciKlass* unloaded_klass = check_get_unloaded_klass(accessor, name);
   if (unloaded_klass != NULL) {
     is_accessible = false;
@@ -553,7 +526,7 @@
 
   // It is known to be accessible, since it was found in the constant pool.
   is_accessible = true;
-  return get_object(klass())->as_klass();
+  return get_klass(klass());
 }
 
 // ------------------------------------------------------------------
@@ -579,14 +552,12 @@
   int index = pool_index;
   if (cache_index >= 0) {
     assert(index < 0, "only one kind of index at a time");
-    ConstantPoolCacheEntry* cpc_entry = cpool->cache()->entry_at(cache_index);
-    index = cpc_entry->constant_pool_index();
-    oop obj = cpc_entry->f1_as_instance();
+    oop obj = cpool->resolved_references()->obj_at(cache_index);
     if (obj != NULL) {
-      assert(obj->is_instance() || obj->is_array(), "must be a Java reference");
       ciObject* ciobj = get_object(obj);
       return ciConstant(T_OBJECT, ciobj);
     }
+    index = cpool->object_to_cp_index(cache_index);
   }
   constantTag tag = cpool->tag_at(index);
   if (tag.is_int()) {
@@ -597,12 +568,13 @@
     return ciConstant((jfloat)cpool->float_at(index));
   } else if (tag.is_double()) {
     return ciConstant((jdouble)cpool->double_at(index));
-  } else if (tag.is_string() || tag.is_unresolved_string()) {
+  } else if (tag.is_string()) {
     oop string = NULL;
+    assert(cache_index >= 0, "should have a cache index");
     if (cpool->is_pseudo_string_at(index)) {
-      string = cpool->pseudo_string_at(index);
+      string = cpool->pseudo_string_at(index, cache_index);
     } else {
-      string = cpool->string_at(index, THREAD);
+      string = cpool->string_at(index, cache_index, THREAD);
       if (HAS_PENDING_EXCEPTION) {
         CLEAR_PENDING_EXCEPTION;
         record_out_of_memory_failure();
@@ -625,7 +597,6 @@
     return ciConstant(T_OBJECT, klass->java_mirror());
   } else if (tag.is_object()) {
     oop obj = cpool->object_at(index);
-    assert(obj->is_instance() || obj->is_array(), "must be a Java reference");
     ciObject* ciobj = get_object(obj);
     return ciConstant(T_OBJECT, ciobj);
   } else if (tag.is_method_type()) {
@@ -697,8 +668,8 @@
 //
 // Perform an appropriate method lookup based on accessor, holder,
 // name, signature, and bytecode.
-methodOop ciEnv::lookup_method(instanceKlass*  accessor,
-                               instanceKlass*  holder,
+Method* ciEnv::lookup_method(InstanceKlass*  accessor,
+                               InstanceKlass*  holder,
                                Symbol*       name,
                                Symbol*       sig,
                                Bytecodes::Code bc) {
@@ -739,8 +710,8 @@
                                           int index, Bytecodes::Code bc,
                                           ciInstanceKlass* accessor) {
   if (bc == Bytecodes::_invokedynamic) {
-    ConstantPoolCacheEntry* secondary_entry = cpool->cache()->secondary_entry_at(index);
-    const bool is_resolved = !secondary_entry->is_f1_null();
+    ConstantPoolCacheEntry* cpce = cpool->invokedynamic_cp_cache_entry_at(index);
+    bool is_resolved = !cpce->is_f1_null();
     // FIXME: code generation could allow for null (unlinked) call site
     // The call site could be made patchable as follows:
     // Load the appendix argument from the constant pool.
@@ -750,13 +721,14 @@
     // As with other two-component call sites, both values must be independently verified.
 
     if (is_resolved) {
-      // Get the invoker methodOop and the extra argument from the constant pool.
-      methodOop adapter = secondary_entry->f2_as_vfinal_method();
-      return get_object(adapter)->as_method();
+      // Get the invoker Method* from the constant pool.
+      // (The appendix argument, if any, will be noted in the method's signature.)
+      Method* adapter = cpce->f1_as_method();
+      return get_method(adapter);
     }
 
     // Fake a method that is equivalent to a declared method.
-    ciInstanceKlass* holder    = get_object(SystemDictionary::MethodHandle_klass())->as_instance_klass();
+    ciInstanceKlass* holder    = get_instance_klass(SystemDictionary::MethodHandle_klass());
     ciSymbol*        name      = ciSymbol::invokeBasic_name();
     ciSymbol*        signature = get_symbol(cpool->signature_ref_at(index));
     return get_unloaded_method(holder, name, signature, accessor);
@@ -772,7 +744,7 @@
 
     if (cpool->has_preresolution()
         || (holder == ciEnv::MethodHandle_klass() &&
-            MethodHandles::is_signature_polymorphic_name(holder->get_klassOop(), name_sym))) {
+            MethodHandles::is_signature_polymorphic_name(holder->get_Klass(), name_sym))) {
       // Short-circuit lookups for JSR 292-related call sites.
       // That is, do not rely only on name-based lookups, because they may fail
       // if the names are not resolvable in the boot class loader (7056328).
@@ -782,9 +754,9 @@
       case Bytecodes::_invokespecial:
       case Bytecodes::_invokestatic:
         {
-          methodOop m = constantPoolOopDesc::method_at_if_loaded(cpool, index);
+          Method* m = ConstantPool::method_at_if_loaded(cpool, index);
           if (m != NULL) {
-            return get_object(m)->as_method();
+            return get_method(m);
           }
         }
         break;
@@ -792,17 +764,17 @@
     }
 
     if (holder_is_accessible) {  // Our declared holder is loaded.
-      instanceKlass* lookup = declared_holder->get_instanceKlass();
-      methodOop m = lookup_method(accessor->get_instanceKlass(), lookup, name_sym, sig_sym, bc);
+      InstanceKlass* lookup = declared_holder->get_instanceKlass();
+      Method* m = lookup_method(accessor->get_instanceKlass(), lookup, name_sym, sig_sym, bc);
       if (m != NULL &&
           (bc == Bytecodes::_invokestatic
-           ?  instanceKlass::cast(m->method_holder())->is_not_initialized()
-           : !instanceKlass::cast(m->method_holder())->is_loaded())) {
+           ?  InstanceKlass::cast(m->method_holder())->is_not_initialized()
+           : !InstanceKlass::cast(m->method_holder())->is_loaded())) {
         m = NULL;
       }
       if (m != NULL) {
         // We found the method.
-        return get_object(m)->as_method();
+        return get_method(m);
       }
     }
 
@@ -886,7 +858,7 @@
   // modification counter hasn't changed (see below).
   for (Dependencies::DepStream deps(dependencies()); deps.next(); ) {
     if (deps.is_klass_type())  continue;  // skip klass dependencies
-    klassOop witness = deps.check_dependency();
+    Klass* witness = deps.check_dependency();
     if (witness != NULL) {
       record_failure("invalid non-klass dependency");
       return;
@@ -907,7 +879,7 @@
   int klass_violations = 0;
   for (Dependencies::DepStream deps(dependencies()); deps.next(); ) {
     if (!deps.is_klass_type())  continue;  // skip non-klass dependencies
-    klassOop witness = deps.check_dependency();
+    Klass* witness = deps.check_dependency();
     if (witness != NULL) {
       klass_violations++;
       if (!counter_changed) {
@@ -992,11 +964,11 @@
       validate_compile_task_dependencies(target);
     }
 
-    methodHandle method(THREAD, target->get_methodOop());
+    methodHandle method(THREAD, target->get_Method());
 
     if (failing()) {
       // While not a true deoptimization, it is a preemptive decompile.
-      methodDataOop mdo = method()->method_data();
+      MethodData* mdo = method()->method_data();
       if (mdo != NULL) {
         mdo->inc_decompile_count();
       }
@@ -1082,7 +1054,7 @@
                         method_name,
                         entry_bci);
         }
-        instanceKlass::cast(method->method_holder())->add_osr_nmethod(nm);
+        InstanceKlass::cast(method->method_holder())->add_osr_nmethod(nm);
 
       }
     }
--- a/src/share/vm/ci/ciEnv.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciEnv.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -78,11 +78,6 @@
 
   // Distinguished instances of certain ciObjects..
   static ciObject*              _null_object_instance;
-  static ciMethodKlass*         _method_klass_instance;
-  static ciKlassKlass*          _klass_klass_instance;
-  static ciInstanceKlassKlass*  _instance_klass_klass_instance;
-  static ciTypeArrayKlassKlass* _type_array_klass_klass_instance;
-  static ciObjArrayKlassKlass*  _obj_array_klass_klass_instance;
 
 #define WK_KLASS_DECL(name, ignore_s, ignore_o) static ciInstanceKlass* _##name;
   WK_KLASSES_DO(WK_KLASS_DECL)
@@ -155,9 +150,9 @@
 
   // Helper methods
   bool       check_klass_accessibility(ciKlass* accessing_klass,
-                                      klassOop resolved_klassOop);
-  methodOop  lookup_method(instanceKlass*  accessor,
-                           instanceKlass*  holder,
+                                      Klass* resolved_klass);
+  Method*    lookup_method(InstanceKlass*  accessor,
+                           InstanceKlass*  holder,
                            Symbol*         name,
                            Symbol*         sig,
                            Bytecodes::Code bc);
@@ -181,7 +176,44 @@
     }
   }
 
-  ciMethod* get_method_from_handle(jobject method);
+  ciMetadata* get_metadata(Metadata* o) {
+    if (o == NULL) {
+      return NULL;
+    } else {
+      return _factory->get_metadata(o);
+    }
+  }
+
+  ciInstance* get_instance(oop o) {
+    if (o == NULL) return NULL;
+    return get_object(o)->as_instance();
+  }
+  ciObjArrayKlass* get_obj_array_klass(Klass* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_obj_array_klass();
+  }
+  ciTypeArrayKlass* get_type_array_klass(Klass* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_type_array_klass();
+  }
+  ciKlass* get_klass(Klass* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_klass();
+  }
+  ciInstanceKlass* get_instance_klass(Klass* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_instance_klass();
+  }
+  ciMethod* get_method(Method* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_method();
+  }
+  ciMethodData* get_method_data(MethodData* o) {
+    if (o == NULL) return NULL;
+    return get_metadata(o)->as_method_data();
+  }
+
+  ciMethod* get_method_from_handle(Method* method);
 
   ciInstance* get_or_create_exception(jobject& handle, Symbol* name);
 
@@ -372,10 +404,6 @@
   // Note:  To find a class from its name string, use ciSymbol::make,
   // but consider adding to vmSymbols.hpp instead.
 
-  // Use this to make a holder for non-perm compile time constants.
-  // The resulting array is guaranteed to satisfy "can_be_constant".
-  ciArray*  make_system_array(GrowableArray<ciObject*>* objects);
-
   // converts the ciKlass* representing the holder of a method into a
   // ciInstanceKlass*.  This is needed since the holder of a method in
   // the bytecodes could be an array type.  Basically this converts
@@ -416,6 +444,9 @@
   void record_failure(const char* reason);
   void record_method_not_compilable(const char* reason, bool all_tiers = true);
   void record_out_of_memory_failure();
+
+  // RedefineClasses support
+  void metadata_do(void f(Metadata*)) { _factory->metadata_do(f); }
 };
 
 #endif // SHARE_VM_CI_CIENV_HPP
--- a/src/share/vm/ci/ciField.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciField.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -125,11 +125,11 @@
     return;
   }
 
-  instanceKlass* loaded_decl_holder = declared_holder->get_instanceKlass();
+  InstanceKlass* loaded_decl_holder = declared_holder->get_instanceKlass();
 
   // Perform the field lookup.
   fieldDescriptor field_desc;
-  klassOop canonical_holder =
+  Klass* canonical_holder =
     loaded_decl_holder->find_field(name, signature, &field_desc);
   if (canonical_holder == NULL) {
     // Field lookup failed.  Will be detected by will_link.
@@ -186,7 +186,7 @@
   // Get the flags, offset, and canonical holder of the field.
   _flags = ciFlags(fd->access_flags());
   _offset = fd->offset();
-  _holder = CURRENT_ENV->get_object(fd->field_holder())->as_instance_klass();
+  _holder = CURRENT_ENV->get_instance_klass(fd->field_holder());
 
   // Check to see if the field is constant.
   if (_holder->is_initialized() && this->is_final()) {
@@ -213,7 +213,7 @@
     //    may change.  The three examples are java.lang.System.in,
     //    java.lang.System.out, and java.lang.System.err.
 
-    KlassHandle k = _holder->get_klassOop();
+    KlassHandle k = _holder->get_Klass();
     assert( SystemDictionary::System_klass() != NULL, "Check once per vm");
     if( k() == SystemDictionary::System_klass() ) {
       // Check offsets for case 2: System.in, System.out, or System.err
--- a/src/share/vm/ci/ciInstance.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciInstance.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -49,9 +49,9 @@
   if (java_lang_Class::is_primitive(m)) {
     return ciType::make(java_lang_Class::primitive_type(m));
   } else {
-    klassOop k = java_lang_Class::as_klassOop(m);
+    Klass* k = java_lang_Class::as_Klass(m);
     assert(k != NULL, "");
-    return CURRENT_THREAD_ENV->get_object(k)->as_klass();
+    return CURRENT_THREAD_ENV->get_klass(k);
   }
 }
 
@@ -142,5 +142,5 @@
 
 ciKlass* ciInstance::java_lang_Class_klass() {
   VM_ENTRY_MARK;
-  return CURRENT_ENV->get_object(java_lang_Class::as_klassOop(get_oop()))->as_klass();
+  return CURRENT_ENV->get_metadata(java_lang_Class::as_Klass(get_oop()))->as_klass();
 }
--- a/src/share/vm/ci/ciInstanceKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciInstanceKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,8 +36,8 @@
 
 // ciInstanceKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part in an instanceKlass.
+// This class represents a Klass* in the HotSpot virtual machine
+// whose Klass part in an InstanceKlass.
 
 // ------------------------------------------------------------------
 // ciInstanceKlass::ciInstanceKlass
@@ -48,7 +48,7 @@
 {
   assert(get_Klass()->oop_is_instance(), "wrong type");
   assert(get_instanceKlass()->is_loaded(), "must be at least loaded");
-  instanceKlass* ik = get_instanceKlass();
+  InstanceKlass* ik = get_instanceKlass();
 
   AccessFlags access_flags = ik->access_flags();
   _flags = ciFlags(access_flags);
@@ -92,10 +92,10 @@
 // Version for unloaded classes:
 ciInstanceKlass::ciInstanceKlass(ciSymbol* name,
                                  jobject loader, jobject protection_domain)
-  : ciKlass(name, ciInstanceKlassKlass::make())
+  : ciKlass(name, T_OBJECT)
 {
   assert(name->byte_at(0) != '[', "not an instance klass");
-  _init_state = (instanceKlass::ClassState)0;
+  _init_state = (InstanceKlass::ClassState)0;
   _nonstatic_field_size = -1;
   _has_nonstatic_fields = false;
   _nonstatic_fields = NULL;
@@ -113,7 +113,7 @@
 // ciInstanceKlass::compute_shared_is_initialized
 void ciInstanceKlass::compute_shared_init_state() {
   GUARDED_VM_ENTRY(
-    instanceKlass* ik = get_instanceKlass();
+    InstanceKlass* ik = get_instanceKlass();
     _init_state = ik->init_state();
   )
 }
@@ -122,7 +122,7 @@
 // ciInstanceKlass::compute_shared_has_subklass
 bool ciInstanceKlass::compute_shared_has_subklass() {
   GUARDED_VM_ENTRY(
-    instanceKlass* ik = get_instanceKlass();
+    InstanceKlass* ik = get_instanceKlass();
     _has_subklass = ik->subklass() != NULL;
     return _has_subklass;
   )
@@ -205,7 +205,7 @@
 // ciInstanceKlass::is_java_lang_Object
 //
 // Is this klass java.lang.Object?
-bool ciInstanceKlass::is_java_lang_Object() {
+bool ciInstanceKlass::is_java_lang_Object() const {
   return equals(CURRENT_ENV->Object_klass());
 }
 
@@ -292,8 +292,8 @@
   assert(is_loaded(), "must be loaded");
   if (_super == NULL && !is_java_lang_Object()) {
     GUARDED_VM_ENTRY(
-      klassOop super_klass = get_instanceKlass()->super();
-      _super = CURRENT_ENV->get_object(super_klass)->as_instance_klass();
+      Klass* super_klass = get_instanceKlass()->super();
+      _super = CURRENT_ENV->get_instance_klass(super_klass);
     )
   }
   return _super;
@@ -321,13 +321,13 @@
   if (!is_abstract())   return NULL; // Only applies to abstract classes.
   if (!has_subklass())  return NULL; // Must have at least one subklass.
   VM_ENTRY_MARK;
-  instanceKlass* ik = get_instanceKlass();
+  InstanceKlass* ik = get_instanceKlass();
   Klass* up = ik->up_cast_abstract();
-  assert(up->oop_is_instance(), "must be instanceKlass");
+  assert(up->oop_is_instance(), "must be InstanceKlass");
   if (ik == up) {
     return NULL;
   }
-  return CURRENT_THREAD_ENV->get_object(up->as_klassOop())->as_instance_klass();
+  return CURRENT_THREAD_ENV->get_instance_klass(up);
 }
 
 // ------------------------------------------------------------------
@@ -354,7 +354,7 @@
     return NULL;
   }
   VM_ENTRY_MARK;
-  instanceKlass* k = get_instanceKlass();
+  InstanceKlass* k = get_instanceKlass();
   fieldDescriptor fd;
   if (!k->find_field_from_offset(field_offset, is_static, &fd)) {
     return NULL;
@@ -367,9 +367,9 @@
 // ciInstanceKlass::get_field_by_name
 ciField* ciInstanceKlass::get_field_by_name(ciSymbol* name, ciSymbol* signature, bool is_static) {
   VM_ENTRY_MARK;
-  instanceKlass* k = get_instanceKlass();
+  InstanceKlass* k = get_instanceKlass();
   fieldDescriptor fd;
-  klassOop def = k->find_field(name->get_symbol(), signature->get_symbol(), is_static, &fd);
+  Klass* def = k->find_field(name->get_symbol(), signature->get_symbol(), is_static, &fd);
   if (def == NULL) {
     return NULL;
   }
@@ -397,7 +397,7 @@
   if (_non_static_fields == NULL) {
     VM_ENTRY_MARK;
     ciEnv* curEnv = ciEnv::current();
-    instanceKlass* ik = get_instanceKlass();
+    InstanceKlass* ik = get_instanceKlass();
     int max_n_fields = ik->java_fields_count();
 
     Arena* arena = curEnv->arena();
@@ -473,7 +473,7 @@
   Arena* arena = CURRENT_ENV->arena();
   int flen = 0;
   GrowableArray<ciField*>* fields = NULL;
-  instanceKlass* k = get_instanceKlass();
+  InstanceKlass* k = get_instanceKlass();
   for (JavaFieldStream fs(k); !fs.done(); fs.next()) {
     if (fs.access_flags().is_static())  continue;
     flen += 1;
@@ -494,7 +494,7 @@
   for (JavaFieldStream fs(k); !fs.done(); fs.next()) {
     if (fs.access_flags().is_static())  continue;
     fieldDescriptor fd;
-    fd.initialize(k->as_klassOop(), fs.index());
+    fd.initialize(k, fs.index());
     ciField* field = new (arena) ciField(&fd);
     fields->append(field);
   }
@@ -508,14 +508,14 @@
 // Find a method in this klass.
 ciMethod* ciInstanceKlass::find_method(ciSymbol* name, ciSymbol* signature) {
   VM_ENTRY_MARK;
-  instanceKlass* k = get_instanceKlass();
+  InstanceKlass* k = get_instanceKlass();
   Symbol* name_sym = name->get_symbol();
   Symbol* sig_sym= signature->get_symbol();
 
-  methodOop m = k->find_method(name_sym, sig_sym);
+  Method* m = k->find_method(name_sym, sig_sym);
   if (m == NULL)  return NULL;
 
-  return CURRENT_THREAD_ENV->get_object(m)->as_method();
+  return CURRENT_THREAD_ENV->get_method(m);
 }
 
 // ------------------------------------------------------------------
@@ -535,7 +535,7 @@
 // Report an implementor of this interface.
 // Note that there are various races here, since my copy
 // of _nof_implementors might be out of date with respect
-// to results returned by instanceKlass::implementor.
+// to results returned by InstanceKlass::implementor.
 // This is OK, since any dependencies we decide to assert
 // will be checked later under the Compile_lock.
 ciInstanceKlass* ciInstanceKlass::implementor() {
@@ -544,13 +544,13 @@
     // Go into the VM to fetch the implementor.
     {
       VM_ENTRY_MARK;
-      klassOop k = get_instanceKlass()->implementor();
+      Klass* k = get_instanceKlass()->implementor();
       if (k != NULL) {
-        if (k == get_instanceKlass()->as_klassOop()) {
+        if (k == get_instanceKlass()) {
           // More than one implementors. Use 'this' in this case.
           impl = this;
         } else {
-          impl = CURRENT_THREAD_ENV->get_object(k)->as_instance_klass();
+          impl = CURRENT_THREAD_ENV->get_instance_klass(k);
         }
       }
     }
--- a/src/share/vm/ci/ciInstanceKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciInstanceKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -27,14 +27,13 @@
 
 #include "ci/ciConstantPoolCache.hpp"
 #include "ci/ciFlags.hpp"
-#include "ci/ciInstanceKlassKlass.hpp"
 #include "ci/ciKlass.hpp"
 #include "ci/ciSymbol.hpp"
 
 // ciInstanceKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is an instanceKlass.  It may or may not
+// This class represents a Klass* in the HotSpot virtual machine
+// whose Klass part is an InstanceKlass.  It may or may not
 // be loaded.
 class ciInstanceKlass : public ciKlass {
   CI_PACKAGE_ACCESS
@@ -48,7 +47,7 @@
   jobject                _loader;
   jobject                _protection_domain;
 
-  instanceKlass::ClassState _init_state;           // state of class
+  InstanceKlass::ClassState _init_state;           // state of class
   bool                   _is_shared;
   bool                   _has_finalizer;
   bool                   _has_subklass;
@@ -77,8 +76,8 @@
   ciInstanceKlass(KlassHandle h_k);
   ciInstanceKlass(ciSymbol* name, jobject loader, jobject protection_domain);
 
-  instanceKlass* get_instanceKlass() const {
-    return (instanceKlass*)get_Klass();
+  InstanceKlass* get_instanceKlass() const {
+    return (InstanceKlass*)get_Klass();
   }
 
   oop loader();
@@ -103,7 +102,7 @@
   GrowableArray<ciField*>* compute_nonstatic_fields_impl(GrowableArray<ciField*>* super_fields);
 
   // Update the init_state for shared klasses
-  void update_if_shared(instanceKlass::ClassState expected) {
+  void update_if_shared(InstanceKlass::ClassState expected) {
     if (_is_shared && _init_state != expected) {
       if (is_loaded()) compute_shared_init_state();
     }
@@ -112,18 +111,18 @@
 public:
   // Has this klass been initialized?
   bool                   is_initialized() {
-    update_if_shared(instanceKlass::fully_initialized);
-    return _init_state == instanceKlass::fully_initialized;
+    update_if_shared(InstanceKlass::fully_initialized);
+    return _init_state == InstanceKlass::fully_initialized;
   }
   // Is this klass being initialized?
   bool                   is_being_initialized() {
-    update_if_shared(instanceKlass::being_initialized);
-    return _init_state == instanceKlass::being_initialized;
+    update_if_shared(InstanceKlass::being_initialized);
+    return _init_state == InstanceKlass::being_initialized;
   }
   // Has this klass been linked?
   bool                   is_linked() {
-    update_if_shared(instanceKlass::linked);
-    return _init_state >= instanceKlass::linked;
+    update_if_shared(InstanceKlass::linked);
+    return _init_state >= InstanceKlass::linked;
   }
 
   // General klass information.
@@ -220,7 +219,7 @@
   // Is the defining class loader of this class the default loader?
   bool uses_default_loader();
 
-  bool is_java_lang_Object();
+  bool is_java_lang_Object() const;
 
   // Is this klass in the given package?
   bool is_in_package(const char* packagename) {
@@ -229,8 +228,8 @@
   bool is_in_package(const char* packagename, int len);
 
   // What kind of ciObject is this?
-  bool is_instance_klass() { return true; }
-  bool is_java_klass()     { return true; }
+  bool is_instance_klass() const { return true; }
+  bool is_java_klass() const     { return true; }
 };
 
 #endif // SHARE_VM_CI_CIINSTANCEKLASS_HPP
--- a/src/share/vm/ci/ciInstanceKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciInstanceKlassKlass.hpp"
-#include "ci/ciUtilities.hpp"
-
-// ciInstanceKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is an instanceKlassKlass.
-
-// ------------------------------------------------------------------
-// ciInstanceKlassKlass::instance
-//
-// Return the distinguished instance of this class
-ciInstanceKlassKlass* ciInstanceKlassKlass::make() {
-  return CURRENT_ENV->_instance_klass_klass_instance;
-}
--- a/src/share/vm/ci/ciInstanceKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
-#define SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
-
-#include "ci/ciKlassKlass.hpp"
-
-// ciInstanceKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a instanceKlassKlass.
-class ciInstanceKlassKlass : public ciKlassKlass {
-  CI_PACKAGE_ACCESS
-
-private:
-  ciInstanceKlassKlass(KlassHandle h_k)
-    : ciKlassKlass(h_k, ciSymbol::make("unique_instanceKlassKlass")) {
-    assert(h_k()->klass_part()->oop_is_instanceKlass(), "wrong type");
-  }
-
-  instanceKlassKlass* get_instanceKlassKlass() {
-    return (instanceKlassKlass*)get_Klass();
-  }
-
-  const char* type_string() { return "ciInstanceKlassKlass"; }
-
-public:
-  // What kind of ciObject is this?
-  bool is_instance_klass_klass() { return true; }
-
-  // Return the distinguished ciInstanceKlassKlass instance.
-  static ciInstanceKlassKlass* make();
-};
-
-#endif // SHARE_VM_CI_CIINSTANCEKLASSKLASS_HPP
--- a/src/share/vm/ci/ciKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -30,13 +30,13 @@
 
 // ciKlass
 //
-// This class represents a klassOop in the HotSpot virtual
+// This class represents a Klass* in the HotSpot virtual
 // machine.
 
 // ------------------------------------------------------------------
 // ciKlass::ciKlass
 ciKlass::ciKlass(KlassHandle h_k) : ciType(h_k) {
-  assert(get_oop()->is_klass(), "wrong type");
+  assert(get_Klass()->is_klass(), "wrong type");
   Klass* k = get_Klass();
   _layout_helper = k->layout_helper();
   Symbol* klass_name = k->name();
@@ -49,7 +49,7 @@
 //
 // Nameless klass variant.
 ciKlass::ciKlass(KlassHandle h_k, ciSymbol* name) : ciType(h_k) {
-  assert(get_oop()->is_klass(), "wrong type");
+  assert(get_Klass()->is_klass(), "wrong type");
   _name = name;
   _layout_helper = Klass::_lh_neutral_value;
 }
@@ -58,7 +58,7 @@
 // ciKlass::ciKlass
 //
 // Unloaded klass variant.
-ciKlass::ciKlass(ciSymbol* name, ciKlass* klass) : ciType(klass) {
+ciKlass::ciKlass(ciSymbol* name, BasicType bt) : ciType(bt) {
   _name = name;
   _layout_helper = Klass::_lh_neutral_value;
 }
@@ -67,7 +67,6 @@
 // ciKlass::is_subtype_of
 bool ciKlass::is_subtype_of(ciKlass* that) {
   assert(is_loaded() && that->is_loaded(), "must be loaded");
-  assert(is_java_klass() && that->is_java_klass(), "must be java klasses");
   // Check to see if the klasses are identical.
   if (this == that) {
     return true;
@@ -75,7 +74,7 @@
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
-  klassOop that_klass = that->get_klassOop();
+  Klass* that_klass = that->get_Klass();
   bool result = this_klass->is_subtype_of(that_klass);
 
   return result;
@@ -85,12 +84,11 @@
 // ciKlass::is_subclass_of
 bool ciKlass::is_subclass_of(ciKlass* that) {
   assert(is_loaded() && that->is_loaded(), "must be loaded");
-  assert(is_java_klass() && that->is_java_klass(), "must be java klasses");
   // Check to see if the klasses are identical.
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
-  klassOop that_klass = that->get_klassOop();
+  Klass* that_klass = that->get_Klass();
   bool result = this_klass->is_subclass_of(that_klass);
 
   return result;
@@ -100,7 +98,6 @@
 // ciKlass::super_depth
 juint ciKlass::super_depth() {
   assert(is_loaded(), "must be loaded");
-  assert(is_java_klass(), "must be java klasses");
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
@@ -111,7 +108,6 @@
 // ciKlass::super_check_offset
 juint ciKlass::super_check_offset() {
   assert(is_loaded(), "must be loaded");
-  assert(is_java_klass(), "must be java klasses");
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
@@ -122,19 +118,17 @@
 // ciKlass::super_of_depth
 ciKlass* ciKlass::super_of_depth(juint i) {
   assert(is_loaded(), "must be loaded");
-  assert(is_java_klass(), "must be java klasses");
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
-  klassOop super = this_klass->primary_super_of_depth(i);
-  return (super != NULL) ? CURRENT_THREAD_ENV->get_object(super)->as_klass() : NULL;
+  Klass* super = this_klass->primary_super_of_depth(i);
+  return (super != NULL) ? CURRENT_THREAD_ENV->get_klass(super) : NULL;
 }
 
 // ------------------------------------------------------------------
 // ciKlass::can_be_primary_super
 bool ciKlass::can_be_primary_super() {
   assert(is_loaded(), "must be loaded");
-  assert(is_java_klass(), "must be java klasses");
 
   VM_ENTRY_MARK;
   Klass* this_klass = get_Klass();
@@ -156,7 +150,6 @@
 ciKlass*
 ciKlass::least_common_ancestor(ciKlass* that) {
   assert(is_loaded() && that->is_loaded(), "must be loaded");
-  assert(is_java_klass() && that->is_java_klass(), "must be java klasses");
   // Check to see if the klasses are identical.
   if (this == that) {
     return this;
@@ -178,7 +171,7 @@
 
   // Create the ciInstanceKlass for the lca.
   ciKlass* result =
-    CURRENT_THREAD_ENV->get_object(lca->as_klassOop())->as_klass();
+    CURRENT_THREAD_ENV->get_klass(lca);
 
   return result;
 }
@@ -204,7 +197,7 @@
     if (!is_loaded())
       return ciEnv::current()->get_unloaded_klass_mirror(this);
     oop java_mirror = get_Klass()->java_mirror();
-    return CURRENT_ENV->get_object(java_mirror)->as_instance();
+    return CURRENT_ENV->get_instance(java_mirror);
   )
 }
 
--- a/src/share/vm/ci/ciKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -26,15 +26,14 @@
 #define SHARE_VM_CI_CIKLASS_HPP
 
 #include "ci/ciType.hpp"
-#include "oops/klassOop.hpp"
 
 // ciKlass
 //
-// This class and its subclasses represent klassOops in the
-// HotSpot virtual machine.  In the vm, each klassOop contains an
+// This class and its subclasses represent Klass*s in the
+// HotSpot virtual machine.  In the vm, each Klass* contains an
 // embedded Klass object.  ciKlass is subclassed to explicitly
-// represent the kind of Klass embedded in the klassOop.  For
-// example, a klassOop with an embedded objArrayKlass object is
+// represent the kind of Klass embedded in the Klass*.  For
+// example, a Klass* with an embedded objArrayKlass object is
 // represented in the ciObject hierarchy by the class
 // ciObjArrayKlass.
 class ciKlass : public ciType {
@@ -50,16 +49,14 @@
 
 protected:
   ciKlass(KlassHandle k_h, ciSymbol* name);
-  ciKlass(ciSymbol* name, ciKlass* klass);
+  ciKlass(ciSymbol* name, BasicType bt);
 
-  klassOop get_klassOop() const {
-    klassOop k = (klassOop)get_oop();
+  Klass* get_Klass() const {
+    Klass* k = (Klass*)_metadata;
     assert(k != NULL, "illegal use of unloaded klass");
     return k;
   }
 
-  Klass*   get_Klass() const { return get_klassOop()->klass_part(); }
-
   // Certain subklasses have an associated class loader.
   virtual oop loader()             { return NULL; }
   virtual jobject loader_handle()  { return NULL; }
@@ -88,6 +85,9 @@
   bool can_be_primary_super();
   static juint primary_super_limit() { return Klass::primary_super_limit(); }
 
+  // Is this ciObject the ciInstanceKlass representing java.lang.Object()?
+  virtual bool is_java_lang_Object() const  { return false; }
+
   // Get the shared parent of two klasses.
   ciKlass* least_common_ancestor(ciKlass* k);
 
@@ -119,7 +119,7 @@
   jint                   access_flags();
 
   // What kind of ciObject is this?
-  bool is_klass() { return true; }
+  bool is_klass() const { return true; }
 
   void print_name_on(outputStream* st);
 };
--- a/src/share/vm/ci/ciKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciKlassKlass.hpp"
-#include "ci/ciUtilities.hpp"
-
-// ciKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a klassKlass.
-
-// ------------------------------------------------------------------
-// ciKlassKlass::instance
-//
-// Return the distinguished instance of this class
-ciKlassKlass* ciKlassKlass::make() {
-  return CURRENT_ENV->_klass_klass_instance;
-}
--- a/src/share/vm/ci/ciKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CIKLASSKLASS_HPP
-#define SHARE_VM_CI_CIKLASSKLASS_HPP
-
-#include "ci/ciKlass.hpp"
-#include "ci/ciSymbol.hpp"
-
-// ciKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a klassKlass or one of its subclasses
-// (instanceKlassKlass, objArrayKlassKlass, typeArrayKlassKlass).
-class ciKlassKlass : public ciKlass {
-  CI_PACKAGE_ACCESS
-
-protected:
-  ciKlassKlass(KlassHandle h_k)
-    : ciKlass(h_k, ciSymbol::make("unique_klassKlass")) {
-    assert(h_k()->klass_part()->oop_is_klass(), "wrong type");
-  }
-  ciKlassKlass(KlassHandle h_k, ciSymbol *name)
-    : ciKlass(h_k, name) {}
-
-  klassKlass* get_klassKlass() { return (klassKlass*)get_Klass(); }
-
-  const char* type_string() { return "ciKlassKlass"; }
-
-public:
-  // What kind of ciObject is this?
-  bool is_klass_klass() { return true; }
-
-  // Return the distinguished ciKlassKlass instance.
-  static ciKlassKlass* make();
-};
-
-#endif // SHARE_VM_CI_CIKLASSKLASS_HPP
--- a/src/share/vm/ci/ciMemberName.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMemberName.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,6 +34,11 @@
 // Return: MN.vmtarget
 ciMethod* ciMemberName::get_vmtarget() const {
   VM_ENTRY_MARK;
-  oop vmtarget_oop = java_lang_invoke_MemberName::vmtarget(get_oop());
-  return CURRENT_ENV->get_object(vmtarget_oop)->as_method();
+  // FIXME: Share code with ciMethodHandle::get_vmtarget
+  Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(get_oop());
+  if (vmtarget->is_method())
+    return CURRENT_ENV->get_method((Method*) vmtarget);
+  // FIXME: What if the vmtarget is a Klass?
+  assert(false, "");
+  return NULL;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/ci/ciMetadata.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "ci/ciObject.hpp"
+#include "ci/ciUtilities.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "oops/oop.inline2.hpp"
+
+// ------------------------------------------------------------------
+// ciMetadata::print
+//
+// Print debugging output about this ciMetadata.
+//
+// Implementation note: dispatch to the virtual print_impl behavior
+// for this ciObject.
+void ciMetadata::print(outputStream* st) {
+  st->print("<%s", type_string());
+  GUARDED_VM_ENTRY(print_impl(st);)
+  st->print(" ident=%d address=0x%x>", ident(), (address)this);
+}
+
+
+// ------------------------------------------------------------------
+// ciMetadata::print_oop
+//
+// Print debugging output about the metadata this ciMetadata represents.
+void ciMetadata::print_metadata(outputStream* st) {
+  if (!is_loaded()) {
+    st->print_cr("UNLOADED");
+  } else {
+    GUARDED_VM_ENTRY(_metadata->print_on(st);)
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/ci/ciMetadata.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 1999, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_CI_CIMETADATA_HPP
+#define SHARE_VM_CI_CIMETADATA_HPP
+
+#include "ci/ciBaseObject.hpp"
+#include "ci/ciClassList.hpp"
+#include "memory/allocation.hpp"
+#include "runtime/handles.hpp"
+#include "runtime/jniHandles.hpp"
+
+// ciMetadata
+//
+// Compiler interface to metadata object in the VM, not Java object.
+
+class ciMetadata: public ciBaseObject {
+  CI_PACKAGE_ACCESS
+  friend class ciEnv;
+
+ protected:
+  Metadata* _metadata;
+
+  ciMetadata(): _metadata(NULL) {}
+  ciMetadata(Metadata* o): _metadata(o) {}
+
+  virtual bool is_classless() const         { return false; }
+ public:
+  bool is_loaded() const { return _metadata != NULL || is_classless(); }
+
+  virtual bool is_metadata() const          { return true; }
+
+  virtual bool is_type() const              { return false; }
+  virtual bool is_cpcache() const           { return false; }
+  virtual bool is_return_address() const    { return false; }
+  virtual bool is_method() const            { return false; }
+  virtual bool is_method_data() const       { return false; }
+  virtual bool is_klass() const             { return false; }
+  virtual bool is_instance_klass() const    { return false; }
+  virtual bool is_array_klass() const       { return false; }
+  virtual bool is_obj_array_klass() const   { return false; }
+  virtual bool is_type_array_klass() const  { return false; }
+
+  ciMethod*                as_method() {
+    assert(is_method(), "bad cast");
+    return (ciMethod*)this;
+  }
+  ciMethodData*            as_method_data() {
+    assert(is_method_data(), "bad cast");
+    return (ciMethodData*)this;
+  }
+  ciSymbol*                as_symbol() {
+    assert(is_symbol(), "bad cast");
+    return (ciSymbol*)this;
+  }
+  ciType*                  as_type() {
+    assert(is_type(), "bad cast");
+    return (ciType*)this;
+  }
+  ciReturnAddress*         as_return_address() {
+    assert(is_return_address(), "bad cast");
+    return (ciReturnAddress*)this;
+  }
+  ciKlass*                 as_klass() {
+    assert(is_klass(), "bad cast");
+    return (ciKlass*)this;
+  }
+  ciInstanceKlass*         as_instance_klass() {
+    assert(is_instance_klass(), "bad cast");
+    return (ciInstanceKlass*)this;
+  }
+  ciArrayKlass*            as_array_klass() {
+    assert(is_array_klass(), "bad cast");
+    return (ciArrayKlass*)this;
+  }
+  ciObjArrayKlass*         as_obj_array_klass() {
+    assert(is_obj_array_klass(), "bad cast");
+    return (ciObjArrayKlass*)this;
+  }
+  ciTypeArrayKlass*        as_type_array_klass() {
+    assert(is_type_array_klass(), "bad cast");
+    return (ciTypeArrayKlass*)this;
+  }
+
+  Metadata* constant_encoding() { return _metadata; }
+
+  bool equals(ciMetadata* obj) const { return (this == obj); }
+
+  int hash() { return ident() * 31; } // ???
+
+  void print(outputStream* st);
+  virtual void print_impl(outputStream* st) {}
+  virtual const char* type_string() { return "ciMetadata"; }
+
+  void print()  { print(tty); }
+  void print_metadata(outputStream* st = tty);
+
+};
+#endif // SHARE_VM_CI_CIMETADATA_HPP
--- a/src/share/vm/ci/ciMethod.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMethod.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,7 +29,6 @@
 #include "ci/ciMethod.hpp"
 #include "ci/ciMethodBlocks.hpp"
 #include "ci/ciMethodData.hpp"
-#include "ci/ciMethodKlass.hpp"
 #include "ci/ciStreams.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciUtilities.hpp"
@@ -51,16 +50,16 @@
 #ifdef COMPILER2
 #include "ci/bcEscapeAnalyzer.hpp"
 #include "ci/ciTypeFlow.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #endif
 #ifdef SHARK
 #include "ci/ciTypeFlow.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #endif
 
 // ciMethod
 //
-// This class represents a methodOop in the HotSpot virtual
+// This class represents a Method* in the HotSpot virtual
 // machine.
 
 
@@ -68,7 +67,7 @@
 // ciMethod::ciMethod
 //
 // Loaded method.
-ciMethod::ciMethod(methodHandle h_m) : ciObject(h_m) {
+ciMethod::ciMethod(methodHandle h_m) : ciMetadata(h_m()) {
   assert(h_m() != NULL, "no null method");
 
   // These fields are always filled in in loaded methods.
@@ -106,7 +105,7 @@
     CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
   }
 
-  if (instanceKlass::cast(h_m()->method_holder())->is_linked()) {
+  if (InstanceKlass::cast(h_m()->method_holder())->is_linked()) {
     _can_be_statically_bound = h_m()->can_be_statically_bound();
   } else {
     // Have to use a conservative value in this case.
@@ -123,7 +122,7 @@
   // generating _signature may allow GC and therefore move m.
   // These fields are always filled in.
   _name = env->get_symbol(h_m()->name());
-  _holder = env->get_object(h_m()->method_holder())->as_instance_klass();
+  _holder = env->get_instance_klass(h_m()->method_holder());
   ciSymbol* sig_symbol = env->get_symbol(h_m()->signature());
   constantPoolHandle cpool = h_m()->constants();
   _signature = new (env->arena()) ciSignature(_holder, cpool, sig_symbol);
@@ -151,7 +150,7 @@
                    ciSymbol*        name,
                    ciSymbol*        signature,
                    ciInstanceKlass* accessor) :
-  ciObject(ciMethodKlass::make()),
+  ciMetadata((Metadata*)NULL),
   _name(                   name),
   _holder(                 holder),
   _intrinsic_id(           vmIntrinsics::_none),
@@ -180,7 +179,7 @@
   VM_ENTRY_MARK;
   assert(is_loaded(), "only loaded methods have code");
 
-  methodOop me = get_methodOop();
+  Method* me = get_Method();
   Arena* arena = CURRENT_THREAD_ENV->arena();
 
   // Load the bytecodes.
@@ -189,7 +188,7 @@
 
   // Revert any breakpoint bytecodes in ci's copy
   if (me->number_of_breakpoints() > 0) {
-    BreakpointInfo* bp = instanceKlass::cast(me->method_holder())->breakpoints();
+    BreakpointInfo* bp = InstanceKlass::cast(me->method_holder())->breakpoints();
     for (; bp != NULL; bp = bp->next()) {
       if (bp->match(me)) {
         code_at_put(bp->bci(), bp->orig_bytecode());
@@ -236,7 +235,7 @@
 bool    ciMethod::has_linenumber_table() const {
   check_is_loaded();
   VM_ENTRY_MARK;
-  return get_methodOop()->has_linenumber_table();
+  return get_Method()->has_linenumber_table();
 }
 
 
@@ -245,7 +244,7 @@
 u_char* ciMethod::compressed_linenumber_table() const {
   check_is_loaded();
   VM_ENTRY_MARK;
-  return get_methodOop()->compressed_linenumber_table();
+  return get_Method()->compressed_linenumber_table();
 }
 
 
@@ -254,7 +253,7 @@
 int ciMethod::line_number_from_bci(int bci) const {
   check_is_loaded();
   VM_ENTRY_MARK;
-  return get_methodOop()->line_number_from_bci(bci);
+  return get_Method()->line_number_from_bci(bci);
 }
 
 
@@ -266,7 +265,7 @@
   check_is_loaded();
   assert(holder()->is_linked(), "must be linked");
   VM_ENTRY_MARK;
-  return get_methodOop()->vtable_index();
+  return get_Method()->vtable_index();
 }
 
 
@@ -279,7 +278,7 @@
   check_is_loaded();
   assert(holder()->is_linked(), "must be linked");
   VM_ENTRY_MARK;
-  return klassItable::compute_itable_index(get_methodOop());
+  return klassItable::compute_itable_index(get_Method());
 }
 #endif // SHARK
 
@@ -292,7 +291,7 @@
   check_is_loaded();
   assert(flags().is_native(), "must be native method");
   VM_ENTRY_MARK;
-  methodOop method = get_methodOop();
+  Method* method = get_Method();
   address entry = method->native_function();
   assert(entry != NULL, "must be valid entry point");
   return entry;
@@ -306,7 +305,7 @@
 address ciMethod::interpreter_entry() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return Interpreter::entry_for_method(mh);
 }
 
@@ -321,7 +320,7 @@
 
   // Analyze the method to see if monitors are used properly.
   VM_ENTRY_MARK;
-  methodHandle method(THREAD, get_methodOop());
+  methodHandle method(THREAD, get_Method());
   assert(method->has_monitor_bytecodes(), "should have checked this");
 
   // Check to see if a previous compilation computed the
@@ -426,7 +425,7 @@
 BitMap ciMethod::live_local_oops_at_bci(int bci) {
   VM_ENTRY_MARK;
   InterpreterOopMap mask;
-  OopMapCache::compute_one_oop_map(get_methodOop(), bci, &mask);
+  OopMapCache::compute_one_oop_map(get_Method(), bci, &mask);
   int mask_size = max_locals();
   BitMap result(mask_size);
   result.clear();
@@ -607,16 +606,16 @@
   methodHandle target;
   {
     MutexLocker locker(Compile_lock);
-    klassOop context = actual_recv->get_klassOop();
+    Klass* context = actual_recv->get_Klass();
     target = Dependencies::find_unique_concrete_method(context,
-                                                       root_m->get_methodOop());
+                                                       root_m->get_Method());
     // %%% Should upgrade this ciMethod API to look for 1 or 2 concrete methods.
   }
 
 #ifndef PRODUCT
-  if (TraceDependencies && target() != NULL && target() != root_m->get_methodOop()) {
+  if (TraceDependencies && target() != NULL && target() != root_m->get_Method()) {
     tty->print("found a non-root unique target method");
-    tty->print_cr("  context = %s", instanceKlass::cast(actual_recv->get_klassOop())->external_name());
+    tty->print_cr("  context = %s", InstanceKlass::cast(actual_recv->get_Klass())->external_name());
     tty->print("  method  = ");
     target->print_short_name(tty);
     tty->cr();
@@ -626,7 +625,7 @@
   if (target() == NULL) {
     return NULL;
   }
-  if (target() == root_m->get_methodOop()) {
+  if (target() == root_m->get_Method()) {
     return root_m;
   }
   if (!root_m->is_public() &&
@@ -640,7 +639,7 @@
     // with the same name but different vtable indexes.
     return NULL;
   }
-  return CURRENT_THREAD_ENV->get_object(target())->as_method();
+  return CURRENT_THREAD_ENV->get_method(target());
 }
 
 // ------------------------------------------------------------------
@@ -652,18 +651,18 @@
    check_is_loaded();
    VM_ENTRY_MARK;
 
-   KlassHandle caller_klass (THREAD, caller->get_klassOop());
-   KlassHandle h_recv       (THREAD, exact_receiver->get_klassOop());
-   KlassHandle h_resolved   (THREAD, holder()->get_klassOop());
+   KlassHandle caller_klass (THREAD, caller->get_Klass());
+   KlassHandle h_recv       (THREAD, exact_receiver->get_Klass());
+   KlassHandle h_resolved   (THREAD, holder()->get_Klass());
    Symbol* h_name      = name()->get_symbol();
    Symbol* h_signature = signature()->get_symbol();
 
    methodHandle m;
    // Only do exact lookup if receiver klass has been linked.  Otherwise,
    // the vtable has not been setup, and the LinkResolver will fail.
-   if (h_recv->oop_is_javaArray()
+   if (h_recv->oop_is_array()
         ||
-       instanceKlass::cast(h_recv())->is_linked() && !exact_receiver->is_interface()) {
+       InstanceKlass::cast(h_recv())->is_linked() && !exact_receiver->is_interface()) {
      if (holder()->is_interface()) {
        m = LinkResolver::resolve_interface_call_or_null(h_recv, h_resolved, h_name, h_signature, caller_klass);
      } else {
@@ -677,8 +676,8 @@
    }
 
    ciMethod* result = this;
-   if (m() != get_methodOop()) {
-     result = CURRENT_THREAD_ENV->get_object(m())->as_method();
+   if (m() != get_Method()) {
+     result = CURRENT_THREAD_ENV->get_method(m());
    }
 
    // Don't return abstract methods because they aren't
@@ -694,11 +693,11 @@
 // ciMethod::resolve_vtable_index
 //
 // Given a known receiver klass, find the vtable index for the call.
-// Return methodOopDesc::invalid_vtable_index if the vtable_index is unknown.
+// Return Method::invalid_vtable_index if the vtable_index is unknown.
 int ciMethod::resolve_vtable_index(ciKlass* caller, ciKlass* receiver) {
    check_is_loaded();
 
-   int vtable_index = methodOopDesc::invalid_vtable_index;
+   int vtable_index = Method::invalid_vtable_index;
    // Only do lookup if receiver klass has been linked.  Otherwise,
    // the vtable has not been setup, and the LinkResolver will fail.
    if (!receiver->is_interface()
@@ -706,15 +705,15 @@
            receiver->as_instance_klass()->is_linked())) {
      VM_ENTRY_MARK;
 
-     KlassHandle caller_klass (THREAD, caller->get_klassOop());
-     KlassHandle h_recv       (THREAD, receiver->get_klassOop());
+     KlassHandle caller_klass (THREAD, caller->get_Klass());
+     KlassHandle h_recv       (THREAD, receiver->get_Klass());
      Symbol* h_name = name()->get_symbol();
      Symbol* h_signature = signature()->get_symbol();
 
      vtable_index = LinkResolver::resolve_virtual_vtable_index(h_recv, h_recv, h_name, h_signature, caller_klass);
-     if (vtable_index == methodOopDesc::nonvirtual_vtable_index) {
+     if (vtable_index == Method::nonvirtual_vtable_index) {
        // A statically bound method.  Return "no such index".
-       vtable_index = methodOopDesc::invalid_vtable_index;
+       vtable_index = Method::invalid_vtable_index;
      }
    }
 
@@ -803,19 +802,19 @@
 // ------------------------------------------------------------------
 // ciMethod::ensure_method_data
 //
-// Generate new methodDataOop objects at compile time.
+// Generate new MethodData* objects at compile time.
 // Return true if allocation was successful or no MDO is required.
 bool ciMethod::ensure_method_data(methodHandle h_m) {
   EXCEPTION_CONTEXT;
   if (is_native() || is_abstract() || h_m()->is_accessor()) return true;
   if (h_m()->method_data() == NULL) {
-    methodOopDesc::build_interpreter_method_data(h_m, THREAD);
+    Method::build_interpreter_method_data(h_m, THREAD);
     if (HAS_PENDING_EXCEPTION) {
       CLEAR_PENDING_EXCEPTION;
     }
   }
   if (h_m()->method_data() != NULL) {
-    _method_data = CURRENT_ENV->get_object(h_m()->method_data())->as_method_data();
+    _method_data = CURRENT_ENV->get_method_data(h_m()->method_data());
     _method_data->load_data();
     return true;
   } else {
@@ -829,7 +828,7 @@
   bool result = true;
   if (_method_data == NULL || _method_data->is_empty()) {
     GUARDED_VM_ENTRY({
-      result = ensure_method_data(get_methodOop());
+      result = ensure_method_data(get_Method());
     });
   }
   return result;
@@ -846,10 +845,10 @@
   VM_ENTRY_MARK;
   ciEnv* env = CURRENT_ENV;
   Thread* my_thread = JavaThread::current();
-  methodHandle h_m(my_thread, get_methodOop());
+  methodHandle h_m(my_thread, get_Method());
 
   if (h_m()->method_data() != NULL) {
-    _method_data = CURRENT_ENV->get_object(h_m()->method_data())->as_method_data();
+    _method_data = CURRENT_ENV->get_method_data(h_m()->method_data());
     _method_data->load_data();
   } else {
     _method_data = CURRENT_ENV->get_empty_methodData();
@@ -894,7 +893,7 @@
 bool ciMethod::should_exclude() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   bool ignore;
   return CompilerOracle::should_exclude(mh, ignore);
 }
@@ -906,7 +905,7 @@
 bool ciMethod::should_inline() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return CompilerOracle::should_inline(mh);
 }
 
@@ -917,7 +916,7 @@
 bool ciMethod::should_not_inline() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return CompilerOracle::should_not_inline(mh);
 }
 
@@ -928,7 +927,7 @@
 bool ciMethod::should_print_assembly() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return CompilerOracle::should_print(mh);
 }
 
@@ -940,7 +939,7 @@
 bool ciMethod::break_at_execute() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return CompilerOracle::should_break_at(mh);
 }
 
@@ -950,7 +949,7 @@
 bool ciMethod::has_option(const char* option) {
   check_is_loaded();
   VM_ENTRY_MARK;
-  methodHandle mh(THREAD, get_methodOop());
+  methodHandle mh(THREAD, get_Method());
   return CompilerOracle::has_option_string(mh, option);
 }
 
@@ -980,7 +979,7 @@
   } else {
     _is_c2_compilable = false;
   }
-  get_methodOop()->set_not_compilable(env->comp_level());
+  get_Method()->set_not_compilable(env->comp_level());
 }
 
 // ------------------------------------------------------------------
@@ -995,20 +994,20 @@
   check_is_loaded();
   VM_ENTRY_MARK;
   ciEnv* env = CURRENT_ENV;
-  return !get_methodOop()->is_not_osr_compilable(env->comp_level());
+  return !get_Method()->is_not_osr_compilable(env->comp_level());
 }
 
 // ------------------------------------------------------------------
 // ciMethod::has_compiled_code
 bool ciMethod::has_compiled_code() {
   VM_ENTRY_MARK;
-  return get_methodOop()->code() != NULL;
+  return get_Method()->code() != NULL;
 }
 
 int ciMethod::comp_level() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  nmethod* nm = get_methodOop()->code();
+  nmethod* nm = get_Method()->code();
   if (nm != NULL) return nm->comp_level();
   return 0;
 }
@@ -1016,7 +1015,7 @@
 int ciMethod::highest_osr_comp_level() {
   check_is_loaded();
   VM_ENTRY_MARK;
-  return get_methodOop()->highest_osr_comp_level();
+  return get_Method()->highest_osr_comp_level();
 }
 
 // ------------------------------------------------------------------
@@ -1026,7 +1025,7 @@
 // size of 1 for methods which has the ForceInline annotation.
 int ciMethod::code_size_for_inlining() {
   check_is_loaded();
-  if (get_methodOop()->force_inline()) {
+  if (get_Method()->force_inline()) {
     return 1;
   }
   return code_size();
@@ -1042,7 +1041,7 @@
 // specific accessor nmethod::insts_size.
 int ciMethod::instructions_size(int comp_level) {
   GUARDED_VM_ENTRY(
-    nmethod* code = get_methodOop()->code();
+    nmethod* code = get_Method()->code();
     if (code != NULL && (comp_level == CompLevel_any || comp_level == code->comp_level())) {
       return code->insts_end() - code->verified_entry_point();
     }
@@ -1054,7 +1053,7 @@
 // ciMethod::log_nmethod_identity
 void ciMethod::log_nmethod_identity(xmlStream* log) {
   GUARDED_VM_ENTRY(
-    nmethod* code = get_methodOop()->code();
+    nmethod* code = get_Method()->code();
     if (code != NULL) {
       code->log_identity(log);
     }
@@ -1067,14 +1066,14 @@
   check_is_loaded();
   VM_ENTRY_MARK;
   return Interpreter::is_not_reached(
-               methodHandle(THREAD, get_methodOop()), bci);
+               methodHandle(THREAD, get_Method()), bci);
 }
 
 // ------------------------------------------------------------------
 // ciMethod::was_never_executed
 bool ciMethod::was_executed_more_than(int times) {
   VM_ENTRY_MARK;
-  return get_methodOop()->was_executed_more_than(times);
+  return get_Method()->was_executed_more_than(times);
 }
 
 // ------------------------------------------------------------------
@@ -1083,8 +1082,8 @@
   VM_ENTRY_MARK;
   {
     EXCEPTION_MARK;
-    methodHandle m(THREAD, get_methodOop());
-    bool has_unloaded = methodOopDesc::has_unloaded_classes_in_signature(m, (JavaThread *)THREAD);
+    methodHandle m(THREAD, get_Method());
+    bool has_unloaded = Method::has_unloaded_classes_in_signature(m, (JavaThread *)THREAD);
     if( HAS_PENDING_EXCEPTION ) {
       CLEAR_PENDING_EXCEPTION;
       return true;     // Declare that we may have unloaded classes
@@ -1097,7 +1096,7 @@
 // ciMethod::is_klass_loaded
 bool ciMethod::is_klass_loaded(int refinfo_index, bool must_be_resolved) const {
   VM_ENTRY_MARK;
-  return get_methodOop()->is_klass_loaded(refinfo_index, must_be_resolved);
+  return get_Method()->is_klass_loaded(refinfo_index, must_be_resolved);
 }
 
 // ------------------------------------------------------------------
@@ -1107,7 +1106,7 @@
   {
     EXCEPTION_MARK;
     HandleMark hm(THREAD);
-    constantPoolHandle pool (THREAD, get_methodOop()->constants());
+    constantPoolHandle pool (THREAD, get_Method()->constants());
     methodHandle spec_method;
     KlassHandle  spec_klass;
     Bytecodes::Code code = (is_static ? Bytecodes::_invokestatic : Bytecodes::_invokevirtual);
@@ -1128,14 +1127,14 @@
 // Print the bytecodes for this method.
 void ciMethod::print_codes_on(outputStream* st) {
   check_is_loaded();
-  GUARDED_VM_ENTRY(get_methodOop()->print_codes_on(st);)
+  GUARDED_VM_ENTRY(get_Method()->print_codes_on(st);)
 }
 
 
 #define FETCH_FLAG_FROM_VM(flag_accessor) { \
   check_is_loaded(); \
   VM_ENTRY_MARK; \
-  return get_methodOop()->flag_accessor(); \
+  return get_Method()->flag_accessor(); \
 }
 
 bool ciMethod::is_empty_method() const {         FETCH_FLAG_FROM_VM(is_empty_method); }
@@ -1174,7 +1173,7 @@
 // Print a range of the bytecodes for this method.
 void ciMethod::print_codes_on(int from, int to, outputStream* st) {
   check_is_loaded();
-  GUARDED_VM_ENTRY(get_methodOop()->print_codes_on(from, to, st);)
+  GUARDED_VM_ENTRY(get_Method()->print_codes_on(from, to, st);)
 }
 
 // ------------------------------------------------------------------
@@ -1183,7 +1182,7 @@
 // Print the name of this method, including signature and some flags.
 void ciMethod::print_name(outputStream* st) {
   check_is_loaded();
-  GUARDED_VM_ENTRY(get_methodOop()->print_name(st);)
+  GUARDED_VM_ENTRY(get_Method()->print_name(st);)
 }
 
 // ------------------------------------------------------------------
@@ -1192,7 +1191,7 @@
 // Print the name of this method, without signature.
 void ciMethod::print_short_name(outputStream* st) {
   if (is_loaded()) {
-    GUARDED_VM_ENTRY(get_methodOop()->print_short_name(st););
+    GUARDED_VM_ENTRY(get_Method()->print_short_name(st););
   } else {
     // Fall back if method is not loaded.
     holder()->print_name_on(st);
@@ -1208,7 +1207,7 @@
 //
 // Implementation of the print method.
 void ciMethod::print_impl(outputStream* st) {
-  ciObject::print_impl(st);
+  ciMetadata::print_impl(st);
   st->print(" name=");
   name()->print_symbol_on(st);
   st->print(" holder=");
--- a/src/share/vm/ci/ciMethod.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMethod.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -42,9 +42,9 @@
 
 // ciMethod
 //
-// This class represents a methodOop in the HotSpot virtual
+// This class represents a Method* in the HotSpot virtual
 // machine.
-class ciMethod : public ciObject {
+class ciMethod : public ciMetadata {
   friend class CompileBroker;
   CI_PACKAGE_ACCESS
   friend class ciEnv;
@@ -90,8 +90,8 @@
   ciMethod(methodHandle h_m);
   ciMethod(ciInstanceKlass* holder, ciSymbol* name, ciSymbol* signature, ciInstanceKlass* accessor);
 
-  methodOop get_methodOop() const {
-    methodOop m = (methodOop)get_oop();
+  Method* get_Method() const {
+    Method* m = (Method*)_metadata;
     assert(m != NULL, "illegal use of unloaded method");
     return m;
   }
@@ -164,8 +164,8 @@
   // Code size for inlining decisions.
   int code_size_for_inlining();
 
-  bool force_inline() { return get_methodOop()->force_inline(); }
-  bool dont_inline()  { return get_methodOop()->dont_inline();  }
+  bool force_inline() { return get_Method()->force_inline(); }
+  bool dont_inline()  { return get_Method()->dont_inline();  }
 
   int comp_level();
   int highest_osr_comp_level();
@@ -268,7 +268,7 @@
   bool has_member_arg() const;
 
   // What kind of ciObject is this?
-  bool is_method()                               { return true; }
+  bool is_method() const                         { return true; }
 
   // Java access flags
   bool is_public      () const                   { return flags().is_public(); }
--- a/src/share/vm/ci/ciMethodData.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMethodData.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "ci/ciMetadata.hpp"
 #include "ci/ciMethodData.hpp"
 #include "ci/ciUtilities.hpp"
 #include "memory/allocation.inline.hpp"
@@ -35,8 +36,8 @@
 // ------------------------------------------------------------------
 // ciMethodData::ciMethodData
 //
-ciMethodData::ciMethodData(methodDataHandle h_md) : ciObject(h_md) {
-  assert(h_md() != NULL, "no null method data");
+ciMethodData::ciMethodData(MethodData* md) : ciMetadata(md) {
+  assert(md != NULL, "no null method data");
   Copy::zero_to_words((HeapWord*) &_orig, sizeof(_orig) / sizeof(HeapWord));
   _data = NULL;
   _data_size = 0;
@@ -56,8 +57,8 @@
 // ------------------------------------------------------------------
 // ciMethodData::ciMethodData
 //
-// No methodDataOop.
-ciMethodData::ciMethodData() : ciObject() {
+// No MethodData*.
+ciMethodData::ciMethodData() : ciMetadata(NULL) {
   Copy::zero_to_words((HeapWord*) &_orig, sizeof(_orig) / sizeof(HeapWord));
   _data = NULL;
   _data_size = 0;
@@ -75,7 +76,7 @@
 }
 
 void ciMethodData::load_data() {
-  methodDataOop mdo = get_methodDataOop();
+  MethodData* mdo = get_MethodData();
   if (mdo == NULL) return;
 
   // To do: don't copy the data if it is not "ripe" -- require a minimum #
@@ -84,11 +85,9 @@
   // Snapshot the data -- actually, take an approximate snapshot of
   // the data.  Any concurrently executing threads may be changing the
   // data as we copy it.
-  int skip_header = oopDesc::header_size();
-  Copy::disjoint_words((HeapWord*) mdo              + skip_header,
-                       (HeapWord*) &_orig           + skip_header,
-                       sizeof(_orig) / HeapWordSize - skip_header);
-  DEBUG_ONLY(*_orig.adr_method() = NULL);  // no dangling oops, please
+  Copy::disjoint_words((HeapWord*) mdo,
+                       (HeapWord*) &_orig,
+                       sizeof(_orig) / HeapWordSize);
   Arena* arena = CURRENT_ENV->arena();
   _data_size = mdo->data_size();
   _extra_data_size = mdo->extra_data_size();
@@ -107,7 +106,7 @@
     data = mdo->next_data(data);
   }
   // Note:  Extra data are all BitData, and do not need translation.
-  _current_mileage = methodDataOopDesc::mileage_of(mdo->method());
+  _current_mileage = MethodData::mileage_of(mdo->method());
   _invocation_counter = mdo->invocation_count();
   _backedge_counter = mdo->backedge_count();
   _state = mdo->is_mature()? mature_state: immature_state;
@@ -120,9 +119,9 @@
 
 void ciReceiverTypeData::translate_receiver_data_from(ProfileData* data) {
   for (uint row = 0; row < row_limit(); row++) {
-    klassOop k = data->as_ReceiverTypeData()->receiver(row);
+    Klass* k = data->as_ReceiverTypeData()->receiver(row);
     if (k != NULL) {
-      ciKlass* klass = CURRENT_ENV->get_object(k)->as_klass();
+      ciKlass* klass = CURRENT_ENV->get_klass(k);
       set_receiver(row, klass);
     }
   }
@@ -184,7 +183,7 @@
   // bci_to_extra_data(bci) ...
   DataLayout* dp  = data_layout_at(data_size());
   DataLayout* end = data_layout_at(data_size() + extra_data_size());
-  for (; dp < end; dp = methodDataOopDesc::next_extra(dp)) {
+  for (; dp < end; dp = MethodData::next_extra(dp)) {
     if (dp->tag() == DataLayout::no_tag) {
       _saw_free_extra_data = true;  // observed an empty slot (common case)
       return NULL;
@@ -236,7 +235,7 @@
 
 void ciMethodData::clear_escape_info() {
   VM_ENTRY_MARK;
-  methodDataOop mdo = get_methodDataOop();
+  MethodData* mdo = get_MethodData();
   if (mdo != NULL) {
     mdo->clear_escape_info();
     ArgInfoData *aid = arg_info();
@@ -248,10 +247,10 @@
   _eflags = _arg_local = _arg_stack = _arg_returned = 0;
 }
 
-// copy our escape info to the methodDataOop if it exists
+// copy our escape info to the MethodData* if it exists
 void ciMethodData::update_escape_info() {
   VM_ENTRY_MARK;
-  methodDataOop mdo = get_methodDataOop();
+  MethodData* mdo = get_MethodData();
   if ( mdo != NULL) {
     mdo->set_eflags(_eflags);
     mdo->set_arg_local(_arg_local);
@@ -266,7 +265,7 @@
 
 void ciMethodData::set_compilation_stats(short loops, short blocks) {
   VM_ENTRY_MARK;
-  methodDataOop mdo = get_methodDataOop();
+  MethodData* mdo = get_MethodData();
   if (mdo != NULL) {
     mdo->set_num_loops(loops);
     mdo->set_num_blocks(blocks);
@@ -275,25 +274,25 @@
 
 void ciMethodData::set_would_profile(bool p) {
   VM_ENTRY_MARK;
-  methodDataOop mdo = get_methodDataOop();
+  MethodData* mdo = get_MethodData();
   if (mdo != NULL) {
     mdo->set_would_profile(p);
   }
 }
 
 bool ciMethodData::has_escape_info() {
-  return eflag_set(methodDataOopDesc::estimated);
+  return eflag_set(MethodData::estimated);
 }
 
-void ciMethodData::set_eflag(methodDataOopDesc::EscapeFlag f) {
+void ciMethodData::set_eflag(MethodData::EscapeFlag f) {
   set_bits(_eflags, f);
 }
 
-void ciMethodData::clear_eflag(methodDataOopDesc::EscapeFlag f) {
+void ciMethodData::clear_eflag(MethodData::EscapeFlag f) {
   clear_bits(_eflags, f);
 }
 
-bool ciMethodData::eflag_set(methodDataOopDesc::EscapeFlag f) const {
+bool ciMethodData::eflag_set(MethodData::EscapeFlag f) const {
   return mask_bits(_eflags, f) != 0;
 }
 
@@ -338,8 +337,8 @@
 }
 
 ByteSize ciMethodData::offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data) {
-  // Get offset within methodDataOop of the data array
-  ByteSize data_offset = methodDataOopDesc::data_offset();
+  // Get offset within MethodData* of the data array
+  ByteSize data_offset = MethodData::data_offset();
 
   // Get cell offset of the ProfileData within data array
   int cell_offset = dp_to_di(data->dp());
@@ -354,7 +353,7 @@
   // Should be last, have to skip all traps.
   DataLayout* dp  = data_layout_at(data_size());
   DataLayout* end = data_layout_at(data_size() + extra_data_size());
-  for (; dp < end; dp = methodDataOopDesc::next_extra(dp)) {
+  for (; dp < end; dp = MethodData::next_extra(dp)) {
     if (dp->tag() == DataLayout::arg_info_data_tag)
       return new ciArgInfoData(dp);
   }
@@ -364,7 +363,7 @@
 
 // Implementation of the print method.
 void ciMethodData::print_impl(outputStream* st) {
-  ciObject::print_impl(st);
+  ciMetadata::print_impl(st);
 }
 
 #ifndef PRODUCT
@@ -383,7 +382,7 @@
   st->print_cr("--- Extra data:");
   DataLayout* dp  = data_layout_at(data_size());
   DataLayout* end = data_layout_at(data_size() + extra_data_size());
-  for (; dp < end; dp = methodDataOopDesc::next_extra(dp)) {
+  for (; dp < end; dp = MethodData::next_extra(dp)) {
     if (dp->tag() == DataLayout::no_tag)  continue;
     if (dp->tag() == DataLayout::bit_data_tag) {
       data = new BitData(dp);
--- a/src/share/vm/ci/ciMethodData.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMethodData.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -29,7 +29,7 @@
 #include "ci/ciKlass.hpp"
 #include "ci/ciObject.hpp"
 #include "ci/ciUtilities.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/oop.inline.hpp"
 
 class ciBitData;
@@ -71,9 +71,9 @@
 
   ciKlass* receiver(uint row) {
     assert((uint)row < row_limit(), "oob");
-    ciObject* recv = (ciObject*)intptr_at(receiver0_offset + row * receiver_type_row_cell_count);
+    ciKlass* recv = (ciKlass*)intptr_at(receiver0_offset + row * receiver_type_row_cell_count);
     assert(recv == NULL || recv->is_klass(), "wrong type");
-    return (ciKlass*)recv;
+    return recv;
   }
 
   // Copy & translate from oop based ReceiverTypeData
@@ -139,10 +139,10 @@
 
 // ciMethodData
 //
-// This class represents a methodDataOop in the HotSpot virtual
+// This class represents a MethodData* in the HotSpot virtual
 // machine.
 
-class ciMethodData : public ciObject {
+class ciMethodData : public ciMetadata {
   CI_PACKAGE_ACCESS
 
 private:
@@ -179,9 +179,9 @@
   int _backedge_counter;
 
   // Coherent snapshot of original header.
-  methodDataOopDesc _orig;
+  MethodData _orig;
 
-  ciMethodData(methodDataHandle h_md);
+  ciMethodData(MethodData* md);
   ciMethodData();
 
   // Accessors
@@ -189,11 +189,8 @@
   int extra_data_size() const { return _extra_data_size; }
   intptr_t * data() const { return _data; }
 
-  methodDataOop get_methodDataOop() const {
-    if (handle() == NULL) return NULL;
-    methodDataOop mdo = (methodDataOop)get_oop();
-    assert(mdo != NULL, "illegal use of unloaded method data");
-    return mdo;
+  MethodData* get_MethodData() const {
+    return (MethodData*)_metadata;
   }
 
   const char* type_string()                      { return "ciMethodData"; }
@@ -232,7 +229,7 @@
   ciArgInfoData *arg_info() const;
 
 public:
-  bool is_method_data()  { return true; }
+  bool is_method_data() const { return true; }
 
   void set_mature() { _state = mature_state; }
 
@@ -244,7 +241,7 @@
 
   int invocation_count() { return _invocation_counter; }
   int backedge_count()   { return _backedge_counter;   }
-  // Transfer information about the method to methodDataOop.
+  // Transfer information about the method to MethodData*.
   // would_profile means we would like to profile this method,
   // meaning it's not trivial.
   void set_would_profile(bool p);
@@ -300,9 +297,9 @@
   bool has_escape_info();
   void update_escape_info();
 
-  void set_eflag(methodDataOopDesc::EscapeFlag f);
-  void clear_eflag(methodDataOopDesc::EscapeFlag f);
-  bool eflag_set(methodDataOopDesc::EscapeFlag f) const;
+  void set_eflag(MethodData::EscapeFlag f);
+  void clear_eflag(MethodData::EscapeFlag f);
+  bool eflag_set(MethodData::EscapeFlag f) const;
 
   void set_arg_local(int i);
   void set_arg_stack(int i);
--- a/src/share/vm/ci/ciMethodHandle.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciMethodHandle.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 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
@@ -36,6 +36,11 @@
   VM_ENTRY_MARK;
   oop form_oop     = java_lang_invoke_MethodHandle::form(get_oop());
   oop vmentry_oop  = java_lang_invoke_LambdaForm::vmentry(form_oop);
-  oop vmtarget_oop = java_lang_invoke_MemberName::vmtarget(vmentry_oop);
-  return CURRENT_ENV->get_object(vmtarget_oop)->as_method();
+  // FIXME: Share code with ciMemberName::get_vmtarget
+  Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(vmentry_oop);
+  if (vmtarget->is_method())
+    return CURRENT_ENV->get_method((Method*) vmtarget);
+  // FIXME: What if the vmtarget is a Klass?
+  assert(false, "");
+  return NULL;
 }
--- a/src/share/vm/ci/ciMethodKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciMethodKlass.hpp"
-#include "ci/ciUtilities.hpp"
-
-// ciMethodKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a methodKlass.
-
-// ------------------------------------------------------------------
-// ciMethodKlass::instance
-//
-// Return the distinguished instance of this class
-ciMethodKlass* ciMethodKlass::make() {
-  return CURRENT_ENV->_method_klass_instance;
-}
--- a/src/share/vm/ci/ciMethodKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CIMETHODKLASS_HPP
-#define SHARE_VM_CI_CIMETHODKLASS_HPP
-
-#include "ci/ciKlass.hpp"
-#include "ci/ciSymbol.hpp"
-
-// ciMethodKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part in a methodKlass.
-class ciMethodKlass : public ciKlass {
-  CI_PACKAGE_ACCESS
-
-protected:
-  ciMethodKlass(KlassHandle h_k) :
-         ciKlass(h_k, ciSymbol::make("unique_methodKlass")) {
-    assert(get_Klass()->oop_is_method(), "wrong type");
-  }
-
-  methodKlass* get_methodKlass() { return (methodKlass*)get_Klass(); }
-
-  const char* type_string() { return "ciMethodKlass"; }
-
-public:
-  // What kind of ciObject is this?
-  bool is_method_klass() { return true; }
-
-  // Return the distinguished ciMethodKlass instance.
-  static ciMethodKlass* make();
-};
-
-#endif // SHARE_VM_CI_CIMETHODKLASS_HPP
--- a/src/share/vm/ci/ciObjArrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObjArrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -25,14 +25,13 @@
 #include "precompiled.hpp"
 #include "ci/ciInstanceKlass.hpp"
 #include "ci/ciObjArrayKlass.hpp"
-#include "ci/ciObjArrayKlassKlass.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciUtilities.hpp"
 #include "oops/objArrayKlass.hpp"
 
 // ciObjArrayKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
+// This class represents a Klass* in the HotSpot virtual machine
 // whose Klass part is an objArrayKlass.
 
 // ------------------------------------------------------------------
@@ -41,8 +40,8 @@
 // Constructor for loaded object array klasses.
 ciObjArrayKlass::ciObjArrayKlass(KlassHandle h_k) : ciArrayKlass(h_k) {
   assert(get_Klass()->oop_is_objArray(), "wrong type");
-  klassOop element_klassOop = get_objArrayKlass()->bottom_klass();
-  _base_element_klass = CURRENT_ENV->get_object(element_klassOop)->as_klass();
+  Klass* element_Klass = get_objArrayKlass()->bottom_klass();
+  _base_element_klass = CURRENT_ENV->get_klass(element_Klass);
   assert(_base_element_klass->is_instance_klass() ||
          _base_element_klass->is_type_array_klass(), "bad base klass");
   if (dimension() == 1) {
@@ -63,8 +62,7 @@
                                  ciKlass* base_element_klass,
                                  int dimension)
   : ciArrayKlass(array_name,
-                 dimension,
-                 ciObjArrayKlassKlass::make()) {
+                 dimension, T_OBJECT) {
     _base_element_klass = base_element_klass;
     assert(_base_element_klass->is_instance_klass() ||
            _base_element_klass->is_type_array_klass(), "bad base klass");
@@ -85,8 +83,8 @@
     // Produce the element klass.
     if (is_loaded()) {
       VM_ENTRY_MARK;
-      klassOop element_klassOop = get_objArrayKlass()->element_klass();
-      _element_klass = CURRENT_THREAD_ENV->get_object(element_klassOop)->as_klass();
+      Klass* element_Klass = get_objArrayKlass()->element_klass();
+      _element_klass = CURRENT_THREAD_ENV->get_klass(element_Klass);
     } else {
       VM_ENTRY_MARK;
       // We are an unloaded array klass.  Attempt to fetch our
@@ -154,13 +152,13 @@
   if (element_klass->is_loaded()) {
     EXCEPTION_CONTEXT;
     // The element klass is loaded
-    klassOop array = element_klass->get_Klass()->array_klass(THREAD);
+    Klass* array = element_klass->get_Klass()->array_klass(THREAD);
     if (HAS_PENDING_EXCEPTION) {
       CLEAR_PENDING_EXCEPTION;
       CURRENT_THREAD_ENV->record_out_of_memory_failure();
       return ciEnv::unloaded_ciobjarrayklass();
     }
-    return CURRENT_THREAD_ENV->get_object(array)->as_obj_array_klass();
+    return CURRENT_THREAD_ENV->get_obj_array_klass(array);
   }
 
   // The array klass was unable to be made or the element klass was
@@ -179,6 +177,5 @@
 //
 // Make an array klass corresponding to the specified primitive type.
 ciObjArrayKlass* ciObjArrayKlass::make(ciKlass* element_klass) {
-  assert(element_klass->is_java_klass(), "wrong kind of klass");
   GUARDED_VM_ENTRY(return make_impl(element_klass);)
 }
--- a/src/share/vm/ci/ciObjArrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObjArrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -29,7 +29,7 @@
 
 // ciObjArrayKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
+// This class represents a Klass* in the HotSpot virtual machine
 // whose Klass part is an objArrayKlass.
 class ciObjArrayKlass : public ciArrayKlass {
   CI_PACKAGE_ACCESS
@@ -70,7 +70,7 @@
   ciKlass* base_element_klass() { return _base_element_klass; }
 
   // What kind of ciObject is this?
-  bool is_obj_array_klass() { return true; }
+  bool is_obj_array_klass() const { return true; }
 
   static ciObjArrayKlass* make(ciKlass* element_klass);
 };
--- a/src/share/vm/ci/ciObjArrayKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciObjArrayKlassKlass.hpp"
-#include "ci/ciUtilities.hpp"
-
-// ciObjArrayKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is an arrayKlassKlass.
-
-// ------------------------------------------------------------------
-// ciObjArrayKlassKlass::instance
-//
-// Return the distinguished instance of this class
-ciObjArrayKlassKlass* ciObjArrayKlassKlass::make() {
-  return CURRENT_ENV->_obj_array_klass_klass_instance;
-}
--- a/src/share/vm/ci/ciObjArrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
-#define SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
-
-#include "ci/ciArrayKlassKlass.hpp"
-
-// ciObjArrayKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a objArrayKlassKlass.
-class ciObjArrayKlassKlass : public ciArrayKlassKlass {
-  CI_PACKAGE_ACCESS
-
-private:
-  ciObjArrayKlassKlass(KlassHandle h_k)
-    : ciArrayKlassKlass(h_k, ciSymbol::make("unique_objArrayKlassKlass")) {
-    assert(h_k()->klass_part()->oop_is_objArrayKlass(), "wrong type");
-  }
-
-  objArrayKlassKlass* get_objArrayKlassKlass() {
-    return (objArrayKlassKlass*)get_Klass();
-  }
-
-  const char* type_string() { return "ciObjArrayKlassKlass"; }
-
-public:
-  // What kind of ciObject is this?
-  bool is_obj_array_klass_klass() { return true; }
-
-  // Return the distinguished ciObjArrayKlassKlass instance.
-  static ciObjArrayKlassKlass* make();
-};
-
-#endif // SHARE_VM_CI_CIOBJARRAYKLASSKLASS_HPP
--- a/src/share/vm/ci/ciObject.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObject.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -43,7 +43,7 @@
 //
 // Within the VM, the oop and klass hierarchies are separate.
 // The compiler interface does not preserve this separation --
-// the distinction between `klassOop' and `Klass' are not
+// the distinction between `Klass*' and `Klass' are not
 // reflected in the interface and instead the Klass hierarchy
 // is directly modeled as the subclasses of ciKlass.
 
@@ -57,7 +57,6 @@
     _handle = JNIHandles::make_global(o);
   }
   _klass = NULL;
-  _ident = 0;
   init_flags_from(o);
 }
 
@@ -72,7 +71,6 @@
     _handle = JNIHandles::make_global(h);
   }
   _klass = NULL;
-  _ident = 0;
   init_flags_from(h());
 }
 
@@ -86,7 +84,6 @@
   assert(klass != NULL, "must supply klass");
   _handle = NULL;
   _klass = klass;
-  _ident = 0;
 }
 
 // ------------------------------------------------------------------
@@ -97,7 +94,6 @@
   ASSERT_IN_VM;
   _handle = NULL;
   _klass = NULL;
-  _ident = 0;
 }
 
 // ------------------------------------------------------------------
@@ -117,33 +113,13 @@
 
     GUARDED_VM_ENTRY(
       oop o = get_oop();
-      _klass = CURRENT_ENV->get_object(o->klass())->as_klass();
+      _klass = CURRENT_ENV->get_klass(o->klass());
     );
   }
   return _klass;
 }
 
 // ------------------------------------------------------------------
-// ciObject::set_ident
-//
-// Set the unique identity number of a ciObject.
-void ciObject::set_ident(uint id) {
-  assert((_ident >> FLAG_BITS) == 0, "must only initialize once");
-  assert( id < ((uint)1 << (BitsPerInt-FLAG_BITS)), "id too big");
-  _ident = _ident + (id << FLAG_BITS);
-}
-
-// ------------------------------------------------------------------
-// ciObject::ident
-//
-// Report the unique identity number of a ciObject.
-uint ciObject::ident() {
-  uint id = _ident >> FLAG_BITS;
-  assert(id != 0, "must be initialized");
-  return id;
-}
-
-// ------------------------------------------------------------------
 // ciObject::equals
 //
 // Are two ciObjects equal?
@@ -187,7 +163,7 @@
 // ciObject::can_be_constant
 bool ciObject::can_be_constant() {
   if (ScavengeRootsInCode >= 1)  return true;  // now everybody can encode as a constant
-  return handle() == NULL || is_perm();
+  return handle() == NULL;
 }
 
 // ------------------------------------------------------------------
@@ -197,7 +173,7 @@
   if (is_null_object()) return true;
 
   ciEnv* env = CURRENT_ENV;
-  if (!JavaObjectsInPerm) {
+
     // We want Strings and Classes to be embeddable by default since
     // they used to be in the perm world.  Not all Strings used to be
     // embeddable but there's no easy way to distinguish the interned
@@ -205,7 +181,6 @@
     if (klass() == env->String_klass() || klass() == env->Class_klass()) {
       return true;
     }
-  }
   if (EnableInvokeDynamic &&
       (klass()->is_subclass_of(env->MethodHandle_klass()) ||
        klass()->is_subclass_of(env->CallSite_klass()))) {
@@ -214,9 +189,20 @@
     return true;
   }
 
-  return handle() == NULL || is_perm();
+  return handle() == NULL;
 }
 
+// ------------------------------------------------------------------
+// ciObject::should_be_constant()
+void ciObject::init_flags_from(oop x) {
+  int flags = 0;
+  if (x != NULL) {
+    assert(Universe::heap()->is_in_reserved(x), "must be");
+    if (x->is_scavengable())
+      flags |= SCAVENGABLE_FLAG;
+  }
+  _ident |= flags;
+}
 
 // ------------------------------------------------------------------
 // ciObject::print
@@ -228,8 +214,7 @@
 void ciObject::print(outputStream* st) {
   st->print("<%s", type_string());
   GUARDED_VM_ENTRY(print_impl(st);)
-  st->print(" ident=%d %s%s address=0x%x>", ident(),
-        is_perm() ? "PERM" : "",
+  st->print(" ident=%d %s address=0x%x>", ident(),
         is_scavengable() ? "SCAVENGABLE" : "",
         (address)this);
 }
--- a/src/share/vm/ci/ciObject.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObject.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_CI_CIOBJECT_HPP
 #define SHARE_VM_CI_CIOBJECT_HPP
 
+#include "ci/ciBaseObject.hpp"
 #include "ci/ciClassList.hpp"
 #include "memory/allocation.hpp"
 #include "runtime/handles.hpp"
@@ -45,10 +46,10 @@
 //
 // Within the VM, the oop and klass hierarchies are separate.
 // The compiler interface does not preserve this separation --
-// the distinction between `klassOop' and `Klass' are not
+// the distinction between `Klass*' and `Klass' are not
 // reflected in the interface and instead the Klass hierarchy
 // is directly modeled as the subclasses of ciKlass.
-class ciObject : public ResourceObj {
+class ciObject : public ciBaseObject {
   CI_PACKAGE_ACCESS
   friend class ciEnv;
 
@@ -57,13 +58,7 @@
   // handle may, in a small set of cases, correctly be NULL.
   jobject  _handle;
   ciKlass* _klass;
-  uint     _ident;
 
-  enum { FLAG_BITS   = 2 };
-  enum {
-         PERM_FLAG        = 1,
-         SCAVENGABLE_FLAG = 2
-       };
 protected:
   ciObject();
   ciObject(oop o);
@@ -77,30 +72,17 @@
     return JNIHandles::resolve_non_null(_handle);
   }
 
-  void init_flags_from(oop x) {
-    int flags = 0;
-    if (x != NULL) {
-      if (x->is_perm())
-        flags |= PERM_FLAG;
-      if (x->is_scavengable())
-        flags |= SCAVENGABLE_FLAG;
-    }
-    _ident |= flags;
-  }
+  void init_flags_from(oop x);
 
   // Virtual behavior of the print() method.
   virtual void print_impl(outputStream* st) {}
 
   virtual const char* type_string() { return "ciObject"; }
 
-  void set_ident(uint id);
 public:
   // The klass of this ciObject.
   ciKlass* klass();
 
-  // A number unique to this object.
-  uint ident();
-
   // Are two ciObjects equal?
   bool equals(ciObject* obj);
 
@@ -119,11 +101,6 @@
   // True if is_perm is true or ScavengeRootsInCode > 1.
   bool should_be_constant();
 
-  // Is this object guaranteed to be in the permanent part of the heap?
-  // If so, CollectedHeap::can_elide_permanent_oop_store_barriers is relevant.
-  // If the answer is false, no guarantees are made.
-  bool is_perm() { return (_ident & PERM_FLAG) != 0; }
-
   // Might this object possibly move during a scavenge operation?
   // If the answer is true and ScavengeRootsInCode==0, the oop cannot be embedded in code.
   bool is_scavengable() { return (_ident & SCAVENGABLE_FLAG) != 0; }
@@ -137,57 +114,29 @@
   // be registered with the oopRecorder.
   jobject constant_encoding();
 
+  virtual bool is_object() const            { return true; }
+
   // What kind of ciObject is this?
   virtual bool is_null_object()       const { return false; }
   virtual bool is_call_site()         const { return false; }
   virtual bool is_cpcache()           const { return false; }
   virtual bool is_instance()                { return false; }
   virtual bool is_member_name()       const { return false; }
-  virtual bool is_method()                  { return false; }
-  virtual bool is_method_data()             { return false; }
   virtual bool is_method_handle()     const { return false; }
   virtual bool is_array()                   { return false; }
   virtual bool is_obj_array()               { return false; }
   virtual bool is_type_array()              { return false; }
-  virtual bool is_symbol()                  { return false; }
-  virtual bool is_type()                    { return false; }
-  virtual bool is_return_address()          { return false; }
-  virtual bool is_klass()                   { return false; }
-  virtual bool is_instance_klass()          { return false; }
-  virtual bool is_method_klass()            { return false; }
-  virtual bool is_array_klass()             { return false; }
-  virtual bool is_obj_array_klass()         { return false; }
-  virtual bool is_type_array_klass()        { return false; }
-  virtual bool is_symbol_klass()            { return false; }
-  virtual bool is_klass_klass()             { return false; }
-  virtual bool is_instance_klass_klass()    { return false; }
-  virtual bool is_array_klass_klass()       { return false; }
-  virtual bool is_obj_array_klass_klass()   { return false; }
-  virtual bool is_type_array_klass_klass()  { return false; }
 
   // Is this a type or value which has no associated class?
   // It is true of primitive types and null objects.
   virtual bool is_classless() const         { return false; }
 
-  // Is this ciObject a Java Language Object?  That is,
-  // is the ciObject an instance or an array
-  virtual bool is_java_object()             { return false; }
-
-  // Does this ciObject represent a Java Language class?
-  // That is, is the ciObject an instanceKlass or arrayKlass?
-  virtual bool is_java_klass()              { return false; }
-
-  // Is this ciObject the ciInstanceKlass representing
-  // java.lang.Object()?
-  virtual bool is_java_lang_Object()        { return false; }
-
-  // Does this ciObject refer to a real oop in the VM?
-  //
-  // Note: some ciObjects refer to oops which have yet to be
-  // created.  We refer to these as "unloaded".  Specifically,
-  // there are unloaded ciMethods, ciObjArrayKlasses, and
-  // ciInstanceKlasses.  By convention the ciNullObject is
-  // considered loaded, and primitive types are considered loaded.
+  // Note: some ciObjects refer to oops which have yet to be created.
+  // We refer to these as "unloaded".  Specifically, there are
+  // unloaded instances of java.lang.Class,
+  // java.lang.invoke.MethodHandle, and java.lang.invoke.MethodType.
+  // By convention the ciNullObject is considered loaded, and
+  // primitive types are considered loaded.
   bool is_loaded() const {
     return handle() != NULL || is_classless();
   }
@@ -201,10 +150,6 @@
     assert(is_call_site(), "bad cast");
     return (ciCallSite*) this;
   }
-  ciCPCache*               as_cpcache() {
-    assert(is_cpcache(), "bad cast");
-    return (ciCPCache*) this;
-  }
   ciInstance*              as_instance() {
     assert(is_instance(), "bad cast");
     return (ciInstance*)this;
@@ -213,14 +158,6 @@
     assert(is_member_name(), "bad cast");
     return (ciMemberName*)this;
   }
-  ciMethod*                as_method() {
-    assert(is_method(), "bad cast");
-    return (ciMethod*)this;
-  }
-  ciMethodData*            as_method_data() {
-    assert(is_method_data(), "bad cast");
-    return (ciMethodData*)this;
-  }
   ciMethodHandle*          as_method_handle() {
     assert(is_method_handle(), "bad cast");
     return (ciMethodHandle*) this;
@@ -237,62 +174,6 @@
     assert(is_type_array(), "bad cast");
     return (ciTypeArray*)this;
   }
-  ciSymbol*                as_symbol() {
-    assert(is_symbol(), "bad cast");
-    return (ciSymbol*)this;
-  }
-  ciType*                  as_type() {
-    assert(is_type(), "bad cast");
-    return (ciType*)this;
-  }
-  ciReturnAddress*         as_return_address() {
-    assert(is_return_address(), "bad cast");
-    return (ciReturnAddress*)this;
-  }
-  ciKlass*                 as_klass() {
-    assert(is_klass(), "bad cast");
-    return (ciKlass*)this;
-  }
-  ciInstanceKlass*         as_instance_klass() {
-    assert(is_instance_klass(), "bad cast");
-    return (ciInstanceKlass*)this;
-  }
-  ciMethodKlass*           as_method_klass() {
-    assert(is_method_klass(), "bad cast");
-    return (ciMethodKlass*)this;
-  }
-  ciArrayKlass*            as_array_klass() {
-    assert(is_array_klass(), "bad cast");
-    return (ciArrayKlass*)this;
-  }
-  ciObjArrayKlass*         as_obj_array_klass() {
-    assert(is_obj_array_klass(), "bad cast");
-    return (ciObjArrayKlass*)this;
-  }
-  ciTypeArrayKlass*        as_type_array_klass() {
-    assert(is_type_array_klass(), "bad cast");
-    return (ciTypeArrayKlass*)this;
-  }
-  ciKlassKlass*            as_klass_klass() {
-    assert(is_klass_klass(), "bad cast");
-    return (ciKlassKlass*)this;
-  }
-  ciInstanceKlassKlass*    as_instance_klass_klass() {
-    assert(is_instance_klass_klass(), "bad cast");
-    return (ciInstanceKlassKlass*)this;
-  }
-  ciArrayKlassKlass*       as_array_klass_klass() {
-    assert(is_array_klass_klass(), "bad cast");
-    return (ciArrayKlassKlass*)this;
-  }
-  ciObjArrayKlassKlass*    as_obj_array_klass_klass() {
-    assert(is_obj_array_klass_klass(), "bad cast");
-    return (ciObjArrayKlassKlass*)this;
-  }
-  ciTypeArrayKlassKlass*   as_type_array_klass_klass() {
-    assert(is_type_array_klass_klass(), "bad cast");
-    return (ciTypeArrayKlassKlass*)this;
-  }
 
   // Print debugging output about this ciObject.
   void print(outputStream* st);
--- a/src/share/vm/ci/ciObjectFactory.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObjectFactory.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -23,25 +23,21 @@
  */
 
 #include "precompiled.hpp"
-#include "ci/ciCPCache.hpp"
 #include "ci/ciCallSite.hpp"
 #include "ci/ciInstance.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciInstanceKlassKlass.hpp"
 #include "ci/ciMemberName.hpp"
 #include "ci/ciMethod.hpp"
 #include "ci/ciMethodData.hpp"
 #include "ci/ciMethodHandle.hpp"
-#include "ci/ciMethodKlass.hpp"
 #include "ci/ciNullObject.hpp"
 #include "ci/ciObjArray.hpp"
 #include "ci/ciObjArrayKlass.hpp"
-#include "ci/ciObjArrayKlassKlass.hpp"
+#include "ci/ciObject.hpp"
 #include "ci/ciObjectFactory.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciTypeArray.hpp"
 #include "ci/ciTypeArrayKlass.hpp"
-#include "ci/ciTypeArrayKlassKlass.hpp"
 #include "ci/ciUtilities.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
@@ -67,7 +63,7 @@
 // problematic the underlying data structure can be switched to some
 // sort of balanced binary tree.
 
-GrowableArray<ciObject*>* ciObjectFactory::_shared_ci_objects = NULL;
+GrowableArray<ciMetadata*>* ciObjectFactory::_shared_ci_metadata = NULL;
 ciSymbol*                 ciObjectFactory::_shared_ci_symbols[vmSymbols::SID_LIMIT];
 int                       ciObjectFactory::_shared_ident_limit = 0;
 volatile bool             ciObjectFactory::_initialized = false;
@@ -85,12 +81,12 @@
 
   _next_ident = _shared_ident_limit;
   _arena = arena;
-  _ci_objects = new (arena) GrowableArray<ciObject*>(arena, expected_size, 0, NULL);
+  _ci_metadata = new (arena) GrowableArray<ciMetadata*>(arena, expected_size, 0, NULL);
 
   // If the shared ci objects exist append them to this factory's objects
 
-  if (_shared_ci_objects != NULL) {
-    _ci_objects->appendAll(_shared_ci_objects);
+  if (_shared_ci_metadata != NULL) {
+    _ci_metadata->appendAll(_shared_ci_metadata);
   }
 
   _unloaded_methods = new (arena) GrowableArray<ciMethod*>(arena, 4, 0, NULL);
@@ -126,7 +122,7 @@
   _next_ident = 1;  // start numbering CI objects at 1
 
   {
-    // Create the shared symbols, but not in _shared_ci_objects.
+    // Create the shared symbols, but not in _shared_ci_metadata.
     int i;
     for (i = vmSymbols::FIRST_SID; i < vmSymbols::SID_LIMIT; i++) {
       Symbol* vmsym = vmSymbols::symbol_at((vmSymbols::SID) i);
@@ -145,7 +141,7 @@
 #endif
   }
 
-  _ci_objects = new (_arena) GrowableArray<ciObject*>(_arena, 64, 0, NULL);
+  _ci_metadata = new (_arena) GrowableArray<ciMetadata*>(_arena, 64, 0, NULL);
 
   for (int i = T_BOOLEAN; i <= T_CONFLICT; i++) {
     BasicType t = (BasicType)i;
@@ -157,31 +153,19 @@
 
   ciEnv::_null_object_instance = new (_arena) ciNullObject();
   init_ident_of(ciEnv::_null_object_instance);
-  ciEnv::_method_klass_instance =
-    get(Universe::methodKlassObj())->as_method_klass();
-  ciEnv::_klass_klass_instance =
-    get(Universe::klassKlassObj())->as_klass_klass();
-  ciEnv::_instance_klass_klass_instance =
-    get(Universe::instanceKlassKlassObj())
-      ->as_instance_klass_klass();
-  ciEnv::_type_array_klass_klass_instance =
-    get(Universe::typeArrayKlassKlassObj())
-      ->as_type_array_klass_klass();
-  ciEnv::_obj_array_klass_klass_instance =
-    get(Universe::objArrayKlassKlassObj())
-      ->as_obj_array_klass_klass();
 
 #define WK_KLASS_DEFN(name, ignore_s, opt)                              \
   if (SystemDictionary::name() != NULL) \
-    ciEnv::_##name = get(SystemDictionary::name())->as_instance_klass();
+    ciEnv::_##name = get_metadata(SystemDictionary::name())->as_instance_klass();
 
   WK_KLASSES_DO(WK_KLASS_DEFN)
 #undef WK_KLASS_DEFN
 
-  for (int len = -1; len != _ci_objects->length(); ) {
-    len = _ci_objects->length();
+  for (int len = -1; len != _ci_metadata->length(); ) {
+    len = _ci_metadata->length();
     for (int i2 = 0; i2 < len; i2++) {
-      ciObject* obj = _ci_objects->at(i2);
+      ciMetadata* obj = _ci_metadata->at(i2);
+      assert (obj->is_metadata(), "what else would it be?");
       if (obj->is_loaded() && obj->is_instance_klass()) {
         obj->as_instance_klass()->compute_nonstatic_fields();
       }
@@ -189,21 +173,21 @@
   }
 
   ciEnv::_unloaded_cisymbol = ciObjectFactory::get_symbol(vmSymbols::dummy_symbol());
-  // Create dummy instanceKlass and objArrayKlass object and assign them idents
+  // Create dummy InstanceKlass and objArrayKlass object and assign them idents
   ciEnv::_unloaded_ciinstance_klass = new (_arena) ciInstanceKlass(ciEnv::_unloaded_cisymbol, NULL, NULL);
   init_ident_of(ciEnv::_unloaded_ciinstance_klass);
   ciEnv::_unloaded_ciobjarrayklass = new (_arena) ciObjArrayKlass(ciEnv::_unloaded_cisymbol, ciEnv::_unloaded_ciinstance_klass, 1);
   init_ident_of(ciEnv::_unloaded_ciobjarrayklass);
   assert(ciEnv::_unloaded_ciobjarrayklass->is_obj_array_klass(), "just checking");
 
-  get(Universe::boolArrayKlassObj());
-  get(Universe::charArrayKlassObj());
-  get(Universe::singleArrayKlassObj());
-  get(Universe::doubleArrayKlassObj());
-  get(Universe::byteArrayKlassObj());
-  get(Universe::shortArrayKlassObj());
-  get(Universe::intArrayKlassObj());
-  get(Universe::longArrayKlassObj());
+  get_metadata(Universe::boolArrayKlassObj());
+  get_metadata(Universe::charArrayKlassObj());
+  get_metadata(Universe::singleArrayKlassObj());
+  get_metadata(Universe::doubleArrayKlassObj());
+  get_metadata(Universe::byteArrayKlassObj());
+  get_metadata(Universe::shortArrayKlassObj());
+  get_metadata(Universe::intArrayKlassObj());
+  get_metadata(Universe::longArrayKlassObj());
 
 
 
@@ -215,7 +199,7 @@
   // while the higher numbers are recycled afresh by each new ciEnv.
 
   _shared_ident_limit = _next_ident;
-  _shared_ci_objects = _ci_objects;
+  _shared_ci_metadata = _ci_metadata;
 }
 
 
@@ -251,29 +235,8 @@
 ciObject* ciObjectFactory::get(oop key) {
   ASSERT_IN_VM;
 
-#ifdef ASSERT
-  if (CIObjectFactoryVerify) {
-    oop last = NULL;
-    for (int j = 0; j< _ci_objects->length(); j++) {
-      oop o = _ci_objects->at(j)->get_oop();
-      assert(last < o, "out of order");
-      last = o;
-    }
-  }
-#endif // ASSERT
-  int len = _ci_objects->length();
-  int index = find(key, _ci_objects);
-#ifdef ASSERT
-  if (CIObjectFactoryVerify) {
-    for (int i=0; i<_ci_objects->length(); i++) {
-      if (_ci_objects->at(i)->get_oop() == key) {
-        assert(index == i, " bad lookup");
-      }
-    }
-  }
-#endif
-  if (!is_found_at(index, key, _ci_objects)) {
-    // Check in the non-perm area before putting it in the list.
+  assert(key == NULL || Universe::heap()->is_in_reserved(key), "must be");
+
     NonPermObject* &bucket = find_non_perm(key);
     if (bucket != NULL) {
       return bucket->object();
@@ -285,21 +248,62 @@
     ciObject* new_object = create_new_object(keyHandle());
     assert(keyHandle() == new_object->get_oop(), "must be properly recorded");
     init_ident_of(new_object);
-    if (!new_object->is_perm()) {
+  assert(Universe::heap()->is_in_reserved(new_object->get_oop()), "must be");
+
       // Not a perm-space object.
       insert_non_perm(bucket, keyHandle(), new_object);
       return new_object;
     }
-    if (len != _ci_objects->length()) {
+
+// ------------------------------------------------------------------
+// ciObjectFactory::get
+//
+// Get the ciObject corresponding to some oop.  If the ciObject has
+// already been created, it is returned.  Otherwise, a new ciObject
+// is created.
+ciMetadata* ciObjectFactory::get_metadata(Metadata* key) {
+  ASSERT_IN_VM;
+
+  assert(key == NULL || key->is_metadata(), "must be");
+
+#ifdef ASSERT
+  if (CIObjectFactoryVerify) {
+    Metadata* last = NULL;
+    for (int j = 0; j< _ci_metadata->length(); j++) {
+      Metadata* o = _ci_metadata->at(j)->constant_encoding();
+      assert(last < o, "out of order");
+      last = o;
+    }
+  }
+#endif // ASSERT
+  int len = _ci_metadata->length();
+  int index = find(key, _ci_metadata);
+#ifdef ASSERT
+  if (CIObjectFactoryVerify) {
+    for (int i=0; i<_ci_metadata->length(); i++) {
+      if (_ci_metadata->at(i)->constant_encoding() == key) {
+        assert(index == i, " bad lookup");
+      }
+    }
+  }
+#endif
+  if (!is_found_at(index, key, _ci_metadata)) {
+    // The ciObject does not yet exist.  Create it and insert it
+    // into the cache.
+    ciMetadata* new_object = create_new_object(key);
+    init_ident_of(new_object);
+    assert(new_object->is_metadata(), "must be");
+
+    if (len != _ci_metadata->length()) {
       // creating the new object has recursively entered new objects
       // into the table.  We need to recompute our index.
-      index = find(keyHandle(), _ci_objects);
+      index = find(key, _ci_metadata);
     }
-    assert(!is_found_at(index, keyHandle(), _ci_objects), "no double insert");
-    insert(index, new_object, _ci_objects);
+    assert(!is_found_at(index, key, _ci_metadata), "no double insert");
+    insert(index, new_object, _ci_metadata);
     return new_object;
   }
-  return _ci_objects->at(index);
+  return _ci_metadata->at(index)->as_metadata();
 }
 
 // ------------------------------------------------------------------
@@ -312,36 +316,7 @@
 ciObject* ciObjectFactory::create_new_object(oop o) {
   EXCEPTION_CONTEXT;
 
-  if (o->is_klass()) {
-    KlassHandle h_k(THREAD, (klassOop)o);
-    Klass* k = ((klassOop)o)->klass_part();
-    if (k->oop_is_instance()) {
-      return new (arena()) ciInstanceKlass(h_k);
-    } else if (k->oop_is_objArray()) {
-      return new (arena()) ciObjArrayKlass(h_k);
-    } else if (k->oop_is_typeArray()) {
-      return new (arena()) ciTypeArrayKlass(h_k);
-    } else if (k->oop_is_method()) {
-      return new (arena()) ciMethodKlass(h_k);
-    } else if (k->oop_is_klass()) {
-      if (k->oop_is_objArrayKlass()) {
-        return new (arena()) ciObjArrayKlassKlass(h_k);
-      } else if (k->oop_is_typeArrayKlass()) {
-        return new (arena()) ciTypeArrayKlassKlass(h_k);
-      } else if (k->oop_is_instanceKlass()) {
-        return new (arena()) ciInstanceKlassKlass(h_k);
-      } else {
-        assert(o == Universe::klassKlassObj(), "bad klassKlass");
-        return new (arena()) ciKlassKlass(h_k);
-      }
-    }
-  } else if (o->is_method()) {
-    methodHandle h_m(THREAD, (methodOop)o);
-    return new (arena()) ciMethod(h_m);
-  } else if (o->is_methodData()) {
-    methodDataHandle h_md(THREAD, (methodDataOop)o);
-    return new (arena()) ciMethodData(h_md);
-  } else if (o->is_instance()) {
+  if (o->is_instance()) {
     instanceHandle h_i(THREAD, (instanceOop)o);
     if (java_lang_invoke_CallSite::is_instance(o))
       return new (arena()) ciCallSite(h_i);
@@ -357,9 +332,40 @@
   } else if (o->is_typeArray()) {
     typeArrayHandle h_ta(THREAD, (typeArrayOop)o);
     return new (arena()) ciTypeArray(h_ta);
-  } else if (o->is_constantPoolCache()) {
-    constantPoolCacheHandle h_cpc(THREAD, (constantPoolCacheOop) o);
-    return new (arena()) ciCPCache(h_cpc);
+  }
+
+  // The oop is of some type not supported by the compiler interface.
+  ShouldNotReachHere();
+  return NULL;
+}
+
+// ------------------------------------------------------------------
+// ciObjectFactory::create_new_object
+//
+// Create a new ciObject from a Metadata*.
+//
+// Implementation note: this functionality could be virtual behavior
+// of the oop itself.  For now, we explicitly marshal the object.
+ciMetadata* ciObjectFactory::create_new_object(Metadata* o) {
+  EXCEPTION_CONTEXT;
+
+  if (o->is_klass()) {
+    KlassHandle h_k(THREAD, (Klass*)o);
+    Klass* k = (Klass*)o;
+    if (k->oop_is_instance()) {
+      return new (arena()) ciInstanceKlass(h_k);
+    } else if (k->oop_is_objArray()) {
+      return new (arena()) ciObjArrayKlass(h_k);
+    } else if (k->oop_is_typeArray()) {
+      return new (arena()) ciTypeArrayKlass(h_k);
+    }
+  } else if (o->is_method()) {
+    methodHandle h_m(THREAD, (Method*)o);
+    return new (arena()) ciMethod(h_m);
+  } else if (o->is_methodData()) {
+    // Hold methodHandle alive - might not be necessary ???
+    methodHandle h_m(THREAD, ((MethodData*)o)->method());
+    return new (arena()) ciMethodData((MethodData*)o);
   }
 
   // The oop is of some type not supported by the compiler interface.
@@ -446,7 +452,7 @@
   ciKlass* new_klass = NULL;
 
   // Two cases: this is an unloaded objArrayKlass or an
-  // unloaded instanceKlass.  Deal with both.
+  // unloaded InstanceKlass.  Deal with both.
   if (name->byte_at(0) == '[') {
     // Decompose the name.'
     FieldArrayInfo fd;
@@ -590,22 +596,17 @@
 
 // ------------------------------------------------------------------
 // ciObjectFactory::init_ident_of
-void ciObjectFactory::init_ident_of(ciObject* obj) {
+void ciObjectFactory::init_ident_of(ciBaseObject* obj) {
   obj->set_ident(_next_ident++);
 }
 
-void ciObjectFactory::init_ident_of(ciSymbol* obj) {
-  obj->set_ident(_next_ident++);
-}
-
-
 // ------------------------------------------------------------------
 // ciObjectFactory::find
 //
 // Use binary search to find the position of this oop in the cache.
 // If there is no entry in the cache corresponding to this oop, return
 // the position at which the oop should be inserted.
-int ciObjectFactory::find(oop key, GrowableArray<ciObject*>* objects) {
+int ciObjectFactory::find(Metadata* key, GrowableArray<ciMetadata*>* objects) {
   int min = 0;
   int max = objects->length()-1;
 
@@ -613,7 +614,7 @@
 
   while (max >= min) {
     int mid = (max + min) / 2;
-    oop value = objects->at(mid)->get_oop();
+    Metadata* value = objects->at(mid)->constant_encoding();
     if (value < key) {
       min = mid + 1;
     } else if (value > key) {
@@ -629,9 +630,9 @@
 // ciObjectFactory::is_found_at
 //
 // Verify that the binary seach found the given key.
-bool ciObjectFactory::is_found_at(int index, oop key, GrowableArray<ciObject*>* objects) {
+bool ciObjectFactory::is_found_at(int index, Metadata* key, GrowableArray<ciMetadata*>* objects) {
   return (index < objects->length() &&
-          objects->at(index)->get_oop() == key);
+          objects->at(index)->constant_encoding() == key);
 }
 
 
@@ -639,7 +640,7 @@
 // ciObjectFactory::insert
 //
 // Insert a ciObject into the table at some index.
-void ciObjectFactory::insert(int index, ciObject* obj, GrowableArray<ciObject*>* objects) {
+void ciObjectFactory::insert(int index, ciMetadata* obj, GrowableArray<ciMetadata*>* objects) {
   int len = objects->length();
   if (len == index) {
     objects->append(obj);
@@ -651,16 +652,6 @@
     }
     objects->at_put(index, obj);
   }
-#ifdef ASSERT
-  if (CIObjectFactoryVerify) {
-    oop last = NULL;
-    for (int j = 0; j< objects->length(); j++) {
-      oop o = objects->at(j)->get_oop();
-      assert(last < o, "out of order");
-      last = o;
-    }
-  }
-#endif // ASSERT
 }
 
 static ciObjectFactory::NonPermObject* emptyBucket = NULL;
@@ -672,25 +663,8 @@
 // If there is no entry in the cache corresponding to this oop, return
 // the null tail of the bucket into which the oop should be inserted.
 ciObjectFactory::NonPermObject* &ciObjectFactory::find_non_perm(oop key) {
-  // Be careful:  is_perm might change from false to true.
-  // Thus, there might be a matching perm object in the table.
-  // If there is, this probe must find it.
-  if (key->is_perm() && _non_perm_count == 0) {
-    return emptyBucket;
-  } else if (key->is_instance()) {
-    if (key->klass() == SystemDictionary::Class_klass() && JavaObjectsInPerm) {
-      // class mirror instances are always perm
-      return emptyBucket;
-    }
-    // fall through to probe
-  } else if (key->is_array()) {
-    // fall through to probe
-  } else {
-    // not an array or instance
-    return emptyBucket;
-  }
-
-  ciObject* klass = get(key->klass());
+  assert(Universe::heap()->is_in_reserved_or_null(key), "must be");
+  ciMetadata* klass = get_metadata(key->klass());
   NonPermObject* *bp = &_non_perm_bucket[(unsigned) klass->hash() % NON_PERM_BUCKETS];
   for (NonPermObject* p; (p = (*bp)) != NULL; bp = &p->next()) {
     if (is_equal(p, key))  break;
@@ -717,6 +691,7 @@
 //
 // Insert a ciObject into the non-perm table.
 void ciObjectFactory::insert_non_perm(ciObjectFactory::NonPermObject* &where, oop key, ciObject* obj) {
+  assert(Universe::heap()->is_in_reserved_or_null(key), "must be");
   assert(&where != &emptyBucket, "must not try to fill empty bucket");
   NonPermObject* p = new (arena()) NonPermObject(where, key, obj);
   assert(where == p && is_equal(p, key) && p->object() == obj, "entry must match");
@@ -733,12 +708,22 @@
 }
 
 // ------------------------------------------------------------------
+// ciObjectFactory::metadata_do
+void ciObjectFactory::metadata_do(void f(Metadata*)) {
+  if (_ci_metadata == NULL) return;
+  for (int j = 0; j< _ci_metadata->length(); j++) {
+    Metadata* o = _ci_metadata->at(j)->constant_encoding();
+    f(o);
+  }
+}
+
+// ------------------------------------------------------------------
 // ciObjectFactory::print_contents_impl
 void ciObjectFactory::print_contents_impl() {
-  int len = _ci_objects->length();
-  tty->print_cr("ciObjectFactory (%d) oop contents:", len);
+  int len = _ci_metadata->length();
+  tty->print_cr("ciObjectFactory (%d) meta data contents:", len);
   for (int i=0; i<len; i++) {
-    _ci_objects->at(i)->print();
+    _ci_metadata->at(i)->print();
     tty->cr();
   }
 }
@@ -756,8 +741,8 @@
 //
 // Print debugging information about the object factory
 void ciObjectFactory::print() {
-  tty->print("<ciObjectFactory oops=%d unloaded_methods=%d unloaded_instances=%d unloaded_klasses=%d>",
-             _ci_objects->length(), _unloaded_methods->length(),
+  tty->print("<ciObjectFactory oops=%d metadata=%d unloaded_methods=%d unloaded_instances=%d unloaded_klasses=%d>",
+             _non_perm_count, _ci_metadata->length(), _unloaded_methods->length(),
              _unloaded_instances->length(),
              _unloaded_klasses->length());
 }
--- a/src/share/vm/ci/ciObjectFactory.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciObjectFactory.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -41,12 +41,12 @@
 
 private:
   static volatile bool _initialized;
-  static GrowableArray<ciObject*>* _shared_ci_objects;
+  static GrowableArray<ciMetadata*>* _shared_ci_metadata;
   static ciSymbol*                 _shared_ci_symbols[];
   static int                       _shared_ident_limit;
 
   Arena*                    _arena;
-  GrowableArray<ciObject*>* _ci_objects;
+  GrowableArray<ciMetadata*>*        _ci_metadata;
   GrowableArray<ciMethod*>* _unloaded_methods;
   GrowableArray<ciKlass*>* _unloaded_klasses;
   GrowableArray<ciInstance*>* _unloaded_instances;
@@ -68,10 +68,13 @@
   NonPermObject* _non_perm_bucket[NON_PERM_BUCKETS];
   int _non_perm_count;
 
-  int find(oop key, GrowableArray<ciObject*>* objects);
-  bool is_found_at(int index, oop key, GrowableArray<ciObject*>* objects);
-  void insert(int index, ciObject* obj, GrowableArray<ciObject*>* objects);
+  int find(Metadata* key, GrowableArray<ciMetadata*>* objects);
+  bool is_found_at(int index, Metadata* key, GrowableArray<ciMetadata*>* objects);
+  void insert(int index, ciMetadata* obj, GrowableArray<ciMetadata*>* objects);
+
   ciObject* create_new_object(oop o);
+  ciMetadata* create_new_object(Metadata* o);
+
   static bool is_equal(NonPermObject* p, oop key) {
     return p->object()->get_oop() == key;
   }
@@ -79,8 +82,7 @@
   NonPermObject* &find_non_perm(oop key);
   void insert_non_perm(NonPermObject* &where, oop key, ciObject* obj);
 
-  void init_ident_of(ciObject* obj);
-  void init_ident_of(ciSymbol* obj);
+  void init_ident_of(ciBaseObject* obj);
 
   Arena* arena() { return _arena; }
 
@@ -99,7 +101,7 @@
 
   // Get the ciObject corresponding to some oop.
   ciObject* get(oop key);
-
+  ciMetadata* get_metadata(Metadata* key);
   ciSymbol* get_symbol(Symbol* key);
 
   // Get the ciSymbol corresponding to one of the vmSymbols.
@@ -135,6 +137,9 @@
 
   ciReturnAddress* get_return_address(int bci);
 
+  // RedefineClasses support
+  void metadata_do(void f(Metadata*));
+
   void print_contents();
   void print();
 };
--- a/src/share/vm/ci/ciStreams.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciStreams.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -23,7 +23,6 @@
  */
 
 #include "precompiled.hpp"
-#include "ci/ciCPCache.hpp"
 #include "ci/ciCallSite.hpp"
 #include "ci/ciConstant.hpp"
 #include "ci/ciField.hpp"
@@ -186,7 +185,7 @@
 // or checkcast, get the referenced klass.
 ciKlass* ciBytecodeStream::get_klass(bool& will_link) {
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
+  constantPoolHandle cpool(_method->get_Method()->constants());
   return CURRENT_ENV->get_klass_by_index(cpool, get_klass_index(), will_link, _holder);
 }
 
@@ -211,12 +210,14 @@
 
 // ------------------------------------------------------------------
 // ciBytecodeStream::get_constant_pool_index
-// Decode any CP cache index into a regular pool index.
+// Decode any reference index into a regular pool index.
 int ciBytecodeStream::get_constant_pool_index() const {
   // work-alike for Bytecode_loadconstant::pool_index()
   int index = get_constant_raw_index();
   if (has_cache_index()) {
-    return get_cpcache()->get_pool_index(index);
+    VM_ENTRY_MARK;
+    constantPoolHandle cpool(_method->get_Method()->constants());
+    return cpool->object_to_cp_index(index);
   }
   return index;
 }
@@ -242,7 +243,7 @@
     pool_index = -1;
   }
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
+  constantPoolHandle cpool(_method->get_Method()->constants());
   return CURRENT_ENV->get_constant_by_index(cpool, pool_index, cache_index, _holder);
 }
 
@@ -253,7 +254,7 @@
 // constant.
 constantTag ciBytecodeStream::get_constant_pool_tag(int index) const {
   VM_ENTRY_MARK;
-  return _method->get_methodOop()->constants()->tag_at(index);
+  return _method->get_Method()->constants()->tag_at(index);
 }
 
 // ------------------------------------------------------------------
@@ -295,7 +296,7 @@
 // for checking linkability when retrieving the associated field.
 ciInstanceKlass* ciBytecodeStream::get_declared_field_holder() {
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
+  constantPoolHandle cpool(_method->get_Method()->constants());
   int holder_index = get_field_holder_index();
   bool ignore;
   return CURRENT_ENV->get_klass_by_index(cpool, holder_index, ignore, _holder)
@@ -310,7 +311,7 @@
 // deoptimization information.
 int ciBytecodeStream::get_field_holder_index() {
   GUARDED_VM_ENTRY(
-    constantPoolOop cpool = _holder->get_instanceKlass()->constants();
+    ConstantPool* cpool = _holder->get_instanceKlass()->constants();
     return cpool->klass_ref_index_at(get_field_index());
   )
 }
@@ -323,7 +324,7 @@
 // deoptimization information.
 int ciBytecodeStream::get_field_signature_index() {
   VM_ENTRY_MARK;
-  constantPoolOop cpool = _holder->get_instanceKlass()->constants();
+  ConstantPool* cpool = _holder->get_instanceKlass()->constants();
   int nt_index = cpool->name_and_type_ref_index_at(get_field_index());
   return cpool->signature_ref_index_at(nt_index);
 }
@@ -360,14 +361,14 @@
 ciMethod* ciBytecodeStream::get_method(bool& will_link, ciSignature* *declared_signature_result) {
   VM_ENTRY_MARK;
   ciEnv* env = CURRENT_ENV;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
+  constantPoolHandle cpool(_method->get_Method()->constants());
   ciMethod* m = env->get_method_by_index(cpool, get_method_index(), cur_bc(), _holder);
   will_link = m->is_loaded();
   // Get declared method signature and return it.
   if (has_optional_appendix()) {
     const int sig_index = get_method_signature_index();
     Symbol* sig_sym = cpool->symbol_at(sig_index);
-    ciKlass* pool_holder = env->get_object(cpool->pool_holder())->as_klass();
+    ciKlass* pool_holder = env->get_klass(cpool->pool_holder());
     (*declared_signature_result) = new (env->arena()) ciSignature(pool_holder, cpool, env->get_symbol(sig_sym));
   } else {
     (*declared_signature_result) = m->signature();
@@ -382,8 +383,8 @@
 // constant pool cache at the current bci.
 bool ciBytecodeStream::has_appendix() {
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
-  return constantPoolOopDesc::has_appendix_at_if_loaded(cpool, get_method_index());
+  constantPoolHandle cpool(_method->get_Method()->constants());
+  return ConstantPool::has_appendix_at_if_loaded(cpool, get_method_index());
 }
 
 // ------------------------------------------------------------------
@@ -393,8 +394,8 @@
 // the current bci.
 ciObject* ciBytecodeStream::get_appendix() {
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
-  oop appendix_oop = constantPoolOopDesc::appendix_at_if_loaded(cpool, get_method_index());
+  constantPoolHandle cpool(_method->get_Method()->constants());
+  oop appendix_oop = ConstantPool::appendix_at_if_loaded(cpool, get_method_index());
   return CURRENT_ENV->get_object(appendix_oop);
 }
 
@@ -411,7 +412,7 @@
 // for checking linkability when retrieving the associated method.
 ciKlass* ciBytecodeStream::get_declared_method_holder() {
   VM_ENTRY_MARK;
-  constantPoolHandle cpool(_method->get_methodOop()->constants());
+  constantPoolHandle cpool(_method->get_Method()->constants());
   bool ignore;
   // report as MethodHandle for invokedynamic, which is syntactically classless
   if (cur_bc() == Bytecodes::_invokedynamic)
@@ -426,7 +427,7 @@
 // referenced by the current bytecode.  Used for generating
 // deoptimization information.
 int ciBytecodeStream::get_method_holder_index() {
-  constantPoolOop cpool = _method->get_methodOop()->constants();
+  ConstantPool* cpool = _method->get_Method()->constants();
   return cpool->klass_ref_index_at(get_method_index());
 }
 
@@ -438,7 +439,7 @@
 // deoptimization information.
 int ciBytecodeStream::get_method_signature_index() {
   GUARDED_VM_ENTRY(
-    constantPoolOop cpool = _holder->get_instanceKlass()->constants();
+    ConstantPool* cpool = _holder->get_instanceKlass()->constants();
     const int method_index = get_method_index();
     const int name_and_type_index = cpool->name_and_type_ref_index_at(method_index);
     return cpool->signature_ref_index_at(name_and_type_index);
@@ -446,32 +447,12 @@
 }
 
 // ------------------------------------------------------------------
-// ciBytecodeStream::get_cpcache
-ciCPCache* ciBytecodeStream::get_cpcache() const {
-  if (_cpcache == NULL) {
+// ciBytecodeStream::get_resolved_references
+ciObjArray* ciBytecodeStream::get_resolved_references() {
     VM_ENTRY_MARK;
     // Get the constant pool.
-    constantPoolOop      cpool   = _holder->get_instanceKlass()->constants();
-    constantPoolCacheOop cpcache = cpool->cache();
-
-    *(ciCPCache**)&_cpcache = CURRENT_ENV->get_object(cpcache)->as_cpcache();
-  }
-  return _cpcache;
-}
+  ConstantPool*        cpool   = _holder->get_instanceKlass()->constants();
 
-// ------------------------------------------------------------------
-// ciBytecodeStream::get_call_site
-ciCallSite* ciBytecodeStream::get_call_site() {
-  VM_ENTRY_MARK;
-  // Get the constant pool.
-  constantPoolOop      cpool   = _holder->get_instanceKlass()->constants();
-  constantPoolCacheOop cpcache = cpool->cache();
-
-  // Get the CallSite from the constant pool cache.
-  int method_index = get_method_index();
-  ConstantPoolCacheEntry* cpcache_entry = cpcache->secondary_entry_at(method_index);
-  oop call_site_oop = cpcache_entry->f1_as_instance();
-
-  // Create a CallSite object and return it.
-  return CURRENT_ENV->get_object(call_site_oop)->as_call_site();
-}
+  // Create a resolved references array and return it.
+  return CURRENT_ENV->get_object(cpool->resolved_references())->as_obj_array();
+  }
--- a/src/share/vm/ci/ciStreams.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciStreams.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -55,7 +55,6 @@
 
   ciMethod* _method;           // the method
   ciInstanceKlass* _holder;
-  ciCPCache* _cpcache;
   address _bc_start;            // Start of current bytecode for table
   address _was_wide;            // Address past last wide bytecode
   jint* _table_base;            // Aligned start of last table or switch
@@ -69,7 +68,6 @@
   void reset( address base, unsigned int size ) {
     _bc_start =_was_wide = 0;
     _start = _pc = base; _end = base + size;
-    _cpcache = NULL;
   }
 
   void assert_wide(bool require_wide) const {
@@ -266,8 +264,8 @@
   int       get_method_holder_index();
   int       get_method_signature_index();
 
-  ciCPCache*  get_cpcache() const;
-  ciCallSite* get_call_site();
+  // Get the resolved references arrays from the constant pool
+  ciObjArray* get_resolved_references();
 };
 
 
--- a/src/share/vm/ci/ciSymbol.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciSymbol.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_CI_CISYMBOL_HPP
 #define SHARE_VM_CI_CISYMBOL_HPP
 
+#include "ci/ciBaseObject.hpp"
 #include "ci/ciObject.hpp"
 #include "ci/ciObjectFactory.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -34,9 +35,8 @@
 //
 // This class represents a Symbol* in the HotSpot virtual
 // machine.
-class ciSymbol : public ResourceObj {
+class ciSymbol : public ciBaseObject {
   Symbol* _symbol;
-  uint _ident;
 
   CI_PACKAGE_ACCESS
   // These friends all make direct use of get_symbol:
@@ -65,11 +65,7 @@
   // Make a ciSymbol from a C string (implementation).
   static ciSymbol* make_impl(const char* s);
 
-  void set_ident(uint id) { _ident = id; }
 public:
-  // A number unique to this object.
-  uint ident() { return _ident; }
-
   // The enumeration ID from vmSymbols, or vmSymbols::NO_SID if none.
   vmSymbols::SID sid() const { return _sid; }
 
@@ -105,6 +101,8 @@
     _symbol->print();
   }
 
+  virtual bool is_symbol() const       { return true; }
+
   // Are two ciSymbols equal?
   bool equals(ciSymbol* obj) { return this->_symbol == obj->get_symbol(); }
 
--- a/src/share/vm/ci/ciType.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciType.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "ci/ciEnv.hpp"
 #include "ci/ciType.hpp"
 #include "ci/ciUtilities.hpp"
 #include "classfile/systemDictionary.hpp"
@@ -38,20 +39,15 @@
 // ------------------------------------------------------------------
 // ciType::ciType
 //
-ciType::ciType(BasicType basic_type) : ciObject() {
+ciType::ciType(BasicType basic_type) : ciMetadata() {
   assert(basic_type >= T_BOOLEAN && basic_type <= T_CONFLICT, "range check");
-  assert(basic_type != T_OBJECT && basic_type != T_ARRAY, "not a reference type");
   _basic_type = basic_type;
 }
 
-ciType::ciType(KlassHandle k) : ciObject(k) {
+ciType::ciType(KlassHandle k) : ciMetadata(k()) {
   _basic_type = Klass::cast(k())->oop_is_array() ? T_ARRAY : T_OBJECT;
 }
 
-ciType::ciType(ciKlass* klass) : ciObject(klass) {
-  _basic_type = klass->is_array_klass_klass() ? T_ARRAY : T_OBJECT;
-}
-
 
 // ------------------------------------------------------------------
 // ciType::is_subtype_of
@@ -87,7 +83,7 @@
 //
 ciInstance* ciType::java_mirror() {
   VM_ENTRY_MARK;
-  return CURRENT_THREAD_ENV->get_object(Universe::java_mirror(basic_type()))->as_instance();
+  return CURRENT_THREAD_ENV->get_instance(Universe::java_mirror(basic_type()));
 }
 
 // ------------------------------------------------------------------
@@ -100,7 +96,7 @@
   if (basic_type() == T_VOID)  return NULL;
 
   VM_ENTRY_MARK;
-  return CURRENT_THREAD_ENV->get_object(SystemDictionary::box_klass(basic_type()))->as_instance_klass();
+  return CURRENT_THREAD_ENV->get_instance_klass(SystemDictionary::box_klass(basic_type()));
 }
 
 
--- a/src/share/vm/ci/ciType.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciType.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -25,14 +25,13 @@
 #ifndef SHARE_VM_CI_CITYPE_HPP
 #define SHARE_VM_CI_CITYPE_HPP
 
-#include "ci/ciObject.hpp"
-#include "oops/klassOop.hpp"
+#include "ci/ciMetadata.hpp"
 
 // ciType
 //
 // This class represents either a class (T_OBJECT), array (T_ARRAY),
 // or one of the primitive types such as T_INT.
-class ciType : public ciObject {
+class ciType : public ciMetadata {
   CI_PACKAGE_ACCESS
   friend class ciKlass;
   friend class ciReturnAddress;
@@ -40,9 +39,8 @@
 private:
   BasicType _basic_type;
 
-  ciType(BasicType t);     // for the primitive types only
+  ciType(BasicType t);     // for primitive and unloaded types
   ciType(KlassHandle k);   // for subclasses (reference types)
-  ciType(ciKlass* klass);  // for unloaded types
 
   const char* type_string() { return "ciType"; }
 
@@ -76,7 +74,7 @@
   bool is_two_word() const                  { return size() == 2; }
 
   // What kind of ciObject is this?
-  bool is_type()                            { return true; }
+  bool is_type() const                      { return true; }
   bool is_classless() const                 { return is_primitive_type(); }
 
   virtual void print_name_on(outputStream* st);
@@ -106,7 +104,7 @@
   void print_impl(outputStream* st);
 
 public:
-  bool is_return_address()  { return true; }
+  bool is_return_address() const { return true; }
 
   int  bci() { return _bci; }
 
--- a/src/share/vm/ci/ciTypeArrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciTypeArrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -28,7 +28,7 @@
 
 // ciTypeArrayKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
+// This class represents a Klass* in the HotSpot virtual machine
 // whose Klass part in a TypeArrayKlass.
 
 // ------------------------------------------------------------------
@@ -43,8 +43,8 @@
 //
 // Implementation of make.
 ciTypeArrayKlass* ciTypeArrayKlass::make_impl(BasicType t) {
-  klassOop k = Universe::typeArrayKlassObj(t);
-  return CURRENT_ENV->get_object(k)->as_type_array_klass();
+  Klass* k = Universe::typeArrayKlassObj(t);
+  return CURRENT_ENV->get_type_array_klass(k);
 }
 
 // ------------------------------------------------------------------
--- a/src/share/vm/ci/ciTypeArrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciTypeArrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -29,7 +29,7 @@
 
 // ciTypeArrayKlass
 //
-// This class represents a klassOop in the HotSpot virtual machine
+// This class represents a Klass* in the HotSpot virtual machine
 // whose Klass part in a TypeArrayKlass.
 class ciTypeArrayKlass : public ciArrayKlass {
   CI_PACKAGE_ACCESS
@@ -53,7 +53,7 @@
   }
 
   // What kind of ciObject is this?
-  bool is_type_array_klass() { return true; }
+  bool is_type_array_klass() const { return true; }
 
   // Make an array klass corresponding to the specified primitive type.
   static ciTypeArrayKlass* make(BasicType type);
--- a/src/share/vm/ci/ciTypeArrayKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "ci/ciTypeArrayKlassKlass.hpp"
-#include "ci/ciUtilities.hpp"
-
-// ciTypeArrayKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a arrayKlassKlass.
-
-// ------------------------------------------------------------------
-// ciTypeArrayKlassKlass::instance
-//
-// Return the distinguished instance of this class
-ciTypeArrayKlassKlass* ciTypeArrayKlassKlass::make() {
-  return CURRENT_ENV->_type_array_klass_klass_instance;
-}
--- a/src/share/vm/ci/ciTypeArrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1999, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
-#define SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
-
-#include "ci/ciArrayKlassKlass.hpp"
-
-// ciTypeArrayKlassKlass
-//
-// This class represents a klassOop in the HotSpot virtual machine
-// whose Klass part is a typeArrayKlassKlass.
-class ciTypeArrayKlassKlass : public ciArrayKlassKlass {
-  CI_PACKAGE_ACCESS
-
-private:
-  ciTypeArrayKlassKlass(KlassHandle h_k)
-    : ciArrayKlassKlass(h_k, ciSymbol::make("unique_typeArrayKlassKlass")) {
-    assert(h_k()->klass_part()->oop_is_typeArrayKlass(), "wrong type");
-  }
-
-
-  typeArrayKlassKlass* get_typeArrayKlassKlass() {
-    return (typeArrayKlassKlass*)get_Klass();
-  }
-
-  const char* type_string() { return "ciTypeArrayKlassKlass"; }
-
-public:
-  // What kind of ciTypeect is this?
-  bool is_type_array_klass_klass() { return true; }
-
-  // Return the distinguished ciTypeArrayKlassKlass instance.
-  static ciTypeArrayKlassKlass* make();
-};
-
-#endif // SHARE_VM_CI_CITYPEARRAYKLASSKLASS_HPP
--- a/src/share/vm/ci/ciTypeFlow.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/ciTypeFlow.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -730,7 +730,7 @@
     if (obj->is_null_object()) {
       push_null();
     } else {
-      assert(!obj->is_klass(), "must be java_mirror of klass");
+      assert(obj->is_instance(), "must be java_mirror of klass");
       push_object(obj->klass());
     }
   } else {
--- a/src/share/vm/ci/compilerInterface.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/ci/compilerInterface.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -27,7 +27,6 @@
 
 #include "ci/ciArray.hpp"
 #include "ci/ciArrayKlass.hpp"
-#include "ci/ciArrayKlassKlass.hpp"
 #include "ci/ciCallProfile.hpp"
 #include "ci/ciConstant.hpp"
 #include "ci/ciEnv.hpp"
@@ -36,22 +35,17 @@
 #include "ci/ciFlags.hpp"
 #include "ci/ciInstance.hpp"
 #include "ci/ciInstanceKlass.hpp"
-#include "ci/ciInstanceKlassKlass.hpp"
 #include "ci/ciKlass.hpp"
-#include "ci/ciKlassKlass.hpp"
 #include "ci/ciMethod.hpp"
-#include "ci/ciMethodKlass.hpp"
 #include "ci/ciNullObject.hpp"
 #include "ci/ciObjArray.hpp"
 #include "ci/ciObjArrayKlass.hpp"
-#include "ci/ciObjArrayKlassKlass.hpp"
 #include "ci/ciObject.hpp"
 #include "ci/ciSignature.hpp"
 #include "ci/ciStreams.hpp"
 #include "ci/ciSymbol.hpp"
 #include "ci/ciTypeArray.hpp"
 #include "ci/ciTypeArrayKlass.hpp"
-#include "ci/ciTypeArrayKlassKlass.hpp"
 
 // This is a dummy file used for including the complete
 // compiler interface.
--- a/src/share/vm/classfile/altHashing.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/altHashing.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -33,7 +33,7 @@
 // return a random number, which is one of the possible hash code used for
 // objects.  We don't want to call the synchronizer hash code to install
 // this value because it may safepoint.
-intptr_t object_hash(klassOop k) {
+intptr_t object_hash(Klass* k) {
   intptr_t hc = k->java_mirror()->mark()->hash();
   return hc != markOopDesc::no_hash ? hc : os::random();
 }
--- a/src/share/vm/classfile/classFileParser.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/classFileParser.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,6 +25,8 @@
 #include "precompiled.hpp"
 #include "classfile/classFileParser.hpp"
 #include "classfile/classLoader.hpp"
+#include "classfile/classLoaderData.hpp"
+#include "classfile/classLoaderData.inline.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
@@ -33,17 +35,18 @@
 #include "classfile/vmSymbols.hpp"
 #include "memory/allocation.hpp"
 #include "memory/gcLocker.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/constantPoolOop.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/fieldStreams.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
 #include "oops/klass.inline.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/klassVtable.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/symbol.hpp"
+#include "prims/jvm.h"
 #include "prims/jvmtiExport.hpp"
 #include "prims/jvmtiThreadState.hpp"
 #include "runtime/javaCalls.hpp"
@@ -53,6 +56,7 @@
 #include "runtime/timer.hpp"
 #include "services/classLoadingService.hpp"
 #include "services/threadService.hpp"
+#include "utilities/array.hpp"
 
 // We generally try to create the oops directly when parsing, rather than
 // allocating temporary data structures and copying the bytes twice. A
@@ -81,7 +85,7 @@
 #define JAVA_7_VERSION                    51
 
 
-void ClassFileParser::parse_constant_pool_entries(Handle class_loader, constantPoolHandle cp, int length, TRAPS) {
+void ClassFileParser::parse_constant_pool_entries(ClassLoaderData* loader_data, constantPoolHandle cp, int length, TRAPS) {
   // Use a local copy of ClassFileStream. It helps the C++ compiler to optimize
   // this function (_current can be allocated in a register, with scalar
   // replacement of aggregates). The _current pointer is copied back to
@@ -94,6 +98,7 @@
   assert(cfs->allocated_on_stack(),"should be local");
   u1* old_current = cfs0->current();
 #endif
+  Handle class_loader(THREAD, loader_data->class_loader());
 
   // Used for batching symbol allocations.
   const char* names[SymbolTable::symbol_alloc_batch_size];
@@ -272,7 +277,7 @@
             indices[names_count] = index;
             hashValues[names_count++] = hash;
             if (names_count == SymbolTable::symbol_alloc_batch_size) {
-              SymbolTable::new_symbols(class_loader, cp, names_count, names, lengths, indices, hashValues, CHECK);
+              SymbolTable::new_symbols(loader_data, cp, names_count, names, lengths, indices, hashValues, CHECK);
               names_count = 0;
             }
           } else {
@@ -289,7 +294,7 @@
 
   // Allocate the remaining symbols
   if (names_count > 0) {
-    SymbolTable::new_symbols(class_loader, cp, names_count, names, lengths, indices, hashValues, CHECK);
+    SymbolTable::new_symbols(loader_data, cp, names_count, names, lengths, indices, hashValues, CHECK);
   }
 
   // Copy _current pointer of local copy back to stream().
@@ -325,7 +330,7 @@
     return NULL;
 }
 
-constantPoolHandle ClassFileParser::parse_constant_pool(Handle class_loader, TRAPS) {
+constantPoolHandle ClassFileParser::parse_constant_pool(ClassLoaderData* loader_data, TRAPS) {
   ClassFileStream* cfs = stream();
   constantPoolHandle nullHandle;
 
@@ -334,17 +339,16 @@
   guarantee_property(
     length >= 1, "Illegal constant pool size %u in class file %s",
     length, CHECK_(nullHandle));
-  constantPoolOop constant_pool =
-                      oopFactory::new_constantPool(length,
-                                                   oopDesc::IsSafeConc,
+  ConstantPool* constant_pool =
+                      ConstantPool::allocate(loader_data,
+                                                    length,
                                                    CHECK_(nullHandle));
   constantPoolHandle cp (THREAD, constant_pool);
 
-  cp->set_partially_loaded();    // Enables heap verify to work on partial constantPoolOops
   ConstantPoolCleaner cp_in_error(cp); // set constant pool to be cleaned up.
 
   // parsing constant pool entries
-  parse_constant_pool_entries(class_loader, cp, length, CHECK_(nullHandle));
+  parse_constant_pool_entries(loader_data, cp, length, CHECK_(nullHandle));
 
   int index = 1;  // declared outside of loops for portability
 
@@ -423,9 +427,6 @@
           cp->unresolved_klass_at_put(index, cp->symbol_at(class_index));
         }
         break;
-      case JVM_CONSTANT_UnresolvedString :
-        ShouldNotReachHere();     // Only JVM_CONSTANT_StringIndex should be present
-        break;
       case JVM_CONSTANT_StringIndex :
         {
           int string_index = cp->string_index_at(index);
@@ -531,12 +532,6 @@
         patch_constant_pool(cp, index, cp_patch_at(index), CHECK_(nullHandle));
       }
     }
-    // Ensure that all the patches have been used.
-    for (index = 0; index < _cp_patches->length(); index++) {
-      guarantee_property(!has_cp_patch_at(index),
-                         "Unused constant pool patch at %d in class file %s",
-                         index, CHECK_(nullHandle));
-    }
   }
 
   if (!_need_verify) {
@@ -671,6 +666,7 @@
 void ClassFileParser::patch_constant_pool(constantPoolHandle cp, int index, Handle patch, TRAPS) {
   assert(EnableInvokeDynamic, "");
   BasicType patch_type = T_VOID;
+
   switch (cp->tag_at(index).value()) {
 
   case JVM_CONSTANT_UnresolvedClass :
@@ -680,7 +676,7 @@
       guarantee_property(!java_lang_Class::is_primitive(patch()),
                          "Illegal class patch at %d in class file %s",
                          index, CHECK);
-      cp->klass_at_put(index, java_lang_Class::as_klassOop(patch()));
+      cp->klass_at_put(index, java_lang_Class::as_Klass(patch()));
     } else {
       guarantee_property(java_lang_String::is_instance(patch()),
                          "Illegal class patch at %d in class file %s",
@@ -690,15 +686,10 @@
     }
     break;
 
-  case JVM_CONSTANT_UnresolvedString :
-    // Patching a string means pre-resolving it.
-    // The spelling in the constant pool is ignored.
-    // The constant reference may be any object whatever.
-    // If it is not a real interned string, the constant is referred
-    // to as a "pseudo-string", and must be presented to the CP
-    // explicitly, because it may require scavenging.
-    cp->pseudo_string_at_put(index, patch());
-    break;
+  case JVM_CONSTANT_String :
+    // skip this patch and don't clear it.  Needs the oop array for resolved
+    // references to be created first.
+    return;
 
   case JVM_CONSTANT_Integer : patch_type = T_INT;    goto patch_prim;
   case JVM_CONSTANT_Float :   patch_type = T_FLOAT;  goto patch_prim;
@@ -789,27 +780,26 @@
 }
 
 
-objArrayHandle ClassFileParser::parse_interfaces(constantPoolHandle cp,
+Array<Klass*>* ClassFileParser::parse_interfaces(constantPoolHandle cp,
                                                  int length,
-                                                 Handle class_loader,
+                                                   ClassLoaderData* loader_data,
                                                  Handle protection_domain,
                                                  Symbol* class_name,
                                                  TRAPS) {
   ClassFileStream* cfs = stream();
   assert(length > 0, "only called for length>0");
-  objArrayHandle nullHandle;
-  objArrayOop interface_oop = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-  objArrayHandle interfaces (THREAD, interface_oop);
+  // FIXME: Leak at later OOM.
+  Array<Klass*>* interfaces = MetadataFactory::new_array<Klass*>(loader_data, length, NULL, CHECK_NULL);
 
   int index;
   for (index = 0; index < length; index++) {
-    u2 interface_index = cfs->get_u2(CHECK_(nullHandle));
+    u2 interface_index = cfs->get_u2(CHECK_NULL);
     KlassHandle interf;
     check_property(
       valid_cp_range(interface_index, cp->length()) &&
       is_klass_reference(cp, interface_index),
       "Interface name has bad constant pool index %u in class file %s",
-      interface_index, CHECK_(nullHandle));
+      interface_index, CHECK_NULL);
     if (cp->tag_at(interface_index).is_klass()) {
       interf = KlassHandle(THREAD, cp->resolved_klass_at(interface_index));
     } else {
@@ -818,12 +808,13 @@
       // Don't need to check legal name because it's checked when parsing constant pool.
       // But need to make sure it's not an array type.
       guarantee_property(unresolved_klass->byte_at(0) != JVM_SIGNATURE_ARRAY,
-                         "Bad interface name in class file %s", CHECK_(nullHandle));
+                         "Bad interface name in class file %s", CHECK_NULL);
+      Handle class_loader(THREAD, loader_data->class_loader());
 
       // Call resolve_super so classcircularity is checked
-      klassOop k = SystemDictionary::resolve_super_or_fail(class_name,
+      Klass* k = SystemDictionary::resolve_super_or_fail(class_name,
                     unresolved_klass, class_loader, protection_domain,
-                    false, CHECK_(nullHandle));
+                    false, CHECK_NULL);
       interf = KlassHandle(THREAD, k);
 
       if (LinkWellKnownClasses)  // my super type is well known to me
@@ -831,9 +822,9 @@
     }
 
     if (!Klass::cast(interf())->is_interface()) {
-      THROW_MSG_(vmSymbols::java_lang_IncompatibleClassChangeError(), "Implementing class", nullHandle);
+      THROW_MSG_(vmSymbols::java_lang_IncompatibleClassChangeError(), "Implementing class", NULL);
     }
-    interfaces->obj_at_put(index, interf());
+    interfaces->at_put(index, interf());
   }
 
   if (!_need_verify || length <= 1) {
@@ -849,8 +840,8 @@
   {
     debug_only(No_Safepoint_Verifier nsv;)
     for (index = 0; index < length; index++) {
-      klassOop k = (klassOop)interfaces->obj_at(index);
-      Symbol* name = instanceKlass::cast(k)->name();
+      Klass* k = interfaces->at(index);
+      Symbol* name = InstanceKlass::cast(k)->name();
       // If no duplicates, add (name, NULL) in hashtable interface_names.
       if (!put_after_lookup(name, NULL, interface_names)) {
         dup = true;
@@ -859,8 +850,7 @@
     }
   }
   if (dup) {
-    classfile_parse_error("Duplicate interface name in class file %s",
-                          CHECK_(nullHandle));
+    classfile_parse_error("Duplicate interface name in class file %s", CHECK_NULL);
   }
 
   return interfaces;
@@ -890,7 +880,7 @@
       break;
     case T_OBJECT:
       guarantee_property((cp->symbol_at(signature_index)->equals("Ljava/lang/String;")
-                         && (value_type.is_string() || value_type.is_unresolved_string())),
+                         && value_type.is_string()),
                          "Bad string initial value in class file %s", CHECK);
       break;
     default:
@@ -902,13 +892,14 @@
 
 
 // Parse attributes for a field.
-void ClassFileParser::parse_field_attributes(constantPoolHandle cp,
+void ClassFileParser::parse_field_attributes(ClassLoaderData* loader_data,
+                                             constantPoolHandle cp,
                                              u2 attributes_count,
                                              bool is_static, u2 signature_index,
                                              u2* constantvalue_index_addr,
                                              bool* is_synthetic_addr,
                                              u2* generic_signature_index_addr,
-                                             typeArrayHandle* field_annotations,
+                                             AnnotationArray** field_annotations,
                                              ClassFileParser::FieldAnnotationCollector* parsed_annotations,
                                              TRAPS) {
   ClassFileStream* cfs = stream();
@@ -985,7 +976,8 @@
   *constantvalue_index_addr = constantvalue_index;
   *is_synthetic_addr = is_synthetic;
   *generic_signature_index_addr = generic_signature_index;
-  *field_annotations = assemble_annotations(runtime_visible_annotations,
+  *field_annotations = assemble_annotations(loader_data,
+                                            runtime_visible_annotations,
                                             runtime_visible_annotations_length,
                                             runtime_invisible_annotations,
                                             runtime_invisible_annotations_length,
@@ -1029,7 +1021,8 @@
   BAD_ALLOCATION_TYPE, // T_VOID     = 14,
   BAD_ALLOCATION_TYPE, // T_ADDRESS  = 15,
   BAD_ALLOCATION_TYPE, // T_NARROWOOP= 16,
-  BAD_ALLOCATION_TYPE, // T_CONFLICT = 17,
+  BAD_ALLOCATION_TYPE, // T_METADATA = 17,
+  BAD_ALLOCATION_TYPE, // T_CONFLICT = 18,
   BAD_ALLOCATION_TYPE, // 0
   BAD_ALLOCATION_TYPE, // 1
   BAD_ALLOCATION_TYPE, // 2
@@ -1047,7 +1040,8 @@
   BAD_ALLOCATION_TYPE, // T_VOID     = 14,
   BAD_ALLOCATION_TYPE, // T_ADDRESS  = 15,
   BAD_ALLOCATION_TYPE, // T_NARROWOOP= 16,
-  BAD_ALLOCATION_TYPE, // T_CONFLICT = 17,
+  BAD_ALLOCATION_TYPE, // T_METADATA = 17,
+  BAD_ALLOCATION_TYPE, // T_CONFLICT = 18,
 };
 
 static FieldAllocationType basic_type_to_atype(bool is_static, BasicType type) {
@@ -1076,15 +1070,14 @@
   }
 };
 
-
-typeArrayHandle ClassFileParser::parse_fields(Symbol* class_name,
+Array<u2>* ClassFileParser::parse_fields(ClassLoaderData* loader_data,
+                                         Symbol* class_name,
                                               constantPoolHandle cp, bool is_interface,
                                               FieldAllocationCount *fac,
-                                              objArrayHandle* fields_annotations,
+                                         Array<AnnotationArray*>** fields_annotations,
                                               u2* java_fields_count_ptr, TRAPS) {
   ClassFileStream* cfs = stream();
-  typeArrayHandle nullHandle;
-  cfs->guarantee_more(2, CHECK_(nullHandle));  // length
+  cfs->guarantee_more(2, CHECK_NULL);  // length
   u2 length = cfs->get_u2_fast();
   *java_fields_count_ptr = length;
 
@@ -1116,16 +1109,16 @@
   u2* fa = NEW_RESOURCE_ARRAY_IN_THREAD(
              THREAD, u2, total_fields * (FieldInfo::field_slots + 1));
 
-  typeArrayHandle field_annotations;
+  AnnotationArray* field_annotations = NULL;
   // The generic signature slots start after all other fields' data.
   int generic_signature_slot = total_fields * FieldInfo::field_slots;
   int num_generic_signature = 0;
   for (int n = 0; n < length; n++) {
-    cfs->guarantee_more(8, CHECK_(nullHandle));  // access_flags, name_index, descriptor_index, attributes_count
+    cfs->guarantee_more(8, CHECK_NULL);  // access_flags, name_index, descriptor_index, attributes_count
 
     AccessFlags access_flags;
     jint flags = cfs->get_u2_fast() & JVM_RECOGNIZED_FIELD_MODIFIERS;
-    verify_legal_field_modifiers(flags, is_interface, CHECK_(nullHandle));
+    verify_legal_field_modifiers(flags, is_interface, CHECK_NULL);
     access_flags.set_flags(flags);
 
     u2 name_index = cfs->get_u2_fast();
@@ -1133,18 +1126,18 @@
     check_property(
       valid_cp_range(name_index, cp_size) && cp->tag_at(name_index).is_utf8(),
       "Invalid constant pool index %u for field name in class file %s",
-      name_index, CHECK_(nullHandle));
+      name_index, CHECK_NULL);
     Symbol*  name = cp->symbol_at(name_index);
-    verify_legal_field_name(name, CHECK_(nullHandle));
+    verify_legal_field_name(name, CHECK_NULL);
 
     u2 signature_index = cfs->get_u2_fast();
     check_property(
       valid_cp_range(signature_index, cp_size) &&
         cp->tag_at(signature_index).is_utf8(),
       "Invalid constant pool index %u for field signature in class file %s",
-      signature_index, CHECK_(nullHandle));
+      signature_index, CHECK_NULL);
     Symbol*  sig = cp->symbol_at(signature_index);
-    verify_legal_field_signature(name, sig, CHECK_(nullHandle));
+    verify_legal_field_signature(name, sig, CHECK_NULL);
 
     u2 constantvalue_index = 0;
     bool is_synthetic = false;
@@ -1154,17 +1147,19 @@
 
     u2 attributes_count = cfs->get_u2_fast();
     if (attributes_count > 0) {
-      parse_field_attributes(cp, attributes_count, is_static, signature_index,
+      parse_field_attributes(loader_data,
+                             cp, attributes_count, is_static, signature_index,
                              &constantvalue_index, &is_synthetic,
                              &generic_signature_index, &field_annotations,
                              &parsed_annotations,
-                             CHECK_(nullHandle));
-      if (field_annotations.not_null()) {
-        if (fields_annotations->is_null()) {
-          objArrayOop md = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-          *fields_annotations = objArrayHandle(THREAD, md);
+                             CHECK_NULL);
+      if (field_annotations != NULL) {
+        if (*fields_annotations == NULL) {
+          *fields_annotations = MetadataFactory::new_array<AnnotationArray*>(
+                                             loader_data, length, NULL,
+                                             CHECK_NULL);
         }
-        (*fields_annotations)->obj_at_put(n, field_annotations());
+        (*fields_annotations)->at_put(n, field_annotations);
       }
       if (is_synthetic) {
         access_flags.set_is_synthetic();
@@ -1244,20 +1239,19 @@
   // the fields array could be too long.  In that case the
   // fields array is trimed. Also unused slots that were reserved
   // for generic signature indexes are discarded.
-  typeArrayOop new_fields = oopFactory::new_permanent_shortArray(
-    index * FieldInfo::field_slots + num_generic_signature,
-    CHECK_(nullHandle));
-  typeArrayHandle fields(THREAD, new_fields);
+  Array<u2>* fields = MetadataFactory::new_array<u2>(
+          loader_data, index * FieldInfo::field_slots + num_generic_signature,
+          CHECK_NULL);
   {
     int i = 0;
     for (; i < index * FieldInfo::field_slots; i++) {
-      new_fields->short_at_put(i, fa[i]);
+      fields->at_put(i, fa[i]);
     }
     for (int j = total_fields * FieldInfo::field_slots;
          j < generic_signature_slot; j++) {
-      new_fields->short_at_put(i++, fa[j]);
+      fields->at_put(i++, fa[j]);
     }
-    assert(i == new_fields->length(), "");
+    assert(i == fields->length(), "");
   }
 
   if (_need_verify && length > 1) {
@@ -1281,7 +1275,7 @@
     }
     if (dup) {
       classfile_parse_error("Duplicate field name&signature in class file %s",
-                            CHECK_(nullHandle));
+                            CHECK_NULL);
     }
   }
 
@@ -1296,7 +1290,8 @@
 }
 
 
-u2* ClassFileParser::parse_exception_table(u4 code_length,
+u2* ClassFileParser::parse_exception_table(ClassLoaderData* loader_data,
+                                           u4 code_length,
                                            u4 exception_table_length,
                                            constantPoolHandle cp,
                                            TRAPS) {
@@ -1578,7 +1573,8 @@
   *u2_index = i2;
 }
 
-typeArrayOop ClassFileParser::parse_stackmap_table(
+Array<u1>* ClassFileParser::parse_stackmap_table(
+    ClassLoaderData* loader_data,
     u4 code_attribute_length, TRAPS) {
   if (code_attribute_length == 0)
     return NULL;
@@ -1594,11 +1590,10 @@
     return NULL;
   }
 
-  typeArrayOop stackmap_data =
-    oopFactory::new_permanent_byteArray(code_attribute_length, CHECK_NULL);
-
-  stackmap_data->set_length(code_attribute_length);
-  memcpy((void*)stackmap_data->byte_at_addr(0),
+  Array<u1>* stackmap_data =
+    MetadataFactory::new_array<u1>(loader_data, code_attribute_length, 0, CHECK_NULL);
+
+  memcpy((void*)stackmap_data->adr_at(0),
          (void*)stackmap_table_start, code_attribute_length);
   return stackmap_data;
 }
@@ -1813,18 +1808,20 @@
 
 // Note: the parse_method below is big and clunky because all parsing of the code and exceptions
 // attribute is inlined. This is cumbersome to avoid since we inline most of the parts in the
-// methodOop to save footprint, so we only know the size of the resulting methodOop when the
+// Method* to save footprint, so we only know the size of the resulting Method* when the
 // entire method attribute is parsed.
 //
 // The promoted_flags parameter is used to pass relevant access_flags
 // from the method back up to the containing klass. These flag values
 // are added to klass's access_flags.
 
-methodHandle ClassFileParser::parse_method(constantPoolHandle cp, bool is_interface,
+methodHandle ClassFileParser::parse_method(ClassLoaderData* loader_data,
+                                           constantPoolHandle cp,
+                                           bool is_interface,
                                            AccessFlags *promoted_flags,
-                                           typeArrayHandle* method_annotations,
-                                           typeArrayHandle* method_parameter_annotations,
-                                           typeArrayHandle* method_default_annotations,
+                                           AnnotationArray** method_annotations,
+                                           AnnotationArray** method_parameter_annotations,
+                                           AnnotationArray** method_default_annotations,
                                            TRAPS) {
   ClassFileStream* cfs = stream();
   methodHandle nullHandle;
@@ -1882,7 +1879,7 @@
   u1* code_start = 0;
   u2 exception_table_length = 0;
   u2* exception_table_start = NULL;
-  typeArrayHandle exception_handlers(THREAD, Universe::the_empty_int_array());
+  Array<int>* exception_handlers = Universe::the_empty_int_array();
   u2 checked_exceptions_length = 0;
   u2* checked_exceptions_start = NULL;
   CompressedLineNumberWriteStream* linenumber_table = NULL;
@@ -1901,7 +1898,7 @@
   bool parsed_checked_exceptions_attribute = false;
   bool parsed_stackmap_attribute = false;
   // stackmap attribute - JDK1.5
-  typeArrayHandle stackmap_data;
+  Array<u1>* stackmap_data = NULL;
   u2 generic_signature_index = 0;
   MethodAnnotationCollector parsed_annotations;
   u1* runtime_visible_annotations = NULL;
@@ -1970,7 +1967,7 @@
       exception_table_length = cfs->get_u2_fast();
       if (exception_table_length > 0) {
         exception_table_start =
-              parse_exception_table(code_length, exception_table_length, cp, CHECK_(nullHandle));
+              parse_exception_table(loader_data, code_length, exception_table_length, cp, CHECK_(nullHandle));
       }
 
       // Parse additional attributes in code attribute
@@ -2079,9 +2076,7 @@
           if (parsed_stackmap_attribute) {
             classfile_parse_error("Multiple StackMapTable attributes in class file %s", CHECK_(nullHandle));
           }
-          typeArrayOop sm =
-            parse_stackmap_table(code_attribute_length, CHECK_(nullHandle));
-          stackmap_data = typeArrayHandle(THREAD, sm);
+          stackmap_data = parse_stackmap_table(loader_data, code_attribute_length, CHECK_(nullHandle));
           parsed_stackmap_attribute = true;
         } else {
           // Skip unknown attributes
@@ -2173,17 +2168,17 @@
                       "Absent Code attribute in method that is not native or abstract in class file %s", CHECK_(nullHandle));
   }
 
-  // All sizing information for a methodOop is finally available, now create it
-  methodOop m_oop  = oopFactory::new_method(code_length, access_flags,
+  // All sizing information for a Method* is finally available, now create it
+  Method* m = Method::allocate(loader_data,
+                                        code_length,
+                                        access_flags,
                                             linenumber_table_length,
                                             total_lvt_length,
                                             exception_table_length,
                                             checked_exceptions_length,
-                                            oopDesc::IsSafeConc,
                                             CHECK_(nullHandle));
-  methodHandle m (THREAD, m_oop);
-
-  ClassLoadingService::add_class_method_size(m_oop->size()*HeapWordSize);
+
+  ClassLoadingService::add_class_method_size(m->size()*HeapWordSize);
 
   // Fill in information from fixed part (access_flags already set)
   m->set_constants(cp());
@@ -2212,14 +2207,7 @@
   m->set_max_stack(max_stack);
   m->set_max_locals(max_locals);
 
-  /**
-   * The stackmap_data field is the flag used to indicate
-   * that the methodOop and it's associated constMethodOop are partially
-   * initialized and thus are exempt from pre/post GC verification.  Once
-   * the field is set, the oops are considered fully initialized so make
-   * sure that the oops can pass verification when this field is set.
-   */
-  m->constMethod()->set_stackmap_data(stackmap_data());
+  m->constMethod()->set_stackmap_data(stackmap_data);
 
   // Copy byte codes
   m->set_code(code_start);
@@ -2321,17 +2309,20 @@
 
   if (parsed_annotations.has_any_annotations())
     parsed_annotations.apply_to(m);
-  *method_annotations = assemble_annotations(runtime_visible_annotations,
+  *method_annotations = assemble_annotations(loader_data,
+                                             runtime_visible_annotations,
                                              runtime_visible_annotations_length,
                                              runtime_invisible_annotations,
                                              runtime_invisible_annotations_length,
                                              CHECK_(nullHandle));
-  *method_parameter_annotations = assemble_annotations(runtime_visible_parameter_annotations,
+  *method_parameter_annotations = assemble_annotations(loader_data,
+                                                       runtime_visible_parameter_annotations,
                                                        runtime_visible_parameter_annotations_length,
                                                        runtime_invisible_parameter_annotations,
                                                        runtime_invisible_parameter_annotations_length,
                                                        CHECK_(nullHandle));
-  *method_default_annotations = assemble_annotations(annotation_default,
+  *method_default_annotations = assemble_annotations(loader_data,
+                                                     annotation_default,
                                                      annotation_default_length,
                                                      NULL,
                                                      0,
@@ -2359,61 +2350,56 @@
 // from the methods back up to the containing klass. These flag values
 // are added to klass's access_flags.
 
-objArrayHandle ClassFileParser::parse_methods(constantPoolHandle cp, bool is_interface,
+Array<Method*>* ClassFileParser::parse_methods(ClassLoaderData* loader_data,
+                                                 constantPoolHandle cp,
+                                                 bool is_interface,
                                               AccessFlags* promoted_flags,
                                               bool* has_final_method,
-                                              objArrayOop* methods_annotations_oop,
-                                              objArrayOop* methods_parameter_annotations_oop,
-                                              objArrayOop* methods_default_annotations_oop,
+                                                 Array<AnnotationArray*>** methods_annotations,
+                                                 Array<AnnotationArray*>** methods_parameter_annotations,
+                                                 Array<AnnotationArray*>** methods_default_annotations,
                                               TRAPS) {
   ClassFileStream* cfs = stream();
-  objArrayHandle nullHandle;
-  typeArrayHandle method_annotations;
-  typeArrayHandle method_parameter_annotations;
-  typeArrayHandle method_default_annotations;
-  cfs->guarantee_more(2, CHECK_(nullHandle));  // length
+  AnnotationArray* method_annotations = NULL;
+  AnnotationArray* method_parameter_annotations = NULL;
+  AnnotationArray* method_default_annotations = NULL;
+  cfs->guarantee_more(2, CHECK_NULL);  // length
   u2 length = cfs->get_u2_fast();
   if (length == 0) {
-    return objArrayHandle(THREAD, Universe::the_empty_system_obj_array());
+    return Universe::the_empty_method_array();
   } else {
-    objArrayOop m = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-    objArrayHandle methods(THREAD, m);
+    // FIXME: Handle leaks at later failures.
+    Array<Method*>* methods = MetadataFactory::new_array<Method*>(loader_data, length, NULL, CHECK_NULL);
+
     HandleMark hm(THREAD);
-    objArrayHandle methods_annotations;
-    objArrayHandle methods_parameter_annotations;
-    objArrayHandle methods_default_annotations;
     for (int index = 0; index < length; index++) {
-      methodHandle method = parse_method(cp, is_interface,
+      methodHandle method = parse_method(loader_data,
+                                         cp, is_interface,
                                          promoted_flags,
                                          &method_annotations,
                                          &method_parameter_annotations,
                                          &method_default_annotations,
-                                         CHECK_(nullHandle));
+                                         CHECK_NULL);
+
       if (method->is_final()) {
         *has_final_method = true;
       }
-      methods->obj_at_put(index, method());
-      if (method_annotations.not_null()) {
-        if (methods_annotations.is_null()) {
-          objArrayOop md = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-          methods_annotations = objArrayHandle(THREAD, md);
-        }
-        methods_annotations->obj_at_put(index, method_annotations());
+      methods->at_put(index, method());
+      if (*methods_annotations == NULL) {
+        *methods_annotations =
+             MetadataFactory::new_array<AnnotationArray*>(loader_data, length, NULL, CHECK_NULL);
       }
-      if (method_parameter_annotations.not_null()) {
-        if (methods_parameter_annotations.is_null()) {
-          objArrayOop md = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-          methods_parameter_annotations = objArrayHandle(THREAD, md);
-        }
-        methods_parameter_annotations->obj_at_put(index, method_parameter_annotations());
+      (*methods_annotations)->at_put(index, method_annotations);
+      if (*methods_parameter_annotations == NULL) {
+        *methods_parameter_annotations =
+            MetadataFactory::new_array<AnnotationArray*>(loader_data, length, NULL, CHECK_NULL);
       }
-      if (method_default_annotations.not_null()) {
-        if (methods_default_annotations.is_null()) {
-          objArrayOop md = oopFactory::new_system_objArray(length, CHECK_(nullHandle));
-          methods_default_annotations = objArrayHandle(THREAD, md);
-        }
-        methods_default_annotations->obj_at_put(index, method_default_annotations());
+      (*methods_parameter_annotations)->at_put(index, method_parameter_annotations);
+      if (*methods_default_annotations == NULL) {
+        *methods_default_annotations =
+            MetadataFactory::new_array<AnnotationArray*>(loader_data, length, NULL, CHECK_NULL);
       }
+      (*methods_default_annotations)->at_put(index, method_default_annotations);
     }
     if (_need_verify && length > 1) {
       // Check duplicated methods
@@ -2425,7 +2411,7 @@
       {
         debug_only(No_Safepoint_Verifier nsv;)
         for (int i = 0; i < length; i++) {
-          methodOop m = (methodOop)methods->obj_at(i);
+          Method* m = methods->at(i);
           // If no duplicates, add name/signature in hashtable names_and_sigs.
           if (!put_after_lookup(m->name(), m->signature(), names_and_sigs)) {
             dup = true;
@@ -2435,60 +2421,54 @@
       }
       if (dup) {
         classfile_parse_error("Duplicate method name&signature in class file %s",
-                              CHECK_(nullHandle));
+                              CHECK_NULL);
       }
     }
-
-    *methods_annotations_oop = methods_annotations();
-    *methods_parameter_annotations_oop = methods_parameter_annotations();
-    *methods_default_annotations_oop = methods_default_annotations();
-
     return methods;
   }
 }
 
 
-typeArrayHandle ClassFileParser::sort_methods(objArrayHandle methods,
-                                              objArrayHandle methods_annotations,
-                                              objArrayHandle methods_parameter_annotations,
-                                              objArrayHandle methods_default_annotations,
+Array<int>* ClassFileParser::sort_methods(ClassLoaderData* loader_data,
+                                          Array<Method*>* methods,
+                                          Array<AnnotationArray*>* methods_annotations,
+                                          Array<AnnotationArray*>* methods_parameter_annotations,
+                                          Array<AnnotationArray*>* methods_default_annotations,
                                               TRAPS) {
-  typeArrayHandle nullHandle;
-  int length = methods()->length();
+  int length = methods->length();
   // If JVMTI original method ordering or sharing is enabled we have to
   // remember the original class file ordering.
-  // We temporarily use the vtable_index field in the methodOop to store the
+  // We temporarily use the vtable_index field in the Method* to store the
   // class file index, so we can read in after calling qsort.
   // Put the method ordering in the shared archive.
   if (JvmtiExport::can_maintain_original_method_order() || DumpSharedSpaces) {
     for (int index = 0; index < length; index++) {
-      methodOop m = methodOop(methods->obj_at(index));
+      Method* m = methods->at(index);
       assert(!m->valid_vtable_index(), "vtable index should not be set");
       m->set_vtable_index(index);
     }
   }
   // Sort method array by ascending method name (for faster lookups & vtable construction)
   // Note that the ordering is not alphabetical, see Symbol::fast_compare
-  methodOopDesc::sort_methods(methods(),
-                              methods_annotations(),
-                              methods_parameter_annotations(),
-                              methods_default_annotations());
+  Method::sort_methods(methods,
+                              methods_annotations,
+                              methods_parameter_annotations,
+                              methods_default_annotations);
 
   // If JVMTI original method ordering or sharing is enabled construct int
   // array remembering the original ordering
   if (JvmtiExport::can_maintain_original_method_order() || DumpSharedSpaces) {
-    typeArrayOop new_ordering = oopFactory::new_permanent_intArray(length, CHECK_(nullHandle));
-    typeArrayHandle method_ordering(THREAD, new_ordering);
+    Array<int>* method_ordering = MetadataFactory::new_array<int>(loader_data, length, CHECK_NULL);
     for (int index = 0; index < length; index++) {
-      methodOop m = methodOop(methods->obj_at(index));
+      Method* m = methods->at(index);
       int old_index = m->vtable_index();
       assert(old_index >= 0 && old_index < length, "invalid method index");
-      method_ordering->int_at_put(index, old_index);
-      m->set_vtable_index(methodOopDesc::invalid_vtable_index);
+      method_ordering->at_put(index, old_index);
+      m->set_vtable_index(Method::invalid_vtable_index);
     }
     return method_ordering;
   } else {
-    return typeArrayHandle(THREAD, Universe::the_empty_int_array());
+    return Universe::the_empty_int_array();
   }
 }
 
@@ -2532,7 +2512,8 @@
 #define RECOGNIZED_INNER_CLASS_MODIFIERS (JVM_RECOGNIZED_CLASS_MODIFIERS | JVM_ACC_PRIVATE | JVM_ACC_PROTECTED | JVM_ACC_STATIC)
 
 // Return number of classes in the inner classes attribute table
-u2 ClassFileParser::parse_classfile_inner_classes_attribute(u1* inner_classes_attribute_start,
+u2 ClassFileParser::parse_classfile_inner_classes_attribute(ClassLoaderData* loader_data,
+                                                            u1* inner_classes_attribute_start,
                                                             bool parsed_enclosingmethod_attribute,
                                                             u2 enclosing_method_class_index,
                                                             u2 enclosing_method_method_index,
@@ -2557,8 +2538,8 @@
   //    enclosing_method_class_index,
   //    enclosing_method_method_index]
   int size = length * 4 + (parsed_enclosingmethod_attribute ? 2 : 0);
-  typeArrayOop ic = oopFactory::new_permanent_shortArray(size, CHECK_0);
-  typeArrayHandle inner_classes(THREAD, ic);
+  // FIXME: Will leak on exceptions.
+  Array<u2>* inner_classes = MetadataFactory::new_array<u2>(loader_data, size, CHECK_0);
   int index = 0;
   int cp_size = cp->length();
   cfs->guarantee_more(8 * length, CHECK_0);  // 4-tuples of u2
@@ -2600,20 +2581,20 @@
     verify_legal_class_modifiers(flags, CHECK_0);
     inner_access_flags.set_flags(flags);
 
-    inner_classes->short_at_put(index++, inner_class_info_index);
-    inner_classes->short_at_put(index++, outer_class_info_index);
-    inner_classes->short_at_put(index++, inner_name_index);
-    inner_classes->short_at_put(index++, inner_access_flags.as_short());
+    inner_classes->at_put(index++, inner_class_info_index);
+    inner_classes->at_put(index++, outer_class_info_index);
+    inner_classes->at_put(index++, inner_name_index);
+    inner_classes->at_put(index++, inner_access_flags.as_short());
   }
 
   // 4347400: make sure there's no duplicate entry in the classes array
   if (_need_verify && _major_version >= JAVA_1_5_VERSION) {
     for(int i = 0; i < length * 4; i += 4) {
       for(int j = i + 4; j < length * 4; j += 4) {
-        guarantee_property((inner_classes->ushort_at(i)   != inner_classes->ushort_at(j) ||
-                            inner_classes->ushort_at(i+1) != inner_classes->ushort_at(j+1) ||
-                            inner_classes->ushort_at(i+2) != inner_classes->ushort_at(j+2) ||
-                            inner_classes->ushort_at(i+3) != inner_classes->ushort_at(j+3)),
+        guarantee_property((inner_classes->at(i)   != inner_classes->at(j) ||
+                            inner_classes->at(i+1) != inner_classes->at(j+1) ||
+                            inner_classes->at(i+2) != inner_classes->at(j+2) ||
+                            inner_classes->at(i+3) != inner_classes->at(j+3)),
                             "Duplicate entry in InnerClasses in class file %s",
                             CHECK_0);
       }
@@ -2622,12 +2603,12 @@
 
   // Set EnclosingMethod class and method indexes.
   if (parsed_enclosingmethod_attribute) {
-    inner_classes->short_at_put(index++, enclosing_method_class_index);
-    inner_classes->short_at_put(index++, enclosing_method_method_index);
+    inner_classes->at_put(index++, enclosing_method_class_index);
+    inner_classes->at_put(index++, enclosing_method_method_index);
   }
   assert(index == size, "wrong size");
 
-  // Update instanceKlass with inner class info.
+  // Update InstanceKlass with inner class info.
   set_class_inner_classes(inner_classes);
 
   // Restore buffer's current position.
@@ -2651,7 +2632,8 @@
   set_class_generic_signature(cp->symbol_at(signature_index));
 }
 
-void ClassFileParser::parse_classfile_bootstrap_methods_attribute(constantPoolHandle cp,
+void ClassFileParser::parse_classfile_bootstrap_methods_attribute(ClassLoaderData* loader_data,
+                                                                  constantPoolHandle cp,
                                                                   u4 attribute_byte_length, TRAPS) {
   ClassFileStream* cfs = stream();
   u1* current_start = cfs->current();
@@ -2673,17 +2655,14 @@
   // The array begins with a series of short[2] pairs, one for each tuple.
   int index_size = (attribute_array_length * 2);
 
-  typeArrayOop operands_oop = oopFactory::new_permanent_intArray(index_size + operand_count, CHECK);
-  typeArrayHandle operands(THREAD, operands_oop);
-  operands_oop = NULL; // tidy
+  Array<u2>* operands = MetadataFactory::new_array<u2>(loader_data, index_size + operand_count, CHECK);
 
   int operand_fill_index = index_size;
   int cp_size = cp->length();
 
   for (int n = 0; n < attribute_array_length; n++) {
     // Store a 32-bit offset into the header of the operand array.
-    assert(constantPoolOopDesc::operand_offset_at(operands(), n) == 0, "");
-    constantPoolOopDesc::operand_offset_at_put(operands(), n, operand_fill_index);
+    ConstantPool::operand_offset_at_put(operands, n, operand_fill_index);
 
     // Read a bootstrap specifier.
     cfs->guarantee_more(sizeof(u2) * 2, CHECK);  // bsm, argc
@@ -2695,8 +2674,8 @@
       "bootstrap_method_index %u has bad constant type in class file %s",
       bootstrap_method_index,
       CHECK);
-    operands->short_at_put(operand_fill_index++, bootstrap_method_index);
-    operands->short_at_put(operand_fill_index++, argument_count);
+    operands->at_put(operand_fill_index++, bootstrap_method_index);
+    operands->at_put(operand_fill_index++, argument_count);
 
     cfs->guarantee_more(sizeof(u2) * argument_count, CHECK);  // argv[argc]
     for (int j = 0; j < argument_count; j++) {
@@ -2707,28 +2686,28 @@
         "argument_index %u has bad constant type in class file %s",
         argument_index,
         CHECK);
-      operands->short_at_put(operand_fill_index++, argument_index);
+      operands->at_put(operand_fill_index++, argument_index);
     }
   }
 
-  assert(operand_fill_index == operands()->length(), "exact fill");
-  assert(constantPoolOopDesc::operand_array_length(operands()) == attribute_array_length, "correct decode");
+  assert(operand_fill_index == operands->length(), "exact fill");
+  assert(ConstantPool::operand_array_length(operands) == attribute_array_length, "correct decode");
 
   u1* current_end = cfs->current();
   guarantee_property(current_end == current_start + attribute_byte_length,
                      "Bad length on BootstrapMethods in class file %s",
                      CHECK);
 
-  cp->set_operands(operands());
+  cp->set_operands(operands);
 }
 
-
-void ClassFileParser::parse_classfile_attributes(constantPoolHandle cp,
+void ClassFileParser::parse_classfile_attributes(ClassLoaderData* loader_data,
+                                                 constantPoolHandle cp,
                                                  ClassFileParser::ClassAnnotationCollector* parsed_annotations,
                                                  TRAPS) {
   ClassFileStream* cfs = stream();
   // Set inner classes attribute to default sentinel
-  set_class_inner_classes(typeArrayHandle(THREAD, Universe::the_empty_short_array()));
+  set_class_inner_classes(Universe::the_empty_short_array());
   cfs->guarantee_more(2, CHECK);  // attributes_count
   u2 attributes_count = cfs->get_u2_fast();
   bool parsed_sourcefile_attribute = false;
@@ -2844,7 +2823,7 @@
         if (parsed_bootstrap_methods_attribute)
           classfile_parse_error("Multiple BootstrapMethods attributes in class file %s", CHECK);
         parsed_bootstrap_methods_attribute = true;
-        parse_classfile_bootstrap_methods_attribute(cp, attribute_length, CHECK);
+        parse_classfile_bootstrap_methods_attribute(loader_data, cp, attribute_length, CHECK);
       } else {
         // Unknown attribute
         cfs->skip_u1(attribute_length, CHECK);
@@ -2854,7 +2833,8 @@
       cfs->skip_u1(attribute_length, CHECK);
     }
   }
-  typeArrayHandle annotations = assemble_annotations(runtime_visible_annotations,
+  AnnotationArray* annotations = assemble_annotations(loader_data,
+                                                      runtime_visible_annotations,
                                                      runtime_visible_annotations_length,
                                                      runtime_invisible_annotations,
                                                      runtime_invisible_annotations_length,
@@ -2863,6 +2843,7 @@
 
   if (parsed_innerclasses_attribute || parsed_enclosingmethod_attribute) {
     u2 num_of_classes = parse_classfile_inner_classes_attribute(
+                            loader_data,
                             inner_classes_attribute_start,
                             parsed_innerclasses_attribute,
                             enclosing_method_class_index,
@@ -2895,25 +2876,34 @@
   if (_sde_buffer != NULL) {
     k->set_source_debug_extension(_sde_buffer, _sde_length);
   }
-  k->set_inner_classes(_inner_classes());
-  k->set_class_annotations(_annotations());
+  k->set_inner_classes(_inner_classes);
+  if (_annotations != NULL) {
+    k->annotations()->set_class_annotations(_annotations);
+  }
 }
 
-typeArrayHandle ClassFileParser::assemble_annotations(u1* runtime_visible_annotations,
+AnnotationArray* ClassFileParser::assemble_annotations(ClassLoaderData* loader_data,
+                                                       u1* runtime_visible_annotations,
                                                       int runtime_visible_annotations_length,
                                                       u1* runtime_invisible_annotations,
                                                       int runtime_invisible_annotations_length, TRAPS) {
-  typeArrayHandle annotations;
+  AnnotationArray* annotations = NULL;
   if (runtime_visible_annotations != NULL ||
       runtime_invisible_annotations != NULL) {
-    typeArrayOop anno = oopFactory::new_permanent_byteArray(runtime_visible_annotations_length +
-                                                            runtime_invisible_annotations_length, CHECK_(annotations));
-    annotations = typeArrayHandle(THREAD, anno);
+    annotations = MetadataFactory::new_array<u1>(loader_data,
+                                          runtime_visible_annotations_length +
+                                          runtime_invisible_annotations_length,
+                                          CHECK_(annotations));
     if (runtime_visible_annotations != NULL) {
-      memcpy(annotations->byte_at_addr(0), runtime_visible_annotations, runtime_visible_annotations_length);
+      for (int i = 0; i < runtime_visible_annotations_length; i++) {
+        annotations->at_put(i, runtime_visible_annotations[i]);
+      }
     }
     if (runtime_invisible_annotations != NULL) {
-      memcpy(annotations->byte_at_addr(runtime_visible_annotations_length), runtime_invisible_annotations, runtime_invisible_annotations_length);
+      for (int i = 0; i < runtime_invisible_annotations_length; i++) {
+        int append = runtime_visible_annotations_length+i;
+        annotations->at_put(append, runtime_invisible_annotations[i]);
+      }
     }
   }
   return annotations;
@@ -2935,6 +2925,7 @@
   // original class bytes.
   unsigned char *cached_class_file_bytes = NULL;
   jint cached_class_file_length;
+  ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(class_loader());
 
   ClassFileStream* cfs = stream();
   // Timing
@@ -3043,7 +3034,7 @@
   _relax_verify = Verifier::relax_verify_for(class_loader());
 
   // Constant pool
-  constantPoolHandle cp = parse_constant_pool(class_loader, CHECK_(nullHandle));
+  constantPoolHandle cp = parse_constant_pool(loader_data, CHECK_(nullHandle));
   ConstantPoolCleaner error_handler(cp); // set constant pool to be cleaned up.
 
   int cp_size = cp->length();
@@ -3092,7 +3083,7 @@
                        CHECK_(nullHandle));
   }
 
-  klassOop preserve_this_klass;   // for storing result across HandleMark
+  Klass* preserve_this_klass;   // for storing result across HandleMark
 
   // release all handles when parsing is done
   { HandleMark hm(THREAD);
@@ -3146,18 +3137,18 @@
 
     // Interfaces
     u2 itfs_len = cfs->get_u2_fast();
-    objArrayHandle local_interfaces;
+    Array<Klass*>* local_interfaces;
     if (itfs_len == 0) {
-      local_interfaces = objArrayHandle(THREAD, Universe::the_empty_system_obj_array());
+      local_interfaces = Universe::the_empty_klass_array();
     } else {
-      local_interfaces = parse_interfaces(cp, itfs_len, class_loader, protection_domain, _class_name, CHECK_(nullHandle));
+      local_interfaces = parse_interfaces(cp, itfs_len, loader_data, protection_domain, _class_name, CHECK_(nullHandle));
     }
 
     u2 java_fields_count = 0;
     // Fields (offsets are filled in later)
     FieldAllocationCount fac;
-    objArrayHandle fields_annotations;
-    typeArrayHandle fields = parse_fields(class_name, cp, access_flags.is_interface(), &fac, &fields_annotations,
+    Array<AnnotationArray*>* fields_annotations = NULL;
+    Array<u2>* fields = parse_fields(loader_data, class_name, cp, access_flags.is_interface(), &fac, &fields_annotations,
                                           &java_fields_count,
                                           CHECK_(nullHandle));
     // Methods
@@ -3166,24 +3157,21 @@
     promoted_flags.set_flags(0);
     // These need to be oop pointers because they are allocated lazily
     // inside parse_methods inside a nested HandleMark
-    objArrayOop methods_annotations_oop = NULL;
-    objArrayOop methods_parameter_annotations_oop = NULL;
-    objArrayOop methods_default_annotations_oop = NULL;
-    objArrayHandle methods = parse_methods(cp, access_flags.is_interface(),
+    Array<AnnotationArray*>* methods_annotations = NULL;
+    Array<AnnotationArray*>* methods_parameter_annotations = NULL;
+    Array<AnnotationArray*>* methods_default_annotations = NULL;
+    Array<Method*>* methods = parse_methods(loader_data,
+                                              cp, access_flags.is_interface(),
                                            &promoted_flags,
                                            &has_final_method,
-                                           &methods_annotations_oop,
-                                           &methods_parameter_annotations_oop,
-                                           &methods_default_annotations_oop,
+                                              &methods_annotations,
+                                              &methods_parameter_annotations,
+                                              &methods_default_annotations,
                                            CHECK_(nullHandle));
 
-    objArrayHandle methods_annotations(THREAD, methods_annotations_oop);
-    objArrayHandle methods_parameter_annotations(THREAD, methods_parameter_annotations_oop);
-    objArrayHandle methods_default_annotations(THREAD, methods_default_annotations_oop);
-
     // Additional attributes
     ClassAnnotationCollector parsed_annotations;
-    parse_classfile_attributes(cp, &parsed_annotations, CHECK_(nullHandle));
+    parse_classfile_attributes(loader_data, cp, &parsed_annotations, CHECK_(nullHandle));
 
     // Make sure this is the end of class file stream
     guarantee_property(cfs->at_eos(), "Extra bytes at the end of class file %s", CHECK_(nullHandle));
@@ -3198,7 +3186,7 @@
                            "Interfaces must have java.lang.Object as superclass in class file %s",
                            CHECK_(nullHandle));
       }
-      klassOop k = SystemDictionary::resolve_super_or_fail(class_name,
+      Klass* k = SystemDictionary::resolve_super_or_fail(class_name,
                                                            sk,
                                                            class_loader,
                                                            protection_domain,
@@ -3229,10 +3217,11 @@
     }
 
     // Compute the transitive list of all unique interfaces implemented by this class
-    objArrayHandle transitive_interfaces = compute_transitive_interfaces(super_klass, local_interfaces, CHECK_(nullHandle));
+    Array<Klass*>* transitive_interfaces = compute_transitive_interfaces(loader_data, super_klass, local_interfaces, CHECK_(nullHandle));
 
     // sort methods
-    typeArrayHandle method_ordering = sort_methods(methods,
+    Array<int>* method_ordering = sort_methods(loader_data,
+                                               methods,
                                                    methods_annotations,
                                                    methods_parameter_annotations,
                                                    methods_default_annotations,
@@ -3249,11 +3238,11 @@
     klassVtable::compute_vtable_size_and_num_mirandas(vtable_size,
                                                       num_miranda_methods,
                                                       super_klass(),
-                                                      methods(),
+                                                      methods,
                                                       access_flags,
                                                       class_loader,
                                                       class_name,
-                                                      local_interfaces(),
+                                                      local_interfaces,
                                                       CHECK_(nullHandle));
 
     // Size of Java itable (in words)
@@ -3282,7 +3271,7 @@
     int next_nonstatic_field_offset;
 
     // Calculate the starting byte offsets
-    next_static_oop_offset      = instanceMirrorKlass::offset_of_static_fields();
+    next_static_oop_offset      = InstanceMirrorKlass::offset_of_static_fields();
     next_static_double_offset   = next_static_oop_offset +
                                   (fac.count[STATIC_OOP] * heapOopSize);
     if ( fac.count[STATIC_DOUBLE] &&
@@ -3597,13 +3586,26 @@
       rt = super_klass->reference_type();
     }
 
-    // We can now create the basic klassOop for this klass
-    klassOop ik = oopFactory::new_instanceKlass(name, vtable_size, itable_size,
+    // We can now create the basic Klass* for this klass
+    int total_oop_map_size2 =
+      InstanceKlass::nonstatic_oop_map_size(total_oop_map_count);
+
+    Klass* ik = InstanceKlass::allocate_instance_klass(loader_data,
+                                                         vtable_size,
+                                                         itable_size,
                                                 static_field_size,
-                                                total_oop_map_count,
+                                                         total_oop_map_size2,
+                                                         rt,
                                                 access_flags,
-                                                rt, host_klass,
+                                                         name,
+                                                         super_klass(),
+                                                         host_klass,
                                                 CHECK_(nullHandle));
+
+    // Add all classes to our internal class loader list here,
+    // including classes in the bootstrap (NULL) class loader.
+    loader_data->add_class(ik);
+
     instanceKlassHandle this_klass (THREAD, ik);
 
     assert(this_klass->static_field_size() == static_field_size, "sanity");
@@ -3618,51 +3620,61 @@
     assert(this_klass->size_helper() == instance_size, "correct size_helper");
     // Not yet: supers are done below to support the new subtype-checking fields
     //this_klass->set_super(super_klass());
-    this_klass->set_class_loader(class_loader());
+    this_klass->set_class_loader_data(loader_data);
     this_klass->set_nonstatic_field_size(nonstatic_field_size);
     this_klass->set_has_nonstatic_fields(has_nonstatic_fields);
     this_klass->set_static_oop_field_count(fac.count[STATIC_OOP]);
     cp->set_pool_holder(this_klass());
     error_handler.set_in_error(false);   // turn off error handler for cp
     this_klass->set_constants(cp());
-    this_klass->set_local_interfaces(local_interfaces());
-    this_klass->set_fields(fields(), java_fields_count);
-    this_klass->set_methods(methods());
+    this_klass->set_local_interfaces(local_interfaces);
+    this_klass->set_fields(fields, java_fields_count);
+    this_klass->set_methods(methods);
     if (has_final_method) {
       this_klass->set_has_final_method();
     }
-    this_klass->set_method_ordering(method_ordering());
-    // The instanceKlass::_methods_jmethod_ids cache and the
-    // instanceKlass::_methods_cached_itable_indices cache are
+    this_klass->set_method_ordering(method_ordering);
+    // The InstanceKlass::_methods_jmethod_ids cache and the
+    // InstanceKlass::_methods_cached_itable_indices cache are
     // both managed on the assumption that the initial cache
     // size is equal to the number of methods in the class. If
-    // that changes, then instanceKlass::idnum_can_increment()
+    // that changes, then InstanceKlass::idnum_can_increment()
     // has to be changed accordingly.
     this_klass->set_initial_method_idnum(methods->length());
     this_klass->set_name(cp->klass_name_at(this_class_index));
     if (LinkWellKnownClasses || is_anonymous())  // I am well known to myself
       cp->klass_at_put(this_class_index, this_klass()); // eagerly resolve
-    this_klass->set_protection_domain(protection_domain());
-    this_klass->set_fields_annotations(fields_annotations());
-    this_klass->set_methods_annotations(methods_annotations());
-    this_klass->set_methods_parameter_annotations(methods_parameter_annotations());
-    this_klass->set_methods_default_annotations(methods_default_annotations());
+
+    if (fields_annotations != NULL ||
+        methods_annotations != NULL ||
+        methods_parameter_annotations != NULL ||
+        methods_default_annotations != NULL) {
+      // Allocate an annotation type if needed.
+      Annotations* anno = Annotations::allocate(loader_data,
+                            fields_annotations, methods_annotations,
+                            methods_parameter_annotations,
+                            methods_default_annotations, CHECK_(nullHandle));
+      this_klass->set_annotations(anno);
+    } else {
+      this_klass->set_annotations(NULL);
+    }
+
 
     this_klass->set_minor_version(minor_version);
     this_klass->set_major_version(major_version);
 
-    // Set up methodOop::intrinsic_id as soon as we know the names of methods.
+    // Set up Method*::intrinsic_id as soon as we know the names of methods.
     // (We used to do this lazily, but now we query it in Rewriter,
     // which is eagerly done for every method, so we might as well do it now,
     // when everything is fresh in memory.)
-    if (methodOopDesc::klass_id_for_intrinsics(this_klass->as_klassOop()) != vmSymbols::NO_SID) {
+    if (Method::klass_id_for_intrinsics(this_klass()) != vmSymbols::NO_SID) {
       for (int j = 0; j < methods->length(); j++) {
-        ((methodOop)methods->obj_at(j))->init_intrinsic_id();
+        methods->at(j)->init_intrinsic_id();
       }
     }
 
     if (cached_class_file_bytes != NULL) {
-      // JVMTI: we have an instanceKlass now, tell it about the cached bytes
+      // JVMTI: we have an InstanceKlass now, tell it about the cached bytes
       this_klass->set_cached_class_file(cached_class_file_bytes,
                                         cached_class_file_length);
     }
@@ -3677,13 +3689,18 @@
     }
 
     // Fill in field values obtained by parse_classfile_attributes
-    if (parsed_annotations.has_any_annotations())
+    if (parsed_annotations.has_any_annotations()) {
       parsed_annotations.apply_to(this_klass);
+    }
+    // Create annotations
+    if (_annotations != NULL && this_klass->annotations() == NULL) {
+      Annotations* anno = Annotations::allocate(loader_data, CHECK_NULL);
+      this_klass->set_annotations(anno);
+    }
     apply_parsed_class_attributes(this_klass);
 
-    // VerifyOops believes that once this has been set, the object is completely loaded.
     // Compute transitive closure of interfaces this class implements
-    this_klass->set_transitive_interfaces(transitive_interfaces());
+    this_klass->set_transitive_interfaces(transitive_interfaces);
 
     // Fill in information needed to compute superclasses.
     this_klass->initialize_supers(super_klass(), CHECK_(nullHandle));
@@ -3718,7 +3735,18 @@
     // Allocate mirror and initialize static fields
     java_lang_Class::create_mirror(this_klass, CHECK_(nullHandle));
 
-    ClassLoadingService::notify_class_loaded(instanceKlass::cast(this_klass()),
+    // Allocate a simple java object for locking during class initialization.
+    // This needs to be a java object because it can be held across a java call.
+    typeArrayOop r = oopFactory::new_typeArray(T_INT, 0, CHECK_NULL);
+    this_klass->set_init_lock(r);
+
+    // TODO: Move these oops to the mirror
+    this_klass->set_protection_domain(protection_domain());
+
+    // Update the loader_data graph.
+    record_defined_class_dependencies(this_klass, CHECK_NULL);
+
+    ClassLoadingService::notify_class_loaded(InstanceKlass::cast(this_klass()),
                                              false /* not shared class */);
 
     if (TraceClassLoading) {
@@ -3728,17 +3756,17 @@
                    cfs->source());
       } else if (class_loader.is_null()) {
         if (THREAD->is_Java_thread()) {
-          klassOop caller = ((JavaThread*)THREAD)->security_get_caller_class(1);
+          Klass* caller = ((JavaThread*)THREAD)->security_get_caller_class(1);
           tty->print("[Loaded %s by instance of %s]\n",
                      this_klass->external_name(),
-                     instanceKlass::cast(caller)->external_name());
+                     InstanceKlass::cast(caller)->external_name());
         } else {
           tty->print("[Loaded %s]\n", this_klass->external_name());
         }
       } else {
         ResourceMark rm;
         tty->print("[Loaded %s from %s]\n", this_klass->external_name(),
-                   instanceKlass::cast(class_loader->klass())->external_name());
+                   InstanceKlass::cast(class_loader->klass())->external_name());
       }
     }
 
@@ -3746,15 +3774,15 @@
       // print out the superclass.
       const char * from = Klass::cast(this_klass())->external_name();
       if (this_klass->java_super() != NULL) {
-        tty->print("RESOLVE %s %s (super)\n", from, instanceKlass::cast(this_klass->java_super())->external_name());
+        tty->print("RESOLVE %s %s (super)\n", from, InstanceKlass::cast(this_klass->java_super())->external_name());
       }
       // print out each of the interface classes referred to by this class.
-      objArrayHandle local_interfaces(THREAD, this_klass->local_interfaces());
-      if (!local_interfaces.is_null()) {
+      Array<Klass*>* local_interfaces = this_klass->local_interfaces();
+      if (local_interfaces != NULL) {
         int length = local_interfaces->length();
         for (int i = 0; i < length; i++) {
-          klassOop k = klassOop(local_interfaces->obj_at(i));
-          instanceKlass* to_class = instanceKlass::cast(k);
+          Klass* k = local_interfaces->at(i);
+          InstanceKlass* to_class = InstanceKlass::cast(k);
           const char * to = to_class->external_name();
           tty->print("RESOLVE %s %s (interface)\n", from, to);
         }
@@ -3781,9 +3809,10 @@
     preserve_this_klass = this_klass();
   }
 
-  // Create new handle outside HandleMark
+  // Create new handle outside HandleMark (might be needed for
+  // Extended Class Redefinition)
   instanceKlassHandle this_klass (THREAD, preserve_this_klass);
-  debug_only(this_klass->as_klassOop()->verify();)
+  debug_only(this_klass->verify();)
 
   return this_klass;
 }
@@ -3826,7 +3855,7 @@
                                     int* nonstatic_oop_offsets,
                                     unsigned int* nonstatic_oop_counts) {
   OopMapBlock* this_oop_map = k->start_of_nonstatic_oop_maps();
-  const instanceKlass* const super = k->superklass();
+  const InstanceKlass* const super = k->superklass();
   const unsigned int super_count = super ? super->nonstatic_oop_map_count() : 0;
   if (super_count > 0) {
     // Copy maps from superklass
@@ -3861,20 +3890,20 @@
 
 
 void ClassFileParser::set_precomputed_flags(instanceKlassHandle k) {
-  klassOop super = k->super();
+  Klass* super = k->super();
 
   // Check if this klass has an empty finalize method (i.e. one with return bytecode only),
   // in which case we don't have to register objects as finalizable
   if (!_has_empty_finalizer) {
     if (_has_finalizer ||
-        (super != NULL && super->klass_part()->has_finalizer())) {
+        (super != NULL && super->has_finalizer())) {
       k->set_has_finalizer();
     }
   }
 
 #ifdef ASSERT
   bool f = false;
-  methodOop m = k->lookup_method(vmSymbols::finalize_method_name(),
+  Method* m = k->lookup_method(vmSymbols::finalize_method_name(),
                                  vmSymbols::void_method_signature());
   if (m != NULL && !m->is_empty_method()) {
     f = true;
@@ -3901,7 +3930,7 @@
 #ifdef ASSERT
     bool v = false;
     if (Klass::cast(super)->has_vanilla_constructor()) {
-      methodOop constructor = k->find_method(vmSymbols::object_initializer_name(
+      Method* constructor = k->find_method(vmSymbols::object_initializer_name(
 ), vmSymbols::void_method_signature());
       if (constructor != NULL && constructor->is_vanilla_constructor()) {
         v = true;
@@ -3912,12 +3941,12 @@
   }
 
   // If it cannot be fast-path allocated, set a bit in the layout helper.
-  // See documentation of instanceKlass::can_be_fastpath_allocated().
+  // See documentation of InstanceKlass::can_be_fastpath_allocated().
   assert(k->size_helper() > 0, "layout_helper is initialized");
   if ((!RegisterFinalizersAtInit && k->has_finalizer())
       || k->is_abstract() || k->is_interface()
       || (k->name() == vmSymbols::java_lang_Class()
-          && k->class_loader() == NULL)
+          && k->class_loader_data()->is_the_null_class_loader_data())
       || k->size_helper() >= FastAllocateSizeLimit) {
     // Forbid fast-path allocation.
     jint lh = Klass::instance_layout_helper(k->size_helper(), true);
@@ -3925,30 +3954,44 @@
   }
 }
 
-
-// utility method for appending and array with check for duplicates
-
-void append_interfaces(objArrayHandle result, int& index, objArrayOop ifs) {
-  // iterate over new interfaces
-  for (int i = 0; i < ifs->length(); i++) {
-    oop e = ifs->obj_at(i);
-    assert(e->is_klass() && instanceKlass::cast(klassOop(e))->is_interface(), "just checking");
-    // check for duplicates
-    bool duplicate = false;
-    for (int j = 0; j < index; j++) {
-      if (result->obj_at(j) == e) {
-        duplicate = true;
-        break;
+// Attach super classes and interface classes to class loader data
+void ClassFileParser::record_defined_class_dependencies(instanceKlassHandle defined_klass, TRAPS) {
+  ClassLoaderData * defining_loader_data = defined_klass->class_loader_data();
+  if (defining_loader_data->is_the_null_class_loader_data()) {
+      // Dependencies to null class loader data are implicit.
+      return;
+  } else {
+    // add super class dependency
+    Klass* super = defined_klass->super();
+    if (super != NULL) {
+      defining_loader_data->record_dependency(super, CHECK);
+    }
+
+    // add super interface dependencies
+    Array<Klass*>* local_interfaces = defined_klass->local_interfaces();
+    if (local_interfaces != NULL) {
+      int length = local_interfaces->length();
+      for (int i = 0; i < length; i++) {
+        defining_loader_data->record_dependency(local_interfaces->at(i), CHECK);
       }
     }
-    // add new interface
-    if (!duplicate) {
-      result->obj_at_put(index++, e);
-    }
   }
 }
 
-objArrayHandle ClassFileParser::compute_transitive_interfaces(instanceKlassHandle super, objArrayHandle local_ifs, TRAPS) {
+// utility method for appending and array with check for duplicates
+
+void append_interfaces(GrowableArray<Klass*>* result, Array<Klass*>* ifs) {
+  // iterate over new interfaces
+  for (int i = 0; i < ifs->length(); i++) {
+    Klass* e = ifs->at(i);
+    assert(e->is_klass() && InstanceKlass::cast(e)->is_interface(), "just checking");
+    // add new interface
+    result->append_if_missing(e);
+  }
+}
+
+
+Array<Klass*>* ClassFileParser::compute_transitive_interfaces(ClassLoaderData* loader_data, instanceKlassHandle super, Array<Klass*>* local_ifs, TRAPS) {
   // Compute maximum size for transitive interfaces
   int max_transitive_size = 0;
   int super_size = 0;
@@ -3960,66 +4003,63 @@
   // Add local interfaces' super interfaces
   int local_size = local_ifs->length();
   for (int i = 0; i < local_size; i++) {
-    klassOop l = klassOop(local_ifs->obj_at(i));
-    max_transitive_size += instanceKlass::cast(l)->transitive_interfaces()->length();
+    Klass* l = local_ifs->at(i);
+    max_transitive_size += InstanceKlass::cast(l)->transitive_interfaces()->length();
   }
   // Finally add local interfaces
   max_transitive_size += local_size;
   // Construct array
-  objArrayHandle result;
   if (max_transitive_size == 0) {
     // no interfaces, use canonicalized array
-    result = objArrayHandle(THREAD, Universe::the_empty_system_obj_array());
+    return Universe::the_empty_klass_array();
   } else if (max_transitive_size == super_size) {
     // no new local interfaces added, share superklass' transitive interface array
-    result = objArrayHandle(THREAD, super->transitive_interfaces());
+    return super->transitive_interfaces();
   } else if (max_transitive_size == local_size) {
     // only local interfaces added, share local interface array
-    result = local_ifs;
+    return local_ifs;
   } else {
-    objArrayHandle nullHandle;
-    objArrayOop new_objarray = oopFactory::new_system_objArray(max_transitive_size, CHECK_(nullHandle));
-    result = objArrayHandle(THREAD, new_objarray);
-    int index = 0;
+    ResourceMark rm;
+    GrowableArray<Klass*>* result = new GrowableArray<Klass*>(max_transitive_size);
+
     // Copy down from superclass
     if (super.not_null()) {
-      append_interfaces(result, index, super->transitive_interfaces());
+      append_interfaces(result, super->transitive_interfaces());
     }
+
     // Copy down from local interfaces' superinterfaces
     for (int i = 0; i < local_ifs->length(); i++) {
-      klassOop l = klassOop(local_ifs->obj_at(i));
-      append_interfaces(result, index, instanceKlass::cast(l)->transitive_interfaces());
+      Klass* l = local_ifs->at(i);
+      append_interfaces(result, InstanceKlass::cast(l)->transitive_interfaces());
     }
     // Finally add local interfaces
-    append_interfaces(result, index, local_ifs());
-
-    // Check if duplicates were removed
-    if (index != max_transitive_size) {
-      assert(index < max_transitive_size, "just checking");
-      objArrayOop new_result = oopFactory::new_system_objArray(index, CHECK_(nullHandle));
-      for (int i = 0; i < index; i++) {
-        oop e = result->obj_at(i);
+    append_interfaces(result, local_ifs);
+
+    // length will be less than the max_transitive_size if duplicates were removed
+    int length = result->length();
+    assert(length <= max_transitive_size, "just checking");
+    Array<Klass*>* new_result = MetadataFactory::new_array<Klass*>(loader_data, length, CHECK_NULL);
+    for (int i = 0; i < length; i++) {
+      Klass* e = result->at(i);
         assert(e != NULL, "just checking");
-        new_result->obj_at_put(i, e);
-      }
-      result = objArrayHandle(THREAD, new_result);
+      new_result->at_put(i, e);
     }
+    return new_result;
   }
-  return result;
 }
 
 
 void ClassFileParser::check_super_class_access(instanceKlassHandle this_klass, TRAPS) {
-  klassOop super = this_klass->super();
+  Klass* super = this_klass->super();
   if ((super != NULL) &&
-      (!Reflection::verify_class_access(this_klass->as_klassOop(), super, false))) {
+      (!Reflection::verify_class_access(this_klass(), super, false))) {
     ResourceMark rm(THREAD);
     Exceptions::fthrow(
       THREAD_AND_LOCATION,
       vmSymbols::java_lang_IllegalAccessError(),
       "class %s cannot access its superclass %s",
       this_klass->external_name(),
-      instanceKlass::cast(super)->external_name()
+      InstanceKlass::cast(super)->external_name()
     );
     return;
   }
@@ -4027,19 +4067,19 @@
 
 
 void ClassFileParser::check_super_interface_access(instanceKlassHandle this_klass, TRAPS) {
-  objArrayHandle local_interfaces (THREAD, this_klass->local_interfaces());
+  Array<Klass*>* local_interfaces = this_klass->local_interfaces();
   int lng = local_interfaces->length();
   for (int i = lng - 1; i >= 0; i--) {
-    klassOop k = klassOop(local_interfaces->obj_at(i));
+    Klass* k = local_interfaces->at(i);
     assert (k != NULL && Klass::cast(k)->is_interface(), "invalid interface");
-    if (!Reflection::verify_class_access(this_klass->as_klassOop(), k, false)) {
+    if (!Reflection::verify_class_access(this_klass(), k, false)) {
       ResourceMark rm(THREAD);
       Exceptions::fthrow(
         THREAD_AND_LOCATION,
         vmSymbols::java_lang_IllegalAccessError(),
         "class %s cannot access its superinterface %s",
         this_klass->external_name(),
-        instanceKlass::cast(k)->external_name()
+        InstanceKlass::cast(k)->external_name()
       );
       return;
     }
@@ -4048,12 +4088,12 @@
 
 
 void ClassFileParser::check_final_method_override(instanceKlassHandle this_klass, TRAPS) {
-  objArrayHandle methods (THREAD, this_klass->methods());
+  Array<Method*>* methods = this_klass->methods();
   int num_methods = methods->length();
 
   // go thru each method and check if it overrides a final method
   for (int index = 0; index < num_methods; index++) {
-    methodOop m = (methodOop)methods->obj_at(index);
+    Method* m = methods->at(index);
 
     // skip private, static and <init> methods
     if ((!m->is_private()) &&
@@ -4062,20 +4102,20 @@
 
       Symbol* name = m->name();
       Symbol* signature = m->signature();
-      klassOop k = this_klass->super();
-      methodOop super_m = NULL;
+      Klass* k = this_klass->super();
+      Method* super_m = NULL;
       while (k != NULL) {
         // skip supers that don't have final methods.
-        if (k->klass_part()->has_final_method()) {
+        if (k->has_final_method()) {
           // lookup a matching method in the super class hierarchy
-          super_m = instanceKlass::cast(k)->lookup_method(name, signature);
+          super_m = InstanceKlass::cast(k)->lookup_method(name, signature);
           if (super_m == NULL) {
             break; // didn't find any match; get out
           }
 
           if (super_m->is_final() &&
               // matching method in super is final
-              (Reflection::verify_field_access(this_klass->as_klassOop(),
+              (Reflection::verify_field_access(this_klass(),
                                                super_m->method_holder(),
                                                super_m->method_holder(),
                                                super_m->access_flags(), false))
@@ -4094,11 +4134,11 @@
           }
 
           // continue to look from super_m's holder's super.
-          k = instanceKlass::cast(super_m->method_holder())->super();
+          k = InstanceKlass::cast(super_m->method_holder())->super();
           continue;
         }
 
-        k = k->klass_part()->super();
+        k = k->super();
       }
     }
   }
@@ -4108,11 +4148,11 @@
 // assumes that this_klass is an interface
 void ClassFileParser::check_illegal_static_method(instanceKlassHandle this_klass, TRAPS) {
   assert(this_klass->is_interface(), "not an interface");
-  objArrayHandle methods (THREAD, this_klass->methods());
+  Array<Method*>* methods = this_klass->methods();
   int num_methods = methods->length();
 
   for (int index = 0; index < num_methods; index++) {
-    methodOop m = (methodOop)methods->obj_at(index);
+    Method* m = methods->at(index);
     // if m is static and not the init method, throw a verify error
     if ((m->is_static()) && (m->name() != vmSymbols::class_initializer_name())) {
       ResourceMark rm(THREAD);
--- a/src/share/vm/classfile/classFileParser.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/classFileParser.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -62,15 +62,15 @@
   Symbol*    _generic_signature;
   char*      _sde_buffer;
   int        _sde_length;
-  typeArrayHandle _inner_classes;
-  typeArrayHandle _annotations;
+  Array<u2>* _inner_classes;
+  AnnotationArray* _annotations;
 
   void set_class_synthetic_flag(bool x)           { _synthetic_flag = x; }
   void set_class_sourcefile(Symbol* x)            { _sourcefile = x; }
   void set_class_generic_signature(Symbol* x)     { _generic_signature = x; }
   void set_class_sde_buffer(char* x, int len)     { _sde_buffer = x; _sde_length = len; }
-  void set_class_inner_classes(typeArrayHandle x) { _inner_classes = x; }
-  void set_class_annotations(typeArrayHandle x)   { _annotations = x; }
+  void set_class_inner_classes(Array<u2>* x)      { _inner_classes = x; }
+  void set_class_annotations(AnnotationArray* x)  { _annotations = x; }
   void init_parsed_class_attributes() {
     _synthetic_flag = false;
     _sourcefile = NULL;
@@ -140,54 +140,63 @@
   void set_stream(ClassFileStream* st)             { _stream = st; }
 
   // Constant pool parsing
-  void parse_constant_pool_entries(Handle class_loader,
+  void parse_constant_pool_entries(ClassLoaderData* loader_data,
                                    constantPoolHandle cp, int length, TRAPS);
 
-  constantPoolHandle parse_constant_pool(Handle class_loader, TRAPS);
+  constantPoolHandle parse_constant_pool(ClassLoaderData* loader_data, TRAPS);
 
   // Interface parsing
-  objArrayHandle parse_interfaces(constantPoolHandle cp,
+  Array<Klass*>* parse_interfaces(constantPoolHandle cp,
                                   int length,
-                                  Handle class_loader,
+                                    ClassLoaderData* loader_data,
                                   Handle protection_domain,
                                   Symbol* class_name,
                                   TRAPS);
+  void record_defined_class_dependencies(instanceKlassHandle defined_klass, TRAPS);
 
   // Field parsing
-  void parse_field_attributes(constantPoolHandle cp, u2 attributes_count,
+  void parse_field_attributes(ClassLoaderData* loader_data,
+                              constantPoolHandle cp, u2 attributes_count,
                               bool is_static, u2 signature_index,
                               u2* constantvalue_index_addr,
                               bool* is_synthetic_addr,
                               u2* generic_signature_index_addr,
-                              typeArrayHandle* field_annotations,
+                              AnnotationArray** field_annotations,
                               FieldAnnotationCollector* parsed_annotations,
                               TRAPS);
-  typeArrayHandle parse_fields(Symbol* class_name,
+  Array<u2>* parse_fields(ClassLoaderData* loader_data,
+                          Symbol* class_name,
                                constantPoolHandle cp, bool is_interface,
                                FieldAllocationCount *fac,
-                               objArrayHandle* fields_annotations,
+                          Array<AnnotationArray*>** fields_annotations,
                                u2* java_fields_count_ptr, TRAPS);
 
   // Method parsing
-  methodHandle parse_method(constantPoolHandle cp, bool is_interface,
+  methodHandle parse_method(ClassLoaderData* loader_data,
+                            constantPoolHandle cp,
+                            bool is_interface,
                             AccessFlags* promoted_flags,
-                            typeArrayHandle* method_annotations,
-                            typeArrayHandle* method_parameter_annotations,
-                            typeArrayHandle* method_default_annotations,
+                            AnnotationArray** method_annotations,
+                            AnnotationArray** method_parameter_annotations,
+                            AnnotationArray** method_default_annotations,
                             TRAPS);
-  objArrayHandle parse_methods (constantPoolHandle cp, bool is_interface,
+  Array<Method*>* parse_methods(ClassLoaderData* loader_data,
+                                  constantPoolHandle cp,
+                                  bool is_interface,
                                 AccessFlags* promoted_flags,
                                 bool* has_final_method,
-                                objArrayOop* methods_annotations_oop,
-                                objArrayOop* methods_parameter_annotations_oop,
-                                objArrayOop* methods_default_annotations_oop,
+                                  Array<AnnotationArray*>** methods_annotations,
+                                  Array<AnnotationArray*>** methods_parameter_annotations,
+                                  Array<AnnotationArray*>** methods_default_annotations,
                                 TRAPS);
-  typeArrayHandle sort_methods (objArrayHandle methods,
-                                objArrayHandle methods_annotations,
-                                objArrayHandle methods_parameter_annotations,
-                                objArrayHandle methods_default_annotations,
+  Array<int>* sort_methods(ClassLoaderData* loader_data,
+                           Array<Method*>* methods,
+                           Array<AnnotationArray*>* methods_annotations,
+                           Array<AnnotationArray*>* methods_parameter_annotations,
+                           Array<AnnotationArray*>* methods_default_annotations,
                                 TRAPS);
-  u2* parse_exception_table(u4 code_length, u4 exception_table_length,
+  u2* parse_exception_table(ClassLoaderData* loader_data,
+                            u4 code_length, u4 exception_table_length,
                             constantPoolHandle cp, TRAPS);
   void parse_linenumber_table(
       u4 code_attribute_length, u4 code_length,
@@ -199,26 +208,30 @@
                                constantPoolHandle cp, TRAPS);
   void parse_type_array(u2 array_length, u4 code_length, u4* u1_index, u4* u2_index,
                         u1* u1_array, u2* u2_array, constantPoolHandle cp, TRAPS);
-  typeArrayOop parse_stackmap_table(u4 code_attribute_length, TRAPS);
+  Array<u1>* parse_stackmap_table(ClassLoaderData* loader_data, u4 code_attribute_length, TRAPS);
 
   // Classfile attribute parsing
   void parse_classfile_sourcefile_attribute(constantPoolHandle cp, TRAPS);
-  void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp, int length, TRAPS);
-  u2   parse_classfile_inner_classes_attribute(u1* inner_classes_attribute_start,
+  void parse_classfile_source_debug_extension_attribute(constantPoolHandle cp,
+                                                        int length, TRAPS);
+  u2   parse_classfile_inner_classes_attribute(ClassLoaderData* loader_data,
+                                               u1* inner_classes_attribute_start,
                                                bool parsed_enclosingmethod_attribute,
                                                u2 enclosing_method_class_index,
                                                u2 enclosing_method_method_index,
                                                constantPoolHandle cp,
                                                TRAPS);
-  void parse_classfile_attributes(constantPoolHandle cp,
+  void parse_classfile_attributes(ClassLoaderData* loader_data,
+                                  constantPoolHandle cp,
                                   ClassAnnotationCollector* parsed_annotations,
                                   TRAPS);
   void parse_classfile_synthetic_attribute(constantPoolHandle cp, TRAPS);
   void parse_classfile_signature_attribute(constantPoolHandle cp, TRAPS);
-  void parse_classfile_bootstrap_methods_attribute(constantPoolHandle cp, u4 attribute_length, TRAPS);
+  void parse_classfile_bootstrap_methods_attribute(ClassLoaderData* loader_data, constantPoolHandle cp, u4 attribute_length, TRAPS);
 
   // Annotations handling
-  typeArrayHandle assemble_annotations(u1* runtime_visible_annotations,
+  AnnotationArray* assemble_annotations(ClassLoaderData* loader_data,
+                                        u1* runtime_visible_annotations,
                                        int runtime_visible_annotations_length,
                                        u1* runtime_invisible_annotations,
                                        int runtime_invisible_annotations_length, TRAPS);
@@ -238,8 +251,9 @@
                      int* nonstatic_oop_offsets,
                      unsigned int* nonstatic_oop_counts);
   void set_precomputed_flags(instanceKlassHandle k);
-  objArrayHandle compute_transitive_interfaces(instanceKlassHandle super,
-                                               objArrayHandle local_ifs, TRAPS);
+  Array<Klass*>* compute_transitive_interfaces(ClassLoaderData* loader_data,
+                                                 instanceKlassHandle super,
+                                                 Array<Klass*>* local_ifs, TRAPS);
 
   // Format checker methods
   void classfile_parse_error(const char* msg, TRAPS);
@@ -326,7 +340,7 @@
   void patch_constant_pool(constantPoolHandle cp, int index, Handle patch, TRAPS);
 
   // Wrapper for constantTag.is_klass_[or_]reference.
-  // In older versions of the VM, klassOops cannot sneak into early phases of
+  // In older versions of the VM, Klass*s cannot sneak into early phases of
   // constant pool construction, but in later versions they can.
   // %%% Let's phase out the old is_klass_reference.
   bool is_klass_reference(constantPoolHandle cp, int index) {
@@ -339,7 +353,7 @@
   // Constructor
   ClassFileParser(ClassFileStream* st) { set_stream(st); }
 
-  // Parse .class file and return new klassOop. The klassOop is not hooked up
+  // Parse .class file and return new Klass*. The Klass* is not hooked up
   // to the system dictionary or any other structures, so a .class file can
   // be loaded several times if desired.
   // The system dictionary hookup is done by the caller.
--- a/src/share/vm/classfile/classLoader.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/classLoader.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -37,7 +37,6 @@
 #include "memory/generation.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/constantPoolKlass.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceRefKlass.hpp"
 #include "oops/oop.inline.hpp"
@@ -904,7 +903,7 @@
     }
   }
 
-  instanceKlassHandle h(THREAD, klassOop(NULL));
+  instanceKlassHandle h;
   if (stream != NULL) {
 
     // class file found, parse it
@@ -1192,10 +1191,7 @@
     if (PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())) {
       CLEAR_PENDING_EXCEPTION;
       tty->print_cr("\nCompileTheWorld : Ran out of memory\n");
-      size_t used = Universe::heap()->permanent_used();
-      size_t capacity = Universe::heap()->permanent_capacity();
-      tty->print_cr("Permanent generation used %dK of %dK", used/K, capacity/K);
-      tty->print_cr("Increase size by setting e.g. -XX:MaxPermSize=%dK\n", capacity*2/K);
+      tty->print_cr("Increase class metadata storage if a limit was set");
     } else {
       tty->print_cr("\nCompileTheWorld : Unexpected exception occurred\n");
     }
@@ -1318,7 +1314,7 @@
       // Construct name without extension
       TempNewSymbol sym = SymbolTable::new_symbol(buffer, CHECK);
       // Use loader to load and initialize class
-      klassOop ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
+      Klass* ik = SystemDictionary::resolve_or_null(sym, loader, Handle(), THREAD);
       instanceKlassHandle k (THREAD, ik);
       if (k.not_null() && !HAS_PENDING_EXCEPTION) {
         k->initialize(THREAD);
@@ -1326,7 +1322,7 @@
       bool exception_occurred = HAS_PENDING_EXCEPTION;
       clear_pending_exception_if_not_oom(CHECK);
       if (CompileTheWorldPreloadClasses && k.not_null()) {
-        constantPoolKlass::preload_and_initialize_all_classes(k->constants(), THREAD);
+        ConstantPool::preload_and_initialize_all_classes(k->constants(), THREAD);
         if (HAS_PENDING_EXCEPTION) {
           // If something went wrong in preloading we just ignore it
           clear_pending_exception_if_not_oom(CHECK);
@@ -1343,7 +1339,7 @@
           // Preload all classes to get around uncommon traps
           // Iterate over all methods in class
           for (int n = 0; n < k->methods()->length(); n++) {
-            methodHandle m (THREAD, methodOop(k->methods()->obj_at(n)));
+            methodHandle m (THREAD, k->methods()->at(n));
             if (CompilationPolicy::can_be_compiled(m)) {
 
               if (++_codecache_sweep_counter == CompileTheWorldSafepointInterval) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/classfile/classLoaderData.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,640 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+// A ClassLoaderData identifies the full set of class types that a class
+// loader's name resolution strategy produces for a given configuration of the
+// class loader.
+// Class types in the ClassLoaderData may be defined by from class file binaries
+// provided by the class loader, or from other class loader it interacts with
+// according to its name resolution strategy.
+//
+// Class loaders that implement a deterministic name resolution strategy
+// (including with respect to their delegation behavior), such as the boot, the
+// extension, and the system loaders of the JDK's built-in class loader
+// hierarchy, always produce the same linkset for a given configuration.
+//
+// ClassLoaderData carries information related to a linkset (e.g.,
+// metaspace holding its klass definitions).
+// The System Dictionary and related data structures (e.g., placeholder table,
+// loader constraints table) as well as the runtime representation of classes
+// only reference ClassLoaderData.
+//
+// Instances of java.lang.ClassLoader holds a pointer to a ClassLoaderData that
+// that represent the loader's "linking domain" in the JVM.
+//
+// The bootstrap loader (represented by NULL) also has a ClassLoaderData,
+// the singleton class the_null_class_loader_data().
+
+#include "precompiled.hpp"
+#include "classfile/classLoaderData.hpp"
+#include "classfile/classLoaderData.inline.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/metaspaceShared.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "runtime/jniHandles.hpp"
+#include "runtime/mutex.hpp"
+#include "runtime/safepoint.hpp"
+#include "runtime/synchronizer.hpp"
+#include "utilities/growableArray.hpp"
+#include "utilities/ostream.hpp"
+
+ClassLoaderData * ClassLoaderData::_the_null_class_loader_data = NULL;
+
+ClassLoaderData::ClassLoaderData(Handle h_class_loader) : _class_loader(h_class_loader()),
+  _metaspace(NULL), _unloading(false), _klasses(NULL),
+  _claimed(0), _jmethod_ids(NULL), _handles(NULL),
+  _deallocate_list(NULL), _next(NULL),
+  _metaspace_lock(new Mutex(Monitor::leaf+1, "Metaspace allocation lock", true)) {
+    // empty
+}
+
+bool ClassLoaderData::claim() {
+  if (_claimed == 1) {
+    return false;
+  }
+
+  return (int) Atomic::cmpxchg(1, &_claimed, 0) == 0;
+}
+
+void ClassLoaderData::oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim) {
+  if (must_claim && !claim()) {
+    return;
+  }
+
+  f->do_oop(&_class_loader);
+  _handles->oops_do(f);
+  if (klass_closure != NULL) {
+    classes_do(klass_closure);
+  }
+}
+
+void ClassLoaderData::classes_do(KlassClosure* klass_closure) {
+  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+    klass_closure->do_klass(k);
+  }
+}
+
+void ClassLoaderData::classes_do(void f(InstanceKlass*)) {
+  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+    if (k->oop_is_instance()) {
+      f(InstanceKlass::cast(k));
+    }
+  }
+}
+
+void ClassLoaderData::record_dependency(Klass* k, TRAPS) {
+  ClassLoaderData * const from_cld = this;
+  ClassLoaderData * const to_cld = k->class_loader_data();
+
+  // Records dependency between non-null class loaders only.
+  if (to_cld->is_the_null_class_loader_data() || from_cld->is_the_null_class_loader_data()) {
+    return;
+  }
+
+  // Check that this dependency isn't from the same or parent class_loader
+  oop to = to_cld->class_loader();
+  oop from = from_cld->class_loader();
+
+  oop curr = from;
+  while (curr != NULL) {
+    if (curr == to) {
+      return; // this class loader is in the parent list, no need to add it.
+    }
+    curr = java_lang_ClassLoader::parent(curr);
+  }
+
+  // It's a dependency we won't find through GC, add it. This is relatively rare
+  from_cld->add_dependency(to_cld, CHECK);
+}
+
+bool ClassLoaderData::has_dependency(ClassLoaderData* dependency) {
+  oop loader = dependency->class_loader();
+
+  // Get objArrayOop out of the class_loader oop and see if this dependency
+  // is there.  Don't safepoint!  These are all oops.
+  // Dependency list is (oop class_loader, objArrayOop next)
+  objArrayOop ok = (objArrayOop)java_lang_ClassLoader::dependencies(class_loader());
+  while (ok != NULL) {
+    if (ok->obj_at(0) == loader) {
+      return true;
+    }
+    ok = (objArrayOop)ok->obj_at(1);
+  }
+  return false;
+}
+
+void ClassLoaderData::add_dependency(ClassLoaderData* dependency, TRAPS) {
+  // Minimize the number of duplicates in the list.
+  if (has_dependency(dependency)) {
+    return;
+  }
+
+  // Create a new dependency node with fields for (class_loader, next)
+  objArrayOop deps = oopFactory::new_objectArray(2, CHECK);
+  deps->obj_at_put(0, dependency->class_loader());
+
+  // Add this lock free, using compare and exchange, need barriers for GC
+  // Do the barrier first.
+  HeapWord* addr = java_lang_ClassLoader::dependencies_addr(class_loader());
+  while (true) {
+    oop old_dependency = java_lang_ClassLoader::dependencies(class_loader());
+    deps->obj_at_put(1, old_dependency);
+
+    oop newold = oopDesc::atomic_compare_exchange_oop((oop)deps, addr, old_dependency, true);
+    if (newold == old_dependency) {
+      update_barrier_set((void*)addr, (oop)deps);
+      // we won the race to add this dependency
+      break;
+    }
+  }
+}
+
+
+void ClassLoaderDataGraph::clear_claimed_marks() {
+  for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
+    cld->clear_claimed();
+  }
+}
+
+void ClassLoaderData::add_class(Klass* k) {
+  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+  Klass* old_value = _klasses;
+  k->set_next_link(old_value);
+  // link the new item into the list
+  _klasses = k;
+
+  if (TraceClassLoaderData && k->class_loader_data() != NULL) {
+    ResourceMark rm;
+    tty->print_cr("[TraceClassLoaderData] Adding k: " PTR_FORMAT " %s to CLD: "
+                  PTR_FORMAT " loader: " PTR_FORMAT " %s",
+                  k,
+                  k->external_name(),
+                  k->class_loader_data(),
+                  k->class_loader(),
+                  k->class_loader() != NULL ? k->class_loader()->klass()->external_name() : "NULL"
+      );
+  }
+}
+
+// This is called by InstanceKlass::deallocate_contents() to remove the
+// scratch_class for redefine classes.  We need a lock because there it may not
+// be called at a safepoint if there's an error.
+void ClassLoaderData::remove_class(Klass* scratch_class) {
+  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+  Klass* prev = NULL;
+  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+    if (k == scratch_class) {
+      if (prev == NULL) {
+        _klasses = k->next_link();
+      } else {
+        Klass* next = k->next_link();
+        prev->set_next_link(next);
+      }
+      return;
+    }
+    prev = k;
+  }
+  ShouldNotReachHere();   // should have found this class!!
+}
+
+ClassLoaderData::~ClassLoaderData() {
+  Metaspace *m = _metaspace;
+  if (m != NULL) {
+    _metaspace = NULL;
+    // release the metaspace
+    delete m;
+    // release the handles
+    if (_handles != NULL) {
+      JNIHandleBlock::release_block(_handles);
+      _handles = NULL;
+    }
+  }
+
+  // Clear all the JNI handles for methods
+  // These aren't deallocated and are going to look like a leak, but that's
+  // needed because we can't really get rid of jmethodIDs because we don't
+  // know when native code is going to stop using them.  The spec says that
+  // they're "invalid" but existing programs likely rely on their being
+  // NULL after class unloading.
+  if (_jmethod_ids != NULL) {
+    Method::clear_jmethod_ids(this);
+  }
+  // Delete lock
+  delete _metaspace_lock;
+
+  // Delete free list
+  if (_deallocate_list != NULL) {
+    delete _deallocate_list;
+  }
+}
+
+Metaspace* ClassLoaderData::metaspace_non_null() {
+  // If the metaspace has not been allocated, create a new one.  Might want
+  // to create smaller arena for Reflection class loaders also.
+  // The reason for the delayed allocation is because some class loaders are
+  // simply for delegating with no metadata of their own.
+  if (_metaspace == NULL) {
+    MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+    // Check again if metaspace has been allocated while we were getting this lock.
+    if (_metaspace != NULL) {
+      return _metaspace;
+    }
+    if (class_loader() == NULL) {
+      assert(this == the_null_class_loader_data(), "Must be");
+      size_t word_size = Metaspace::first_chunk_word_size();
+      set_metaspace(new Metaspace(_metaspace_lock, word_size));
+    } else {
+      set_metaspace(new Metaspace(_metaspace_lock));  // default size for now.
+    }
+  }
+  return _metaspace;
+}
+
+JNIHandleBlock* ClassLoaderData::handles() const           { return _handles; }
+void ClassLoaderData::set_handles(JNIHandleBlock* handles) { _handles = handles; }
+
+jobject ClassLoaderData::add_handle(Handle h) {
+  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+  if (handles() == NULL) {
+    set_handles(JNIHandleBlock::allocate_block());
+  }
+  return handles()->allocate_handle(h());
+}
+
+// Add this metadata pointer to be freed when it's safe.  This is only during
+// class unloading because Handles might point to this metadata field.
+void ClassLoaderData::add_to_deallocate_list(Metadata* m) {
+  // Metadata in shared region isn't deleted.
+  if (!m->is_shared()) {
+    MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+    if (_deallocate_list == NULL) {
+      _deallocate_list = new (ResourceObj::C_HEAP, mtClass) GrowableArray<Metadata*>(100, true);
+    }
+    _deallocate_list->append_if_missing(m);
+  }
+}
+
+// Deallocate free metadata on the free list.  How useful the PermGen was!
+void ClassLoaderData::free_deallocate_list() {
+  // Don't need lock, at safepoint
+  assert(SafepointSynchronize::is_at_safepoint(), "only called at safepoint");
+  if (_deallocate_list == NULL) {
+    return;
+  }
+  // Go backwards because this removes entries that are freed.
+  for (int i = _deallocate_list->length() - 1; i >= 0; i--) {
+    Metadata* m = _deallocate_list->at(i);
+    if (!m->on_stack()) {
+      _deallocate_list->remove_at(i);
+      // There are only three types of metadata that we deallocate directly.
+      // Cast them so they can be used by the template function.
+      if (m->is_method()) {
+        MetadataFactory::free_metadata(this, (Method*)m);
+      } else if (m->is_constantPool()) {
+        MetadataFactory::free_metadata(this, (ConstantPool*)m);
+      } else if (m->is_klass()) {
+        MetadataFactory::free_metadata(this, (InstanceKlass*)m);
+      } else {
+        ShouldNotReachHere();
+      }
+    }
+  }
+}
+
+#ifndef PRODUCT
+void ClassLoaderData::print_loader(ClassLoaderData *loader_data, outputStream* out) {
+  oop class_loader = loader_data->class_loader();
+  out->print("%s", SystemDictionary::loader_name(class_loader));
+}
+
+// Define to dump klasses
+#undef CLD_DUMP_KLASSES
+
+void ClassLoaderData::dump(outputStream * const out) {
+  ResourceMark rm;
+  out->print("ClassLoaderData CLD: "PTR_FORMAT", loader: "PTR_FORMAT", loader_klass: "PTR_FORMAT" %s {",
+      this, class_loader(),
+      class_loader() != NULL ? class_loader()->klass() : NULL,
+      class_loader() != NULL ? class_loader()->klass()->external_name() : "NULL");
+  if (claimed()) out->print(" claimed ");
+  if (is_unloading()) out->print(" unloading ");
+  out->print(" handles " INTPTR_FORMAT, handles());
+  out->cr();
+  if (metaspace_or_null() != NULL) {
+    out->print_cr("metaspace: " PTR_FORMAT, metaspace_or_null());
+    metaspace_or_null()->dump(out);
+  } else {
+    out->print_cr("metaspace: NULL");
+  }
+
+#ifdef CLD_DUMP_KLASSES
+  if (Verbose) {
+    ResourceMark rm;
+    Klass* k = _klasses;
+    while (k != NULL) {
+      out->print_cr("klass "PTR_FORMAT", %s, CT: %d, MUT: %d", k, k->name()->as_C_string(),
+          k->has_modified_oops(), k->has_accumulated_modified_oops());
+      k = k->next_link();
+    }
+  }
+#endif  // CLD_DUMP_KLASSES
+#undef CLD_DUMP_KLASSES
+  if (_jmethod_ids != NULL) {
+    Method::print_jmethod_ids(this, out);
+  }
+  out->print_cr("}");
+}
+#endif // PRODUCT
+
+void ClassLoaderData::verify() {
+  oop cl = class_loader();
+
+  guarantee(this == class_loader_data(cl), "Must be the same");
+  guarantee(cl != NULL || this == ClassLoaderData::the_null_class_loader_data(), "must be");
+
+  // Verify the integrity of the allocated space.
+  if (metaspace_or_null() != NULL) {
+    metaspace_or_null()->verify();
+  }
+
+  for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+    guarantee(k->class_loader_data() == this, "Must be the same");
+    k->verify();
+  }
+}
+
+// GC root of class loader data created.
+ClassLoaderData* ClassLoaderDataGraph::_head = NULL;
+ClassLoaderData* ClassLoaderDataGraph::_unloading = NULL;
+ClassLoaderData* ClassLoaderDataGraph::_saved_head = NULL;
+
+
+// Add a new class loader data node to the list.  Assign the newly created
+// ClassLoaderData into the java/lang/ClassLoader object as a hidden field
+ClassLoaderData* ClassLoaderDataGraph::add(ClassLoaderData** cld_addr, Handle loader_data) {
+  // Not assigned a class loader data yet.
+  // Create one.
+  ClassLoaderData* *list_head = &_head;
+  ClassLoaderData* next = _head;
+  ClassLoaderData* cld = new ClassLoaderData(loader_data);
+
+  // First, Atomically set it.
+  ClassLoaderData* old = (ClassLoaderData*) Atomic::cmpxchg_ptr(cld, cld_addr, NULL);
+  if (old != NULL) {
+    delete cld;
+    // Returns the data.
+    return old;
+  }
+
+  // We won the race, and therefore the task of adding the data to the list of
+  // class loader data
+  do {
+    cld->set_next(next);
+    ClassLoaderData* exchanged = (ClassLoaderData*)Atomic::cmpxchg_ptr(cld, list_head, next);
+    if (exchanged == next) {
+      if (TraceClassLoaderData) {
+        tty->print("[ClassLoaderData: ");
+        tty->print("create class loader data "PTR_FORMAT, cld);
+        tty->print(" for instance "PTR_FORMAT" of ", cld->class_loader());
+        loader_data->klass()->name()->print_symbol_on(tty);
+        tty->print_cr("]");
+      }
+      return cld;
+    }
+    next = exchanged;
+  } while (true);
+}
+
+void ClassLoaderDataGraph::oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim) {
+  for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
+    cld->oops_do(f, klass_closure, must_claim);
+  }
+}
+
+void ClassLoaderDataGraph::always_strong_oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim) {
+  if (ClassUnloading) {
+    ClassLoaderData::the_null_class_loader_data()->oops_do(f, klass_closure, must_claim);
+  } else {
+    ClassLoaderDataGraph::oops_do(f, klass_closure, must_claim);
+  }
+}
+
+void ClassLoaderDataGraph::classes_do(KlassClosure* klass_closure) {
+  for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
+    cld->classes_do(klass_closure);
+  }
+}
+
+GrowableArray<ClassLoaderData*>* ClassLoaderDataGraph::new_clds() {
+  assert(_head == NULL || _saved_head != NULL, "remember_new_clds(true) not called?");
+
+  GrowableArray<ClassLoaderData*>* array = new GrowableArray<ClassLoaderData*>();
+
+  // The CLDs in [_head, _saved_head] were all added during last call to remember_new_clds(true);
+  ClassLoaderData* curr = _head;
+  while (curr != _saved_head) {
+    if (!curr->claimed()) {
+      array->push(curr);
+
+      if (TraceClassLoaderData) {
+        tty->print("[ClassLoaderData] found new CLD: ");
+        curr->print_value_on(tty);
+        tty->cr();
+      }
+    }
+
+    curr = curr->_next;
+  }
+
+  return array;
+}
+
+#ifndef PRODUCT
+// for debugging and hsfind(x)
+bool ClassLoaderDataGraph::contains(address x) {
+  // I think we need the _metaspace_lock taken here because the class loader
+  // data graph could be changing while we are walking it (new entries added,
+  // new entries being unloaded, etc).
+  if (DumpSharedSpaces) {
+    // There are only two metaspaces to worry about.
+    ClassLoaderData* ncld = ClassLoaderData::the_null_class_loader_data();
+    return (ncld->ro_metaspace()->contains(x) || ncld->rw_metaspace()->contains(x));
+  }
+
+  if (UseSharedSpaces && MetaspaceShared::is_in_shared_space(x)) {
+    return true;
+  }
+
+  for (ClassLoaderData* cld = _head; cld != NULL; cld = cld->next()) {
+    if (cld->metaspace_or_null() != NULL && cld->metaspace_or_null()->contains(x)) {
+      return true;
+    }
+  }
+
+  // Could also be on an unloading list which is okay, ie. still allocated
+  // for a little while.
+  for (ClassLoaderData* ucld = _unloading; ucld != NULL; ucld = ucld->next()) {
+    if (ucld->metaspace_or_null() != NULL && ucld->metaspace_or_null()->contains(x)) {
+      return true;
+    }
+  }
+  return false;
+}
+
+bool ClassLoaderDataGraph::contains_loader_data(ClassLoaderData* loader_data) {
+  for (ClassLoaderData* data = _head; data != NULL; data = data->next()) {
+    if (loader_data == data) {
+      return true;
+    }
+  }
+
+  return false;
+}
+#endif // PRODUCT
+
+// Move class loader data from main list to the unloaded list for unloading
+// and deallocation later.
+bool ClassLoaderDataGraph::do_unloading(BoolObjectClosure* is_alive) {
+  ClassLoaderData* data = _head;
+  ClassLoaderData* prev = NULL;
+  bool seen_dead_loader = false;
+  // mark metadata seen on the stack and code cache so we can delete
+  // unneeded entries.
+  bool has_redefined_a_class = JvmtiExport::has_redefined_a_class();
+  MetadataOnStackMark md_on_stack;
+  while (data != NULL) {
+    if (data->class_loader() == NULL || is_alive->do_object_b(data->class_loader())) {
+      assert(data->claimed(), "class loader data must have been claimed");
+      if (has_redefined_a_class) {
+        data->classes_do(InstanceKlass::purge_previous_versions);
+      }
+      data->free_deallocate_list();
+      prev = data;
+      data = data->next();
+      continue;
+    }
+    seen_dead_loader = true;
+    ClassLoaderData* dead = data;
+    dead->mark_for_unload();
+    if (TraceClassLoaderData) {
+      tty->print("[ClassLoaderData: unload loader data "PTR_FORMAT, dead);
+      tty->print(" for instance "PTR_FORMAT" of ", dead->class_loader());
+      dead->class_loader()->klass()->name()->print_symbol_on(tty);
+      tty->print_cr("]");
+    }
+    data = data->next();
+    // Remove from loader list.
+    if (prev != NULL) {
+      prev->set_next(data);
+    } else {
+      assert(dead == _head, "sanity check");
+      _head = data;
+    }
+    dead->set_next(_unloading);
+    _unloading = dead;
+  }
+  return seen_dead_loader;
+}
+
+void ClassLoaderDataGraph::purge() {
+  ClassLoaderData* list = _unloading;
+  _unloading = NULL;
+  ClassLoaderData* next = list;
+  while (next != NULL) {
+    ClassLoaderData* purge_me = next;
+    next = purge_me->next();
+    delete purge_me;
+  }
+}
+
+// CDS support
+
+// Global metaspaces for writing information to the shared archive.  When
+// application CDS is supported, we may need one per metaspace, so this
+// sort of looks like it.
+Metaspace* ClassLoaderData::_ro_metaspace = NULL;
+Metaspace* ClassLoaderData::_rw_metaspace = NULL;
+static bool _shared_metaspaces_initialized = false;
+
+// Initialize shared metaspaces (change to call from somewhere not lazily)
+void ClassLoaderData::initialize_shared_metaspaces() {
+  assert(DumpSharedSpaces, "only use this for dumping shared spaces");
+  assert(this == ClassLoaderData::the_null_class_loader_data(),
+         "only supported for null loader data for now");
+  assert (!_shared_metaspaces_initialized, "only initialize once");
+  MutexLockerEx ml(metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+  _ro_metaspace = new Metaspace(_metaspace_lock, SharedReadOnlySize/wordSize);
+  _rw_metaspace = new Metaspace(_metaspace_lock, SharedReadWriteSize/wordSize);
+  _shared_metaspaces_initialized = true;
+}
+
+Metaspace* ClassLoaderData::ro_metaspace() {
+  assert(_ro_metaspace != NULL, "should already be initialized");
+  return _ro_metaspace;
+}
+
+Metaspace* ClassLoaderData::rw_metaspace() {
+  assert(_rw_metaspace != NULL, "should already be initialized");
+  return _rw_metaspace;
+}
+
+
+ClassLoaderDataGraphMetaspaceIterator::ClassLoaderDataGraphMetaspaceIterator() {
+  _data = ClassLoaderDataGraph::_head;
+}
+
+ClassLoaderDataGraphMetaspaceIterator::~ClassLoaderDataGraphMetaspaceIterator() {}
+
+#ifndef PRODUCT
+// callable from debugger
+extern "C" int print_loader_data_graph() {
+  ClassLoaderDataGraph::dump_on(tty);
+  return 0;
+}
+
+void ClassLoaderDataGraph::verify() {
+  for (ClassLoaderData* data = _head; data != NULL; data = data->next()) {
+    data->verify();
+  }
+}
+
+void ClassLoaderDataGraph::dump_on(outputStream * const out) {
+  for (ClassLoaderData* data = _head; data != NULL; data = data->next()) {
+    data->dump(out);
+  }
+  MetaspaceAux::dump(out);
+}
+
+void ClassLoaderData::print_value_on(outputStream* out) const {
+  if (class_loader() == NULL) {
+    out->print_cr("NULL class_loader");
+  } else {
+    out->print("class loader "PTR_FORMAT, this);
+    class_loader()->print_value_on(out);
+  }
+}
+#endif // PRODUCT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/classfile/classLoaderData.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_CLASSFILE_CLASSLOADERDATA_HPP
+#define SHARE_VM_CLASSFILE_CLASSLOADERDATA_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "memory/metaspace.hpp"
+#include "memory/metaspaceCounters.hpp"
+#include "runtime/mutex.hpp"
+#include "utilities/growableArray.hpp"
+
+//
+// A class loader represents a linkset. Conceptually, a linkset identifies
+// the complete transitive closure of resolved links that a dynamic linker can
+// produce.
+//
+// A ClassLoaderData also encapsulates the allocation space, called a metaspace,
+// used by the dynamic linker to allocate the runtime representation of all
+// the types it defines.
+//
+// ClassLoaderData are stored in the runtime representation of classes and the
+// system dictionary, are roots of garbage collection, and provides iterators
+// for root tracing and other GC operations.
+
+class ClassLoaderData;
+class JNIMethodBlock;
+class JNIHandleBlock;
+class Metadebug;
+// GC root for walking class loader data created
+
+class ClassLoaderDataGraph : public AllStatic {
+  friend class ClassLoaderData;
+  friend class ClassLoaderDataGraphMetaspaceIterator;
+  friend class VMStructs;
+ private:
+  // All CLDs (except the null CLD) can be reached by walking _head->_next->...
+  static ClassLoaderData* _head;
+  static ClassLoaderData* _unloading;
+  // CMS support.
+  static ClassLoaderData* _saved_head;
+
+  static ClassLoaderData* add(ClassLoaderData** loader_data_addr, Handle class_loader);
+ public:
+  static ClassLoaderData* find_or_create(Handle class_loader);
+  static void purge();
+  static void clear_claimed_marks();
+  static void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim);
+  static void always_strong_oops_do(OopClosure* blk, KlassClosure* klass_closure, bool must_claim);
+  static void classes_do(KlassClosure* klass_closure);
+  static bool do_unloading(BoolObjectClosure* is_alive);
+
+  // CMS support.
+  static void remember_new_clds(bool remember) { _saved_head = (remember ? _head : NULL); }
+  static GrowableArray<ClassLoaderData*>* new_clds();
+
+  static void dump_on(outputStream * const out) PRODUCT_RETURN;
+  static void dump() { dump_on(tty); }
+  static void verify();
+
+#ifndef PRODUCT
+  // expensive test for pointer in metaspace for debugging
+  static bool contains(address x);
+  static bool contains_loader_data(ClassLoaderData* loader_data);
+#endif
+};
+
+// ClassLoaderData class
+
+class ClassLoaderData : public CHeapObj<mtClass> {
+  friend class VMStructs;
+ private:
+  friend class ClassLoaderDataGraph;
+  friend class ClassLoaderDataGraphMetaspaceIterator;
+  friend class MetaDataFactory;
+  friend class Method;
+
+  static ClassLoaderData * _the_null_class_loader_data;
+
+  oop _class_loader;       // oop used to uniquely identify a class loader
+                           // class loader or a canonical class path
+  Metaspace * _metaspace;  // Meta-space where meta-data defined by the
+                           // classes in the class loader are allocated.
+  Mutex* _metaspace_lock;  // Locks the metaspace for allocations and setup.
+  bool _unloading;         // true if this class loader goes away
+  volatile int _claimed;   // true if claimed, for example during GC traces.
+                           // To avoid applying oop closure more than once.
+                           // Has to be an int because we cas it.
+  Klass* _klasses;         // The classes defined by the class loader.
+
+  JNIHandleBlock* _handles; // Handles to constant pool arrays
+
+  // These method IDs are created for the class loader and set to NULL when the
+  // class loader is unloaded.  They are rarely freed, only for redefine classes
+  // and if they lose a data race in InstanceKlass.
+  JNIMethodBlock*                  _jmethod_ids;
+
+  // Metadata to be deallocated when it's safe at class unloading, when
+  // this class loader isn't unloaded itself.
+  GrowableArray<Metadata*>*      _deallocate_list;
+
+  // Support for walking class loader data objects
+  ClassLoaderData* _next; /// Next loader_datas created
+
+  // ReadOnly and ReadWrite metaspaces (static because only on the null
+  // class loader for now).
+  static Metaspace* _ro_metaspace;
+  static Metaspace* _rw_metaspace;
+
+  bool has_dependency(ClassLoaderData* cld);
+  void add_dependency(ClassLoaderData* to_loader_data, TRAPS);
+
+  void set_next(ClassLoaderData* next) { _next = next; }
+  ClassLoaderData* next() const        { return _next; }
+
+  ClassLoaderData(Handle h_class_loader);
+  ~ClassLoaderData();
+
+  void set_metaspace(Metaspace* m) { _metaspace = m; }
+
+  JNIHandleBlock* handles() const;
+  void set_handles(JNIHandleBlock* handles);
+
+  Mutex* metaspace_lock() const { return _metaspace_lock; }
+
+  // GC interface.
+  void clear_claimed()          { _claimed = 0; }
+  bool claimed() const          { return _claimed == 1; }
+  bool claim();
+
+  void mark_for_unload()        { _unloading = true; }
+
+  void classes_do(void f(InstanceKlass*));
+
+  // Deallocate free list during class unloading.
+  void free_deallocate_list();
+
+  // Allocate out of this class loader data
+  MetaWord* allocate(size_t size);
+
+ public:
+  // Accessors
+  Metaspace* metaspace_or_null() const     { return _metaspace; }
+
+  static ClassLoaderData* the_null_class_loader_data() {
+    return _the_null_class_loader_data;
+  }
+
+  static void init_null_class_loader_data() {
+    assert(_the_null_class_loader_data == NULL, "cannot initialize twice");
+    assert(ClassLoaderDataGraph::_head == NULL, "cannot initialize twice");
+    _the_null_class_loader_data = new ClassLoaderData((oop)NULL);
+    ClassLoaderDataGraph::_head = _the_null_class_loader_data;
+    assert(_the_null_class_loader_data->is_the_null_class_loader_data(), "Must be");
+    if (DumpSharedSpaces) {
+      _the_null_class_loader_data->initialize_shared_metaspaces();
+    }
+  }
+
+  bool is_the_null_class_loader_data() const {
+    return this == _the_null_class_loader_data;
+  }
+
+  // The Metaspace is created lazily so may be NULL.  This
+  // method will allocate a Metaspace if needed.
+  Metaspace* metaspace_non_null();
+
+  oop class_loader() const      { return _class_loader; }
+
+  // Returns true if this class loader data is for a loader going away.
+  bool is_unloading() const     {
+    assert(!(is_the_null_class_loader_data() && _unloading), "The null class loader can never be unloaded");
+    return _unloading;
+  }
+
+  unsigned int identity_hash() {
+    return _class_loader == NULL ? 0 : _class_loader->identity_hash();
+  }
+
+  // Used when tracing from klasses.
+  void oops_do(OopClosure* f, KlassClosure* klass_closure, bool must_claim);
+
+  void classes_do(KlassClosure* klass_closure);
+
+  bool has_defined(Klass* klass) {
+    for (Klass* k = _klasses; k != NULL; k = k->next_link()) {
+      if (klass == k) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  JNIMethodBlock* jmethod_ids() const              { return _jmethod_ids; }
+  void set_jmethod_ids(JNIMethodBlock* new_block)  { _jmethod_ids = new_block; }
+
+  void print_value() { print_value_on(tty); }
+  void print_value_on(outputStream* out) const PRODUCT_RETURN;
+  void dump(outputStream * const out) PRODUCT_RETURN;
+  void verify();
+
+  jobject add_handle(Handle h);
+  void add_class(Klass* k);
+  void remove_class(Klass* k);
+  void record_dependency(Klass* to, TRAPS);
+
+  void add_to_deallocate_list(Metadata* m);
+
+  static ClassLoaderData* class_loader_data(oop loader);
+  static void print_loader(ClassLoaderData *loader_data, outputStream *out);
+
+  // CDS support
+  Metaspace* ro_metaspace();
+  Metaspace* rw_metaspace();
+  void initialize_shared_metaspaces();
+};
+
+class ClassLoaderDataGraphMetaspaceIterator : public StackObj {
+  ClassLoaderData* _data;
+ public:
+  ClassLoaderDataGraphMetaspaceIterator();
+  ~ClassLoaderDataGraphMetaspaceIterator();
+  bool repeat() { return _data != NULL; }
+  Metaspace* get_next() {
+    assert(_data != NULL, "Should not be NULL in call to the iterator");
+    Metaspace* result = _data->metaspace_or_null();
+    _data = _data->next();
+    // This result might be NULL for class loaders without metaspace
+    // yet.  It would be nice to return only non-null results but
+    // there is no guarantee that there will be a non-null result
+    // down the list so the caller is going to have to check.
+    return result;
+  }
+};
+#endif // SHARE_VM_CLASSFILE_CLASSLOADERDATA_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/classfile/classLoaderData.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "classfile/classLoaderData.hpp"
+#include "classfile/javaClasses.hpp"
+
+inline ClassLoaderData* ClassLoaderData::class_loader_data(oop loader) {
+  if (loader == NULL) return ClassLoaderData::the_null_class_loader_data();
+  ClassLoaderData* loader_data = java_lang_ClassLoader::loader_data(loader);
+  assert(loader_data != NULL, "Must be");
+  return loader_data;
+}
+
+
+inline ClassLoaderData *ClassLoaderDataGraph::find_or_create(Handle loader) {
+  assert(loader() != NULL,"Must be a class loader");
+  // Gets the class loader data out of the java/lang/ClassLoader object, if non-null
+  // it's already in the loader_data, so no need to add
+  ClassLoaderData** loader_data_addr = java_lang_ClassLoader::loader_data_addr(loader());
+  ClassLoaderData* loader_data_id = *loader_data_addr;
+  if (loader_data_id) {
+     return loader_data_id;
+  }
+  return ClassLoaderDataGraph::add(loader_data_addr, loader);
+}
--- a/src/share/vm/classfile/dictionary.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/dictionary.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,7 +36,7 @@
 
 
 Dictionary::Dictionary(int table_size)
-  : TwoOopHashtable<klassOop, mtClass>(table_size, sizeof(DictionaryEntry)) {
+  : TwoOopHashtable<Klass*, mtClass>(table_size, sizeof(DictionaryEntry)) {
   _current_class_index = 0;
   _current_class_entry = NULL;
 };
@@ -45,26 +45,18 @@
 
 Dictionary::Dictionary(int table_size, HashtableBucket<mtClass>* t,
                        int number_of_entries)
-  : TwoOopHashtable<klassOop, mtClass>(table_size, sizeof(DictionaryEntry), t, number_of_entries) {
+  : TwoOopHashtable<Klass*, mtClass>(table_size, sizeof(DictionaryEntry), t, number_of_entries) {
   _current_class_index = 0;
   _current_class_entry = NULL;
 };
 
 
-DictionaryEntry* Dictionary::new_entry(unsigned int hash, klassOop klass,
-                                       oop loader) {
-  DictionaryEntry* entry;
-  entry = (DictionaryEntry*)Hashtable<klassOop, mtClass>::new_entry(hash, klass);
-  entry->set_loader(loader);
+DictionaryEntry* Dictionary::new_entry(unsigned int hash, Klass* klass,
+                                       ClassLoaderData* loader_data) {
+  DictionaryEntry* entry = (DictionaryEntry*)Hashtable<Klass*, mtClass>::new_entry(hash, klass);
+  entry->set_loader_data(loader_data);
   entry->set_pd_set(NULL);
-  return entry;
-}
-
-
-DictionaryEntry* Dictionary::new_entry() {
-  DictionaryEntry* entry = (DictionaryEntry*)Hashtable<klassOop, mtClass>::new_entry(0L, NULL);
-  entry->set_loader(NULL);
-  entry->set_pd_set(NULL);
+  assert(klass->oop_is_instance(), "Must be");
   return entry;
 }
 
@@ -76,13 +68,13 @@
     entry->set_pd_set(to_delete->next());
     delete to_delete;
   }
-  Hashtable<klassOop, mtClass>::free_entry(entry);
+  Hashtable<Klass*, mtClass>::free_entry(entry);
 }
 
 
 bool DictionaryEntry::contains_protection_domain(oop protection_domain) const {
 #ifdef ASSERT
-  if (protection_domain == instanceKlass::cast(klass())->protection_domain()) {
+  if (protection_domain == InstanceKlass::cast(klass())->protection_domain()) {
     // Ensure this doesn't show up in the pd_set (invariant)
     bool in_pd_set = false;
     for (ProtectionDomainEntry* current = _pd_set;
@@ -100,7 +92,7 @@
   }
 #endif /* ASSERT */
 
-  if (protection_domain == instanceKlass::cast(klass())->protection_domain()) {
+  if (protection_domain == InstanceKlass::cast(klass())->protection_domain()) {
     // Succeeds trivially
     return true;
   }
@@ -131,7 +123,7 @@
 }
 
 
-bool Dictionary::do_unloading(BoolObjectClosure* is_alive) {
+bool Dictionary::do_unloading() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   bool class_was_unloaded = false;
   int  index = 0; // Defined here for portability! Do not move
@@ -142,111 +134,33 @@
   for (index = 0; index < table_size(); index++) {
     for (DictionaryEntry** p = bucket_addr(index); *p != NULL; ) {
       probe = *p;
-      klassOop e = probe->klass();
-      oop class_loader = probe->loader();
-
-      instanceKlass* ik = instanceKlass::cast(e);
-      if (ik->previous_versions() != NULL) {
-        // This klass has previous versions so see what we can cleanup
-        // while it is safe to do so.
-
-        int gc_count = 0;    // leave debugging breadcrumbs
-        int live_count = 0;
-
-        // RC_TRACE macro has an embedded ResourceMark
-        RC_TRACE(0x00000200, ("unload: %s: previous version length=%d",
-          ik->external_name(), ik->previous_versions()->length()));
-
-        for (int i = ik->previous_versions()->length() - 1; i >= 0; i--) {
-          // check the previous versions array for GC'ed weak refs
-          PreviousVersionNode * pv_node = ik->previous_versions()->at(i);
-          jobject cp_ref = pv_node->prev_constant_pool();
-          assert(cp_ref != NULL, "cp ref was unexpectedly cleared");
-          if (cp_ref == NULL) {
-            delete pv_node;
-            ik->previous_versions()->remove_at(i);
-            // Since we are traversing the array backwards, we don't have to
-            // do anything special with the index.
-            continue;  // robustness
-          }
+      Klass* e = probe->klass();
+      ClassLoaderData* loader_data = probe->loader_data();
 
-          constantPoolOop pvcp = (constantPoolOop)JNIHandles::resolve(cp_ref);
-          if (pvcp == NULL) {
-            // this entry has been GC'ed so remove it
-            delete pv_node;
-            ik->previous_versions()->remove_at(i);
-            // Since we are traversing the array backwards, we don't have to
-            // do anything special with the index.
-            gc_count++;
-            continue;
-          } else {
-            RC_TRACE(0x00000200, ("unload: previous version @%d is alive", i));
-            if (is_alive->do_object_b(pvcp)) {
-              live_count++;
-            } else {
-              guarantee(false, "sanity check");
-            }
-          }
-
-          GrowableArray<jweak>* method_refs = pv_node->prev_EMCP_methods();
-          if (method_refs != NULL) {
-            RC_TRACE(0x00000200, ("unload: previous methods length=%d",
-              method_refs->length()));
-            for (int j = method_refs->length() - 1; j >= 0; j--) {
-              jweak method_ref = method_refs->at(j);
-              assert(method_ref != NULL, "weak method ref was unexpectedly cleared");
-              if (method_ref == NULL) {
-                method_refs->remove_at(j);
-                // Since we are traversing the array backwards, we don't have to
-                // do anything special with the index.
-                continue;  // robustness
-              }
-
-              methodOop method = (methodOop)JNIHandles::resolve(method_ref);
-              if (method == NULL) {
-                // this method entry has been GC'ed so remove it
-                JNIHandles::destroy_weak_global(method_ref);
-                method_refs->remove_at(j);
-              } else {
-                // RC_TRACE macro has an embedded ResourceMark
-                RC_TRACE(0x00000200,
-                  ("unload: %s(%s): prev method @%d in version @%d is alive",
-                  method->name()->as_C_string(),
-                  method->signature()->as_C_string(), j, i));
-              }
-            }
-          }
-        }
-        assert(ik->previous_versions()->length() == live_count, "sanity check");
-        RC_TRACE(0x00000200,
-          ("unload: previous version stats: live=%d, GC'ed=%d", live_count,
-          gc_count));
-      }
+      InstanceKlass* ik = InstanceKlass::cast(e);
 
       // Non-unloadable classes were handled in always_strong_oops_do
-      if (!is_strongly_reachable(class_loader, e)) {
+      if (!is_strongly_reachable(loader_data, e)) {
         // Entry was not visited in phase1 (negated test from phase1)
-        assert(class_loader != NULL, "unloading entry with null class loader");
-        oop k_def_class_loader = ik->class_loader();
+        assert(!loader_data->is_the_null_class_loader_data(), "unloading entry with null class loader");
+        ClassLoaderData* k_def_class_loader_data = ik->class_loader_data();
 
         // Do we need to delete this system dictionary entry?
         bool purge_entry = false;
 
         // Do we need to delete this system dictionary entry?
-        if (!is_alive->do_object_b(class_loader)) {
+        if (loader_data->is_unloading()) {
           // If the loader is not live this entry should always be
           // removed (will never be looked up again). Note that this is
           // not the same as unloading the referred class.
-          if (k_def_class_loader == class_loader) {
+          if (k_def_class_loader_data == loader_data) {
             // This is the defining entry, so the referred class is about
             // to be unloaded.
             // Notify the debugger and clean up the class.
-            guarantee(!is_alive->do_object_b(e),
-                      "klass should not be live if defining loader is not");
             class_was_unloaded = true;
             // notify the debugger
             if (JvmtiExport::should_post_class_unload()) {
-              JvmtiExport::post_class_unload(ik->as_klassOop());
+              JvmtiExport::post_class_unload(ik);
             }
 
             // notify ClassLoadingService of class unload
@@ -254,22 +168,21 @@
 
             // Clean up C heap
             ik->release_C_heap_structures();
+            ik->constants()->release_C_heap_structures();
           }
           // Also remove this system dictionary entry.
           purge_entry = true;
 
         } else {
           // The loader in this entry is alive. If the klass is dead,
+          // (determined by checking the defining class loader)
           // the loader must be an initiating loader (rather than the
           // defining loader). Remove this entry.
-          if (!is_alive->do_object_b(e)) {
-            guarantee(!is_alive->do_object_b(k_def_class_loader),
-                      "defining loader should not be live if klass is not");
-            // If we get here, the class_loader must not be the defining
+          if (k_def_class_loader_data->is_unloading()) {
+            // If we get here, the class_loader_data must not be the defining
             // loader, it must be an initiating one.
-            assert(k_def_class_loader != class_loader,
+            assert(k_def_class_loader_data != loader_data,
                    "cannot have live defining loader and unreachable klass");
-
             // Loader is live, but class and its defining loader are dead.
             // Remove the entry. The class is going away.
             purge_entry = true;
@@ -292,19 +205,15 @@
 }
 
 
-void Dictionary::always_strong_classes_do(OopClosure* blk) {
+void Dictionary::always_strong_oops_do(OopClosure* blk) {
   // Follow all system classes and temporary placeholders in dictionary
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry *probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop e = probe->klass();
-      oop class_loader = probe->loader();
-      if (is_strongly_reachable(class_loader, e)) {
-        blk->do_oop((oop*)probe->klass_addr());
-        if (class_loader != NULL) {
-          blk->do_oop(probe->loader_addr());
-        }
+      Klass* e = probe->klass();
+      ClassLoaderData* loader_data = probe->loader_data();
+      if (is_strongly_reachable(loader_data, e)) {
         probe->protection_domain_set_oops_do(blk);
       }
     }
@@ -312,14 +221,30 @@
 }
 
 
-//   Just the classes from defining class loaders
-void Dictionary::classes_do(void f(klassOop)) {
+void Dictionary::always_strong_classes_do(KlassClosure* closure) {
+  // Follow all system classes and temporary placeholders in dictionary
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop k = probe->klass();
-      if (probe->loader() == instanceKlass::cast(k)->class_loader()) {
+      Klass* e = probe->klass();
+      ClassLoaderData* loader_data = probe->loader_data();
+      if (is_strongly_reachable(loader_data, e)) {
+        closure->do_klass(e);
+      }
+    }
+  }
+}
+
+
+//   Just the classes from defining class loaders
+void Dictionary::classes_do(void f(Klass*)) {
+  for (int index = 0; index < table_size(); index++) {
+    for (DictionaryEntry* probe = bucket(index);
+                          probe != NULL;
+                          probe = probe->next()) {
+      Klass* k = probe->klass();
+      if (probe->loader_data() == InstanceKlass::cast(k)->class_loader_data()) {
         f(k);
       }
     }
@@ -328,13 +253,13 @@
 
 // Added for initialize_itable_for_klass to handle exceptions
 //   Just the classes from defining class loaders
-void Dictionary::classes_do(void f(klassOop, TRAPS), TRAPS) {
+void Dictionary::classes_do(void f(Klass*, TRAPS), TRAPS) {
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop k = probe->klass();
-      if (probe->loader() == instanceKlass::cast(k)->class_loader()) {
+      Klass* k = probe->klass();
+      if (probe->loader_data() == InstanceKlass::cast(k)->class_loader_data()) {
         f(k, CHECK);
       }
     }
@@ -345,13 +270,13 @@
 //   All classes, and their class loaders
 //   (added for helpers that use HandleMarks and ResourceMarks)
 // Don't iterate over placeholders
-void Dictionary::classes_do(void f(klassOop, oop, TRAPS), TRAPS) {
+void Dictionary::classes_do(void f(Klass*, ClassLoaderData*, TRAPS), TRAPS) {
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop k = probe->klass();
-      f(k, probe->loader(), CHECK);
+      Klass* k = probe->klass();
+      f(k, probe->loader_data(), CHECK);
     }
   }
 }
@@ -359,13 +284,13 @@
 
 //   All classes, and their class loaders
 // Don't iterate over placeholders
-void Dictionary::classes_do(void f(klassOop, oop)) {
+void Dictionary::classes_do(void f(Klass*, ClassLoaderData*)) {
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop k = probe->klass();
-      f(k, probe->loader());
+      Klass* k = probe->klass();
+      f(k, probe->loader_data());
     }
   }
 }
@@ -376,35 +301,31 @@
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      f->do_oop((oop*)probe->klass_addr());
-      if (probe->loader() != NULL) {
-        f->do_oop(probe->loader_addr());
-      }
       probe->protection_domain_set_oops_do(f);
     }
   }
 }
 
 
-void Dictionary::methods_do(void f(methodOop)) {
+void Dictionary::methods_do(void f(Method*)) {
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop k = probe->klass();
-      if (probe->loader() == instanceKlass::cast(k)->class_loader()) {
+      Klass* k = probe->klass();
+      if (probe->loader_data() == InstanceKlass::cast(k)->class_loader_data()) {
         // only take klass is we have the entry with the defining class loader
-        instanceKlass::cast(k)->methods_do(f);
+        InstanceKlass::cast(k)->methods_do(f);
       }
     }
   }
 }
 
 
-klassOop Dictionary::try_get_next_class() {
+Klass* Dictionary::try_get_next_class() {
   while (true) {
     if (_current_class_entry != NULL) {
-      klassOop k = _current_class_entry->klass();
+      Klass* k = _current_class_entry->klass();
       _current_class_entry = _current_class_entry->next();
       return k;
     }
@@ -421,15 +342,15 @@
 // also cast to volatile;  we do this to ensure store order is maintained
 // by the compilers.
 
-void Dictionary::add_klass(Symbol* class_name, Handle class_loader,
+void Dictionary::add_klass(Symbol* class_name, ClassLoaderData* loader_data,
                            KlassHandle obj) {
   assert_locked_or_safepoint(SystemDictionary_lock);
   assert(obj() != NULL, "adding NULL obj");
   assert(Klass::cast(obj())->name() == class_name, "sanity check on name");
 
-  unsigned int hash = compute_hash(class_name, class_loader);
+  unsigned int hash = compute_hash(class_name, loader_data);
   int index = hash_to_index(hash);
-  DictionaryEntry* entry = new_entry(hash, obj(), class_loader());
+  DictionaryEntry* entry = new_entry(hash, obj(), loader_data);
   add_entry(index, entry);
 }
 
@@ -445,13 +366,12 @@
 // _buckets[index] is read here, so the caller will not see the new entry.
 DictionaryEntry* Dictionary::get_entry(int index, unsigned int hash,
                                        Symbol* class_name,
-                                       Handle class_loader) {
-  oop loader = class_loader();
+                                       ClassLoaderData* loader_data) {
   debug_only(_lookup_count++);
   for (DictionaryEntry* entry = bucket(index);
                         entry != NULL;
                         entry = entry->next()) {
-    if (entry->hash() == hash && entry->equals(class_name, loader)) {
+    if (entry->hash() == hash && entry->equals(class_name, loader_data)) {
       return entry;
     }
     debug_only(_lookup_length++);
@@ -460,9 +380,9 @@
 }
 
 
-klassOop Dictionary::find(int index, unsigned int hash, Symbol* name,
-                          Handle loader, Handle protection_domain, TRAPS) {
-  DictionaryEntry* entry = get_entry(index, hash, name, loader);
+Klass* Dictionary::find(int index, unsigned int hash, Symbol* name,
+                          ClassLoaderData* loader_data, Handle protection_domain, TRAPS) {
+  DictionaryEntry* entry = get_entry(index, hash, name, loader_data);
   if (entry != NULL && entry->is_valid_protection_domain(protection_domain)) {
     return entry->klass();
   } else {
@@ -471,34 +391,34 @@
 }
 
 
-klassOop Dictionary::find_class(int index, unsigned int hash,
-                                Symbol* name, Handle loader) {
+Klass* Dictionary::find_class(int index, unsigned int hash,
+                                Symbol* name, ClassLoaderData* loader_data) {
   assert_locked_or_safepoint(SystemDictionary_lock);
-  assert (index == index_for(name, loader), "incorrect index?");
+  assert (index == index_for(name, loader_data), "incorrect index?");
 
-  DictionaryEntry* entry = get_entry(index, hash, name, loader);
-  return (entry != NULL) ? entry->klass() : (klassOop)NULL;
+  DictionaryEntry* entry = get_entry(index, hash, name, loader_data);
+  return (entry != NULL) ? entry->klass() : (Klass*)NULL;
 }
 
 
 // Variant of find_class for shared classes.  No locking required, as
 // that table is static.
 
-klassOop Dictionary::find_shared_class(int index, unsigned int hash,
+Klass* Dictionary::find_shared_class(int index, unsigned int hash,
                                        Symbol* name) {
-  assert (index == index_for(name, Handle()), "incorrect index?");
+  assert (index == index_for(name, NULL), "incorrect index?");
 
-  DictionaryEntry* entry = get_entry(index, hash, name, Handle());
-  return (entry != NULL) ? entry->klass() : (klassOop)NULL;
+  DictionaryEntry* entry = get_entry(index, hash, name, NULL);
+  return (entry != NULL) ? entry->klass() : (Klass*)NULL;
 }
 
 
 void Dictionary::add_protection_domain(int index, unsigned int hash,
                                        instanceKlassHandle klass,
-                                       Handle loader, Handle protection_domain,
+                                       ClassLoaderData* loader_data, Handle protection_domain,
                                        TRAPS) {
   Symbol*  klass_name = klass->name();
-  DictionaryEntry* entry = get_entry(index, hash, klass_name, loader);
+  DictionaryEntry* entry = get_entry(index, hash, klass_name, loader_data);
 
   assert(entry != NULL,"entry must be present, we just created it");
   assert(protection_domain() != NULL,
@@ -513,9 +433,9 @@
 
 bool Dictionary::is_valid_protection_domain(int index, unsigned int hash,
                                             Symbol* name,
-                                            Handle loader,
+                                            ClassLoaderData* loader_data,
                                             Handle protection_domain) {
-  DictionaryEntry* entry = get_entry(index, hash, name, loader);
+  DictionaryEntry* entry = get_entry(index, hash, name, loader_data);
   return entry->is_valid_protection_domain(protection_domain);
 }
 
@@ -538,16 +458,17 @@
   }
 
   // Add the dictionary entries back to the list in the correct buckets.
-  Thread *thread = Thread::current();
-
   while (master_list != NULL) {
     DictionaryEntry* p = master_list;
     master_list = master_list->next();
     p->set_next(NULL);
-    Symbol* class_name = instanceKlass::cast((klassOop)(p->klass()))->name();
-    unsigned int hash = compute_hash(class_name, Handle(thread, p->loader()));
+    Symbol* class_name = InstanceKlass::cast((Klass*)(p->klass()))->name();
+    // Since the null class loader data isn't copied to the CDS archive,
+    // compute the hash with NULL for loader data.
+    unsigned int hash = compute_hash(class_name, NULL);
     int index = hash_to_index(hash);
     p->set_hash(hash);
+    p->set_loader_data(NULL);   // loader_data isn't copied to CDS
     p->set_next(bucket(index));
     set_entry(index, p);
   }
@@ -588,23 +509,22 @@
   return p;
 }
 
-
 void SymbolPropertyTable::oops_do(OopClosure* f) {
   for (int index = 0; index < table_size(); index++) {
     for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) {
-      if (p->property_oop() != NULL) {
-        f->do_oop(p->property_oop_addr());
+      if (p->method_type() != NULL) {
+        f->do_oop(p->method_type_addr());
       }
     }
   }
 }
 
-void SymbolPropertyTable::methods_do(void f(methodOop)) {
+void SymbolPropertyTable::methods_do(void f(Method*)) {
   for (int index = 0; index < table_size(); index++) {
     for (SymbolPropertyEntry* p = bucket(index); p != NULL; p = p->next()) {
-      oop prop = p->property_oop();
-      if (prop != NULL && prop->is_method()) {
-        f((methodOop)prop);
+      Method* prop = p->method();
+      if (prop != NULL) {
+        f((Method*)prop);
       }
     }
   }
@@ -628,16 +548,15 @@
                           probe != NULL;
                           probe = probe->next()) {
       if (Verbose) tty->print("%4d: ", index);
-      klassOop e = probe->klass();
-      oop class_loader =  probe->loader();
+      Klass* e = probe->klass();
+      ClassLoaderData* loader_data =  probe->loader_data();
       bool is_defining_class =
-         (class_loader == instanceKlass::cast(e)->class_loader());
+         (loader_data == InstanceKlass::cast(e)->class_loader_data());
       tty->print("%s%s", is_defining_class ? " " : "^",
                    Klass::cast(e)->external_name());
-      if (class_loader != NULL) {
+
         tty->print(", loader ");
-        class_loader->print_value();
-      }
+      loader_data->print_value();
       tty->cr();
     }
   }
@@ -645,20 +564,24 @@
 
 #endif
 
+
 void Dictionary::verify() {
   guarantee(number_of_entries() >= 0, "Verify of system dictionary failed");
+
   int element_count = 0;
   for (int index = 0; index < table_size(); index++) {
     for (DictionaryEntry* probe = bucket(index);
                           probe != NULL;
                           probe = probe->next()) {
-      klassOop e = probe->klass();
-      oop class_loader = probe->loader();
+      Klass* e = probe->klass();
+      ClassLoaderData* loader_data = probe->loader_data();
       guarantee(Klass::cast(e)->oop_is_instance(),
                               "Verify of system dictionary failed");
       // class loader must be present;  a null class loader is the
       // boostrap loader
-      guarantee(class_loader == NULL || class_loader->is_instance(),
+      guarantee(loader_data != NULL || DumpSharedSpaces ||
+                loader_data->is_the_null_class_loader_data() ||
+                loader_data->class_loader()->is_instance(),
                 "checking type of class_loader");
       e->verify();
       probe->verify_protection_domain_set();
@@ -669,3 +592,4 @@
             "Verify of system dictionary failed");
   debug_only(verify_lookup_length((double)number_of_entries() / table_size()));
 }
+
--- a/src/share/vm/classfile/dictionary.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/dictionary.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -31,12 +31,13 @@
 #include "utilities/hashtable.hpp"
 
 class DictionaryEntry;
+class PSPromotionManager;
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // The data structure for the system dictionary (and the shared system
 // dictionary).
 
-class Dictionary : public TwoOopHashtable<klassOop, mtClass> {
+class Dictionary : public TwoOopHashtable<Klass*, mtClass> {
   friend class VMStructs;
 private:
   // current iteration index.
@@ -45,78 +46,77 @@
   static DictionaryEntry*       _current_class_entry;
 
   DictionaryEntry* get_entry(int index, unsigned int hash,
-                             Symbol* name, Handle loader);
+                             Symbol* name, ClassLoaderData* loader_data);
 
   DictionaryEntry* bucket(int i) {
-    return (DictionaryEntry*)Hashtable<klassOop, mtClass>::bucket(i);
+    return (DictionaryEntry*)Hashtable<Klass*, mtClass>::bucket(i);
   }
 
   // The following method is not MT-safe and must be done under lock.
   DictionaryEntry** bucket_addr(int i) {
-    return (DictionaryEntry**)Hashtable<klassOop, mtClass>::bucket_addr(i);
+    return (DictionaryEntry**)Hashtable<Klass*, mtClass>::bucket_addr(i);
   }
 
   void add_entry(int index, DictionaryEntry* new_entry) {
-    Hashtable<klassOop, mtClass>::add_entry(index, (HashtableEntry<oop, mtClass>*)new_entry);
+    Hashtable<Klass*, mtClass>::add_entry(index, (HashtableEntry<Klass*, mtClass>*)new_entry);
   }
 
-
 public:
   Dictionary(int table_size);
   Dictionary(int table_size, HashtableBucket<mtClass>* t, int number_of_entries);
 
-  DictionaryEntry* new_entry(unsigned int hash, klassOop klass, oop loader);
+  DictionaryEntry* new_entry(unsigned int hash, Klass* klass, ClassLoaderData* loader_data);
 
   DictionaryEntry* new_entry();
 
   void free_entry(DictionaryEntry* entry);
 
-  void add_klass(Symbol* class_name, Handle class_loader,KlassHandle obj);
+  void add_klass(Symbol* class_name, ClassLoaderData* loader_data,KlassHandle obj);
 
-  klassOop find_class(int index, unsigned int hash,
-                      Symbol* name, Handle loader);
+  Klass* find_class(int index, unsigned int hash,
+                      Symbol* name, ClassLoaderData* loader_data);
 
-  klassOop find_shared_class(int index, unsigned int hash, Symbol* name);
+  Klass* find_shared_class(int index, unsigned int hash, Symbol* name);
 
   // Compiler support
-  klassOop try_get_next_class();
+  Klass* try_get_next_class();
 
   // GC support
+  void oops_do(OopClosure* f);
+  void always_strong_oops_do(OopClosure* blk);
 
-  void oops_do(OopClosure* f);
-  void always_strong_classes_do(OopClosure* blk);
-  void classes_do(void f(klassOop));
-  void classes_do(void f(klassOop, TRAPS), TRAPS);
-  void classes_do(void f(klassOop, oop));
-  void classes_do(void f(klassOop, oop, TRAPS), TRAPS);
+  void always_strong_classes_do(KlassClosure* closure);
 
-  void methods_do(void f(methodOop));
+  void classes_do(void f(Klass*));
+  void classes_do(void f(Klass*, TRAPS), TRAPS);
+  void classes_do(void f(Klass*, ClassLoaderData*));
+  void classes_do(void f(Klass*, ClassLoaderData*, TRAPS), TRAPS);
+
+  void methods_do(void f(Method*));
 
 
   // Classes loaded by the bootstrap loader are always strongly reachable.
   // If we're not doing class unloading, all classes are strongly reachable.
-  static bool is_strongly_reachable(oop class_loader, klassOop klass) {
+  static bool is_strongly_reachable(ClassLoaderData* loader_data, Klass* klass) {
     assert (klass != NULL, "should have non-null klass");
-    return (class_loader == NULL || !ClassUnloading);
+    return (loader_data->is_the_null_class_loader_data() || !ClassUnloading);
   }
 
   // Unload (that is, break root links to) all unmarked classes and
   // loaders.  Returns "true" iff something was unloaded.
-  bool do_unloading(BoolObjectClosure* is_alive);
+  bool do_unloading();
 
   // Protection domains
-  klassOop find(int index, unsigned int hash, Symbol* name,
-                Handle loader, Handle protection_domain, TRAPS);
+  Klass* find(int index, unsigned int hash, Symbol* name,
+                ClassLoaderData* loader_data, Handle protection_domain, TRAPS);
   bool is_valid_protection_domain(int index, unsigned int hash,
-                                  Symbol* name, Handle class_loader,
+                                  Symbol* name, ClassLoaderData* loader_data,
                                   Handle protection_domain);
   void add_protection_domain(int index, unsigned int hash,
-                             instanceKlassHandle klass, Handle loader,
+                             instanceKlassHandle klass, ClassLoaderData* loader_data,
                              Handle protection_domain, TRAPS);
 
   // Sharing support
-  void dump(SerializeOopClosure* soc);
-  void restore(SerializeOopClosure* soc);
   void reorder_dictionary();
 
 
@@ -145,16 +145,15 @@
 };
 
 // An entry in the system dictionary, this describes a class as
-// { klassOop, loader, protection_domain }.
+// { Klass*, loader, protection_domain }.
 
-class DictionaryEntry : public HashtableEntry<klassOop, mtClass> {
+class DictionaryEntry : public HashtableEntry<Klass*, mtClass> {
   friend class VMStructs;
  private:
   // Contains the set of approved protection domains that can access
   // this system dictionary entry.
   ProtectionDomainEntry* _pd_set;
-  oop                    _loader;
-
+  ClassLoaderData*       _loader_data;
 
  public:
   // Tells whether a protection is in the approved set.
@@ -162,20 +161,19 @@
   // Adds a protection domain to the approved set.
   void add_protection_domain(oop protection_domain);
 
-  klassOop klass() const { return (klassOop)literal(); }
-  klassOop* klass_addr() { return (klassOop*)literal_addr(); }
+  Klass* klass() const { return (Klass*)literal(); }
+  Klass** klass_addr() { return (Klass**)literal_addr(); }
 
   DictionaryEntry* next() const {
-    return (DictionaryEntry*)HashtableEntry<klassOop, mtClass>::next();
+    return (DictionaryEntry*)HashtableEntry<Klass*, mtClass>::next();
   }
 
   DictionaryEntry** next_addr() {
-    return (DictionaryEntry**)HashtableEntry<klassOop, mtClass>::next_addr();
+    return (DictionaryEntry**)HashtableEntry<Klass*, mtClass>::next_addr();
   }
 
-  oop loader() const { return _loader; }
-  void set_loader(oop loader) { _loader = loader; }
-  oop* loader_addr() { return &_loader; }
+  ClassLoaderData* loader_data() const { return _loader_data; }
+  void set_loader_data(ClassLoaderData* loader_data) { _loader_data = loader_data; }
 
   ProtectionDomainEntry* pd_set() const { return _pd_set; }
   void set_pd_set(ProtectionDomainEntry* pd_set) { _pd_set = pd_set; }
@@ -209,10 +207,10 @@
     }
   }
 
-  bool equals(Symbol* class_name, oop class_loader) const {
-    klassOop klass = (klassOop)literal();
-    return (instanceKlass::cast(klass)->name() == class_name &&
-            _loader == class_loader);
+  bool equals(Symbol* class_name, ClassLoaderData* loader_data) const {
+    Klass* klass = (Klass*)literal();
+    return (InstanceKlass::cast(klass)->name() == class_name &&
+            _loader_data == loader_data);
   }
 
   void print() {
@@ -232,8 +230,8 @@
   friend class VMStructs;
  private:
   intptr_t _symbol_mode;  // secondary key
-  oop     _property_oop;
-  address _property_data;
+  Method*   _method;
+  oop       _method_type;
 
  public:
   Symbol* symbol() const            { return literal(); }
@@ -241,11 +239,12 @@
   intptr_t symbol_mode() const      { return _symbol_mode; }
   void set_symbol_mode(intptr_t m)  { _symbol_mode = m; }
 
-  oop      property_oop() const     { return _property_oop; }
-  void set_property_oop(oop p)      { _property_oop = p; }
+  Method*        method() const     { return _method; }
+  void set_method(Method* p)        { _method = p; }
 
-  address  property_data() const    { return _property_data; }
-  void set_property_data(address p) { _property_data = p; }
+  oop      method_type() const      { return _method_type; }
+  oop*     method_type_addr()       { return &_method_type; }
+  void set_method_type(oop p)       { _method_type = p; }
 
   SymbolPropertyEntry* next() const {
     return (SymbolPropertyEntry*)HashtableEntry<Symbol*, mtSymbol>::next();
@@ -255,20 +254,18 @@
     return (SymbolPropertyEntry**)HashtableEntry<Symbol*, mtSymbol>::next_addr();
   }
 
-  oop* property_oop_addr()          { return &_property_oop; }
-
   void print_on(outputStream* st) const {
     symbol()->print_value_on(st);
     st->print("/mode="INTX_FORMAT, symbol_mode());
     st->print(" -> ");
     bool printed = false;
-    if (property_oop() != NULL) {
-      property_oop()->print_value_on(st);
+    if (method() != NULL) {
+      method()->print_value_on(st);
       printed = true;
     }
-    if (property_data() != NULL) {
+    if (method_type() != NULL) {
       if (printed)  st->print(" and ");
-      st->print(INTPTR_FORMAT, property_data());
+      st->print(INTPTR_FORMAT, method_type());
       printed = true;
     }
     st->print_cr(printed ? "" : "(empty)");
@@ -302,8 +299,8 @@
     // Hashtable with Symbol* literal must increment and decrement refcount.
     symbol->increment_refcount();
     entry->set_symbol_mode(symbol_mode);
-    entry->set_property_oop(NULL);
-    entry->set_property_data(NULL);
+    entry->set_method(NULL);
+    entry->set_method_type(NULL);
     return entry;
   }
 
@@ -334,11 +331,10 @@
 
   // GC support
   void oops_do(OopClosure* f);
-  void methods_do(void f(methodOop));
+
+  void methods_do(void f(Method*));
 
   // Sharing support
-  void dump(SerializeOopClosure* soc);
-  void restore(SerializeOopClosure* soc);
   void reorder_dictionary();
 
 #ifndef PRODUCT
--- a/src/share/vm/classfile/javaAssertions.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/javaAssertions.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -94,7 +94,7 @@
 
 oop JavaAssertions::createAssertionStatusDirectives(TRAPS) {
   Symbol* asd_sym = vmSymbols::java_lang_AssertionStatusDirectives();
-  klassOop k = SystemDictionary::resolve_or_fail(asd_sym, true, CHECK_NULL);
+  Klass* k = SystemDictionary::resolve_or_fail(asd_sym, true, CHECK_NULL);
   instanceKlassHandle asd_klass (THREAD, k);
   asd_klass->initialize(CHECK_NULL);
   Handle h = asd_klass->allocate_instance_handle(CHECK_NULL);
--- a/src/share/vm/classfile/javaClasses.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/javaClasses.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -38,8 +38,7 @@
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/symbol.hpp"
 #include "oops/typeArrayOop.hpp"
 #include "runtime/fieldDescriptor.hpp"
@@ -106,7 +105,7 @@
 }
 
 
-static bool find_field(instanceKlass* ik,
+static bool find_field(InstanceKlass* ik,
                        Symbol* name_symbol, Symbol* signature_symbol,
                        fieldDescriptor* fd,
                        bool allow_super = false) {
@@ -119,17 +118,17 @@
 // Helpful routine for computing field offsets at run time rather than hardcoding them
 static void
 compute_offset(int &dest_offset,
-               klassOop klass_oop, Symbol* name_symbol, Symbol* signature_symbol,
+               Klass* klass_oop, Symbol* name_symbol, Symbol* signature_symbol,
                bool allow_super = false) {
   fieldDescriptor fd;
-  instanceKlass* ik = instanceKlass::cast(klass_oop);
+  InstanceKlass* ik = InstanceKlass::cast(klass_oop);
   if (!find_field(ik, name_symbol, signature_symbol, &fd, allow_super)) {
     ResourceMark rm;
     tty->print_cr("Invalid layout of %s at %s", ik->external_name(), name_symbol->as_C_string());
 #ifndef PRODUCT
     klass_oop->print();
     tty->print_cr("all fields:");
-    for (AllFieldStream fs(instanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
+    for (AllFieldStream fs(InstanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
       tty->print_cr("  name: %s, sig: %s, flags: %08x", fs.name()->as_C_string(), fs.signature()->as_C_string(), fs.access_flags().as_int());
     }
 #endif //PRODUCT
@@ -141,10 +140,10 @@
 // Same as above but for "optional" offsets that might not be present in certain JDK versions
 static void
 compute_optional_offset(int& dest_offset,
-                        klassOop klass_oop, Symbol* name_symbol, Symbol* signature_symbol,
+                        Klass* klass_oop, Symbol* name_symbol, Symbol* signature_symbol,
                         bool allow_super = false) {
   fieldDescriptor fd;
-  instanceKlass* ik = instanceKlass::cast(klass_oop);
+  InstanceKlass* ik = InstanceKlass::cast(klass_oop);
   if (find_field(ik, name_symbol, signature_symbol, &fd, allow_super)) {
     dest_offset = fd.offset();
   }
@@ -161,7 +160,7 @@
 void java_lang_String::compute_offsets() {
   assert(!initialized, "offsets should be initialized only once");
 
-  klassOop k = SystemDictionary::String_klass();
+  Klass* k = SystemDictionary::String_klass();
   compute_offset(value_offset,           k, vmSymbols::value_name(),  vmSymbols::char_array_signature());
   compute_optional_offset(offset_offset, k, vmSymbols::offset_name(), vmSymbols::int_signature());
   compute_optional_offset(count_offset,  k, vmSymbols::count_name(),  vmSymbols::int_signature());
@@ -170,26 +169,18 @@
   initialized = true;
 }
 
-Handle java_lang_String::basic_create(int length, bool tenured, TRAPS) {
+Handle java_lang_String::basic_create(int length, TRAPS) {
   assert(initialized, "Must be initialized");
   // Create the String object first, so there's a chance that the String
   // and the char array it points to end up in the same cache line.
   oop obj;
-  if (tenured) {
-    obj = instanceKlass::cast(SystemDictionary::String_klass())->allocate_permanent_instance(CHECK_NH);
-  } else {
-    obj = instanceKlass::cast(SystemDictionary::String_klass())->allocate_instance(CHECK_NH);
-  }
+  obj = InstanceKlass::cast(SystemDictionary::String_klass())->allocate_instance(CHECK_NH);
 
   // Create the char array.  The String object must be handlized here
   // because GC can happen as a result of the allocation attempt.
   Handle h_obj(THREAD, obj);
   typeArrayOop buffer;
-  if (tenured) {
-    buffer = oopFactory::new_permanent_charArray(length, CHECK_NH);
-  } else {
     buffer = oopFactory::new_charArray(length, CHECK_NH);
-  }
 
   // Point the String at the char array
   obj = h_obj();
@@ -202,8 +193,8 @@
   return h_obj;
 }
 
-Handle java_lang_String::basic_create_from_unicode(jchar* unicode, int length, bool tenured, TRAPS) {
-  Handle h_obj = basic_create(length, tenured, CHECK_NH);
+Handle java_lang_String::create_from_unicode(jchar* unicode, int length, TRAPS) {
+  Handle h_obj = basic_create(length, CHECK_NH);
   typeArrayOop buffer = value(h_obj());
   for (int index = 0; index < length; index++) {
     buffer->char_at_put(index, unicode[index]);
@@ -211,16 +202,8 @@
   return h_obj;
 }
 
-Handle java_lang_String::create_from_unicode(jchar* unicode, int length, TRAPS) {
-  return basic_create_from_unicode(unicode, length, false, CHECK_NH);
-}
-
-Handle java_lang_String::create_tenured_from_unicode(jchar* unicode, int length, TRAPS) {
-  return basic_create_from_unicode(unicode, length, JavaObjectsInPerm, CHECK_NH);
-}
-
 oop java_lang_String::create_oop_from_unicode(jchar* unicode, int length, TRAPS) {
-  Handle h_obj = basic_create_from_unicode(unicode, length, false, CHECK_0);
+  Handle h_obj = create_from_unicode(unicode, length, CHECK_0);
   return h_obj();
 }
 
@@ -229,7 +212,7 @@
     return Handle();
   }
   int length = UTF8::unicode_length(utf8_str);
-  Handle h_obj = basic_create(length, false, CHECK_NH);
+  Handle h_obj = basic_create(length, CHECK_NH);
   if (length > 0) {
     UTF8::convert_to_unicode(utf8_str, value(h_obj())->char_at_addr(0), length);
   }
@@ -243,7 +226,7 @@
 
 Handle java_lang_String::create_from_symbol(Symbol* symbol, TRAPS) {
   int length = UTF8::unicode_length((char*)symbol->bytes(), symbol->utf8_length());
-  Handle h_obj = basic_create(length, false, CHECK_NH);
+  Handle h_obj = basic_create(length, CHECK_NH);
   if (length > 0) {
     UTF8::convert_to_unicode((char*)symbol->bytes(), value(h_obj())->char_at_addr(0), length);
   }
@@ -327,7 +310,7 @@
   // Create new UNICODE buffer. Must handlize value because GC
   // may happen during String and char array creation.
   typeArrayHandle h_value(THREAD, value);
-  Handle string = basic_create(length, false, CHECK_NH);
+  Handle string = basic_create(length, CHECK_NH);
 
   typeArrayOop from_buffer = h_value();
   typeArrayOop to_buffer   = java_lang_String::value(string());
@@ -517,19 +500,22 @@
 
 
 void java_lang_Class::fixup_mirror(KlassHandle k, TRAPS) {
-  assert(instanceMirrorKlass::offset_of_static_fields() != 0, "must have been computed already");
-
+  assert(InstanceMirrorKlass::offset_of_static_fields() != 0, "must have been computed already");
+
+  // If the offset was read from the shared archive, it was fixed up already
+  if (!k->is_shared()) {
   if (k->oop_is_instance()) {
     // During bootstrap, java.lang.Class wasn't loaded so static field
     // offsets were computed without the size added it.  Go back and
     // update all the static field offsets to included the size.
-    for (JavaFieldStream fs(instanceKlass::cast(k())); !fs.done(); fs.next()) {
+      for (JavaFieldStream fs(InstanceKlass::cast(k())); !fs.done(); fs.next()) {
       if (fs.access_flags().is_static()) {
-        int real_offset = fs.offset() + instanceMirrorKlass::offset_of_static_fields();
+        int real_offset = fs.offset() + InstanceMirrorKlass::offset_of_static_fields();
         fs.set_offset(real_offset);
       }
     }
   }
+  }
   create_mirror(k, CHECK);
 }
 
@@ -541,41 +527,45 @@
   // class is put into the system dictionary.
   int computed_modifiers = k->compute_modifier_flags(CHECK_0);
   k->set_modifier_flags(computed_modifiers);
-  if (SystemDictionary::Class_klass_loaded() && (k->oop_is_instance() || k->oop_is_javaArray())) {
+  // Class_klass has to be loaded because it is used to allocate
+  // the mirror.
+  if (SystemDictionary::Class_klass_loaded()) {
     // Allocate mirror (java.lang.Class instance)
-    Handle mirror = instanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(k, CHECK_0);
-
-    instanceMirrorKlass* mk = instanceMirrorKlass::cast(mirror->klass());
+    Handle mirror = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(k, CHECK_0);
+
+    InstanceMirrorKlass* mk = InstanceMirrorKlass::cast(mirror->klass());
     java_lang_Class::set_static_oop_field_count(mirror(), mk->compute_static_oop_field_count(mirror()));
 
     // It might also have a component mirror.  This mirror must already exist.
-    if (k->oop_is_javaArray()) {
+    if (k->oop_is_array()) {
       Handle comp_mirror;
       if (k->oop_is_typeArray()) {
-        BasicType type = typeArrayKlass::cast(k->as_klassOop())->element_type();
+        BasicType type = typeArrayKlass::cast(k())->element_type();
         comp_mirror = Universe::java_mirror(type);
-        assert(comp_mirror.not_null(), "must have primitive mirror");
-      } else if (k->oop_is_objArray()) {
-        klassOop element_klass = objArrayKlass::cast(k->as_klassOop())->element_klass();
-        if (element_klass != NULL
-            && (Klass::cast(element_klass)->oop_is_instance() ||
-                Klass::cast(element_klass)->oop_is_javaArray())) {
+      } else {
+        assert(k->oop_is_objArray(), "Must be");
+        Klass* element_klass = objArrayKlass::cast(k())->element_klass();
+        assert(element_klass != NULL, "Must have an element klass");
           comp_mirror = Klass::cast(element_klass)->java_mirror();
-          assert(comp_mirror.not_null(), "must have element mirror");
-        }
-        // else some object array internal to the VM, like systemObjArrayKlassObj
       }
-      if (comp_mirror.not_null()) {
+      assert(comp_mirror.not_null(), "must have a mirror");
+
         // Two-way link between the array klass and its component mirror:
-        arrayKlass::cast(k->as_klassOop())->set_component_mirror(comp_mirror());
-        set_array_klass(comp_mirror(), k->as_klassOop());
-      }
-    } else if (k->oop_is_instance()) {
+      arrayKlass::cast(k())->set_component_mirror(comp_mirror());
+      set_array_klass(comp_mirror(), k());
+    } else {
+      assert(k->oop_is_instance(), "Must be");
       // Initialize static fields
-      instanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, CHECK_NULL);
+      InstanceKlass::cast(k())->do_local_static_fields(&initialize_static_field, CHECK_NULL);
     }
     return mirror();
   } else {
+    if (fixup_mirror_list() == NULL) {
+      GrowableArray<Klass*>* list =
+       new (ResourceObj::C_HEAP, mtClass) GrowableArray<Klass*>(40, true);
+      set_fixup_mirror_list(list);
+    }
+    fixup_mirror_list()->push(k());
     return NULL;
   }
 }
@@ -602,32 +592,32 @@
 oop java_lang_Class::create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS) {
   // This should be improved by adding a field at the Java level or by
   // introducing a new VM klass (see comment in ClassFileParser)
-  oop java_class = instanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance((oop)NULL, CHECK_0);
+  oop java_class = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->allocate_instance(NULL, CHECK_0);
   if (type != T_VOID) {
-    klassOop aklass = Universe::typeArrayKlassObj(type);
+    Klass* aklass = Universe::typeArrayKlassObj(type);
     assert(aklass != NULL, "correct bootstrap");
     set_array_klass(java_class, aklass);
   }
 #ifdef ASSERT
-  instanceMirrorKlass* mk = instanceMirrorKlass::cast(SystemDictionary::Class_klass());
+  InstanceMirrorKlass* mk = InstanceMirrorKlass::cast(SystemDictionary::Class_klass());
   assert(java_lang_Class::static_oop_field_count(java_class) == 0, "should have been zeroed by allocation");
 #endif
   return java_class;
 }
 
 
-klassOop java_lang_Class::as_klassOop(oop java_class) {
+Klass* java_lang_Class::as_Klass(oop java_class) {
   //%note memory_2
   assert(java_lang_Class::is_instance(java_class), "must be a Class object");
-  klassOop k = klassOop(java_class->obj_field(_klass_offset));
+  Klass* k = ((Klass*)java_class->metadata_field(_klass_offset));
   assert(k == NULL || k->is_klass(), "type check");
   return k;
 }
 
 
-void java_lang_Class::set_klass(oop java_class, klassOop klass) {
+void java_lang_Class::set_klass(oop java_class, Klass* klass) {
   assert(java_lang_Class::is_instance(java_class), "must be a Class object");
-  java_class->obj_field_put(_klass_offset, klass);
+  java_class->metadata_field_put(_klass_offset, klass);
 }
 
 
@@ -638,7 +628,7 @@
   if (is_primitive(java_class)) {
     name = vmSymbols::type_signature(primitive_type(java_class));
   } else {
-    klassOop k = as_klassOop(java_class);
+    Klass* k = as_Klass(java_class);
     is_instance = Klass::cast(k)->oop_is_instance();
     name = Klass::cast(k)->name();
   }
@@ -661,7 +651,7 @@
     // that are not created or incremented due to a successful lookup.
     name->increment_refcount();
   } else {
-    klassOop k = as_klassOop(java_class);
+    Klass* k = as_Klass(java_class);
     if (!Klass::cast(k)->oop_is_instance()) {
       name = Klass::cast(k)->name();
       name->increment_refcount();
@@ -680,43 +670,52 @@
 }
 
 
-klassOop java_lang_Class::array_klass(oop java_class) {
-  klassOop k = klassOop(java_class->obj_field(_array_klass_offset));
-  assert(k == NULL || k->is_klass() && Klass::cast(k)->oop_is_javaArray(), "should be array klass");
+Klass* java_lang_Class::array_klass(oop java_class) {
+  Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
+  assert(k == NULL || k->is_klass() && Klass::cast(k)->oop_is_array(), "should be array klass");
   return k;
 }
 
 
-void java_lang_Class::set_array_klass(oop java_class, klassOop klass) {
-  assert(klass->is_klass() && Klass::cast(klass)->oop_is_javaArray(), "should be array klass");
-  java_class->obj_field_put(_array_klass_offset, klass);
+void java_lang_Class::set_array_klass(oop java_class, Klass* klass) {
+  assert(klass->is_klass() && Klass::cast(klass)->oop_is_array(), "should be array klass");
+  java_class->metadata_field_put(_array_klass_offset, klass);
 }
 
 
-methodOop java_lang_Class::resolved_constructor(oop java_class) {
-  oop constructor = java_class->obj_field(_resolved_constructor_offset);
+Method* java_lang_Class::resolved_constructor(oop java_class) {
+  Metadata* constructor = java_class->metadata_field(_resolved_constructor_offset);
   assert(constructor == NULL || constructor->is_method(), "should be method");
-  return methodOop(constructor);
+  return ((Method*)constructor);
 }
 
 
-void java_lang_Class::set_resolved_constructor(oop java_class, methodOop constructor) {
+void java_lang_Class::set_resolved_constructor(oop java_class, Method* constructor) {
   assert(constructor->is_method(), "should be method");
-  java_class->obj_field_put(_resolved_constructor_offset, constructor);
+  java_class->metadata_field_put(_resolved_constructor_offset, constructor);
 }
 
 
 bool java_lang_Class::is_primitive(oop java_class) {
   // should assert:
   //assert(java_lang_Class::is_instance(java_class), "must be a Class object");
-  klassOop k = klassOop(java_class->obj_field(_klass_offset));
-  return k == NULL;
+  bool is_primitive = (java_class->metadata_field(_klass_offset) == NULL);
+
+#ifdef ASSERT
+  if (is_primitive) {
+    Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
+    assert(k == NULL || is_java_primitive(arrayKlass::cast(k)->element_type()),
+        "Should be either the T_VOID primitive or a java primitive");
+  }
+#endif
+
+  return is_primitive;
 }
 
 
 BasicType java_lang_Class::primitive_type(oop java_class) {
   assert(java_lang_Class::is_primitive(java_class), "just checking");
-  klassOop ak = klassOop(java_class->obj_field(_array_klass_offset));
+  Klass* ak = ((Klass*)java_class->metadata_field(_array_klass_offset));
   BasicType type = T_VOID;
   if (ak != NULL) {
     // Note: create_basic_type_mirror above initializes ak to a non-null value.
@@ -728,7 +727,7 @@
   return type;
 }
 
-BasicType java_lang_Class::as_BasicType(oop java_class, klassOop* reference_klass) {
+BasicType java_lang_Class::as_BasicType(oop java_class, Klass** reference_klass) {
   assert(java_lang_Class::is_instance(java_class), "must be a Class object");
   if (is_primitive(java_class)) {
     if (reference_klass != NULL)
@@ -736,7 +735,7 @@
     return primitive_type(java_class);
   } else {
     if (reference_klass != NULL)
-      (*reference_klass) = as_klassOop(java_class);
+      (*reference_klass) = as_Klass(java_class);
     return T_OBJECT;
   }
 }
@@ -756,7 +755,7 @@
   assert(!offsets_computed, "offsets should be initialized only once");
   offsets_computed = true;
 
-  klassOop klass_oop = SystemDictionary::Class_klass();
+  Klass* klass_oop = SystemDictionary::Class_klass();
   // The classRedefinedCount field is only present starting in 1.5,
   // so don't go fatal.
   compute_optional_offset(classRedefinedCount_offset,
@@ -814,7 +813,7 @@
 void java_lang_Thread::compute_offsets() {
   assert(_group_offset == 0, "offsets should be initialized only once");
 
-  klassOop k = SystemDictionary::Thread_klass();
+  Klass* k = SystemDictionary::Thread_klass();
   compute_offset(_name_offset,      k, vmSymbols::name_name(),      vmSymbols::char_array_signature());
   compute_offset(_group_offset,     k, vmSymbols::group_name(),     vmSymbols::threadgroup_signature());
   compute_offset(_contextClassLoader_offset, k, vmSymbols::contextClassLoader_name(), vmSymbols::classloader_signature());
@@ -1073,7 +1072,7 @@
 void java_lang_ThreadGroup::compute_offsets() {
   assert(_parent_offset == 0, "offsets should be initialized only once");
 
-  klassOop k = SystemDictionary::ThreadGroup_klass();
+  Klass* k = SystemDictionary::ThreadGroup_klass();
 
   compute_offset(_parent_offset,      k, vmSymbols::parent_name(),      vmSymbols::threadgroup_signature());
   compute_offset(_name_offset,        k, vmSymbols::name_name(),        vmSymbols::string_signature());
@@ -1088,7 +1087,7 @@
 }
 
 oop java_lang_Throwable::unassigned_stacktrace() {
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::Throwable_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::Throwable_klass());
   address addr = ik->static_field_addr(static_unassigned_stacktrace_offset);
   if (UseCompressedOops) {
     return oopDesc::load_decode_heap_oop((narrowOop *)addr);
@@ -1134,9 +1133,9 @@
 
 void java_lang_Throwable::print(oop throwable, outputStream* st) {
   ResourceMark rm;
-  klassOop k = throwable->klass();
+  Klass* k = throwable->klass();
   assert(k != NULL, "just checking");
-  st->print("%s", instanceKlass::cast(k)->external_name());
+  st->print("%s", InstanceKlass::cast(k)->external_name());
   oop msg = message(throwable);
   if (msg != NULL) {
     st->print(": %s", java_lang_String::as_utf8_string(msg));
@@ -1146,9 +1145,9 @@
 
 void java_lang_Throwable::print(Handle throwable, outputStream* st) {
   ResourceMark rm;
-  klassOop k = throwable->klass();
+  Klass* k = throwable->klass();
   assert(k != NULL, "just checking");
-  st->print("%s", instanceKlass::cast(k)->external_name());
+  st->print("%s", InstanceKlass::cast(k)->external_name());
   oop msg = message(throwable);
   if (msg != NULL) {
     st->print(": %s", java_lang_String::as_utf8_string(msg));
@@ -1156,9 +1155,9 @@
 }
 
 // Print stack trace element to resource allocated buffer
-char* java_lang_Throwable::print_stack_element_to_buffer(methodOop method, int bci) {
+char* java_lang_Throwable::print_stack_element_to_buffer(Method* method, int bci) {
   // Get strings and string lengths
-  instanceKlass* klass = instanceKlass::cast(method->method_holder());
+  InstanceKlass* klass = InstanceKlass::cast(method->method_holder());
   const char* klass_name  = klass->external_name();
   int buf_len = (int)strlen(klass_name);
   char* source_file_name;
@@ -1200,13 +1199,13 @@
 }
 
 
-void java_lang_Throwable::print_stack_element(Handle stream, methodOop method, int bci) {
+void java_lang_Throwable::print_stack_element(Handle stream, Method* method, int bci) {
   ResourceMark rm;
   char* buf = print_stack_element_to_buffer(method, bci);
   print_to_stream(stream, buf);
 }
 
-void java_lang_Throwable::print_stack_element(outputStream *st, methodOop method, int bci) {
+void java_lang_Throwable::print_stack_element(outputStream *st, Method* method, int bci) {
   ResourceMark rm;
   char* buf = print_stack_element_to_buffer(method, bci);
   st->print_cr("%s", buf);
@@ -1252,8 +1251,8 @@
     }
 
     while (result.not_null()) {
-      objArrayHandle methods (THREAD,
-                              objArrayOop(result->obj_at(trace_methods_offset)));
+      typeArrayHandle methods (THREAD,
+                               typeArrayOop(result->obj_at(trace_methods_offset)));
       typeArrayHandle bcis (THREAD,
                             typeArrayOop(result->obj_at(trace_bcis_offset)));
 
@@ -1264,7 +1263,7 @@
 
       int length = methods()->length();
       for (int index = 0; index < length; index++) {
-        methodOop method = methodOop(methods()->obj_at(index));
+        Method* method = ((Method*)methods()->metadata_at(index));
         if (method == NULL) goto handle_cause;
         int bci = bcis->ushort_at(index);
         print_stack_element(st, method, bci);
@@ -1309,8 +1308,8 @@
   }
 
   while (result.not_null()) {
-    objArrayHandle methods (thread,
-                            objArrayOop(result->obj_at(trace_methods_offset)));
+    typeArrayHandle methods(thread,
+                            typeArrayOop(result->obj_at(trace_methods_offset)));
     typeArrayHandle bcis (thread,
                           typeArrayOop(result->obj_at(trace_bcis_offset)));
 
@@ -1321,7 +1320,7 @@
 
     int length = methods()->length();
     for (int index = 0; index < length; index++) {
-      methodOop method = methodOop(methods()->obj_at(index));
+      Method* method = ((Method*)methods()->metadata_at(index));
       if (method == NULL) return;
       int bci = bcis->ushort_at(index);
       print_stack_element(stream, method, bci);
@@ -1337,8 +1336,9 @@
  private:
   Handle          _backtrace;
   objArrayOop     _head;
-  objArrayOop     _methods;
+  typeArrayOop    _methods;
   typeArrayOop    _bcis;
+  objArrayOop     _mirrors;
   int             _index;
   No_Safepoint_Verifier _nsv;
 
@@ -1347,13 +1347,14 @@
   enum {
     trace_methods_offset = java_lang_Throwable::trace_methods_offset,
     trace_bcis_offset    = java_lang_Throwable::trace_bcis_offset,
+    trace_mirrors_offset = java_lang_Throwable::trace_mirrors_offset,
     trace_next_offset    = java_lang_Throwable::trace_next_offset,
     trace_size           = java_lang_Throwable::trace_size,
     trace_chunk_size     = java_lang_Throwable::trace_chunk_size
   };
 
   // constructor for new backtrace
-  BacktraceBuilder(TRAPS): _methods(NULL), _bcis(NULL), _head(NULL) {
+  BacktraceBuilder(TRAPS): _methods(NULL), _bcis(NULL), _head(NULL), _mirrors(NULL) {
     expand(CHECK);
     _backtrace = _head;
     _index = 0;
@@ -1366,21 +1367,26 @@
     objArrayOop head = oopFactory::new_objectArray(trace_size, CHECK);
     objArrayHandle new_head(THREAD, head);
 
-    objArrayOop methods = oopFactory::new_objectArray(trace_chunk_size, CHECK);
-    objArrayHandle new_methods(THREAD, methods);
+    typeArrayOop methods = oopFactory::new_metaDataArray(trace_chunk_size, CHECK);
+    typeArrayHandle new_methods(THREAD, methods);
 
     typeArrayOop bcis = oopFactory::new_shortArray(trace_chunk_size, CHECK);
     typeArrayHandle new_bcis(THREAD, bcis);
 
+    objArrayOop mirrors = oopFactory::new_objectArray(trace_chunk_size, CHECK);
+    objArrayHandle new_mirrors(THREAD, mirrors);
+
     if (!old_head.is_null()) {
       old_head->obj_at_put(trace_next_offset, new_head());
     }
     new_head->obj_at_put(trace_methods_offset, new_methods());
     new_head->obj_at_put(trace_bcis_offset, new_bcis());
+    new_head->obj_at_put(trace_mirrors_offset, new_mirrors());
 
     _head    = new_head();
     _methods = new_methods();
     _bcis    = new_bcis();
+    _mirrors = new_mirrors();
     _index = 0;
   }
 
@@ -1388,7 +1394,7 @@
     return _backtrace();
   }
 
-  inline void push(methodOop method, int bci, TRAPS) {
+  inline void push(Method* method, int bci, TRAPS) {
     // Smear the -1 bci to 0 since the array only holds unsigned
     // shorts.  The later line number lookup would just smear the -1
     // to a 0 even if it could be recorded.
@@ -1401,14 +1407,18 @@
       method = mhandle();
     }
 
-    _methods->obj_at_put(_index, method);
+    _methods->metadata_at_put(_index, method);
     _bcis->ushort_at_put(_index, bci);
+    // we need to save the mirrors in the backtrace to keep the methods from
+    // being unloaded if their class loader is unloaded while we still have
+    // this stack trace.
+    _mirrors->obj_at_put(_index, method->method_holder()->java_mirror());
     _index++;
   }
 
-  methodOop current_method() {
+  Method* current_method() {
     assert(_index >= 0 && _index < trace_chunk_size, "out of range");
-    return methodOop(_methods->obj_at(_index));
+    return ((Method*)_methods->metadata_at(_index));
   }
 
   jushort current_bci() {
@@ -1465,14 +1475,14 @@
   bool skip_hidden = !ShowHiddenFrames;
 
   for (frame fr = thread->last_frame(); max_depth != total_count;) {
-    methodOop method = NULL;
+    Method* method = NULL;
     int bci = 0;
 
     // Compiled java method case.
     if (decode_offset != 0) {
       DebugInfoReadStream stream(nm, decode_offset);
       decode_offset = stream.read_int();
-      method = (methodOop)nm->oop_at(stream.read_int());
+      method = (Method*)nm->metadata_at(stream.read_int());
       bci = stream.read_bci();
     } else {
       if (fr.is_first_frame()) break;
@@ -1508,7 +1518,7 @@
            "Wrong stack trace");
     st.next();
     // vframeStream::method isn't GC-safe so store off a copy
-    // of the methodOop in case we GC.
+    // of the Method* in case we GC.
     if (!st.at_end()) {
       st_method = st.method();
     }
@@ -1580,14 +1590,17 @@
 
   objArrayOop h_oop = oopFactory::new_objectArray(trace_size, CHECK);
   objArrayHandle backtrace  (THREAD, h_oop);
-  objArrayOop m_oop = oopFactory::new_objectArray(trace_chunk_size, CHECK);
-  objArrayHandle methods (THREAD, m_oop);
+  typeArrayOop m_oop = oopFactory::new_metaDataArray(trace_chunk_size, CHECK);
+  typeArrayHandle methods (THREAD, m_oop);
   typeArrayOop b = oopFactory::new_shortArray(trace_chunk_size, CHECK);
   typeArrayHandle bcis(THREAD, b);
+  objArrayOop mirror_oop = oopFactory::new_objectArray(trace_chunk_size, CHECK);
+  objArrayHandle mirrors (THREAD, mirror_oop);
 
   // backtrace has space for one chunk (next is NULL)
   backtrace->obj_at_put(trace_methods_offset, methods());
   backtrace->obj_at_put(trace_bcis_offset, bcis());
+  backtrace->obj_at_put(trace_mirrors_offset, mirrors());
   set_backtrace(throwable(), backtrace());
 }
 
@@ -1600,18 +1613,24 @@
 
   assert(throwable->is_a(SystemDictionary::Throwable_klass()), "sanity check");
 
-  oop backtrace = java_lang_Throwable::backtrace(throwable());
+  objArrayOop backtrace = (objArrayOop)java_lang_Throwable::backtrace(throwable());
   assert(backtrace != NULL, "backtrace not preallocated");
 
-  oop m = objArrayOop(backtrace)->obj_at(trace_methods_offset);
-  objArrayOop methods = objArrayOop(m);
+  oop m = backtrace->obj_at(trace_methods_offset);
+  typeArrayOop methods = typeArrayOop(m);
   assert(methods != NULL && methods->length() > 0, "method array not preallocated");
 
-  oop b = objArrayOop(backtrace)->obj_at(trace_bcis_offset);
+  oop b = backtrace->obj_at(trace_bcis_offset);
   typeArrayOop bcis = typeArrayOop(b);
   assert(bcis != NULL, "bci array not preallocated");
 
-  assert(methods->length() == bcis->length(), "method and bci arrays should match");
+  oop mr = backtrace->obj_at(trace_mirrors_offset);
+  objArrayOop mirrors = objArrayOop(mr);
+  assert(mirrors != NULL, "bci array not preallocated");
+
+  assert(methods->length() == bcis->length() &&
+         methods->length() == mirrors->length(),
+         "method and bci arrays should match");
 
   JavaThread* thread = JavaThread::current();
   ResourceMark rm(thread);
@@ -1632,7 +1651,9 @@
     if (bci == SynchronizationEntryBCI) bci = 0;
     assert(bci == (jushort)bci, "doesn't fit");
     bcis->ushort_at_put(chunk_count, bci);
-    methods->obj_at_put(chunk_count, st.method());
+    methods->metadata_at_put(chunk_count, st.method());
+    mirrors->obj_at_put(chunk_count,
+                   st.method()->method_holder()->java_mirror());
 
     chunk_count++;
 
@@ -1667,11 +1688,11 @@
     }
     assert(chunk != NULL && chunk->obj_at(trace_next_offset) == NULL, "sanity check");
     // Count element in remaining partial chunk
-    objArrayOop methods = objArrayOop(chunk->obj_at(trace_methods_offset));
+    typeArrayOop methods = typeArrayOop(chunk->obj_at(trace_methods_offset));
     typeArrayOop bcis = typeArrayOop(chunk->obj_at(trace_bcis_offset));
     assert(methods != NULL && bcis != NULL, "sanity check");
     for (int i = 0; i < methods->length(); i++) {
-      if (methods->obj_at(i) == NULL) break;
+      if (methods->metadata_at(i) == NULL) break;
       depth++;
     }
   }
@@ -1698,10 +1719,10 @@
     THROW_(vmSymbols::java_lang_IndexOutOfBoundsException(), NULL);
   }
   // Get method,bci from chunk
-  objArrayOop methods = objArrayOop(chunk->obj_at(trace_methods_offset));
+  typeArrayOop methods = typeArrayOop(chunk->obj_at(trace_methods_offset));
   typeArrayOop bcis = typeArrayOop(chunk->obj_at(trace_bcis_offset));
   assert(methods != NULL && bcis != NULL, "sanity check");
-  methodHandle method(THREAD, methodOop(methods->obj_at(chunk_index)));
+  methodHandle method(THREAD, ((Method*)methods->metadata_at(chunk_index)));
   int bci = bcis->ushort_at(chunk_index);
   // Chunk can be partial full
   if (method.is_null()) {
@@ -1717,7 +1738,7 @@
   assert(JDK_Version::is_gte_jdk14x_version(), "should only be called in >= 1.4");
 
   // Allocate java.lang.StackTraceElement instance
-  klassOop k = SystemDictionary::StackTraceElement_klass();
+  Klass* k = SystemDictionary::StackTraceElement_klass();
   assert(k != NULL, "must be loaded in 1.4+");
   instanceKlassHandle ik (THREAD, k);
   if (ik->should_be_initialized()) {
@@ -1727,14 +1748,14 @@
   Handle element = ik->allocate_instance_handle(CHECK_0);
   // Fill in class name
   ResourceMark rm(THREAD);
-  const char* str = instanceKlass::cast(method->method_holder())->external_name();
+  const char* str = InstanceKlass::cast(method->method_holder())->external_name();
   oop classname = StringTable::intern((char*) str, CHECK_0);
   java_lang_StackTraceElement::set_declaringClass(element(), classname);
   // Fill in method name
   oop methodname = StringTable::intern(method->name(), CHECK_0);
   java_lang_StackTraceElement::set_methodName(element(), methodname);
   // Fill in source file name
-  Symbol* source = instanceKlass::cast(method->method_holder())->source_file_name();
+  Symbol* source = InstanceKlass::cast(method->method_holder())->source_file_name();
   if (ShowHiddenFrames && source == NULL)
     source = vmSymbols::unknown_class_name();
   oop filename = StringTable::intern(source, CHECK_0);
@@ -1760,7 +1781,7 @@
 
 
 void java_lang_reflect_AccessibleObject::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_AccessibleObject_klass();
+  Klass* k = SystemDictionary::reflect_AccessibleObject_klass();
   compute_offset(override_offset, k, vmSymbols::override_name(), vmSymbols::bool_signature());
 }
 
@@ -1775,7 +1796,7 @@
 }
 
 void java_lang_reflect_Method::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_Method_klass();
+  Klass* k = SystemDictionary::reflect_Method_klass();
   compute_offset(clazz_offset,          k, vmSymbols::clazz_name(),          vmSymbols::class_signature());
   compute_offset(name_offset,           k, vmSymbols::name_name(),           vmSymbols::string_signature());
   compute_offset(returnType_offset,     k, vmSymbols::returnType_name(),     vmSymbols::class_signature());
@@ -1796,11 +1817,11 @@
 
 Handle java_lang_reflect_Method::create(TRAPS) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
-  klassOop klass = SystemDictionary::reflect_Method_klass();
+  Klass* klass = SystemDictionary::reflect_Method_klass();
   // This class is eagerly initialized during VM initialization, since we keep a refence
   // to one of the methods
-  assert(instanceKlass::cast(klass)->is_initialized(), "must be initialized");
-  return instanceKlass::cast(klass)->allocate_instance_handle(CHECK_NH);
+  assert(InstanceKlass::cast(klass)->is_initialized(), "must be initialized");
+  return InstanceKlass::cast(klass)->allocate_instance_handle(CHECK_NH);
 }
 
 oop java_lang_reflect_Method::clazz(oop reflect) {
@@ -1938,7 +1959,7 @@
 }
 
 void java_lang_reflect_Constructor::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_Constructor_klass();
+  Klass* k = SystemDictionary::reflect_Constructor_klass();
   compute_offset(clazz_offset,          k, vmSymbols::clazz_name(),          vmSymbols::class_signature());
   compute_offset(parameterTypes_offset, k, vmSymbols::parameterTypes_name(), vmSymbols::class_array_signature());
   compute_offset(exceptionTypes_offset, k, vmSymbols::exceptionTypes_name(), vmSymbols::class_array_signature());
@@ -1956,7 +1977,7 @@
 Handle java_lang_reflect_Constructor::create(TRAPS) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   Symbol* name = vmSymbols::java_lang_reflect_Constructor();
-  klassOop k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
+  Klass* k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
   instanceKlassHandle klass (THREAD, k);
   // Ensure it is initialized
   klass->initialize(CHECK_NH);
@@ -2062,7 +2083,7 @@
 }
 
 void java_lang_reflect_Field::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_Field_klass();
+  Klass* k = SystemDictionary::reflect_Field_klass();
   compute_offset(clazz_offset,     k, vmSymbols::clazz_name(),     vmSymbols::class_signature());
   compute_offset(name_offset,      k, vmSymbols::name_name(),      vmSymbols::string_signature());
   compute_offset(type_offset,      k, vmSymbols::type_name(),      vmSymbols::class_signature());
@@ -2078,7 +2099,7 @@
 Handle java_lang_reflect_Field::create(TRAPS) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
   Symbol* name = vmSymbols::java_lang_reflect_Field();
-  klassOop k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
+  Klass* k = SystemDictionary::resolve_or_fail(name, true, CHECK_NH);
   instanceKlassHandle klass (THREAD, k);
   // Ensure it is initialized
   klass->initialize(CHECK_NH);
@@ -2169,17 +2190,18 @@
 
 
 void sun_reflect_ConstantPool::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_ConstantPool_klass();
+  Klass* k = SystemDictionary::reflect_ConstantPool_klass();
   // This null test can be removed post beta
   if (k != NULL) {
-    compute_offset(_cp_oop_offset, k, vmSymbols::constantPoolOop_name(), vmSymbols::object_signature());
+    // The field is called ConstantPool* in the sun.reflect.ConstantPool class.
+    compute_offset(_oop_offset, k, vmSymbols::ConstantPool_name(), vmSymbols::object_signature());
   }
 }
 
 
 Handle sun_reflect_ConstantPool::create(TRAPS) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
-  klassOop k = SystemDictionary::reflect_ConstantPool_klass();
+  Klass* k = SystemDictionary::reflect_ConstantPool_klass();
   instanceKlassHandle klass (THREAD, k);
   // Ensure it is initialized
   klass->initialize(CHECK_NH);
@@ -2187,19 +2209,30 @@
 }
 
 
-oop sun_reflect_ConstantPool::cp_oop(oop reflect) {
+void sun_reflect_ConstantPool::set_cp(oop reflect, ConstantPool* value) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
-  return reflect->obj_field(_cp_oop_offset);
+  oop mirror = value->pool_holder()->java_mirror();
+  // Save the mirror to get back the constant pool.
+  reflect->obj_field_put(_oop_offset, mirror);
 }
 
-
-void sun_reflect_ConstantPool::set_cp_oop(oop reflect, oop value) {
+ConstantPool* sun_reflect_ConstantPool::get_cp(oop reflect) {
   assert(Universe::is_fully_initialized(), "Need to find another solution to the reflection problem");
-  reflect->obj_field_put(_cp_oop_offset, value);
+
+  oop mirror = reflect->obj_field(_oop_offset);
+  Klass* k = java_lang_Class::as_Klass(mirror);
+  assert(k->oop_is_instance(), "Must be");
+
+  // Get the constant pool back from the klass.  Since class redefinition
+  // merges the new constant pool into the old, this is essentially the
+  // same constant pool as the original.  If constant pool merging is
+  // no longer done in the future, this will have to change to save
+  // the original.
+  return InstanceKlass::cast(k)->constants();
 }
 
 void sun_reflect_UnsafeStaticFieldAccessorImpl::compute_offsets() {
-  klassOop k = SystemDictionary::reflect_UnsafeStaticFieldAccessorImpl_klass();
+  Klass* k = SystemDictionary::reflect_UnsafeStaticFieldAccessorImpl_klass();
   // This null test can be removed post beta
   if (k != NULL) {
     compute_offset(_base_offset, k,
@@ -2208,7 +2241,7 @@
 }
 
 oop java_lang_boxing_object::initialize_and_allocate(BasicType type, TRAPS) {
-  klassOop k = SystemDictionary::box_klass(type);
+  Klass* k = SystemDictionary::box_klass(type);
   if (k == NULL)  return NULL;
   instanceKlassHandle h (THREAD, k);
   if (!h->is_initialized())  h->initialize(CHECK_0);
@@ -2344,8 +2377,14 @@
 
 
 // Support for java_lang_ref_Reference
+HeapWord *java_lang_ref_Reference::pending_list_lock_addr() {
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::Reference_klass());
+  address addr = ik->static_field_addr(static_lock_offset);
+  return (HeapWord*) addr;
+}
+
 oop java_lang_ref_Reference::pending_list_lock() {
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::Reference_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::Reference_klass());
   address addr = ik->static_field_addr(static_lock_offset);
   if (UseCompressedOops) {
     return oopDesc::load_decode_heap_oop((narrowOop *)addr);
@@ -2355,7 +2394,7 @@
 }
 
 HeapWord *java_lang_ref_Reference::pending_list_addr() {
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::Reference_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::Reference_klass());
   address addr = ik->static_field_addr(static_pending_offset);
   // XXX This might not be HeapWord aligned, almost rather be char *.
   return (HeapWord*)addr;
@@ -2378,13 +2417,13 @@
 }
 
 jlong java_lang_ref_SoftReference::clock() {
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::SoftReference_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
   return *offset;
 }
 
 void java_lang_ref_SoftReference::set_clock(jlong value) {
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::SoftReference_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
   jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
   *offset = value;
 }
@@ -2400,12 +2439,13 @@
 int java_lang_invoke_MemberName::_type_offset;
 int java_lang_invoke_MemberName::_flags_offset;
 int java_lang_invoke_MemberName::_vmtarget_offset;
+int java_lang_invoke_MemberName::_vmloader_offset;
 int java_lang_invoke_MemberName::_vmindex_offset;
 
 int java_lang_invoke_LambdaForm::_vmentry_offset;
 
 void java_lang_invoke_MethodHandle::compute_offsets() {
-  klassOop klass_oop = SystemDictionary::MethodHandle_klass();
+  Klass* klass_oop = SystemDictionary::MethodHandle_klass();
   if (klass_oop != NULL && EnableInvokeDynamic) {
     compute_offset(_type_offset, klass_oop, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature());
     compute_optional_offset(_form_offset, klass_oop, vmSymbols::form_name(), vmSymbols::java_lang_invoke_LambdaForm_signature());
@@ -2416,7 +2456,7 @@
 }
 
 void java_lang_invoke_MemberName::compute_offsets() {
-  klassOop klass_oop = SystemDictionary::MemberName_klass();
+  Klass* klass_oop = SystemDictionary::MemberName_klass();
   if (klass_oop != NULL && EnableInvokeDynamic) {
     compute_offset(_clazz_offset,     klass_oop, vmSymbols::clazz_name(),     vmSymbols::class_signature());
     compute_offset(_name_offset,      klass_oop, vmSymbols::name_name(),      vmSymbols::string_signature());
@@ -2427,7 +2467,7 @@
 }
 
 void java_lang_invoke_LambdaForm::compute_offsets() {
-  klassOop klass_oop = SystemDictionary::LambdaForm_klass();
+  Klass* klass_oop = SystemDictionary::LambdaForm_klass();
   if (klass_oop != NULL && EnableInvokeDynamic) {
     compute_offset(_vmentry_offset, klass_oop, vmSymbols::vmentry_name(), vmSymbols::java_lang_invoke_MemberName_signature());
   }
@@ -2493,12 +2533,12 @@
   mname->int_field_put(_flags_offset, flags);
 }
 
-oop java_lang_invoke_MemberName::vmtarget(oop mname) {
+Metadata* java_lang_invoke_MemberName::vmtarget(oop mname) {
   assert(is_instance(mname), "wrong type");
-  return mname->obj_field(_vmtarget_offset);
+  return (Metadata*)mname->address_field(_vmtarget_offset);
 }
 
-void java_lang_invoke_MemberName::set_vmtarget(oop mname, oop ref) {
+void java_lang_invoke_MemberName::set_vmtarget(oop mname, Metadata* ref) {
   assert(is_instance(mname), "wrong type");
 #ifdef ASSERT
   // check the type of the vmtarget
@@ -2518,7 +2558,19 @@
     }
   }
 #endif //ASSERT
-  mname->obj_field_put(_vmtarget_offset, ref);
+  mname->address_field_put(_vmtarget_offset, (address)ref);
+  oop loader = NULL;
+  if (ref != NULL) {
+    if (ref->is_klass()) {
+      loader = ((Klass*)ref)->class_loader();
+    } else if (ref->is_method()) {
+      loader = ((Method*)ref)->method_holder()->class_loader();
+    } else {
+      ShouldNotReachHere();
+    }
+  }
+  // Add a reference to the loader to ensure the metadata is kept alive
+  mname->obj_field_put(_vmloader_offset, loader);
 }
 
 intptr_t java_lang_invoke_MemberName::vmindex(oop mname) {
@@ -2543,7 +2595,7 @@
 int java_lang_invoke_MethodType::_ptypes_offset;
 
 void java_lang_invoke_MethodType::compute_offsets() {
-  klassOop k = SystemDictionary::MethodType_klass();
+  Klass* k = SystemDictionary::MethodType_klass();
   if (k != NULL) {
     compute_offset(_rtype_offset,  k, vmSymbols::rtype_name(),  vmSymbols::class_signature());
     compute_offset(_ptypes_offset, k, vmSymbols::ptypes_name(), vmSymbols::class_array_signature());
@@ -2630,7 +2682,7 @@
 
 void java_lang_invoke_CallSite::compute_offsets() {
   if (!EnableInvokeDynamic)  return;
-  klassOop k = SystemDictionary::CallSite_klass();
+  Klass* k = SystemDictionary::CallSite_klass();
   if (k != NULL) {
     compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature());
   }
@@ -2646,7 +2698,7 @@
 void java_security_AccessControlContext::compute_offsets() {
   assert(_isPrivileged_offset == 0, "offsets should be initialized only once");
   fieldDescriptor fd;
-  instanceKlass* ik = instanceKlass::cast(SystemDictionary::AccessControlContext_klass());
+  InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::AccessControlContext_klass());
 
   if (!ik->find_local_field(vmSymbols::context_name(), vmSymbols::protectiondomain_signature(), &fd)) {
     fatal("Invalid layout of java.security.AccessControlContext");
@@ -2668,9 +2720,9 @@
 oop java_security_AccessControlContext::create(objArrayHandle context, bool isPrivileged, Handle privileged_context, TRAPS) {
   assert(_isPrivileged_offset != 0, "offsets should have been initialized");
   // Ensure klass is initialized
-  instanceKlass::cast(SystemDictionary::AccessControlContext_klass())->initialize(CHECK_0);
+  InstanceKlass::cast(SystemDictionary::AccessControlContext_klass())->initialize(CHECK_0);
   // Allocate result
-  oop result = instanceKlass::cast(SystemDictionary::AccessControlContext_klass())->allocate_instance(CHECK_0);
+  oop result = InstanceKlass::cast(SystemDictionary::AccessControlContext_klass())->allocate_instance(CHECK_0);
   // Fill in values
   result->obj_field_put(_context_offset, context());
   result->obj_field_put(_privilegedContext_offset, privileged_context());
@@ -2680,17 +2732,43 @@
 
 
 // Support for java_lang_ClassLoader
+
 bool java_lang_ClassLoader::offsets_computed = false;
+int  java_lang_ClassLoader::_loader_data_offset = -1;
+int  java_lang_ClassLoader::_dependencies_offset = -1;
 int  java_lang_ClassLoader::parallelCapable_offset = -1;
 
+ClassLoaderData** java_lang_ClassLoader::loader_data_addr(oop loader) {
+    assert(loader != NULL && loader->is_oop(), "loader must be oop");
+    return (ClassLoaderData**) loader->address_field_addr(_loader_data_offset);
+}
+
+ClassLoaderData* java_lang_ClassLoader::loader_data(oop loader) {
+  return *java_lang_ClassLoader::loader_data_addr(loader);
+}
+
+oop java_lang_ClassLoader::dependencies(oop loader) {
+  return loader->obj_field(_dependencies_offset);
+}
+
+HeapWord* java_lang_ClassLoader::dependencies_addr(oop loader) {
+  if (UseCompressedOops) {
+    return (HeapWord*)loader->obj_field_addr<narrowOop>(_dependencies_offset);
+  } else {
+    return (HeapWord*)loader->obj_field_addr<oop>(_dependencies_offset);
+  }
+}
+
 void java_lang_ClassLoader::compute_offsets() {
   assert(!offsets_computed, "offsets should be initialized only once");
   offsets_computed = true;
 
   // The field indicating parallelCapable (parallelLockMap) is only present starting in 7,
-  klassOop k1 = SystemDictionary::ClassLoader_klass();
+  Klass* k1 = SystemDictionary::ClassLoader_klass();
   compute_optional_offset(parallelCapable_offset,
     k1, vmSymbols::parallelCapable_name(), vmSymbols::concurrenthashmap_signature());
+
+  CLASSLOADER_INJECTED_FIELDS(INJECTED_FIELD_COMPUTE_OFFSET);
 }
 
 oop java_lang_ClassLoader::parent(oop loader) {
@@ -2745,7 +2823,7 @@
     // the generated bytecodes for reflection, and if so, "magically"
     // delegate to its parent to prevent class loading from occurring
     // in places where applications using reflection didn't expect it.
-    klassOop delegating_cl_class = SystemDictionary::reflect_DelegatingClassLoader_klass();
+    Klass* delegating_cl_class = SystemDictionary::reflect_DelegatingClassLoader_klass();
     // This might be null in non-1.4 JDKs
     if (delegating_cl_class != NULL && loader->is_a(delegating_cl_class)) {
       return parent(loader);
@@ -2757,17 +2835,17 @@
 
 // Support for java_lang_System
 int java_lang_System::in_offset_in_bytes() {
-  return (instanceMirrorKlass::offset_of_static_fields() + static_in_offset);
+  return (InstanceMirrorKlass::offset_of_static_fields() + static_in_offset);
 }
 
 
 int java_lang_System::out_offset_in_bytes() {
-  return (instanceMirrorKlass::offset_of_static_fields() + static_out_offset);
+  return (InstanceMirrorKlass::offset_of_static_fields() + static_out_offset);
 }
 
 
 int java_lang_System::err_offset_in_bytes() {
-  return (instanceMirrorKlass::offset_of_static_fields() + static_err_offset);
+  return (InstanceMirrorKlass::offset_of_static_fields() + static_err_offset);
 }
 
 
@@ -2777,6 +2855,7 @@
 int java_lang_Class::_resolved_constructor_offset;
 int java_lang_Class::_oop_size_offset;
 int java_lang_Class::_static_oop_field_count_offset;
+GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
 int java_lang_Throwable::backtrace_offset;
 int java_lang_Throwable::detailMessage_offset;
 int java_lang_Throwable::cause_offset;
@@ -2835,7 +2914,7 @@
 int java_lang_AssertionStatusDirectives::deflt_offset;
 int java_nio_Buffer::_limit_offset;
 int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset = 0;
-int sun_reflect_ConstantPool::_cp_oop_offset;
+int sun_reflect_ConstantPool::_oop_offset;
 int sun_reflect_UnsafeStaticFieldAccessorImpl::_base_offset;
 
 
@@ -2888,7 +2967,7 @@
 
 
 void java_nio_Buffer::compute_offsets() {
-  klassOop k = SystemDictionary::nio_Buffer_klass();
+  Klass* k = SystemDictionary::nio_Buffer_klass();
   assert(k != NULL, "must be loaded in 1.4+");
   compute_offset(_limit_offset, k, vmSymbols::limit_name(), vmSymbols::int_signature());
 }
@@ -2898,7 +2977,7 @@
 
   assert(JDK_Version::is_gte_jdk16x_version(), "Must be JDK 1.6 or later");
   SystemDictionary::load_abstract_ownable_synchronizer_klass(CHECK);
-  klassOop k = SystemDictionary::abstract_ownable_synchronizer_klass();
+  Klass* k = SystemDictionary::abstract_ownable_synchronizer_klass();
   compute_offset(_owner_offset, k,
                  vmSymbols::exclusive_owner_thread_name(), vmSymbols::thread_signature());
 }
@@ -3007,7 +3086,7 @@
   EXCEPTION_MARK;
   fieldDescriptor fd;
   TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH);
-  klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
+  Klass* k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
   instanceKlassHandle h_klass (THREAD, k);
   TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH);
   TempNewSymbol f_sig  = SymbolTable::new_symbol(field_sig, CATCH);
@@ -3033,7 +3112,7 @@
   EXCEPTION_MARK;
   fieldDescriptor fd;
   TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH);
-  klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
+  Klass* k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
   instanceKlassHandle h_klass (THREAD, k);
   TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH);
   TempNewSymbol f_sig  = SymbolTable::new_symbol(field_sig, CATCH);
@@ -3045,10 +3124,10 @@
     tty->print_cr("Static field %s.%s appears to be nonstatic", klass_name, field_name);
     return false;
   }
-  if (fd.offset() == hardcoded_offset + instanceMirrorKlass::offset_of_static_fields()) {
+  if (fd.offset() == hardcoded_offset + InstanceMirrorKlass::offset_of_static_fields()) {
     return true;
   } else {
-    tty->print_cr("Offset of static field %s.%s is hardcoded as %d but should really be %d.", klass_name, field_name, hardcoded_offset, fd.offset() - instanceMirrorKlass::offset_of_static_fields());
+    tty->print_cr("Offset of static field %s.%s is hardcoded as %d but should really be %d.", klass_name, field_name, hardcoded_offset, fd.offset() - InstanceMirrorKlass::offset_of_static_fields());
     return false;
   }
 }
@@ -3058,7 +3137,7 @@
   EXCEPTION_MARK;
   fieldDescriptor fd;
   TempNewSymbol klass_sym = SymbolTable::new_symbol(klass_name, CATCH);
-  klassOop k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
+  Klass* k = SystemDictionary::resolve_or_fail(klass_sym, true, CATCH);
   instanceKlassHandle h_klass (THREAD, k);
   TempNewSymbol f_name = SymbolTable::new_symbol(field_name, CATCH);
   TempNewSymbol f_sig  = SymbolTable::new_symbol(field_sig, CATCH);
@@ -3088,6 +3167,7 @@
 
 void JavaClasses::check_offsets() {
   bool valid = true;
+  HandleMark hm;
 
 #define CHECK_OFFSET(klass_name, cpp_klass_name, field_name, field_sig) \
   valid &= check_offset(klass_name, cpp_klass_name :: field_name ## _offset, #field_name, field_sig)
@@ -3192,8 +3272,8 @@
 #endif // PRODUCT
 
 int InjectedField::compute_offset() {
-  klassOop klass_oop = klass();
-  for (AllFieldStream fs(instanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
+  Klass* klass_oop = klass();
+  for (AllFieldStream fs(InstanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
     if (!may_be_java && !fs.access_flags().is_internal()) {
       // Only look at injected fields
       continue;
@@ -3203,11 +3283,11 @@
     }
   }
   ResourceMark rm;
-  tty->print_cr("Invalid layout of %s at %s/%s%s", instanceKlass::cast(klass_oop)->external_name(), name()->as_C_string(), signature()->as_C_string(), may_be_java ? " (may_be_java)" : "");
+  tty->print_cr("Invalid layout of %s at %s/%s%s", InstanceKlass::cast(klass_oop)->external_name(), name()->as_C_string(), signature()->as_C_string(), may_be_java ? " (may_be_java)" : "");
 #ifndef PRODUCT
   klass_oop->print();
   tty->print_cr("all fields:");
-  for (AllFieldStream fs(instanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
+  for (AllFieldStream fs(InstanceKlass::cast(klass_oop)); !fs.done(); fs.next()) {
     tty->print_cr("  name: %s, sig: %s, flags: %08x", fs.name()->as_C_string(), fs.signature()->as_C_string(), fs.access_flags().as_int());
   }
 #endif //PRODUCT
--- a/src/share/vm/classfile/javaClasses.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/javaClasses.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -59,8 +59,7 @@
 
   static bool initialized;
 
-  static Handle basic_create(int length, bool tenured, TRAPS);
-  static Handle basic_create_from_unicode(jchar* unicode, int length, bool tenured, TRAPS);
+  static Handle basic_create(int length, TRAPS);
 
   static void set_value( oop string, typeArrayOop buffer) {
     assert(initialized, "Must be initialized");
@@ -84,7 +83,6 @@
 
   // Instance creation
   static Handle create_from_unicode(jchar* unicode, int len, TRAPS);
-  static Handle create_tenured_from_unicode(jchar* unicode, int len, TRAPS);
   static oop    create_oop_from_unicode(jchar* unicode, int len, TRAPS);
   static Handle create_from_str(const char* utf8_str, TRAPS);
   static oop    create_oop_from_str(const char* utf8_str, TRAPS);
@@ -205,9 +203,9 @@
 // Interface to java.lang.Class objects
 
 #define CLASS_INJECTED_FIELDS(macro)                                       \
-  macro(java_lang_Class, klass,                  object_signature,  false) \
-  macro(java_lang_Class, resolved_constructor,   object_signature,  false) \
-  macro(java_lang_Class, array_klass,            object_signature,  false) \
+  macro(java_lang_Class, klass,                  intptr_signature,  false) \
+  macro(java_lang_Class, resolved_constructor,   intptr_signature,  false) \
+  macro(java_lang_Class, array_klass,            intptr_signature,  false) \
   macro(java_lang_Class, oop_size,               int_signature,     false) \
   macro(java_lang_Class, static_oop_field_count, int_signature,     false)
 
@@ -226,6 +224,7 @@
 
   static bool offsets_computed;
   static int classRedefinedCount_offset;
+  static GrowableArray<Klass*>* _fixup_mirror_list;
 
  public:
   static void compute_offsets();
@@ -235,11 +234,11 @@
   static void fixup_mirror(KlassHandle k, TRAPS);
   static oop  create_basic_type_mirror(const char* basic_type_name, BasicType type, TRAPS);
   // Conversion
-  static klassOop as_klassOop(oop java_class);
-  static void set_klass(oop java_class, klassOop klass);
-  static BasicType as_BasicType(oop java_class, klassOop* reference_klass = NULL);
+  static Klass* as_Klass(oop java_class);
+  static void set_klass(oop java_class, Klass* klass);
+  static BasicType as_BasicType(oop java_class, Klass** reference_klass = NULL);
   static BasicType as_BasicType(oop java_class, KlassHandle* reference_klass) {
-    klassOop refk_oop = NULL;
+    Klass* refk_oop = NULL;
     BasicType result = as_BasicType(java_class, &refk_oop);
     (*reference_klass) = KlassHandle(refk_oop);
     return result;
@@ -254,11 +253,11 @@
   static BasicType primitive_type(oop java_class);
   static oop primitive_mirror(BasicType t);
   // JVM_NewInstance support
-  static methodOop resolved_constructor(oop java_class);
-  static void set_resolved_constructor(oop java_class, methodOop constructor);
+  static Method* resolved_constructor(oop java_class);
+  static void set_resolved_constructor(oop java_class, Method* constructor);
   // JVM_NewArray support
-  static klassOop array_klass(oop java_class);
-  static void set_array_klass(oop java_class, klassOop klass);
+  static Klass* array_klass(oop java_class);
+  static void set_array_klass(oop java_class, Klass* klass);
   // compiler support for class operations
   static int klass_offset_in_bytes()                { return _klass_offset; }
   static int resolved_constructor_offset_in_bytes() { return _resolved_constructor_offset; }
@@ -272,9 +271,15 @@
   static int static_oop_field_count(oop java_class);
   static void set_static_oop_field_count(oop java_class, int size);
 
+  static GrowableArray<Klass*>* fixup_mirror_list() {
+    return _fixup_mirror_list;
+  }
+  static void set_fixup_mirror_list(GrowableArray<Klass*>* v) {
+    _fixup_mirror_list = v;
+  }
   // Debugging
   friend class JavaClasses;
-  friend class instanceKlass;   // verification code accesses offsets
+  friend class InstanceKlass;   // verification code accesses offsets
   friend class ClassFileParser; // access to number_of_fake_fields
 };
 
@@ -449,8 +454,9 @@
   enum {
     trace_methods_offset = 0,
     trace_bcis_offset    = 1,
-    trace_next_offset    = 2,
-    trace_size           = 3,
+    trace_mirrors_offset = 2,
+    trace_next_offset    = 3,
+    trace_size           = 4,
     trace_chunk_size     = 32
   };
 
@@ -461,7 +467,7 @@
   static int static_unassigned_stacktrace_offset;
 
   // Printing
-  static char* print_stack_element_to_buffer(methodOop method, int bci);
+  static char* print_stack_element_to_buffer(Method* method, int bci);
   static void print_to_stream(Handle stream, const char* str);
   // StackTrace (programmatic access, new since 1.4)
   static void clear_stacktrace(oop throwable);
@@ -486,8 +492,8 @@
   // Note: this is no longer used in Merlin, but we still suppport
   // it for compatibility.
   static void print_stack_trace(oop throwable, oop print_stream);
-  static void print_stack_element(Handle stream, methodOop method, int bci);
-  static void print_stack_element(outputStream *st, methodOop method, int bci);
+  static void print_stack_element(Handle stream, Method* method, int bci);
+  static void print_stack_element(outputStream *st, Method* method, int bci);
   static void print_stack_usage(Handle stream);
 
   // Allocate space for backtrace (created but stack trace not filled in)
@@ -711,7 +717,7 @@
  private:
   // Note that to reduce dependencies on the JDK we compute these
   // offsets at run-time.
-  static int _cp_oop_offset;
+  static int _oop_offset;
 
   static void compute_offsets();
 
@@ -720,12 +726,13 @@
   static Handle create(TRAPS);
 
   // Accessors
-  static oop cp_oop(oop reflect);
-  static void set_cp_oop(oop reflect, oop value);
-  static int cp_oop_offset() {
-    return _cp_oop_offset;
+  static void set_cp(oop reflect, ConstantPool* value);
+  static int oop_offset() {
+    return _oop_offset;
   }
 
+  static ConstantPool* get_cp(oop reflect);
+
   // Debugging
   friend class JavaClasses;
 };
@@ -853,6 +860,7 @@
   static oop  pending_list_lock();
   static oop  pending_list();
 
+  static HeapWord*  pending_list_lock_addr();
   static HeapWord*  pending_list_addr();
 };
 
@@ -903,7 +911,7 @@
   static void       set_form(oop mh, oop lform);
 
   // Testers
-  static bool is_subclass(klassOop klass) {
+  static bool is_subclass(Klass* klass) {
     return Klass::cast(klass)->is_subclass_of(SystemDictionary::MethodHandle_klass());
   }
   static bool is_instance(oop obj) {
@@ -932,7 +940,7 @@
   static void       set_vmentry(oop lform, oop invoker);
 
   // Testers
-  static bool is_subclass(klassOop klass) {
+  static bool is_subclass(Klass* klass) {
     return SystemDictionary::LambdaForm_klass() != NULL &&
       Klass::cast(klass)->is_subclass_of(SystemDictionary::LambdaForm_klass());
   }
@@ -949,8 +957,9 @@
 // (These are a private interface for Java code to query the class hierarchy.)
 
 #define MEMBERNAME_INJECTED_FIELDS(macro)                               \
+  macro(java_lang_invoke_MemberName, vmloader, object_signature, false) \
   macro(java_lang_invoke_MemberName, vmindex,  intptr_signature, false) \
-  macro(java_lang_invoke_MemberName, vmtarget, object_signature, false)
+  macro(java_lang_invoke_MemberName, vmtarget, intptr_signature, false)
 
 class java_lang_invoke_MemberName: AllStatic {
   friend class JavaClasses;
@@ -961,13 +970,14 @@
   //    private String     name;        // may be null if not yet materialized
   //    private Object     type;        // may be null if not yet materialized
   //    private int        flags;       // modifier bits; see reflect.Modifier
-  //    private Object     vmtarget;    // VM-specific target value
+  //    private intptr     vmtarget;    // VM-specific target value
   //    private intptr_t   vmindex;     // member index within class or interface
   static int _clazz_offset;
   static int _name_offset;
   static int _type_offset;
   static int _flags_offset;
   static int _vmtarget_offset;
+  static int _vmloader_offset;
   static int _vmindex_offset;
 
   static void compute_offsets();
@@ -986,14 +996,14 @@
   static int            flags(oop mname);
   static void       set_flags(oop mname, int flags);
 
-  static oop            vmtarget(oop mname);
-  static void       set_vmtarget(oop mname, oop target);
+  static Metadata*      vmtarget(oop mname);
+  static void       set_vmtarget(oop mname, Metadata* target);
 
   static intptr_t       vmindex(oop mname);
   static void       set_vmindex(oop mname, intptr_t index);
 
   // Testers
-  static bool is_subclass(klassOop klass) {
+  static bool is_subclass(Klass* klass) {
     return Klass::cast(klass)->is_subclass_of(SystemDictionary::MemberName_klass());
   }
   static bool is_instance(oop obj) {
@@ -1079,7 +1089,7 @@
   static void         set_target_volatile(oop site, oop target) {        site->obj_field_put_volatile(_target_offset, target); }
 
   // Testers
-  static bool is_subclass(klassOop klass) {
+  static bool is_subclass(Klass* klass) {
     return Klass::cast(klass)->is_subclass_of(SystemDictionary::CallSite_klass());
   }
   static bool is_instance(oop obj) {
@@ -1112,19 +1122,31 @@
 
 // Interface to java.lang.ClassLoader objects
 
+#define CLASSLOADER_INJECTED_FIELDS(macro)                            \
+  macro(java_lang_ClassLoader, loader_data,  intptr_signature, false) \
+  macro(java_lang_ClassLoader, dependencies, object_signature, false)
+
 class java_lang_ClassLoader : AllStatic {
  private:
+  // The fake offsets are added by the class loader when java.lang.Class is loaded
   enum {
    hc_parent_offset = 0
   };
-
+  static int _loader_data_offset;
+  static int _dependencies_offset;
   static bool offsets_computed;
   static int parent_offset;
   static int parallelCapable_offset;
 
+ public:
   static void compute_offsets();
 
- public:
+  static ClassLoaderData** loader_data_addr(oop loader);
+  static ClassLoaderData* loader_data(oop loader);
+
+  static oop  dependencies(oop loader);
+  static HeapWord* dependencies_addr(oop loader);
+
   static oop parent(oop loader);
   static bool isAncestor(oop loader, oop cl);
 
@@ -1137,7 +1159,7 @@
   static oop  non_reflection_class_loader(oop loader);
 
   // Testers
-  static bool is_subclass(klassOop klass) {
+  static bool is_subclass(Klass* klass) {
     return Klass::cast(klass)->is_subclass_of(SystemDictionary::ClassLoader_klass());
   }
   static bool is_instance(oop obj) {
@@ -1146,6 +1168,7 @@
 
   // Debugging
   friend class JavaClasses;
+  friend class ClassFileParser; // access to number_of_fake_fields
 };
 
 
@@ -1268,7 +1291,7 @@
   const bool           may_be_java;
 
 
-  klassOop klass() const    { return SystemDictionary::well_known_klass(klass_id); }
+  Klass* klass() const    { return SystemDictionary::well_known_klass(klass_id); }
   Symbol* name() const      { return lookup_symbol(name_index); }
   Symbol* signature() const { return lookup_symbol(signature_index); }
 
@@ -1285,6 +1308,7 @@
 
 #define ALL_INJECTED_FIELDS(macro)          \
   CLASS_INJECTED_FIELDS(macro)              \
+  CLASSLOADER_INJECTED_FIELDS(macro)        \
   MEMBERNAME_INJECTED_FIELDS(macro)
 
 // Interface to hard-coded offset checking
--- a/src/share/vm/classfile/loaderConstraints.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/loaderConstraints.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/classLoaderData.inline.hpp"
 #include "classfile/loaderConstraints.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/oop.inline.hpp"
@@ -30,16 +31,20 @@
 #include "runtime/safepoint.hpp"
 #include "utilities/hashtable.inline.hpp"
 
+void LoaderConstraintEntry::set_loader(int i, oop p) {
+  set_loader_data(i, ClassLoaderData::class_loader_data(p));
+}
+
 LoaderConstraintTable::LoaderConstraintTable(int nof_buckets)
-  : Hashtable<klassOop, mtClass>(nof_buckets, sizeof(LoaderConstraintEntry)) {};
+  : Hashtable<Klass*, mtClass>(nof_buckets, sizeof(LoaderConstraintEntry)) {};
 
 
 LoaderConstraintEntry* LoaderConstraintTable::new_entry(
                                  unsigned int hash, Symbol* name,
-                                 klassOop klass, int num_loaders,
+                                 Klass* klass, int num_loaders,
                                  int max_loaders) {
   LoaderConstraintEntry* entry;
-  entry = (LoaderConstraintEntry*)Hashtable<klassOop, mtClass>::new_entry(hash, klass);
+  entry = (LoaderConstraintEntry*)Hashtable<Klass*, mtClass>::new_entry(hash, klass);
   entry->set_name(name);
   entry->set_num_loaders(num_loaders);
   entry->set_max_loaders(max_loaders);
@@ -49,27 +54,21 @@
 void LoaderConstraintTable::free_entry(LoaderConstraintEntry *entry) {
   // decrement name refcount before freeing
   entry->name()->decrement_refcount();
-  Hashtable<klassOop, mtClass>::free_entry(entry);
+  Hashtable<Klass*, mtClass>::free_entry(entry);
 }
 
-
-void LoaderConstraintTable::oops_do(OopClosure* f) {
+// Enhanced Class Redefinition support
+void LoaderConstraintTable::classes_do(KlassClosure* f) {
   for (int index = 0; index < table_size(); index++) {
     for (LoaderConstraintEntry* probe = bucket(index);
                                 probe != NULL;
                                 probe = probe->next()) {
       if (probe->klass() != NULL) {
-        f->do_oop((oop*)probe->klass_addr());
+        f->do_klass(probe->klass());
       }
-      for (int n = 0; n < probe->num_loaders(); n++) {
-        if (probe->loader(n) != NULL) {
-          f->do_oop(probe->loader_addr(n));
         }
       }
     }
-  }
-}
-
 
 // The loaderConstraintTable must always be accessed with the
 // SystemDictionary lock held. This is true even for readers as
@@ -81,12 +80,14 @@
   unsigned int hash = compute_hash(name);
   int index = hash_to_index(hash);
   LoaderConstraintEntry** pp = bucket_addr(index);
+  ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(loader());
+
   while (*pp) {
     LoaderConstraintEntry* p = *pp;
     if (p->hash() == hash) {
       if (p->name() == name) {
         for (int i = p->num_loaders() - 1; i >= 0; i--) {
-          if (p->loader(i) == loader()) {
+          if (p->loader_data(i) == loader_data) {
             return pp;
           }
         }
@@ -98,16 +99,17 @@
 }
 
 
-void LoaderConstraintTable::purge_loader_constraints(BoolObjectClosure* is_alive) {
+void LoaderConstraintTable::purge_loader_constraints() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   // Remove unloaded entries from constraint table
   for (int index = 0; index < table_size(); index++) {
     LoaderConstraintEntry** p = bucket_addr(index);
     while(*p) {
       LoaderConstraintEntry* probe = *p;
-      klassOop klass = probe->klass();
+      Klass* klass = probe->klass();
       // Remove klass that is no longer alive
-      if (klass != NULL && !is_alive->do_object_b(klass)) {
+      if (klass != NULL &&
+          klass->class_loader_data()->is_unloading()) {
         probe->set_klass(NULL);
         if (TraceLoaderConstraints) {
           ResourceMark rm;
@@ -116,19 +118,18 @@
                      probe->name()->as_C_string());
           for (int i = 0; i < probe->num_loaders(); i++) {
             tty->print_cr("[   [%d]: %s", i,
-                          SystemDictionary::loader_name(probe->loader(i)));
+                          SystemDictionary::loader_name(probe->loader_data(i)));
           }
         }
       }
       // Remove entries no longer alive from loader array
       int n = 0;
       while (n < probe->num_loaders()) {
-        if (probe->loader(n) != NULL) {
-          if (!is_alive->do_object_b(probe->loader(n))) {
+        if (probe->loader_data(n)->is_unloading()) {
             if (TraceLoaderConstraints) {
               ResourceMark rm;
               tty->print_cr("[Purging loader %s from constraint for name %s",
-                            SystemDictionary::loader_name(probe->loader(n)),
+                          SystemDictionary::loader_name(probe->loader_data(n)),
                             probe->name()->as_C_string()
                             );
             }
@@ -136,22 +137,21 @@
             // Compact array
             int num = probe->num_loaders() - 1;
             probe->set_num_loaders(num);
-            probe->set_loader(n, probe->loader(num));
-            probe->set_loader(num, NULL);
+          probe->set_loader_data(n, probe->loader_data(num));
+          probe->set_loader_data(num, NULL);
 
             if (TraceLoaderConstraints) {
               ResourceMark rm;
               tty->print_cr("[New loader list:");
               for (int i = 0; i < probe->num_loaders(); i++) {
                 tty->print_cr("[   [%d]: %s", i,
-                              SystemDictionary::loader_name(probe->loader(i)));
+                            SystemDictionary::loader_name(probe->loader_data(i)));
               }
             }
 
             continue;  // current element replaced, so restart without
                        // incrementing n
           }
-        }
         n++;
       }
       // Check whether entry should be purged
@@ -169,12 +169,9 @@
       } else {
 #ifdef ASSERT
         if (probe->klass() != NULL) {
-          assert(is_alive->do_object_b(probe->klass()), "klass should be live");
-        }
-        for (n = 0; n < probe->num_loaders(); n++) {
-          if (probe->loader(n) != NULL) {
-            assert(is_alive->do_object_b(probe->loader(n)), "loader should be live");
-          }
+          ClassLoaderData* loader_data =
+            probe->klass()->class_loader_data();
+          assert(!loader_data->is_unloading(), "klass should be live");
         }
 #endif
         // Go to next entry
@@ -185,14 +182,14 @@
 }
 
 bool LoaderConstraintTable::add_entry(Symbol* class_name,
-                                      klassOop klass1, Handle class_loader1,
-                                      klassOop klass2, Handle class_loader2) {
+                                      Klass* klass1, Handle class_loader1,
+                                      Klass* klass2, Handle class_loader2) {
   int failure_code = 0; // encode different reasons for failing
 
   if (klass1 != NULL && klass2 != NULL && klass1 != klass2) {
     failure_code = 1;
   } else {
-    klassOop klass = klass1 != NULL ? klass1 : klass2;
+    Klass* klass = klass1 != NULL ? klass1 : klass2;
 
     LoaderConstraintEntry** pp1 = find_loader_constraint(class_name,
                                                          class_loader1);
@@ -224,7 +221,7 @@
         int index = hash_to_index(hash);
         LoaderConstraintEntry* p;
         p = new_entry(hash, class_name, klass, 2, 2);
-        p->set_loaders(NEW_C_HEAP_ARRAY(oop, 2, mtClass));
+        p->set_loaders(NEW_C_HEAP_ARRAY(ClassLoaderData*, 2, mtClass));
         p->set_loader(0, class_loader1());
         p->set_loader(1, class_loader2());
         p->set_klass(klass);
@@ -319,11 +316,11 @@
   }
 }
 
-klassOop LoaderConstraintTable::find_constrained_klass(Symbol* name,
+Klass* LoaderConstraintTable::find_constrained_klass(Symbol* name,
                                                        Handle loader) {
   LoaderConstraintEntry *p = *(find_loader_constraint(name, loader));
   if (p != NULL && p->klass() != NULL) {
-    if (Klass::cast(p->klass())->oop_is_instance() && !instanceKlass::cast(p->klass())->is_loaded()) {
+    if (Klass::cast(p->klass())->oop_is_instance() && !InstanceKlass::cast(p->klass())->is_loaded()) {
       // Only return fully loaded classes.  Classes found through the
       // constraints might still be in the process of loading.
       return NULL;
@@ -340,10 +337,10 @@
                                                     int nfree) {
     if (p->max_loaders() - p->num_loaders() < nfree) {
         int n = nfree + p->num_loaders();
-        oop* new_loaders = NEW_C_HEAP_ARRAY(oop, n, mtClass);
-        memcpy(new_loaders, p->loaders(), sizeof(oop) * p->num_loaders());
+        ClassLoaderData** new_loaders = NEW_C_HEAP_ARRAY(ClassLoaderData*, n, mtClass);
+        memcpy(new_loaders, p->loaders(), sizeof(ClassLoaderData*) * p->num_loaders());
         p->set_max_loaders(n);
-        FREE_C_HEAP_ARRAY(oop, p->loaders(), mtClass);
+        FREE_C_HEAP_ARRAY(ClassLoaderData*, p->loaders(), mtClass);
         p->set_loaders(new_loaders);
     }
 }
@@ -351,7 +348,7 @@
 
 void LoaderConstraintTable::extend_loader_constraint(LoaderConstraintEntry* p,
                                                      Handle loader,
-                                                     klassOop klass) {
+                                                     Klass* klass) {
   ensure_loader_constraint_capacity(p, 1);
   int num = p->num_loaders();
   p->set_loader(num, loader());
@@ -376,7 +373,7 @@
 void LoaderConstraintTable::merge_loader_constraints(
                                                    LoaderConstraintEntry** pp1,
                                                    LoaderConstraintEntry** pp2,
-                                                   klassOop klass) {
+                                                   Klass* klass) {
   // make sure *pp1 has higher capacity
   if ((*pp1)->max_loaders() < (*pp2)->max_loaders()) {
     LoaderConstraintEntry** tmp = pp2;
@@ -391,7 +388,7 @@
 
   for (int i = 0; i < p2->num_loaders(); i++) {
     int num = p1->num_loaders();
-    p1->set_loader(num, p2->loader(i));
+    p1->set_loader_data(num, p2->loader_data(i));
     p1->set_num_loaders(num + 1);
   }
 
@@ -403,7 +400,7 @@
 
     for (int i = 0; i < p1->num_loaders(); i++) {
       tty->print_cr("[   [%d]: %s", i,
-                    SystemDictionary::loader_name(p1->loader(i)));
+                    SystemDictionary::loader_name(p1->loader_data(i)));
     }
     if (p1->klass() == NULL) {
       tty->print_cr("[... and setting class object]");
@@ -439,33 +436,33 @@
                                 probe != NULL;
                                 probe = probe->next()) {
       if (probe->klass() != NULL) {
-        instanceKlass* ik = instanceKlass::cast(probe->klass());
+        InstanceKlass* ik = InstanceKlass::cast(probe->klass());
         guarantee(ik->name() == probe->name(), "name should match");
         Symbol* name = ik->name();
-        Handle loader(thread, ik->class_loader());
-        unsigned int d_hash = dictionary->compute_hash(name, loader);
+        ClassLoaderData* loader_data = ik->class_loader_data();
+        unsigned int d_hash = dictionary->compute_hash(name, loader_data);
         int d_index = dictionary->hash_to_index(d_hash);
-        klassOop k = dictionary->find_class(d_index, d_hash, name, loader);
+        Klass* k = dictionary->find_class(d_index, d_hash, name, loader_data);
         if (k != NULL) {
           // We found the class in the system dictionary, so we should
-          // make sure that the klassOop matches what we already have.
+          // make sure that the Klass* matches what we already have.
           guarantee(k == probe->klass(), "klass should be in dictionary");
         } else {
           // If we don't find the class in the system dictionary, it
           // has to be in the placeholders table.
-          unsigned int p_hash = placeholders->compute_hash(name, loader);
+          unsigned int p_hash = placeholders->compute_hash(name, loader_data);
           int p_index = placeholders->hash_to_index(p_hash);
           PlaceholderEntry* entry = placeholders->get_entry(p_index, p_hash,
-                                                            name, loader);
+                                                            name, loader_data);
 
-          // The instanceKlass might not be on the entry, so the only
+          // The InstanceKlass might not be on the entry, so the only
           // thing we can check here is whether we were successful in
           // finding the class in the placeholders table.
           guarantee(entry != NULL, "klass should be in the placeholders");
         }
       }
       for (int n = 0; n< probe->num_loaders(); n++) {
-        guarantee(probe->loader(n)->is_oop_or_null(), "should be oop");
+        assert(ClassLoaderDataGraph::contains_loader_data(probe->loader_data(n)), "The loader is missing");
       }
     }
   }
@@ -487,7 +484,7 @@
       probe->name()->print();
       tty->print(" , loaders:");
       for (int n = 0; n < probe->num_loaders(); n++) {
-        probe->loader(n)->print_value();
+        probe->loader_data(n)->print_value();
         tty->print(", ");
       }
       tty->cr();
--- a/src/share/vm/classfile/loaderConstraints.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/loaderConstraints.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -30,8 +30,9 @@
 #include "utilities/hashtable.hpp"
 
 class LoaderConstraintEntry;
+class Symbol;
 
-class LoaderConstraintTable : public Hashtable<klassOop, mtClass> {
+class LoaderConstraintTable : public Hashtable<Klass*, mtClass> {
   friend class VMStructs;
 private:
 
@@ -48,45 +49,45 @@
   LoaderConstraintTable(int nof_buckets);
 
   LoaderConstraintEntry* new_entry(unsigned int hash, Symbol* name,
-                                   klassOop klass, int num_loaders,
+                                   Klass* klass, int num_loaders,
                                    int max_loaders);
   void free_entry(LoaderConstraintEntry *entry);
 
   LoaderConstraintEntry* bucket(int i) {
-    return (LoaderConstraintEntry*)Hashtable<klassOop, mtClass>::bucket(i);
+    return (LoaderConstraintEntry*)Hashtable<Klass*, mtClass>::bucket(i);
   }
 
   LoaderConstraintEntry** bucket_addr(int i) {
-    return (LoaderConstraintEntry**)Hashtable<klassOop, mtClass>::bucket_addr(i);
+    return (LoaderConstraintEntry**)Hashtable<Klass*, mtClass>::bucket_addr(i);
   }
 
-  // GC support
-  void oops_do(OopClosure* f);
+  // Enhanced Class Redefinition support
+  void classes_do(KlassClosure* f);
 
   // Check class loader constraints
-  bool add_entry(Symbol* name, klassOop klass1, Handle loader1,
-                                    klassOop klass2, Handle loader2);
+  bool add_entry(Symbol* name, Klass* klass1, Handle loader1,
+                                    Klass* klass2, Handle loader2);
 
   // Note:  The main entry point for this module is via SystemDictionary.
   // SystemDictionary::check_signature_loaders(Symbol* signature,
   //                                           Handle loader1, Handle loader2,
   //                                           bool is_method, TRAPS)
 
-  klassOop find_constrained_klass(Symbol* name, Handle loader);
+  Klass* find_constrained_klass(Symbol* name, Handle loader);
 
   // Class loader constraints
 
   void ensure_loader_constraint_capacity(LoaderConstraintEntry *p, int nfree);
   void extend_loader_constraint(LoaderConstraintEntry* p, Handle loader,
-                                klassOop klass);
+                                Klass* klass);
   void merge_loader_constraints(LoaderConstraintEntry** pp1,
-                                LoaderConstraintEntry** pp2, klassOop klass);
+                                LoaderConstraintEntry** pp2, Klass* klass);
 
   bool check_or_update(instanceKlassHandle k, Handle loader,
                               Symbol* name);
 
 
-  void purge_loader_constraints(BoolObjectClosure* is_alive);
+  void purge_loader_constraints();
 
   void verify(Dictionary* dictionary, PlaceholderTable* placeholders);
 #ifndef PRODUCT
@@ -94,29 +95,32 @@
 #endif
 };
 
-class LoaderConstraintEntry : public HashtableEntry<klassOop, mtClass> {
+class LoaderConstraintEntry : public HashtableEntry<Klass*, mtClass> {
   friend class VMStructs;
 private:
   Symbol*                _name;                   // class name
   int                    _num_loaders;
   int                    _max_loaders;
-  oop*                   _loaders;                // initiating loaders
+  // Loader constraints enforce correct linking behavior.
+  // Thus, it really operates on ClassLoaderData which represents linking domain,
+  // not class loaders.
+  ClassLoaderData**              _loaders;                // initiating loaders
 
 public:
 
-  klassOop klass() { return literal(); }
-  klassOop* klass_addr() { return literal_addr(); }
-  void set_klass(klassOop k) { set_literal(k); }
+  Klass* klass() { return literal(); }
+  Klass** klass_addr() { return literal_addr(); }
+  void set_klass(Klass* k) { set_literal(k); }
 
   LoaderConstraintEntry* next() {
-    return (LoaderConstraintEntry*)HashtableEntry<klassOop, mtClass>::next();
+    return (LoaderConstraintEntry*)HashtableEntry<Klass*, mtClass>::next();
   }
 
   LoaderConstraintEntry** next_addr() {
-    return (LoaderConstraintEntry**)HashtableEntry<klassOop, mtClass>::next_addr();
+    return (LoaderConstraintEntry**)HashtableEntry<Klass*, mtClass>::next_addr();
   }
   void set_next(LoaderConstraintEntry* next) {
-    HashtableEntry<klassOop, mtClass>::set_next(next);
+    HashtableEntry<Klass*, mtClass>::set_next(next);
   }
 
   Symbol* name() { return _name; }
@@ -131,13 +135,13 @@
   int max_loaders() { return _max_loaders; }
   void set_max_loaders(int i) { _max_loaders = i; }
 
-  oop* loaders() { return _loaders; }
-  void set_loaders(oop* loaders) { _loaders = loaders; }
+  ClassLoaderData** loaders() { return _loaders; }
+  void set_loaders(ClassLoaderData** loaders) { _loaders = loaders; }
 
-  oop loader(int i) { return _loaders[i]; }
-  oop* loader_addr(int i) { return &_loaders[i]; }
-  void set_loader(int i, oop p) { _loaders[i] = p; }
-
+  ClassLoaderData* loader_data(int i) { return _loaders[i]; }
+  void set_loader_data(int i, ClassLoaderData* p) { _loaders[i] = p; }
+  // convenience
+  void set_loader(int i, oop p);
 };
 
 #endif // SHARE_VM_CLASSFILE_LOADERCONSTRAINTS_HPP
--- a/src/share/vm/classfile/placeholders.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/placeholders.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -32,12 +32,13 @@
 // Placeholder methods
 
 PlaceholderEntry* PlaceholderTable::new_entry(int hash, Symbol* name,
-                                              oop loader, bool havesupername,
+                                              ClassLoaderData* loader_data,
+                                              bool havesupername,
                                               Symbol* supername) {
   PlaceholderEntry* entry = (PlaceholderEntry*)Hashtable<Symbol*, mtClass>::new_entry(hash, name);
   // Hashtable with Symbol* literal must increment and decrement refcount.
   name->increment_refcount();
-  entry->set_loader(loader);
+  entry->set_loader_data(loader_data);
   entry->set_havesupername(havesupername);
   entry->set_supername(supername);
   entry->set_superThreadQ(NULL);
@@ -61,14 +62,14 @@
 // SystemDictionary_lock, so we don't need special precautions
 // on store ordering here.
 void PlaceholderTable::add_entry(int index, unsigned int hash,
-                                 Symbol* class_name, Handle class_loader,
+                                 Symbol* class_name, ClassLoaderData* loader_data,
                                  bool havesupername, Symbol* supername){
   assert_locked_or_safepoint(SystemDictionary_lock);
   assert(class_name != NULL, "adding NULL obj");
 
   // Both readers and writers are locked so it's safe to just
   // create the placeholder and insert it in the list without a membar.
-  PlaceholderEntry* entry = new_entry(hash, class_name, class_loader(), havesupername, supername);
+  PlaceholderEntry* entry = new_entry(hash, class_name, loader_data, havesupername, supername);
   add_entry(index, entry);
 }
 
@@ -76,12 +77,12 @@
 // Remove a placeholder object.
 void PlaceholderTable::remove_entry(int index, unsigned int hash,
                                     Symbol* class_name,
-                                    Handle class_loader) {
+                                    ClassLoaderData* loader_data) {
   assert_locked_or_safepoint(SystemDictionary_lock);
   PlaceholderEntry** p = bucket_addr(index);
   while (*p) {
     PlaceholderEntry *probe = *p;
-    if (probe->hash() == hash && probe->equals(class_name, class_loader())) {
+    if (probe->hash() == hash && probe->equals(class_name, loader_data)) {
       // Delete entry
       *p = probe->next();
       free_entry(probe);
@@ -93,16 +94,14 @@
 
 PlaceholderEntry* PlaceholderTable::get_entry(int index, unsigned int hash,
                                        Symbol* class_name,
-                                       Handle class_loader) {
+                                       ClassLoaderData* loader_data) {
   assert_locked_or_safepoint(SystemDictionary_lock);
 
-  oop class_loader_ = class_loader();
-
   for (PlaceholderEntry *place_probe = bucket(index);
                          place_probe != NULL;
                          place_probe = place_probe->next()) {
     if (place_probe->hash() == hash &&
-        place_probe->equals(class_name, class_loader_)) {
+        place_probe->equals(class_name, loader_data)) {
       return place_probe;
     }
   }
@@ -111,8 +110,8 @@
 
 Symbol* PlaceholderTable::find_entry(int index, unsigned int hash,
                                        Symbol* class_name,
-                                       Handle class_loader) {
-  PlaceholderEntry* probe = get_entry(index, hash, class_name, class_loader);
+                                       ClassLoaderData* loader_data) {
+  PlaceholderEntry* probe = get_entry(index, hash, class_name, loader_data);
   return (probe? probe->klassname(): (Symbol*)NULL);
 }
 
@@ -121,12 +120,17 @@
   // If entry exists, reuse entry
   // For both, push SeenThread for classloadAction
   // if havesupername: this is used for circularity for instanceklass loading
-PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash, Symbol* name, Handle loader, classloadAction action, Symbol* supername, Thread* thread) {
-  PlaceholderEntry* probe = get_entry(index, hash, name, loader);
+PlaceholderEntry* PlaceholderTable::find_and_add(int index, unsigned int hash,
+                                                 Symbol* name,
+                                                 ClassLoaderData* loader_data,
+                                                 classloadAction action,
+                                                 Symbol* supername,
+                                                 Thread* thread) {
+  PlaceholderEntry* probe = get_entry(index, hash, name, loader_data);
   if (probe == NULL) {
     // Nothing found, add place holder
-    add_entry(index, hash, name, loader, (action == LOAD_SUPER), supername);
-    probe = get_entry(index, hash, name, loader);
+    add_entry(index, hash, name, loader_data, (action == LOAD_SUPER), supername);
+    probe = get_entry(index, hash, name, loader_data);
   } else {
     if (action == LOAD_SUPER) {
       probe->set_havesupername(true);
@@ -153,14 +157,14 @@
 // Therefore - must always check SD first
 // Ignores the case where entry is not found
 void PlaceholderTable::find_and_remove(int index, unsigned int hash,
-                       Symbol* name, Handle loader, Thread* thread) {
+                       Symbol* name, ClassLoaderData* loader_data, Thread* thread) {
     assert_locked_or_safepoint(SystemDictionary_lock);
-    PlaceholderEntry *probe = get_entry(index, hash, name, loader);
+    PlaceholderEntry *probe = get_entry(index, hash, name, loader_data);
     if (probe != NULL) {
        // No other threads using this entry
        if ((probe->superThreadQ() == NULL) && (probe->loadInstanceThreadQ() == NULL)
           && (probe->defineThreadQ() == NULL) && (probe->definer() == NULL)) {
-         remove_entry(index, hash, name, loader);
+         remove_entry(index, hash, name, loader_data);
        }
     }
   }
@@ -170,34 +174,31 @@
 }
 
 
-void PlaceholderTable::oops_do(OopClosure* f) {
+void PlaceholderTable::classes_do(KlassClosure* f) {
   for (int index = 0; index < table_size(); index++) {
     for (PlaceholderEntry* probe = bucket(index);
                            probe != NULL;
                            probe = probe->next()) {
-      probe->oops_do(f);
+      probe->classes_do(f);
     }
   }
 }
 
 
-void PlaceholderEntry::oops_do(OopClosure* blk) {
+void PlaceholderEntry::classes_do(KlassClosure* closure) {
   assert(klassname() != NULL, "should have a non-null klass");
-  if (_loader != NULL) {
-    blk->do_oop(loader_addr());
-  }
   if (_instanceKlass != NULL) {
-    blk->do_oop((oop*)instanceKlass_addr());
+    closure->do_klass(InstanceKlass());
   }
 }
 
 // do all entries in the placeholder table
-void PlaceholderTable::entries_do(void f(Symbol*, oop)) {
+void PlaceholderTable::entries_do(void f(Symbol*)) {
   for (int index = 0; index < table_size(); index++) {
     for (PlaceholderEntry* probe = bucket(index);
                            probe != NULL;
                            probe = probe->next()) {
-      f(probe->klassname(), probe->loader());
+      f(probe->klassname());
     }
   }
 }
@@ -207,9 +208,9 @@
 // Note, doesn't append a cr
 void PlaceholderEntry::print() const {
   klassname()->print_value();
-  if (loader() != NULL) {
+  if (loader_data() != NULL) {
     tty->print(", loader ");
-    loader()->print_value();
+    loader_data()->print_value();
   }
   if (supername() != NULL) {
     tty->print(", supername ");
@@ -219,9 +220,9 @@
     tty->print(", definer ");
     definer()->print_value();
   }
-  if (instanceKlass() != NULL) {
-    tty->print(", instanceKlass ");
-    instanceKlass()->print_value();
+  if (InstanceKlass() != NULL) {
+    tty->print(", InstanceKlass ");
+    InstanceKlass()->print_value();
   }
   tty->print("\n");
   tty->print("loadInstanceThreadQ threads:");
@@ -237,11 +238,12 @@
 #endif
 
 void PlaceholderEntry::verify() const {
-  guarantee(loader() == NULL || loader()->is_instance(),
+  guarantee(loader_data() != NULL, "Must have been setup.");
+  guarantee(loader_data()->class_loader() == NULL || loader_data()->class_loader()->is_instance(),
             "checking type of _loader");
-  guarantee(instanceKlass() == NULL
-            || Klass::cast(instanceKlass())->oop_is_instance(),
-            "checking type of instanceKlass result");
+  guarantee(InstanceKlass() == NULL
+            || Klass::cast(InstanceKlass())->oop_is_instance(),
+            "checking type of InstanceKlass result");
 }
 
 void PlaceholderTable::verify() {
--- a/src/share/vm/classfile/placeholders.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/placeholders.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -40,7 +40,7 @@
 public:
   PlaceholderTable(int table_size);
 
-  PlaceholderEntry* new_entry(int hash, Symbol* name, oop loader, bool havesupername, Symbol* supername);
+  PlaceholderEntry* new_entry(int hash, Symbol* name, ClassLoaderData* loader_data, bool havesupername, Symbol* supername);
   void free_entry(PlaceholderEntry* entry);
 
   PlaceholderEntry* bucket(int i) {
@@ -56,14 +56,14 @@
   }
 
   void add_entry(int index, unsigned int hash, Symbol* name,
-                Handle loader, bool havesupername, Symbol* supername);
+                ClassLoaderData* loader_data, bool havesupername, Symbol* supername);
 
   // This returns a Symbol* to match type for SystemDictionary
   Symbol* find_entry(int index, unsigned int hash,
-                       Symbol* name, Handle loader);
+                       Symbol* name, ClassLoaderData* loader_data);
 
   PlaceholderEntry* get_entry(int index, unsigned int hash,
-                       Symbol* name, Handle loader);
+                       Symbol* name, ClassLoaderData* loader_data);
 
 // caller to create a placeholder entry must enumerate an action
 // caller claims ownership of that action
@@ -85,22 +85,22 @@
   // If no entry exists, add a placeholder entry and push SeenThread
   // If entry exists, reuse entry and push SeenThread for classloadAction
   PlaceholderEntry* find_and_add(int index, unsigned int hash,
-                                 Symbol* name, Handle loader,
+                                 Symbol* name, ClassLoaderData* loader_data,
                                  classloadAction action, Symbol* supername,
                                  Thread* thread);
 
   void remove_entry(int index, unsigned int hash,
-                    Symbol* name, Handle loader);
+                    Symbol* name, ClassLoaderData* loader_data);
 
 // Remove placeholder information
   void find_and_remove(int index, unsigned int hash,
-                       Symbol* name, Handle loader, Thread* thread);
+                       Symbol* name, ClassLoaderData* loader_data, Thread* thread);
 
   // GC support.
-  void oops_do(OopClosure* f);
+  void classes_do(KlassClosure* f);
 
   // JVMTI support
-  void entries_do(void f(Symbol*, oop));
+  void entries_do(void f(Symbol*));
 
 #ifndef PRODUCT
   void print();
@@ -157,11 +157,11 @@
 
 
  private:
-  oop               _loader;        // initiating loader
+  ClassLoaderData*  _loader_data;   // initiating loader
   bool              _havesupername; // distinguish between null supername, and unknown
   Symbol*           _supername;
   Thread*           _definer;       // owner of define token
-  klassOop          _instanceKlass; // instanceKlass from successful define
+  Klass*            _instanceKlass; // InstanceKlass from successful define
   SeenThread*       _superThreadQ;  // doubly-linked queue of Threads loading a superclass for this class
   SeenThread*       _loadInstanceThreadQ;  // loadInstance thread
                                     // can be multiple threads if classloader object lock broken by application
@@ -176,9 +176,8 @@
   // Simple accessors, used only by SystemDictionary
   Symbol*            klassname()           const { return literal(); }
 
-  oop                loader()              const { return _loader; }
-  void               set_loader(oop loader) { _loader = loader; }
-  oop*               loader_addr()         { return &_loader; }
+  ClassLoaderData*   loader_data()         const { return _loader_data; }
+  void               set_loader_data(ClassLoaderData* loader_data) { _loader_data = loader_data; }
 
   bool               havesupername()       const { return _havesupername; }
   void               set_havesupername(bool havesupername) { _havesupername = havesupername; }
@@ -192,9 +191,8 @@
   Thread*            definer()             const {return _definer; }
   void               set_definer(Thread* definer) { _definer = definer; }
 
-  klassOop           instanceKlass()     const {return _instanceKlass; }
-  void               set_instanceKlass(klassOop instanceKlass) { _instanceKlass = instanceKlass; }
-  klassOop*          instanceKlass_addr()   { return &_instanceKlass; }
+  Klass*             InstanceKlass()     const {return _instanceKlass; }
+  void               set_instanceKlass(Klass* InstanceKlass) { _instanceKlass = InstanceKlass; }
 
   SeenThread*        superThreadQ()        const { return _superThreadQ; }
   void               set_superThreadQ(SeenThread* SeenThread) { _superThreadQ = SeenThread; }
@@ -215,8 +213,8 @@
 
   // Test for equality
   // Entries are unique for class/classloader name pair
-  bool equals(Symbol* class_name, oop class_loader) const {
-    return (klassname() == class_name && loader() == class_loader);
+  bool equals(Symbol* class_name, ClassLoaderData* loader) const {
+    return (klassname() == class_name && loader_data() == loader);
   }
 
   SeenThread* actionToQueue(PlaceholderTable::classloadAction action) {
@@ -331,7 +329,7 @@
 
   // GC support
   // Applies "f->do_oop" to all root oops in the placeholder table.
-  void oops_do(OopClosure* blk);
+  void classes_do(KlassClosure* closure);
 
   // Print method doesn't append a cr
   void print() const  PRODUCT_RETURN;
--- a/src/share/vm/classfile/resolutionErrors.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/resolutionErrors.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -64,10 +64,10 @@
 }
 
 // create new error entry
-ResolutionErrorEntry* ResolutionErrorTable::new_entry(int hash, constantPoolOop pool,
+ResolutionErrorEntry* ResolutionErrorTable::new_entry(int hash, ConstantPool* pool,
                                                       int cp_index, Symbol* error)
 {
-  ResolutionErrorEntry* entry = (ResolutionErrorEntry*)Hashtable<constantPoolOop, mtClass>::new_entry(hash, pool);
+  ResolutionErrorEntry* entry = (ResolutionErrorEntry*)Hashtable<ConstantPool*, mtClass>::new_entry(hash, pool);
   entry->set_cp_index(cp_index);
   NOT_PRODUCT(entry->set_error(NULL);)
   entry->set_error(error);
@@ -79,42 +79,46 @@
   // decrement error refcount
   assert(entry->error() != NULL, "error should be set");
   entry->error()->decrement_refcount();
-  Hashtable<constantPoolOop, mtClass>::free_entry(entry);
+  Hashtable<ConstantPool*, mtClass>::free_entry(entry);
 }
 
 
 // create resolution error table
 ResolutionErrorTable::ResolutionErrorTable(int table_size)
-    : Hashtable<constantPoolOop, mtClass>(table_size, sizeof(ResolutionErrorEntry)) {
+    : Hashtable<ConstantPool*, mtClass>(table_size, sizeof(ResolutionErrorEntry)) {
 }
 
-// GC support
-void ResolutionErrorTable::oops_do(OopClosure* f) {
+// RedefineClasses support - remove matching entry of a
+// constant pool that is going away
+void ResolutionErrorTable::delete_entry(ConstantPool* c) {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   for (int i = 0; i < table_size(); i++) {
-    for (ResolutionErrorEntry* probe = bucket(i);
-                           probe != NULL;
-                           probe = probe->next()) {
-      assert(probe->pool() != (constantPoolOop)NULL, "resolution error table is corrupt");
-      assert(probe->error() != (Symbol*)NULL, "resolution error table is corrupt");
-      probe->oops_do(f);
+    for (ResolutionErrorEntry** p = bucket_addr(i); *p != NULL; ) {
+      ResolutionErrorEntry* entry = *p;
+      assert(entry->pool() != NULL, "resolution error table is corrupt");
+      if (entry->pool() == c) {
+        *p = entry->next();
+        free_entry(entry);
+      } else {
+        p = entry->next_addr();
+      }
     }
   }
 }
 
-// GC support
-void ResolutionErrorEntry::oops_do(OopClosure* blk) {
-  blk->do_oop((oop*)pool_addr());
-}
 
 // Remove unloaded entries from the table
-void ResolutionErrorTable::purge_resolution_errors(BoolObjectClosure* is_alive) {
+void ResolutionErrorTable::purge_resolution_errors() {
   assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
   for (int i = 0; i < table_size(); i++) {
     for (ResolutionErrorEntry** p = bucket_addr(i); *p != NULL; ) {
       ResolutionErrorEntry* entry = *p;
-      assert(entry->pool() != (constantPoolOop)NULL, "resolution error table is corrupt");
-      constantPoolOop pool = entry->pool();
-      if (is_alive->do_object_b(pool)) {
+      assert(entry->pool() != (ConstantPool*)NULL, "resolution error table is corrupt");
+      ConstantPool* pool = entry->pool();
+      assert(pool->pool_holder() != NULL, "Constant pool without a class?");
+      ClassLoaderData* loader_data =
+              pool->pool_holder()->class_loader_data();
+      if (!loader_data->is_unloading()) {
         p = entry->next_addr();
       } else {
         *p = entry->next();
--- a/src/share/vm/classfile/resolutionErrors.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/resolutionErrors.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -25,7 +25,7 @@
 #ifndef SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
 #define SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
 
-#include "oops/constantPoolOop.hpp"
+#include "oops/constantPool.hpp"
 #include "utilities/hashtable.hpp"
 
 class ResolutionErrorEntry;
@@ -33,25 +33,25 @@
 // ResolutionError objects are used to record errors encountered during
 // constant pool resolution (JVMS 5.4.3).
 
-class ResolutionErrorTable : public Hashtable<constantPoolOop, mtClass> {
+class ResolutionErrorTable : public Hashtable<ConstantPool*, mtClass> {
 
 public:
   ResolutionErrorTable(int table_size);
 
-  ResolutionErrorEntry* new_entry(int hash, constantPoolOop pool, int cp_index, Symbol* error);
+  ResolutionErrorEntry* new_entry(int hash, ConstantPool* pool, int cp_index, Symbol* error);
   void free_entry(ResolutionErrorEntry *entry);
 
   ResolutionErrorEntry* bucket(int i) {
-    return (ResolutionErrorEntry*)Hashtable<constantPoolOop, mtClass>::bucket(i);
+    return (ResolutionErrorEntry*)Hashtable<ConstantPool*, mtClass>::bucket(i);
   }
 
   ResolutionErrorEntry** bucket_addr(int i) {
-    return (ResolutionErrorEntry**)Hashtable<constantPoolOop, mtClass>::bucket_addr(i);
+    return (ResolutionErrorEntry**)Hashtable<ConstantPool*, mtClass>::bucket_addr(i);
   }
 
   void add_entry(int index, ResolutionErrorEntry* new_entry) {
-    Hashtable<constantPoolOop, mtClass>::add_entry(index,
-      (HashtableEntry<constantPoolOop, mtClass>*)new_entry);
+    Hashtable<ConstantPool*, mtClass>::add_entry(index,
+      (HashtableEntry<ConstantPool*, mtClass>*)new_entry);
   }
 
   void add_entry(int index, unsigned int hash,
@@ -68,21 +68,21 @@
   }
 
   // purges unloaded entries from the table
-  void purge_resolution_errors(BoolObjectClosure* is_alive);
+  void purge_resolution_errors();
 
-  // GC support.
-  void oops_do(OopClosure* f);
+  // RedefineClasses support - remove obsolete constant pool entry
+  void delete_entry(ConstantPool* c);
 };
 
 
-class ResolutionErrorEntry : public HashtableEntry<constantPoolOop, mtClass> {
+class ResolutionErrorEntry : public HashtableEntry<ConstantPool*, mtClass> {
  private:
   int               _cp_index;
   Symbol*           _error;
 
  public:
-  constantPoolOop    pool() const               { return (constantPoolOop)literal(); }
-  constantPoolOop*   pool_addr()                { return (constantPoolOop*)literal_addr(); }
+  ConstantPool*      pool() const               { return (ConstantPool*)literal(); }
+  ConstantPool**   pool_addr()                { return (ConstantPool**)literal_addr(); }
 
   int                cp_index() const           { return _cp_index; }
   void               set_cp_index(int cp_index) { _cp_index = cp_index; }
@@ -91,15 +91,12 @@
   void               set_error(Symbol* e);
 
   ResolutionErrorEntry* next() const {
-    return (ResolutionErrorEntry*)HashtableEntry<constantPoolOop, mtClass>::next();
+    return (ResolutionErrorEntry*)HashtableEntry<ConstantPool*, mtClass>::next();
   }
 
   ResolutionErrorEntry** next_addr() {
-    return (ResolutionErrorEntry**)HashtableEntry<constantPoolOop, mtClass>::next_addr();
+    return (ResolutionErrorEntry**)HashtableEntry<ConstantPool*, mtClass>::next_addr();
   }
-
-  // GC support
-  void oops_do(OopClosure* blk);
 };
 
 #endif // SHARE_VM_CLASSFILE_RESOLUTIONERRORS_HPP
--- a/src/share/vm/classfile/stackMapFrame.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/stackMapFrame.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -27,7 +27,7 @@
 
 #include "classfile/verificationType.hpp"
 #include "classfile/verifier.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/signature.hpp"
 #include "utilities/exceptions.hpp"
--- a/src/share/vm/classfile/stackMapTable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/stackMapTable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,8 +28,8 @@
 #include "classfile/stackMapFrame.hpp"
 #include "classfile/verifier.hpp"
 #include "memory/allocation.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/method.hpp"
 #include "utilities/globalDefinitions.hpp"
 #ifdef TARGET_ARCH_x86
 # include "bytes_x86.hpp"
@@ -99,23 +99,23 @@
 
 class StackMapStream : StackObj {
  private:
-  typeArrayHandle _data;
+  Array<u1>* _data;
   int _index;
  public:
-  StackMapStream(typeArrayHandle ah)
+  StackMapStream(Array<u1>* ah)
     : _data(ah), _index(0) {
   }
   u1 get_u1(TRAPS) {
     if (_data == NULL || _index >= _data->length()) {
       stackmap_format_error("access beyond the end of attribute", CHECK_0);
     }
-    return _data->byte_at(_index++);
+    return _data->at(_index++);
   }
   u2 get_u2(TRAPS) {
     if (_data == NULL || _index >= _data->length() - 1) {
       stackmap_format_error("access beyond the end of attribute", CHECK_0);
     }
-    u2 res = Bytes::get_Java_u2((u1*)_data->byte_at_addr(_index));
+    u2 res = Bytes::get_Java_u2(_data->adr_at(_index));
     _index += 2;
     return res;
   }
--- a/src/share/vm/classfile/symbolTable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/symbolTable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -48,15 +48,19 @@
   assert (len <= Symbol::max_length(), "should be checked by caller");
 
   Symbol* sym;
-  // Allocate symbols in the C heap when dumping shared spaces in case there
-  // are temporary symbols we can remove.
-  if (c_heap || DumpSharedSpaces) {
+
+  if (c_heap) {
     // refcount starts as 1
+    assert(!DumpSharedSpaces, "never allocate to C heap");
     sym = new (len, THREAD) Symbol(name, len, 1);
+    assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted");
+  } else {
+    if (DumpSharedSpaces) {
+      sym = new (len, ClassLoaderData::the_null_class_loader_data(), THREAD) Symbol(name, len, -1);
   } else {
     sym = new (len, arena(), THREAD) Symbol(name, len, -1);
   }
-  assert(sym != NULL, "new should call vm_exit_out_of_memory if C_HEAP is exhausted");
+  }
   return sym;
 }
 
@@ -102,7 +106,7 @@
         break;
       }
       Symbol* s = entry->literal();
-      memory_total += s->object_size();
+      memory_total += s->size();
       total++;
       assert(s != NULL, "just checking");
       // If reference count is zero, remove.
@@ -302,7 +306,7 @@
   }
 }
 
-void SymbolTable::add(Handle class_loader, constantPoolHandle cp,
+void SymbolTable::add(ClassLoaderData* loader_data, constantPoolHandle cp,
                       int names_count,
                       const char** names, int* lengths, int* cp_indices,
                       unsigned int* hashValues, TRAPS) {
@@ -310,13 +314,13 @@
   MutexLocker ml(SymbolTable_lock, THREAD);
 
   SymbolTable* table = the_table();
-  bool added = table->basic_add(class_loader, cp, names_count, names, lengths,
+  bool added = table->basic_add(loader_data, cp, names_count, names, lengths,
                                 cp_indices, hashValues, CHECK);
   if (!added) {
     // do it the hard way
     for (int i=0; i<names_count; i++) {
       int index = table->hash_to_index(hashValues[i]);
-      bool c_heap = class_loader() != NULL;
+      bool c_heap = !loader_data->is_the_null_class_loader_data();
       Symbol* sym = table->basic_add(index, (u1*)names[i], lengths[i], hashValues[i], c_heap, CHECK);
       cp->symbol_at_put(cp_indices[i], sym);
     }
@@ -383,7 +387,7 @@
 
 // This version of basic_add adds symbols in batch from the constant pool
 // parsing.
-bool SymbolTable::basic_add(Handle class_loader, constantPoolHandle cp,
+bool SymbolTable::basic_add(ClassLoaderData* loader_data, constantPoolHandle cp,
                             int names_count,
                             const char** names, int* lengths,
                             int* cp_indices, unsigned int* hashValues,
@@ -421,7 +425,7 @@
     } else {
       // Create a new symbol.  The null class loader is never unloaded so these
       // are allocated specially in a permanent arena.
-      bool c_heap = class_loader() != NULL;
+      bool c_heap = !loader_data->is_the_null_class_loader_data();
       Symbol* sym = allocate_symbol((const u1*)names[i], lengths[i], c_heap, CHECK_(false));
       assert(sym->equals(names[i], lengths[i]), "symbol must be properly initialized");  // why wouldn't it be???
       HashtableEntry<Symbol*, mtSymbol>* entry = new_entry(hashValue, sym);
@@ -490,7 +494,7 @@
   for (i = 0; i < the_table()->table_size(); i++) {
     HashtableEntry<Symbol*, mtSymbol>* p = the_table()->bucket(i);
     for ( ; p != NULL; p = p->next()) {
-      memory_total += p->literal()->object_size();
+      memory_total += p->literal()->size();
       count++;
       int counter = p->literal()->utf8_length();
       total += counter;
@@ -695,10 +699,10 @@
 
   Handle string;
   // try to reuse the string if possible
-  if (!string_or_null.is_null() && (!JavaObjectsInPerm || string_or_null()->is_perm())) {
+  if (!string_or_null.is_null()) {
     string = string_or_null;
   } else {
-    string = java_lang_String::create_tenured_from_unicode(name, len, CHECK_NULL);
+    string = java_lang_String::create_from_unicode(name, len, CHECK_NULL);
   }
 
   // Grab the StringTable_lock before getting the_table() because it could
@@ -797,7 +801,6 @@
     for ( ; p != NULL; p = p->next()) {
       oop s = p->literal();
       guarantee(s != NULL, "interned string is NULL");
-      guarantee(s->is_perm() || !JavaObjectsInPerm, "interned string not in permspace");
       unsigned int h = java_lang_String::hash_string(s);
       guarantee(p->hash() == h, "broken hash in string table entry");
       guarantee(the_table()->hash_to_index(h) == i,
--- a/src/share/vm/classfile/symbolTable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/symbolTable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -94,17 +94,17 @@
   // Adding elements
   Symbol* basic_add(int index, u1* name, int len, unsigned int hashValue,
                     bool c_heap, TRAPS);
-
-  bool basic_add(Handle class_loader, constantPoolHandle cp, int names_count,
+  bool basic_add(ClassLoaderData* loader_data,
+                 constantPoolHandle cp, int names_count,
                  const char** names, int* lengths, int* cp_indices,
                  unsigned int* hashValues, TRAPS);
 
-  static void new_symbols(Handle class_loader, constantPoolHandle cp,
-                          int names_count,
+  static void new_symbols(ClassLoaderData* loader_data,
+                          constantPoolHandle cp, int names_count,
                           const char** name, int* lengths,
                           int* cp_indices, unsigned int* hashValues,
                           TRAPS) {
-    add(class_loader, cp, names_count, name, lengths, cp_indices, hashValues, THREAD);
+    add(loader_data, cp, names_count, name, lengths, cp_indices, hashValues, THREAD);
   }
 
   // Table size
@@ -170,7 +170,8 @@
   static Symbol* lookup_unicode(const jchar* name, int len, TRAPS);
   static Symbol* lookup_only_unicode(const jchar* name, int len, unsigned int& hash);
 
-  static void add(Handle class_loader, constantPoolHandle cp, int names_count,
+  static void add(ClassLoaderData* loader_data,
+                  constantPoolHandle cp, int names_count,
                   const char** names, int* lengths, int* cp_indices,
                   unsigned int* hashValues, TRAPS);
 
--- a/src/share/vm/classfile/systemDictionary.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/systemDictionary.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/classLoaderData.inline.hpp"
 #include "classfile/dictionary.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/loaderConstraints.hpp"
@@ -38,7 +39,7 @@
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceRefKlass.hpp"
 #include "oops/klass.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
@@ -71,10 +72,10 @@
 
 oop         SystemDictionary::_system_loader_lock_obj     =  NULL;
 
-klassOop    SystemDictionary::_well_known_klasses[SystemDictionary::WKID_LIMIT]
+Klass*      SystemDictionary::_well_known_klasses[SystemDictionary::WKID_LIMIT]
                                                           =  { NULL /*, NULL...*/ };
 
-klassOop    SystemDictionary::_box_klasses[T_VOID+1]      =  { NULL /*, NULL...*/ };
+Klass*      SystemDictionary::_box_klasses[T_VOID+1]      =  { NULL /*, NULL...*/ };
 
 oop         SystemDictionary::_java_system_loader         =  NULL;
 
@@ -82,7 +83,7 @@
 bool        SystemDictionary::_has_checkPackageAccess     =  false;
 
 // lazily initialized klass variables
-volatile klassOop    SystemDictionary::_abstract_ownable_synchronizer_klass = NULL;
+Klass* volatile SystemDictionary::_abstract_ownable_synchronizer_klass = NULL;
 
 
 // ----------------------------------------------------------------------------
@@ -105,6 +106,11 @@
 }
 
 
+ClassLoaderData* SystemDictionary::register_loader(Handle class_loader) {
+  if (class_loader() == NULL) return ClassLoaderData::the_null_class_loader_data();
+  return ClassLoaderDataGraph::find_or_create(class_loader);
+}
+
 // ----------------------------------------------------------------------------
 // debugging
 
@@ -145,8 +151,8 @@
 
 // Forwards to resolve_or_null
 
-klassOop SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) {
-  klassOop klass = resolve_or_null(class_name, class_loader, protection_domain, THREAD);
+Klass* SystemDictionary::resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS) {
+  Klass* klass = resolve_or_null(class_name, class_loader, protection_domain, THREAD);
   if (HAS_PENDING_EXCEPTION || klass == NULL) {
     KlassHandle k_h(THREAD, klass);
     // can return a null klass
@@ -155,7 +161,7 @@
   return klass;
 }
 
-klassOop SystemDictionary::handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) {
+Klass* SystemDictionary::handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS) {
   if (HAS_PENDING_EXCEPTION) {
     // If we have a pending exception we forward it to the caller, unless throw_error is true,
     // in which case we have to check whether the pending exception is a ClassNotFoundException,
@@ -180,11 +186,11 @@
       THROW_MSG_0(vmSymbols::java_lang_ClassNotFoundException(), class_name->as_C_string());
     }
   }
-  return (klassOop)klass_h();
+  return (Klass*)klass_h();
 }
 
 
-klassOop SystemDictionary::resolve_or_fail(Symbol* class_name,
+Klass* SystemDictionary::resolve_or_fail(Symbol* class_name,
                                            bool throw_error, TRAPS)
 {
   return resolve_or_fail(class_name, Handle(), Handle(), throw_error, THREAD);
@@ -193,11 +199,11 @@
 
 // Forwards to resolve_instance_class_or_null
 
-klassOop SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
+Klass* SystemDictionary::resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS) {
   assert(!THREAD->is_Compiler_thread(),
          err_msg("can not load classes with compiler thread: class=%s, classloader=%s",
                  class_name->as_C_string(),
-                 class_loader.is_null() ? "null" : class_loader->klass()->klass_part()->name()->as_C_string()));
+                 class_loader.is_null() ? "null" : class_loader->klass()->name()->as_C_string()));
   if (FieldType::is_array(class_name)) {
     return resolve_array_class_or_null(class_name, class_loader, protection_domain, CHECK_NULL);
   } else if (FieldType::is_obj(class_name)) {
@@ -211,18 +217,18 @@
   }
 }
 
-klassOop SystemDictionary::resolve_or_null(Symbol* class_name, TRAPS) {
+Klass* SystemDictionary::resolve_or_null(Symbol* class_name, TRAPS) {
   return resolve_or_null(class_name, Handle(), Handle(), THREAD);
 }
 
 // Forwards to resolve_instance_class_or_null
 
-klassOop SystemDictionary::resolve_array_class_or_null(Symbol* class_name,
+Klass* SystemDictionary::resolve_array_class_or_null(Symbol* class_name,
                                                        Handle class_loader,
                                                        Handle protection_domain,
                                                        TRAPS) {
   assert(FieldType::is_array(class_name), "must be array");
-  klassOop k = NULL;
+  Klass* k = NULL;
   FieldArrayInfo fd;
   // dimension and object_key in FieldArrayInfo are assigned as a side-effect
   // of this call
@@ -279,7 +285,7 @@
 // Must be called, even if superclass is null, since this is
 // where the placeholder entry is created which claims this
 // thread is loading this class/classloader.
-klassOop SystemDictionary::resolve_super_or_fail(Symbol* child_name,
+Klass* SystemDictionary::resolve_super_or_fail(Symbol* child_name,
                                                  Symbol* class_name,
                                                  Handle class_loader,
                                                  Handle protection_domain,
@@ -289,7 +295,7 @@
   // Try to get one of the well-known klasses.
   // They are trusted, and do not participate in circularities.
   if (LinkWellKnownClasses) {
-    klassOop k = find_well_known_klass(class_name);
+    Klass* k = find_well_known_klass(class_name);
     if (k != NULL) {
       return k;
     }
@@ -300,7 +306,7 @@
   // Make sure there's a placeholder for the *child* before resolving.
   // Used as a claim that this thread is currently loading superclass/classloader
   // Used here for ClassCircularity checks and also for heap verification
-  // (every instanceKlass in the heap needs to be in the system dictionary
+  // (every InstanceKlass in the heap needs to be in the system dictionary
   // or have a placeholder).
   // Must check ClassCircularity before checking if super class is already loaded
   //
@@ -311,17 +317,18 @@
   // Bugs 4643874, 4715493
   // compute_hash can have a safepoint
 
-  unsigned int d_hash = dictionary()->compute_hash(child_name, class_loader);
+  ClassLoaderData* loader_data = class_loader_data(class_loader);
+  unsigned int d_hash = dictionary()->compute_hash(child_name, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
-  unsigned int p_hash = placeholders()->compute_hash(child_name, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(child_name, loader_data);
   int p_index = placeholders()->hash_to_index(p_hash);
   // can't throw error holding a lock
   bool child_already_loaded = false;
   bool throw_circularity_error = false;
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    klassOop childk = find_class(d_index, d_hash, child_name, class_loader);
-    klassOop quicksuperk;
+    Klass* childk = find_class(d_index, d_hash, child_name, loader_data);
+    Klass* quicksuperk;
     // to support // loading: if child done loading, just return superclass
     // if class_name, & class_loader don't match:
     // if initial define, SD update will give LinkageError
@@ -329,19 +336,19 @@
     // so we don't throw an exception here.
     // see: nsk redefclass014 & java.lang.instrument Instrument032
     if ((childk != NULL ) && (is_superclass) &&
-       ((quicksuperk = instanceKlass::cast(childk)->super()) != NULL) &&
+       ((quicksuperk = InstanceKlass::cast(childk)->super()) != NULL) &&
 
          ((Klass::cast(quicksuperk)->name() == class_name) &&
             (Klass::cast(quicksuperk)->class_loader()  == class_loader()))) {
            return quicksuperk;
     } else {
-      PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, child_name, class_loader);
+      PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, child_name, loader_data);
       if (probe && probe->check_seen_thread(THREAD, PlaceholderTable::LOAD_SUPER)) {
           throw_circularity_error = true;
       }
     }
     if (!throw_circularity_error) {
-      PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, child_name, class_loader, PlaceholderTable::LOAD_SUPER, class_name, THREAD);
+      PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, child_name, loader_data, PlaceholderTable::LOAD_SUPER, class_name, THREAD);
     }
   }
   if (throw_circularity_error) {
@@ -352,7 +359,7 @@
 // java.lang.Object should have been found above
   assert(class_name != NULL, "null super class for resolving");
   // Resolve the super class or interface, check results on return
-  klassOop superk = NULL;
+  Klass* superk = NULL;
   superk = SystemDictionary::resolve_or_null(class_name,
                                                  class_loader,
                                                  protection_domain,
@@ -365,7 +372,7 @@
   // or on error
   {
   MutexLocker mu(SystemDictionary_lock, THREAD);
-   PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, child_name, class_loader);
+   PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, child_name, loader_data);
    if (probe != NULL) {
       probe->remove_seen_thread(THREAD, PlaceholderTable::LOAD_SUPER);
    }
@@ -394,8 +401,6 @@
     tty->print(" - loading:           "); klass()->print_value_on(tty);             tty->cr();
   }
 
-  assert(class_loader() != NULL, "should not have non-null protection domain for null classloader");
-
   KlassHandle system_loader(THREAD, SystemDictionary::ClassLoader_klass());
   JavaCalls::call_special(&result,
                          class_loader,
@@ -422,8 +427,10 @@
   {
     // We recalculate the entry here -- we've called out to java since
     // the last time it was calculated.
+    ClassLoaderData* loader_data = class_loader_data(class_loader);
+
     Symbol*  kn = klass->name();
-    unsigned int d_hash = dictionary()->compute_hash(kn, class_loader);
+    unsigned int d_hash = dictionary()->compute_hash(kn, loader_data);
     int d_index = dictionary()->hash_to_index(d_hash);
 
     MutexLocker mu(SystemDictionary_lock, THREAD);
@@ -436,7 +443,7 @@
       // SystemDictionary::do_unloading() asserts that classes are only
       // unloaded at a safepoint.
       No_Safepoint_Verifier nosafepoint;
-      dictionary()->add_protection_domain(d_index, d_hash, klass, class_loader,
+      dictionary()->add_protection_domain(d_index, d_hash, klass, loader_data,
                                           protection_domain, THREAD);
     }
   }
@@ -493,17 +500,18 @@
 // Note: must call resolve_super_or_fail even if null super -
 // to force placeholder entry creation for this class for circularity detection
 // Caller must check for pending exception
-// Returns non-null klassOop if other thread has completed load
+// Returns non-null Klass* if other thread has completed load
 // and we are done,
-// If return null klassOop and no pending exception, the caller must load the class
+// If return null Klass* and no pending exception, the caller must load the class
 instanceKlassHandle SystemDictionary::handle_parallel_super_load(
     Symbol* name, Symbol* superclassname, Handle class_loader,
     Handle protection_domain, Handle lockObject, TRAPS) {
 
   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
-  unsigned int d_hash = dictionary()->compute_hash(name, class_loader);
+  ClassLoaderData* loader_data = class_loader_data(class_loader);
+  unsigned int d_hash = dictionary()->compute_hash(name, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
-  unsigned int p_hash = placeholders()->compute_hash(name, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(name, loader_data);
   int p_index = placeholders()->hash_to_index(p_hash);
 
   // superk is not used, resolve_super called for circularity check only
@@ -514,7 +522,7 @@
   // and has not yet finished.
   // In both cases the original caller will clean up the placeholder
   // entry on error.
-  klassOop superk = SystemDictionary::resolve_super_or_fail(name,
+  Klass* superk = SystemDictionary::resolve_super_or_fail(name,
                                                           superclassname,
                                                           class_loader,
                                                           protection_domain,
@@ -525,7 +533,7 @@
   // data structures).
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    placeholders()->find_and_remove(p_index, p_hash, name, class_loader, THREAD);
+    placeholders()->find_and_remove(p_index, p_hash, name, loader_data, THREAD);
     SystemDictionary_lock->notify_all();
   }
 
@@ -534,7 +542,7 @@
  if (!class_loader.is_null() && is_parallelCapable(class_loader)) {
     MutexLocker mu(SystemDictionary_lock, THREAD);
     // Check if classloading completed while we were loading superclass or waiting
-    klassOop check = find_class(d_index, d_hash, name, class_loader);
+    Klass* check = find_class(d_index, d_hash, name, loader_data);
     if (check != NULL) {
       // Klass is already loaded, so just return it
       return(instanceKlassHandle(THREAD, check));
@@ -550,12 +558,12 @@
   while (super_load_in_progress) {
     MutexLocker mu(SystemDictionary_lock, THREAD);
     // Check if classloading completed while we were loading superclass or waiting
-    klassOop check = find_class(d_index, d_hash, name, class_loader);
+    Klass* check = find_class(d_index, d_hash, name, loader_data);
     if (check != NULL) {
       // Klass is already loaded, so just return it
       return(instanceKlassHandle(THREAD, check));
     } else {
-      placeholder = placeholders()->get_entry(p_index, p_hash, name, class_loader);
+      placeholder = placeholders()->get_entry(p_index, p_hash, name, loader_data);
       if (placeholder && placeholder->super_load_in_progress() ){
         // Before UnsyncloadClass:
         // We only get here if the application has released the
@@ -568,7 +576,7 @@
         // This logic has the current thread wait once it has done
         // all the superclass/superinterface loading it can, until
         // the original thread completes the class loading or fails
-        // If it completes we will use the resulting instanceKlass
+        // If it completes we will use the resulting InstanceKlass
         // which we will find below in the systemDictionary.
         // We also get here for parallel bootstrap classloader
         if (class_loader.is_null()) {
@@ -586,19 +594,20 @@
 }
 
 
-klassOop SystemDictionary::resolve_instance_class_or_null(Symbol* name, Handle class_loader, Handle protection_domain, TRAPS) {
+Klass* SystemDictionary::resolve_instance_class_or_null(Symbol* name, Handle class_loader, Handle protection_domain, TRAPS) {
   assert(name != NULL && !FieldType::is_array(name) &&
          !FieldType::is_obj(name), "invalid class name");
 
   // UseNewReflection
   // Fix for 4474172; see evaluation for more details
   class_loader = Handle(THREAD, java_lang_ClassLoader::non_reflection_class_loader(class_loader()));
+  ClassLoaderData *loader_data = register_loader(class_loader);
 
   // Do lookup to see if class already exist and the protection domain
   // has the right access
-  unsigned int d_hash = dictionary()->compute_hash(name, class_loader);
+  unsigned int d_hash = dictionary()->compute_hash(name, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
-  klassOop probe = dictionary()->find(d_index, d_hash, name, class_loader,
+  Klass* probe = dictionary()->find(d_index, d_hash, name, loader_data,
                                       protection_domain, THREAD);
   if (probe != NULL) return probe;
 
@@ -617,7 +626,7 @@
     DoObjectLock = false;
   }
 
-  unsigned int p_hash = placeholders()->compute_hash(name, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(name, loader_data);
   int p_index = placeholders()->hash_to_index(p_hash);
 
   // Class is not in SystemDictionary so we have to do loading.
@@ -636,13 +645,13 @@
 
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    klassOop check = find_class(d_index, d_hash, name, class_loader);
+    Klass* check = find_class(d_index, d_hash, name, loader_data);
     if (check != NULL) {
       // Klass is already loaded, so just return it
       class_has_been_loaded = true;
       k = instanceKlassHandle(THREAD, check);
     } else {
-      placeholder = placeholders()->get_entry(p_index, p_hash, name, class_loader);
+      placeholder = placeholders()->get_entry(p_index, p_hash, name, loader_data);
       if (placeholder && placeholder->super_load_in_progress()) {
          super_load_in_progress = true;
          if (placeholder->havesupername() == true) {
@@ -695,7 +704,7 @@
     {
       MutexLocker mu(SystemDictionary_lock, THREAD);
       if (class_loader.is_null() || !is_parallelCapable(class_loader)) {
-        PlaceholderEntry* oldprobe = placeholders()->get_entry(p_index, p_hash, name, class_loader);
+        PlaceholderEntry* oldprobe = placeholders()->get_entry(p_index, p_hash, name, loader_data);
         if (oldprobe) {
           // only need check_seen_thread once, not on each loop
           // 6341374 java/lang/Instrument with -Xcomp
@@ -715,14 +724,14 @@
                 double_lock_wait(lockObject, THREAD);
               }
               // Check if classloading completed while we were waiting
-              klassOop check = find_class(d_index, d_hash, name, class_loader);
+              Klass* check = find_class(d_index, d_hash, name, loader_data);
               if (check != NULL) {
                 // Klass is already loaded, so just return it
                 k = instanceKlassHandle(THREAD, check);
                 class_has_been_loaded = true;
               }
               // check if other thread failed to load and cleaned up
-              oldprobe = placeholders()->get_entry(p_index, p_hash, name, class_loader);
+              oldprobe = placeholders()->get_entry(p_index, p_hash, name, loader_data);
             }
           }
         }
@@ -732,20 +741,20 @@
       // LOAD_INSTANCE in parallel
       // add placeholder entry even if error - callers will remove on error
       if (!throw_circularity_error && !class_has_been_loaded) {
-        PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, name, class_loader, PlaceholderTable::LOAD_INSTANCE, NULL, THREAD);
+        PlaceholderEntry* newprobe = placeholders()->find_and_add(p_index, p_hash, name, loader_data, PlaceholderTable::LOAD_INSTANCE, NULL, THREAD);
         // For class loaders that do not acquire the classloader object lock,
         // if they did not catch another thread holding LOAD_INSTANCE,
         // need a check analogous to the acquire ObjectLocker/find_class
         // i.e. now that we hold the LOAD_INSTANCE token on loading this class/CL
         // one final check if the load has already completed
         // class loaders holding the ObjectLock shouldn't find the class here
-        klassOop check = find_class(d_index, d_hash, name, class_loader);
+        Klass* check = find_class(d_index, d_hash, name, loader_data);
         if (check != NULL) {
         // Klass is already loaded, so just return it
           k = instanceKlassHandle(THREAD, check);
           class_has_been_loaded = true;
           newprobe->remove_seen_thread(THREAD, PlaceholderTable::LOAD_INSTANCE);
-          placeholders()->find_and_remove(p_index, p_hash, name, class_loader, THREAD);
+          placeholders()->find_and_remove(p_index, p_hash, name, loader_data, THREAD);
           SystemDictionary_lock->notify_all();
         }
       }
@@ -765,7 +774,7 @@
       // If they got a linkageError, check if a parallel class load succeeded.
       // If it did, then for bytecode resolution the specification requires
       // that we return the same result we did for the other thread, i.e. the
-      // successfully loaded instanceKlass
+      // successfully loaded InstanceKlass
       // Should not get here for classloaders that support parallelism
       // with the new cleaner mechanism, even with AllowParallelDefineClass
       // Bootstrap goes through here to allow for an extra guarantee check
@@ -773,7 +782,7 @@
         if (k.is_null() && HAS_PENDING_EXCEPTION
           && PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) {
           MutexLocker mu(SystemDictionary_lock, THREAD);
-          klassOop check = find_class(d_index, d_hash, name, class_loader);
+          Klass* check = find_class(d_index, d_hash, name, loader_data);
           if (check != NULL) {
             // Klass is already loaded, so just use it
             k = instanceKlassHandle(THREAD, check);
@@ -789,10 +798,10 @@
       // calling load_instance_class
       {
         MutexLocker mu(SystemDictionary_lock, THREAD);
-        PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, name, class_loader);
+        PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, name, loader_data);
         if (probe != NULL) {
           probe->remove_seen_thread(THREAD, PlaceholderTable::LOAD_INSTANCE);
-          placeholders()->find_and_remove(p_index, p_hash, name, class_loader, THREAD);
+          placeholders()->find_and_remove(p_index, p_hash, name, loader_data, THREAD);
           SystemDictionary_lock->notify_all();
         }
       }
@@ -824,7 +833,7 @@
         // On error, clean up placeholders
         {
           MutexLocker mu(SystemDictionary_lock, THREAD);
-          placeholders()->find_and_remove(p_index, p_hash, name, class_loader, THREAD);
+          placeholders()->find_and_remove(p_index, p_hash, name, loader_data, THREAD);
           SystemDictionary_lock->notify_all();
         }
         return NULL;
@@ -834,9 +843,9 @@
 
 #ifdef ASSERT
   {
-    Handle loader (THREAD, k->class_loader());
+    ClassLoaderData* loader_data = k->class_loader_data();
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    oop kk = find_class(name, loader);
+    Klass* kk = find_class(name, loader_data);
     assert(kk == k(), "should be present in dictionary");
   }
 #endif
@@ -855,14 +864,14 @@
     // unloaded at a safepoint.
     No_Safepoint_Verifier nosafepoint;
     if (dictionary()->is_valid_protection_domain(d_index, d_hash, name,
-                                                 class_loader,
+                                                 loader_data,
                                                  protection_domain)) {
       return k();
     }
   }
 
   // Verify protection domain. If it fails an exception is thrown
-  validate_protection_domain(k, class_loader, protection_domain, CHECK_(klassOop(NULL)));
+  validate_protection_domain(k, class_loader, protection_domain, CHECK_NULL);
 
   return k();
 }
@@ -879,7 +888,7 @@
 // _dictionary->bucket(index) is read here, so the caller will not see
 // the new entry.
 
-klassOop SystemDictionary::find(Symbol* class_name,
+Klass* SystemDictionary::find(Symbol* class_name,
                                 Handle class_loader,
                                 Handle protection_domain,
                                 TRAPS) {
@@ -889,8 +898,9 @@
   // of the call to resolve_instance_class_or_null().
   // See evaluation 6790209 and 4474172 for more details.
   class_loader = Handle(THREAD, java_lang_ClassLoader::non_reflection_class_loader(class_loader()));
-
-  unsigned int d_hash = dictionary()->compute_hash(class_name, class_loader);
+  ClassLoaderData* loader_data = register_loader(class_loader);
+
+  unsigned int d_hash = dictionary()->compute_hash(class_name, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
 
   {
@@ -901,7 +911,7 @@
     // SystemDictionary::do_unloading() asserts that classes are only
     // unloaded at a safepoint.
     No_Safepoint_Verifier nosafepoint;
-    return dictionary()->find(d_index, d_hash, class_name, class_loader,
+    return dictionary()->find(d_index, d_hash, class_name, loader_data,
                               protection_domain, THREAD);
   }
 }
@@ -909,11 +919,11 @@
 
 // Look for a loaded instance or array klass by name.  Do not do any loading.
 // return NULL in case of error.
-klassOop SystemDictionary::find_instance_or_array_klass(Symbol* class_name,
+Klass* SystemDictionary::find_instance_or_array_klass(Symbol* class_name,
                                                         Handle class_loader,
                                                         Handle protection_domain,
                                                         TRAPS) {
-  klassOop k = NULL;
+  Klass* k = NULL;
   assert(class_name != NULL, "class name must be non NULL");
 
   // Try to get one of the well-known klasses.
@@ -953,7 +963,7 @@
 //  => 60% hit after limit guard, 25% total win rate
 #endif
 
-klassOop SystemDictionary::find_well_known_klass(Symbol* class_name) {
+Klass* SystemDictionary::find_well_known_klass(Symbol* class_name) {
   // A bounds-check on class_name will quickly get a negative result.
   NOT_PRODUCT(find_wkk_calls++);
   if (class_name >= wk_klass_name_limits[0] &&
@@ -961,7 +971,7 @@
     NOT_PRODUCT(find_wkk_probes++);
     vmSymbols::SID sid = vmSymbols::find_sid(class_name);
     if (sid != vmSymbols::NO_SID) {
-      klassOop k = NULL;
+      Klass* k = NULL;
       switch (sid) {
         #define WK_KLASS_CASE(name, symbol, ignore_option) \
         case vmSymbols::VM_SYMBOL_ENUM_NAME(symbol): \
@@ -979,7 +989,7 @@
 // Note: this method is much like resolve_from_stream, but
 // updates no supplemental data structures.
 // TODO consolidate the two methods with a helper routine?
-klassOop SystemDictionary::parse_stream(Symbol* class_name,
+Klass* SystemDictionary::parse_stream(Symbol* class_name,
                                         Handle class_loader,
                                         Handle protection_domain,
                                         ClassFileStream* st,
@@ -1013,12 +1023,14 @@
   // Parsed name could be null if we threw an error before we got far
   // enough along to parse it -- in that case, there is nothing to clean up.
   if (parsed_name != NULL) {
+    ClassLoaderData* loader_data = class_loader_data(class_loader);
+
     unsigned int p_hash = placeholders()->compute_hash(parsed_name,
-                                                       class_loader);
+                                                       loader_data);
     int p_index = placeholders()->hash_to_index(p_hash);
     {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    placeholders()->find_and_remove(p_index, p_hash, parsed_name, class_loader, THREAD);
+    placeholders()->find_and_remove(p_index, p_hash, parsed_name, loader_data, THREAD);
     SystemDictionary_lock->notify_all();
     }
   }
@@ -1026,6 +1038,7 @@
   if (host_klass.not_null() && k.not_null()) {
     assert(EnableInvokeDynamic, "");
     // If it's anonymous, initialize it now, since nobody else will.
+    k->class_loader_data()->record_dependency(host_klass(), CHECK_NULL);
     k->set_host_klass(host_klass());
 
     {
@@ -1038,6 +1051,11 @@
       // But, do not add to system dictionary.
     }
 
+    // Rewrite and patch constant pool here.
+    k->link_class(THREAD);
+    if (cp_patches != NULL) {
+      k->constants()->patch_resolved_references(cp_patches);
+    }
     k->eager_initialize(THREAD);
 
     // notify jvmti
@@ -1046,6 +1064,8 @@
         JvmtiExport::post_class_load((JavaThread *) THREAD, k());
     }
   }
+  assert(host_klass.not_null() || cp_patches == NULL,
+         "cp_patches only found with host_klass");
 
   return k();
 }
@@ -1055,7 +1075,7 @@
 // Note: class_name can be NULL. In that case we do not know the name of
 // the class until we have parsed the stream.
 
-klassOop SystemDictionary::resolve_from_stream(Symbol* class_name,
+Klass* SystemDictionary::resolve_from_stream(Symbol* class_name,
                                                Handle class_loader,
                                                Handle protection_domain,
                                                ClassFileStream* st,
@@ -1069,6 +1089,8 @@
     DoObjectLock = false;
   }
 
+  ClassLoaderData* loader_data = register_loader(class_loader);
+
   // Make sure we are synchronized on the class loader before we proceed
   Handle lockObject = compute_loader_lock_object(class_loader, THREAD);
   check_loader_lock_contention(lockObject, THREAD);
@@ -1125,7 +1147,7 @@
 
     // Add class just loaded
     // If a class loader supports parallel classloading handle parallel define requests
-    // find_or_define_instance_class may return a different instanceKlass
+    // find_or_define_instance_class may return a different InstanceKlass
     if (is_parallelCapable(class_loader)) {
       k = find_or_define_instance_class(class_name, class_loader, k, THREAD);
     } else {
@@ -1140,11 +1162,11 @@
   // find the name).
   if (HAS_PENDING_EXCEPTION && parsed_name != NULL) {
     unsigned int p_hash = placeholders()->compute_hash(parsed_name,
-                                                       class_loader);
+                                                       loader_data);
     int p_index = placeholders()->hash_to_index(p_hash);
     {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    placeholders()->find_and_remove(p_index, p_hash, parsed_name, class_loader, THREAD);
+    placeholders()->find_and_remove(p_index, p_hash, parsed_name, loader_data, THREAD);
     SystemDictionary_lock->notify_all();
     }
     return NULL;
@@ -1156,14 +1178,14 @@
     if (!HAS_PENDING_EXCEPTION) {
       assert(parsed_name != NULL, "parsed_name is still null?");
       Symbol*  h_name    = k->name();
-      Handle h_loader (THREAD, k->class_loader());
+      ClassLoaderData *defining_loader_data = k->class_loader_data();
 
       MutexLocker mu(SystemDictionary_lock, THREAD);
 
-      klassOop check = find_class(parsed_name, class_loader);
+      Klass* check = find_class(parsed_name, loader_data);
       assert(check == k(), "should be present in the dictionary");
 
-      klassOop check2 = find_class(h_name, h_loader);
+      Klass* check2 = find_class(h_name, defining_loader_data);
       assert(check == check2, "name inconsistancy in SystemDictionary");
     }
   } );
@@ -1183,10 +1205,11 @@
 // If there is a shared dictionary, then find the entry for the
 // given shared system class, if any.
 
-klassOop SystemDictionary::find_shared_class(Symbol* class_name) {
+Klass* SystemDictionary::find_shared_class(Symbol* class_name) {
   if (shared_dictionary() != NULL) {
-    unsigned int d_hash = shared_dictionary()->compute_hash(class_name, Handle());
+    unsigned int d_hash = shared_dictionary()->compute_hash(class_name, NULL);
     int d_index = shared_dictionary()->hash_to_index(d_hash);
+
     return shared_dictionary()->find_shared_class(d_index, d_hash, class_name);
   } else {
     return NULL;
@@ -1223,21 +1246,21 @@
     // their hierarchy references (supers, subs, and interfaces).
 
     if (ik->super() != NULL) {
-      Symbol*  cn = ik->super()->klass_part()->name();
+      Symbol*  cn = ik->super()->name();
       resolve_super_or_fail(class_name, cn,
                             class_loader, Handle(), true, CHECK_(nh));
     }
 
-    objArrayHandle interfaces (THREAD, ik->local_interfaces());
+    Array<Klass*>* interfaces = ik->local_interfaces();
     int num_interfaces = interfaces->length();
     for (int index = 0; index < num_interfaces; index++) {
-      klassOop k = klassOop(interfaces->obj_at(index));
-
-      // Note: can not use instanceKlass::cast here because
-      // interfaces' instanceKlass's C++ vtbls haven't been
+      Klass* k = interfaces->at(index);
+
+      // Note: can not use InstanceKlass::cast here because
+      // interfaces' InstanceKlass's C++ vtbls haven't been
       // reinitialized yet (they will be once the interface classes
       // are loaded)
-      Symbol*  name  = k->klass_part()->name();
+      Symbol*  name  = k->name();
       resolve_super_or_fail(class_name, name, class_loader, Handle(), false, CHECK_(nh));
     }
 
@@ -1255,23 +1278,7 @@
       Handle lockObject = compute_loader_lock_object(class_loader, THREAD);
       check_loader_lock_contention(lockObject, THREAD);
       ObjectLocker ol(lockObject, THREAD, true);
-
-      objArrayHandle methods (THREAD, ik->methods());
-      int num_methods = methods->length();
-      for (int index2 = 0; index2 < num_methods; ++index2) {
-        methodHandle m(THREAD, methodOop(methods->obj_at(index2)));
-        m()->link_method(m, CHECK_(nh));
-      }
-      if (JvmtiExport::has_redefined_a_class()) {
-        // Reinitialize vtable because RedefineClasses may have changed some
-        // entries in this vtable for super classes so the CDS vtable might
-        // point to old or obsolete entries.  RedefineClasses doesn't fix up
-        // vtables in the shared system dictionary, only the main one.
-        // It also redefines the itable too so fix that too.
-        ResourceMark rm(THREAD);
-        ik->vtable()->initialize_vtable(false, CHECK_(nh));
-        ik->itable()->initialize_itable(false, CHECK_(nh));
-      }
+      ik->restore_unshareable_info(CHECK_(nh));
     }
 
     if (TraceClassLoading) {
@@ -1281,7 +1288,7 @@
       tty->print_cr("]");
     }
     // notify a class loaded from shared object
-    ClassLoadingService::notify_class_loaded(instanceKlass::cast(ik()),
+    ClassLoadingService::notify_class_loaded(InstanceKlass::cast(ik()),
                                              true /* shared class */);
   }
   return ik;
@@ -1297,7 +1304,7 @@
                                                     Symbol* class_name,
                                                     TRAPS) {
 
-  klassOop dlm = SystemDictionary::DownloadManager_klass();
+  Klass* dlm = SystemDictionary::DownloadManager_klass();
   instanceKlassHandle nk;
 
   // If download manager class isn't loaded just return.
@@ -1375,7 +1382,7 @@
     }
 #endif // KERNEL
 
-    // find_or_define_instance_class may return a different instanceKlass
+    // find_or_define_instance_class may return a different InstanceKlass
     if (!k.is_null()) {
       k = find_or_define_instance_class(class_name, class_loader, k, CHECK_(nh));
     }
@@ -1444,7 +1451,7 @@
     // used to obtain any of the Class objects representing primitives or void
     if ((obj != NULL) && !(java_lang_Class::is_primitive(obj))) {
       instanceKlassHandle k =
-                instanceKlassHandle(THREAD, java_lang_Class::as_klassOop(obj));
+                instanceKlassHandle(THREAD, java_lang_Class::as_Klass(obj));
       // For user defined Java class loaders, check that the name returned is
       // the same as that requested.  This check is done for the bootstrap
       // loader when parsing the class file.
@@ -1459,7 +1466,10 @@
 
 void SystemDictionary::define_instance_class(instanceKlassHandle k, TRAPS) {
 
-  Handle class_loader_h(THREAD, k->class_loader());
+  ClassLoaderData* loader_data = k->class_loader_data();
+  Handle class_loader_h(THREAD, loader_data->class_loader());
+
+  for (uintx it = 0; it < GCExpandToAllocateDelayMillis; it++){}
 
  // for bootstrap and other parallel classloaders don't acquire lock,
  // use placeholder token
@@ -1482,25 +1492,13 @@
   // Parallel classloaders will call find_or_define_instance_class
   // which will require a token to perform the define class
   Symbol*  name_h = k->name();
-  unsigned int d_hash = dictionary()->compute_hash(name_h, class_loader_h);
+  unsigned int d_hash = dictionary()->compute_hash(name_h, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
   check_constraints(d_index, d_hash, k, class_loader_h, true, CHECK);
 
-  // Register class just loaded with class loader (placed in Vector)
-  // Note we do this before updating the dictionary, as this can
-  // fail with an OutOfMemoryError (if it does, we will *not* put this
-  // class in the dictionary and will not update the class hierarchy).
-  if (k->class_loader() != NULL) {
-    methodHandle m(THREAD, Universe::loader_addClass_method());
-    JavaValue result(T_VOID);
-    JavaCallArguments args(class_loader_h);
-    args.push_oop(Handle(THREAD, k->java_mirror()));
-    JavaCalls::call(&result, m, &args, CHECK);
-  }
-
   // Add the new class. We need recompile lock during update of CHA.
   {
-    unsigned int p_hash = placeholders()->compute_hash(name_h, class_loader_h);
+    unsigned int p_hash = placeholders()->compute_hash(name_h, loader_data);
     int p_index = placeholders()->hash_to_index(p_hash);
 
     MutexLocker mu_r(Compile_lock, THREAD);
@@ -1544,12 +1542,13 @@
 
   instanceKlassHandle nh = instanceKlassHandle(); // null Handle
   Symbol*  name_h = k->name(); // passed in class_name may be null
-
-  unsigned int d_hash = dictionary()->compute_hash(name_h, class_loader);
+  ClassLoaderData* loader_data = class_loader_data(class_loader);
+
+  unsigned int d_hash = dictionary()->compute_hash(name_h, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
 
 // Hold SD lock around find_class and placeholder creation for DEFINE_CLASS
-  unsigned int p_hash = placeholders()->compute_hash(name_h, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(name_h, loader_data);
   int p_index = placeholders()->hash_to_index(p_hash);
   PlaceholderEntry* probe;
 
@@ -1557,14 +1556,14 @@
     MutexLocker mu(SystemDictionary_lock, THREAD);
     // First check if class already defined
     if (UnsyncloadClass || (is_parallelDefine(class_loader))) {
-      klassOop check = find_class(d_index, d_hash, name_h, class_loader);
+      Klass* check = find_class(d_index, d_hash, name_h, loader_data);
       if (check != NULL) {
         return(instanceKlassHandle(THREAD, check));
       }
     }
 
     // Acquire define token for this class/classloader
-    probe = placeholders()->find_and_add(p_index, p_hash, name_h, class_loader, PlaceholderTable::DEFINE_CLASS, NULL, THREAD);
+    probe = placeholders()->find_and_add(p_index, p_hash, name_h, loader_data, PlaceholderTable::DEFINE_CLASS, NULL, THREAD);
     // Wait if another thread defining in parallel
     // All threads wait - even those that will throw duplicate class: otherwise
     // caller is surprised by LinkageError: duplicate, but findLoadedClass fails
@@ -1575,15 +1574,15 @@
     // Only special cases allow parallel defines and can use other thread's results
     // Other cases fall through, and may run into duplicate defines
     // caught by finding an entry in the SystemDictionary
-    if ((UnsyncloadClass || is_parallelDefine(class_loader)) && (probe->instanceKlass() != NULL)) {
+    if ((UnsyncloadClass || is_parallelDefine(class_loader)) && (probe->InstanceKlass() != NULL)) {
         probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS);
-        placeholders()->find_and_remove(p_index, p_hash, name_h, class_loader, THREAD);
+        placeholders()->find_and_remove(p_index, p_hash, name_h, loader_data, THREAD);
         SystemDictionary_lock->notify_all();
 #ifdef ASSERT
-        klassOop check = find_class(d_index, d_hash, name_h, class_loader);
+        Klass* check = find_class(d_index, d_hash, name_h, loader_data);
         assert(check != NULL, "definer missed recording success");
 #endif
-        return(instanceKlassHandle(THREAD, probe->instanceKlass()));
+        return(instanceKlassHandle(THREAD, probe->InstanceKlass()));
     } else {
       // This thread will define the class (even if earlier thread tried and had an error)
       probe->set_definer(THREAD);
@@ -1597,7 +1596,7 @@
   // definer must notify any waiting threads
   {
     MutexLocker mu(SystemDictionary_lock, THREAD);
-    PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, name_h, class_loader);
+    PlaceholderEntry* probe = placeholders()->get_entry(p_index, p_hash, name_h, loader_data);
     assert(probe != NULL, "DEFINE_CLASS placeholder lost?");
     if (probe != NULL) {
       if (HAS_PENDING_EXCEPTION) {
@@ -1608,7 +1607,7 @@
       }
       probe->set_definer(NULL);
       probe->remove_seen_thread(THREAD, PlaceholderTable::DEFINE_CLASS);
-      placeholders()->find_and_remove(p_index, p_hash, name_h, class_loader, THREAD);
+      placeholders()->find_and_remove(p_index, p_hash, name_h, loader_data, THREAD);
       SystemDictionary_lock->notify_all();
     }
   }
@@ -1655,30 +1654,30 @@
 // ----------------------------------------------------------------------------
 // Lookup
 
-klassOop SystemDictionary::find_class(int index, unsigned int hash,
+Klass* SystemDictionary::find_class(int index, unsigned int hash,
                                       Symbol* class_name,
-                                      Handle class_loader) {
+                                      ClassLoaderData* loader_data) {
   assert_locked_or_safepoint(SystemDictionary_lock);
-  assert (index == dictionary()->index_for(class_name, class_loader),
+  assert (index == dictionary()->index_for(class_name, loader_data),
           "incorrect index?");
 
-  klassOop k = dictionary()->find_class(index, hash, class_name, class_loader);
+  Klass* k = dictionary()->find_class(index, hash, class_name, loader_data);
   return k;
 }
 
 
 // Basic find on classes in the midst of being loaded
 Symbol* SystemDictionary::find_placeholder(Symbol* class_name,
-                                           Handle class_loader) {
+                                           ClassLoaderData* loader_data) {
   assert_locked_or_safepoint(SystemDictionary_lock);
-  unsigned int p_hash = placeholders()->compute_hash(class_name, class_loader);
+  unsigned int p_hash = placeholders()->compute_hash(class_name, loader_data);
   int p_index = placeholders()->hash_to_index(p_hash);
-  return placeholders()->find_entry(p_index, p_hash, class_name, class_loader);
+  return placeholders()->find_entry(p_index, p_hash, class_name, loader_data);
 }
 
 
 // Used for assertions and verification only
-klassOop SystemDictionary::find_class(Symbol* class_name, Handle class_loader) {
+Klass* SystemDictionary::find_class(Symbol* class_name, ClassLoaderData* loader_data) {
   #ifndef ASSERT
   guarantee(VerifyBeforeGC   ||
             VerifyDuringGC   ||
@@ -1688,14 +1687,14 @@
   assert_locked_or_safepoint(SystemDictionary_lock);
 
   // First look in the loaded class array
-  unsigned int d_hash = dictionary()->compute_hash(class_name, class_loader);
+  unsigned int d_hash = dictionary()->compute_hash(class_name, loader_data);
   int d_index = dictionary()->hash_to_index(d_hash);
-  return find_class(d_index, d_hash, class_name, class_loader);
+  return find_class(d_index, d_hash, class_name, loader_data);
 }
 
 
 // Get the next class in the diictionary.
-klassOop SystemDictionary::try_get_next_class() {
+Klass* SystemDictionary::try_get_next_class() {
   return dictionary()->try_get_next_class();
 }
 
@@ -1712,7 +1711,7 @@
   // Link into hierachy. Make sure the vtables are initialized before linking into
   k->append_to_sibling_list();                    // add to superklass/sibling list
   k->process_interfaces(THREAD);                  // handle all "implements" declarations
-  k->set_init_state(instanceKlass::loaded);
+  k->set_init_state(InstanceKlass::loaded);
   // Now flush all code that depended on old class hierarchy.
   // Note: must be done *after* linking k into the hierarchy (was bug 12/9/97)
   // Also, first reinitialize vtable because it may have gotten out of synch
@@ -1733,28 +1732,18 @@
 // system dictionary and follows the remaining classes' contents.
 
 void SystemDictionary::always_strong_oops_do(OopClosure* blk) {
-  // Follow preloaded classes/mirrors and system loader object
   blk->do_oop(&_java_system_loader);
-  preloaded_oops_do(blk);
-  always_strong_classes_do(blk);
+  blk->do_oop(&_system_loader_lock_obj);
+
+  dictionary()->always_strong_oops_do(blk);
 }
 
-
-void SystemDictionary::always_strong_classes_do(OopClosure* blk) {
+void SystemDictionary::always_strong_classes_do(KlassClosure* closure) {
   // Follow all system classes and temporary placeholders in dictionary
-  dictionary()->always_strong_classes_do(blk);
-
-  // Placeholders. These are *always* strong roots, as they
-  // represent classes we're actively loading.
-  placeholders_do(blk);
-
-  // Visit extra methods
-  invoke_method_table()->oops_do(blk);
-}
-
-
-void SystemDictionary::placeholders_do(OopClosure* blk) {
-  placeholders()->oops_do(blk);
+  dictionary()->always_strong_classes_do(closure);
+
+  // Placeholders. These represent classes we're actively loading.
+  placeholders()->classes_do(closure);
 }
 
 // Calculate a "good" systemdictionary size based
@@ -1773,98 +1762,84 @@
   return newsize;
 }
 bool SystemDictionary::do_unloading(BoolObjectClosure* is_alive) {
-  bool result = dictionary()->do_unloading(is_alive);
-  constraints()->purge_loader_constraints(is_alive);
-  resolution_errors()->purge_resolution_errors(is_alive);
-  return result;
+  // First, mark for unload all ClassLoaderData referencing a dead class loader.
+  bool has_dead_loaders = ClassLoaderDataGraph::do_unloading(is_alive);
+  bool unloading_occurred = false;
+  if (has_dead_loaders) {
+    unloading_occurred = dictionary()->do_unloading();
+    constraints()->purge_loader_constraints();
+    resolution_errors()->purge_resolution_errors();
 }
-
-
-// The mirrors are scanned by shared_oops_do() which is
-// not called by oops_do().  In order to process oops in
-// a necessary order, shared_oops_do() is call by
-// Universe::oops_do().
+  return unloading_occurred;
+}
+
 void SystemDictionary::oops_do(OopClosure* f) {
-  // Adjust preloaded classes and system loader object
   f->do_oop(&_java_system_loader);
-  preloaded_oops_do(f);
-
-  lazily_loaded_oops_do(f);
+  f->do_oop(&_system_loader_lock_obj);
 
   // Adjust dictionary
   dictionary()->oops_do(f);
 
   // Visit extra methods
   invoke_method_table()->oops_do(f);
-
-  // Partially loaded classes
-  placeholders()->oops_do(f);
-
-  // Adjust constraint table
-  constraints()->oops_do(f);
-
-  // Adjust resolution error table
-  resolution_errors()->oops_do(f);
 }
 
-
-void SystemDictionary::preloaded_oops_do(OopClosure* f) {
+// Extended Class redefinition support.
+// If one of these classes is replaced, we need to replace it in these places.
+// KlassClosure::do_klass should take the address of a class but we can
+// change that later.
+void SystemDictionary::preloaded_classes_do(KlassClosure* f) {
   for (int k = (int)FIRST_WKID; k < (int)WKID_LIMIT; k++) {
-    f->do_oop((oop*) &_well_known_klasses[k]);
+    f->do_klass(_well_known_klasses[k]);
   }
 
   {
     for (int i = 0; i < T_VOID+1; i++) {
       if (_box_klasses[i] != NULL) {
         assert(i >= T_BOOLEAN, "checking");
-        f->do_oop((oop*) &_box_klasses[i]);
+        f->do_klass(_box_klasses[i]);
       }
     }
   }
 
-  // The basic type mirrors would have already been processed in
-  // Universe::oops_do(), via a call to shared_oops_do(), so should
-  // not be processed again.
-
-  f->do_oop((oop*) &_system_loader_lock_obj);
-  FilteredFieldsMap::klasses_oops_do(f);
+  FilteredFieldsMap::classes_do(f);
 }
 
-void SystemDictionary::lazily_loaded_oops_do(OopClosure* f) {
-  f->do_oop((oop*) &_abstract_ownable_synchronizer_klass);
+void SystemDictionary::lazily_loaded_classes_do(KlassClosure* f) {
+  f->do_klass(_abstract_ownable_synchronizer_klass);
 }
 
 // Just the classes from defining class loaders
 // Don't iterate over placeholders
-void SystemDictionary::classes_do(void f(klassOop)) {
+void SystemDictionary::classes_do(void f(Klass*)) {
   dictionary()->classes_do(f);
 }
 
 // Added for initialize_itable_for_klass
 //   Just the classes from defining class loaders
 // Don't iterate over placeholders
-void SystemDictionary::classes_do(void f(klassOop, TRAPS), TRAPS) {
+void SystemDictionary::classes_do(void f(Klass*, TRAPS), TRAPS) {
   dictionary()->classes_do(f, CHECK);
 }
 
 //   All classes, and their class loaders
 // Don't iterate over placeholders
-void SystemDictionary::classes_do(void f(klassOop, oop)) {
+void SystemDictionary::classes_do(void f(Klass*, ClassLoaderData*)) {
   dictionary()->classes_do(f);
 }
 
 //   All classes, and their class loaders
 //   (added for helpers that use HandleMarks and ResourceMarks)
 // Don't iterate over placeholders
-void SystemDictionary::classes_do(void f(klassOop, oop, TRAPS), TRAPS) {
+void SystemDictionary::classes_do(void f(Klass*, ClassLoaderData*, TRAPS), TRAPS) {
   dictionary()->classes_do(f, CHECK);
 }
 
-void SystemDictionary::placeholders_do(void f(Symbol*, oop)) {
+void SystemDictionary::placeholders_do(void f(Symbol*)) {
   placeholders()->entries_do(f);
 }
 
-void SystemDictionary::methods_do(void f(methodOop)) {
+void SystemDictionary::methods_do(void f(Method*)) {
   dictionary()->methods_do(f);
   invoke_method_table()->methods_do(f);
 }
@@ -1878,9 +1853,9 @@
   // if multiple threads calling this function, only one thread will load
   // the class.  The other threads will find the loaded version once the
   // class is loaded.
-  klassOop aos = _abstract_ownable_synchronizer_klass;
+  Klass* aos = _abstract_ownable_synchronizer_klass;
   if (aos == NULL) {
-    klassOop k = resolve_or_fail(vmSymbols::java_util_concurrent_locks_AbstractOwnableSynchronizer(), true, CHECK);
+    Klass* k = resolve_or_fail(vmSymbols::java_util_concurrent_locks_AbstractOwnableSynchronizer(), true, CHECK);
     // Force a fence to prevent any read before the write completes
     OrderAccess::fence();
     _abstract_ownable_synchronizer_klass = k;
@@ -1903,7 +1878,7 @@
   _invoke_method_table = new SymbolPropertyTable(_invoke_method_size);
 
   // Allocate private object used as system class loader lock
-  _system_loader_lock_obj = oopFactory::new_system_objArray(0, CHECK);
+  _system_loader_lock_obj = oopFactory::new_intArray(0, CHECK);
   // Initialize basic classes
   initialize_preloaded_classes(CHECK);
 }
@@ -1924,7 +1899,7 @@
   int  info = wk_init_info[id - FIRST_WKID];
   int  sid  = (info >> CEIL_LG_OPTION_LIMIT);
   Symbol* symbol = vmSymbols::symbol_at((vmSymbols::SID)sid);
-  klassOop*    klassp = &_well_known_klasses[id];
+  Klass**    klassp = &_well_known_klasses[id];
   bool must_load = (init_opt < SystemDictionary::Opt);
   bool try_load  = true;
   if (init_opt == SystemDictionary::Opt_Kernel) {
@@ -1972,8 +1947,16 @@
   assert(WK_KLASS(Object_klass) == NULL, "preloaded classes should only be initialized once");
   // Preload commonly used klasses
   WKID scan = FIRST_WKID;
-  // first do Object, String, Class
-  initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK);
+  // first do Object, then String, Class
+  if (UseSharedSpaces) {
+    initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Object_klass), scan, CHECK);
+    // Initialize the constant pool for the Object_class
+    InstanceKlass* ik = InstanceKlass::cast(Object_klass());
+    ik->constants()->restore_unshareable_info(CHECK);
+    initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK);
+  } else {
+    initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Class_klass), scan, CHECK);
+  }
 
   // Calculate offsets for String and Class classes since they are loaded and
   // can be used after this point.
@@ -1992,14 +1975,14 @@
   initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(Reference_klass), scan, CHECK);
 
   // Preload ref klasses and set reference types
-  instanceKlass::cast(WK_KLASS(Reference_klass))->set_reference_type(REF_OTHER);
-  instanceRefKlass::update_nonstatic_oop_maps(WK_KLASS(Reference_klass));
+  InstanceKlass::cast(WK_KLASS(Reference_klass))->set_reference_type(REF_OTHER);
+  InstanceRefKlass::update_nonstatic_oop_maps(WK_KLASS(Reference_klass));
 
   initialize_wk_klasses_through(WK_KLASS_ENUM_NAME(PhantomReference_klass), scan, CHECK);
-  instanceKlass::cast(WK_KLASS(SoftReference_klass))->set_reference_type(REF_SOFT);
-  instanceKlass::cast(WK_KLASS(WeakReference_klass))->set_reference_type(REF_WEAK);
-  instanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL);
-  instanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM);
+  InstanceKlass::cast(WK_KLASS(SoftReference_klass))->set_reference_type(REF_SOFT);
+  InstanceKlass::cast(WK_KLASS(WeakReference_klass))->set_reference_type(REF_WEAK);
+  InstanceKlass::cast(WK_KLASS(FinalReference_klass))->set_reference_type(REF_FINAL);
+  InstanceKlass::cast(WK_KLASS(PhantomReference_klass))->set_reference_type(REF_PHANTOM);
 
   // JSR 292 classes
   WKID jsr292_group_start = WK_KLASS_ENUM_NAME(MethodHandle_klass);
@@ -2032,18 +2015,18 @@
 #endif // KERNEL
 
   { // Compute whether we should use loadClass or loadClassInternal when loading classes.
-    methodOop method = instanceKlass::cast(ClassLoader_klass())->find_method(vmSymbols::loadClassInternal_name(), vmSymbols::string_class_signature());
+    Method* method = InstanceKlass::cast(ClassLoader_klass())->find_method(vmSymbols::loadClassInternal_name(), vmSymbols::string_class_signature());
     _has_loadClassInternal = (method != NULL);
   }
   { // Compute whether we should use checkPackageAccess or NOT
-    methodOop method = instanceKlass::cast(ClassLoader_klass())->find_method(vmSymbols::checkPackageAccess_name(), vmSymbols::class_protectiondomain_signature());
+    Method* method = InstanceKlass::cast(ClassLoader_klass())->find_method(vmSymbols::checkPackageAccess_name(), vmSymbols::class_protectiondomain_signature());
     _has_checkPackageAccess = (method != NULL);
   }
 }
 
 // Tells if a given klass is a box (wrapper class, such as java.lang.Integer).
 // If so, returns the basic type it holds.  If not, returns T_OBJECT.
-BasicType SystemDictionary::box_klass_type(klassOop k) {
+BasicType SystemDictionary::box_klass_type(Klass* k) {
   assert(k != NULL, "");
   for (int i = T_BOOLEAN; i < T_VOID+1; i++) {
     if (_box_klasses[i] == k)
@@ -2052,20 +2035,13 @@
   return T_OBJECT;
 }
 
-KlassHandle SystemDictionaryHandles::box_klass(BasicType t) {
-  if (t >= T_BOOLEAN && t <= T_VOID)
-    return KlassHandle(&SystemDictionary::_box_klasses[t], true);
-  else
-    return KlassHandle();
-}
-
 // Constraints on class loaders. The details of the algorithm can be
 // found in the OOPSLA'98 paper "Dynamic Class Loading in the Java
 // Virtual Machine" by Sheng Liang and Gilad Bracha.  The basic idea is
 // that the system dictionary needs to maintain a set of contraints that
 // must be satisfied by all classes in the dictionary.
 // if defining is true, then LinkageError if already in systemDictionary
-// if initiating loader, then ok if instanceKlass matches existing entry
+// if initiating loader, then ok if InstanceKlass matches existing entry
 
 void SystemDictionary::check_constraints(int d_index, unsigned int d_hash,
                                          instanceKlassHandle k,
@@ -2074,17 +2050,19 @@
   const char *linkage_error = NULL;
   {
     Symbol*  name  = k->name();
+    ClassLoaderData *loader_data = class_loader_data(class_loader);
+
     MutexLocker mu(SystemDictionary_lock, THREAD);
 
-    klassOop check = find_class(d_index, d_hash, name, class_loader);
-    if (check != (klassOop)NULL) {
-      // if different instanceKlass - duplicate class definition,
+    Klass* check = find_class(d_index, d_hash, name, loader_data);
+    if (check != (Klass*)NULL) {
+      // if different InstanceKlass - duplicate class definition,
       // else - ok, class loaded by a different thread in parallel,
       // we should only have found it if it was done loading and ok to use
       // system dictionary only holds instance classes, placeholders
       // also holds array classes
 
-      assert(check->klass_part()->oop_is_instance(), "noninstance in systemdictionary");
+      assert(check->oop_is_instance(), "noninstance in systemdictionary");
       if ((defining == true) || (k() != check)) {
         linkage_error = "loader (instance of  %s): attempted  duplicate class "
           "definition for name: \"%s\"";
@@ -2094,7 +2072,7 @@
     }
 
 #ifdef ASSERT
-    Symbol* ph_check = find_placeholder(name, class_loader);
+    Symbol* ph_check = find_placeholder(name, loader_data);
     assert(ph_check == NULL || ph_check == name, "invalid symbol");
 #endif
 
@@ -2132,6 +2110,7 @@
   // Compile_lock prevents systemDictionary updates during compilations
   assert_locked_or_safepoint(Compile_lock);
   Symbol*  name  = k->name();
+  ClassLoaderData *loader_data = class_loader_data(class_loader);
 
   {
   MutexLocker mu1(SystemDictionary_lock, THREAD);
@@ -2141,7 +2120,7 @@
   // Note that this must be done past the last potential blocking
   // point / safepoint. We enable biased locking lazily using a
   // VM_Operation to iterate the SystemDictionary and installing the
-  // biasable mark word into each instanceKlass's prototype header.
+  // biasable mark word into each InstanceKlass's prototype header.
   // To avoid race conditions where we accidentally miss enabling the
   // optimization for one class in the process of being added to the
   // dictionary, we must not safepoint after the test of
@@ -2164,14 +2143,14 @@
 
   // Check for a placeholder. If there, remove it and make a
   // new system dictionary entry.
-  placeholders()->find_and_remove(p_index, p_hash, name, class_loader, THREAD);
-  klassOop sd_check = find_class(d_index, d_hash, name, class_loader);
+  placeholders()->find_and_remove(p_index, p_hash, name, loader_data, THREAD);
+  Klass* sd_check = find_class(d_index, d_hash, name, loader_data);
   if (sd_check == NULL) {
-    dictionary()->add_klass(name, class_loader, k);
+    dictionary()->add_klass(name, loader_data, k);
     notice_modification();
   }
 #ifdef ASSERT
-  sd_check = find_class(d_index, d_hash, name, class_loader);
+  sd_check = find_class(d_index, d_hash, name, loader_data);
   assert (sd_check != NULL, "should have entry in system dictionary");
 // Changed to allow PH to remain to complete class circularity checking
 // while only one thread can define a class at one time, multiple
@@ -2188,13 +2167,13 @@
 // Try to find a class name using the loader constraints.  The
 // loader constraints might know about a class that isn't fully loaded
 // yet and these will be ignored.
-klassOop SystemDictionary::find_constrained_instance_or_array_klass(
+Klass* SystemDictionary::find_constrained_instance_or_array_klass(
                     Symbol* class_name, Handle class_loader, TRAPS) {
 
   // First see if it has been loaded directly.
   // Force the protection domain to be null.  (This removes protection checks.)
   Handle no_protection_domain;
-  klassOop klass = find_instance_or_array_klass(class_name, class_loader,
+  Klass* klass = find_instance_or_array_klass(class_name, class_loader,
                                                 no_protection_domain, CHECK_NULL);
   if (klass != NULL)
     return klass;
@@ -2203,8 +2182,8 @@
   // a loader constraint that would require this loader to return the
   // klass that is already loaded.
   if (FieldType::is_array(class_name)) {
-    // For array classes, their klassOops are not kept in the
-    // constraint table. The element klassOops are.
+    // For array classes, their Klass*s are not kept in the
+    // constraint table. The element Klass*s are.
     FieldArrayInfo fd;
     BasicType t = FieldType::get_array_info(class_name, fd, CHECK_(NULL));
     if (t != T_OBJECT) {
@@ -2231,11 +2210,14 @@
                                              Handle class_loader1,
                                              Handle class_loader2,
                                              Thread* THREAD) {
+  ClassLoaderData* loader_data1 = class_loader_data(class_loader1);
+  ClassLoaderData* loader_data2 = class_loader_data(class_loader2);
+
   Symbol* constraint_name = NULL;
   if (!FieldType::is_array(class_name)) {
     constraint_name = class_name;
   } else {
-    // For array classes, their klassOops are not kept in the
+    // For array classes, their Klass*s are not kept in the
     // constraint table. The element classes are.
     FieldArrayInfo fd;
     BasicType t = FieldType::get_array_info(class_name, fd, CHECK_(false));
@@ -2246,10 +2228,10 @@
       constraint_name = fd.object_key();
     }
   }
-  unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, class_loader1);
+  unsigned int d_hash1 = dictionary()->compute_hash(constraint_name, loader_data1);
   int d_index1 = dictionary()->hash_to_index(d_hash1);
 
-  unsigned int d_hash2 = dictionary()->compute_hash(constraint_name, class_loader2);
+  unsigned int d_hash2 = dictionary()->compute_hash(constraint_name, loader_data2);
   int d_index2 = dictionary()->hash_to_index(d_hash2);
   {
   MutexLocker mu_s(SystemDictionary_lock, THREAD);
@@ -2257,8 +2239,8 @@
   // Better never do a GC while we're holding these oops
   No_Safepoint_Verifier nosafepoint;
 
-  klassOop klass1 = find_class(d_index1, d_hash1, constraint_name, class_loader1);
-  klassOop klass2 = find_class(d_index2, d_hash2, constraint_name, class_loader2);
+  Klass* klass1 = find_class(d_index1, d_hash1, constraint_name, loader_data1);
+  Klass* klass2 = find_class(d_index2, d_hash2, constraint_name, loader_data2);
   return constraints()->add_entry(constraint_name, klass1, class_loader1,
                                   klass2, class_loader2);
   }
@@ -2275,6 +2257,11 @@
   }
 }
 
+// Delete a resolution error for RedefineClasses for a constant pool is going away
+void SystemDictionary::delete_resolution_error(ConstantPool* pool) {
+  resolution_errors()->delete_entry(pool);
+}
+
 // Lookup resolution error table. Returns error if found, otherwise NULL.
 Symbol* SystemDictionary::find_resolution_error(constantPoolHandle pool, int which) {
   unsigned int hash = resolution_errors()->compute_hash(pool, which);
@@ -2376,10 +2363,10 @@
   int          index = invoke_method_table()->hash_to_index(hash);
   SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature, iid);
   methodHandle m;
-  if (spe == NULL || spe->property_oop() == NULL) {
+  if (spe == NULL || spe->method() == NULL) {
     spe = NULL;
     // Must create lots of stuff here, but outside of the SystemDictionary lock.
-    m = methodOopDesc::make_method_handle_intrinsic(iid, signature, CHECK_(empty));
+    m = Method::make_method_handle_intrinsic(iid, signature, CHECK_(empty));
     CompileBroker::compile_method(m, InvocationEntryBci, CompLevel_highest_tier,
                                   methodHandle(), CompileThreshold, "MH", CHECK_(empty));
 
@@ -2390,16 +2377,13 @@
       spe = invoke_method_table()->find_entry(index, hash, signature, iid);
       if (spe == NULL)
         spe = invoke_method_table()->add_entry(index, hash, signature, iid);
-      if (spe->property_oop() == NULL)
-        spe->set_property_oop(m());
+      if (spe->method() == NULL)
+        spe->set_method(m());
     }
   }
 
-  assert(spe != NULL && spe->property_oop() != NULL, "");
-  m = methodOop(spe->property_oop());
-  assert(m->is_method(), "");
-
-  return m;
+  assert(spe != NULL && spe->method() != NULL, "");
+  return spe->method();
 }
 
 // Helper for unpacking the return value from linkMethod and linkCallSite.
@@ -2409,9 +2393,9 @@
                                                TRAPS) {
   methodHandle empty;
   if (mname.not_null()) {
-    oop vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
+    Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
     if (vmtarget != NULL && vmtarget->is_method()) {
-      methodOop m = methodOop(vmtarget);
+      Method* m = (Method*)vmtarget;
       oop appendix = appendix_box->obj_at(0);
       if (TraceMethodHandles) {
     #ifndef PRODUCT
@@ -2443,7 +2427,7 @@
     method_type = java_lang_String::create_from_symbol(signature, CHECK_(empty));
   }
 
-  KlassHandle  mh_klass = SystemDictionaryHandles::MethodHandle_klass();
+  KlassHandle  mh_klass = SystemDictionary::MethodHandle_klass();
   int ref_kind = JVM_REF_invokeVirtual;
   Handle name_str = StringTable::intern(name, CHECK_(empty));
   objArrayHandle appendix_box = oopFactory::new_objArray(SystemDictionary::Object_klass(), 1, CHECK_(empty));
@@ -2480,9 +2464,9 @@
   unsigned int hash  = invoke_method_table()->compute_hash(signature, null_iid);
   int          index = invoke_method_table()->hash_to_index(hash);
   SymbolPropertyEntry* spe = invoke_method_table()->find_entry(index, hash, signature, null_iid);
-  if (spe != NULL && spe->property_oop() != NULL) {
-    assert(java_lang_invoke_MethodType::is_instance(spe->property_oop()), "");
-    return Handle(THREAD, spe->property_oop());
+  if (spe != NULL && spe->method_type() != NULL) {
+    assert(java_lang_invoke_MethodType::is_instance(spe->method_type()), "");
+    return Handle(THREAD, spe->method_type());
   } else if (THREAD->is_Compiler_thread()) {
     warning("SystemDictionary::find_method_handle_type called from compiler thread");  // FIXME
     return Handle();  // do not attempt from within compiler, unless it was cached
@@ -2504,8 +2488,8 @@
       if (mirror == NULL) {
         // fall back from BCP to accessing_klass
         if (accessing_klass.not_null()) {
-          class_loader      = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader());
-          protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain());
+          class_loader      = Handle(THREAD, InstanceKlass::cast(accessing_klass())->class_loader());
+          protection_domain = Handle(THREAD, InstanceKlass::cast(accessing_klass())->protection_domain());
         }
         is_on_bcp = false;
       }
@@ -2522,9 +2506,9 @@
 
     // Check accessibility.
     if (ss.is_object() && accessing_klass.not_null()) {
-      klassOop sel_klass = java_lang_Class::as_klassOop(mirror);
+      Klass* sel_klass = java_lang_Class::as_Klass(mirror);
       mirror = NULL;  // safety
-      // Emulate constantPoolOopDesc::verify_constant_pool_resolve.
+      // Emulate ConstantPool::verify_constant_pool_resolve.
       if (Klass::cast(sel_klass)->oop_is_objArray())
         sel_klass = objArrayKlass::cast(sel_klass)->bottom_klass();
       if (Klass::cast(sel_klass)->oop_is_instance()) {
@@ -2552,8 +2536,8 @@
     spe = invoke_method_table()->find_entry(index, hash, signature, null_iid);
     if (spe == NULL)
       spe = invoke_method_table()->add_entry(index, hash, signature, null_iid);
-    if (spe->property_oop() == NULL) {
-      spe->set_property_oop(method_type());
+    if (spe->method_type() == NULL) {
+      spe->set_method_type(method_type());
     }
   }
 
@@ -2721,17 +2705,16 @@
 }
 
 
-void SystemDictionary::verify_obj_klass_present(Handle obj,
-                                                Symbol* class_name,
-                                                Handle class_loader) {
+void SystemDictionary::verify_obj_klass_present(Symbol* class_name,
+                                                ClassLoaderData* loader_data) {
   GCMutexLocker mu(SystemDictionary_lock);
   Symbol* name;
 
-  klassOop probe = find_class(class_name, class_loader);
+  Klass* probe = find_class(class_name, loader_data);
   if (probe == NULL) {
     probe = SystemDictionary::find_shared_class(class_name);
     if (probe == NULL) {
-      name = find_placeholder(class_name, class_loader);
+      name = find_placeholder(class_name, loader_data);
     }
   }
   guarantee(probe != NULL || name != NULL,
@@ -2751,21 +2734,22 @@
   static int debug_size;      // size of debug info in methods
   static int methoddata_size; // size of methodData objects in words
 
-  static void do_class(klassOop k) {
+  static void do_class(Klass* k) {
     nclasses++;
     class_size += k->size();
-    if (k->klass_part()->oop_is_instance()) {
-      instanceKlass* ik = (instanceKlass*)k->klass_part();
+    if (k->oop_is_instance()) {
+      InstanceKlass* ik = (InstanceKlass*)k;
       class_size += ik->methods()->size();
       class_size += ik->constants()->size();
       class_size += ik->local_interfaces()->size();
       class_size += ik->transitive_interfaces()->size();
       // We do not have to count implementors, since we only store one!
-      class_size += ik->fields()->length();
+      // SSS: How should these be accounted now that they have moved?
+      // class_size += ik->fields()->length();
     }
   }
 
-  static void do_method(methodOop m) {
+  static void do_method(Method* m) {
     nmethods++;
     method_size += m->size();
     // class loader uses same objArray for empty vectors, so don't count these
@@ -2773,7 +2757,7 @@
       method_size += m->stackmap_data()->size();
     }
 
-    methodDataOop mdo = m->method_data();
+    MethodData* mdo = m->method_data();
     if (mdo != NULL) {
       nmethoddata++;
       methoddata_size += mdo->size();
@@ -2836,7 +2820,7 @@
     for (int j = 0; j < Bytecodes::number_of_java_codes; j++) _bytecodes_profile     [j] = 0;
   };
 
-  static void do_method(methodOop m) {
+  static void do_method(Method* m) {
     _number_of_methods++;
     // collect flag info
     if (m->is_final()       ) _number_of_final_methods++;
--- a/src/share/vm/classfile/systemDictionary.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/systemDictionary.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,7 +36,7 @@
 
 // The system dictionary stores all loaded classes and maps:
 //
-//   [class name,class loader] -> class   i.e.  [Symbol*,oop] -> klassOop
+//   [class name,class loader] -> class   i.e.  [Symbol*,oop] -> Klass*
 //
 // Classes are loaded lazily. The default VM class loader is
 // represented as NULL.
@@ -184,9 +184,7 @@
 
 class SystemDictionary : AllStatic {
   friend class VMStructs;
-  friend class CompactingPermGenGen;
   friend class SystemDictionaryHandles;
-  NOT_PRODUCT(friend class instanceKlassKlass;)
 
  public:
   enum WKID {
@@ -223,25 +221,25 @@
   // throw_error flag.  For most uses the throw_error argument should be set
   // to true.
 
-  static klassOop resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS);
+  static Klass* resolve_or_fail(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, TRAPS);
   // Convenient call for null loader and protection domain.
-  static klassOop resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS);
+  static Klass* resolve_or_fail(Symbol* class_name, bool throw_error, TRAPS);
 private:
   // handle error translation for resolve_or_null results
-  static klassOop handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS);
+  static Klass* handle_resolution_exception(Symbol* class_name, Handle class_loader, Handle protection_domain, bool throw_error, KlassHandle klass_h, TRAPS);
 
 public:
 
   // Returns a class with a given class name and class loader.
   // Loads the class if needed. If not found NULL is returned.
-  static klassOop resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
+  static Klass* resolve_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
   // Version with null loader and protection domain
-  static klassOop resolve_or_null(Symbol* class_name, TRAPS);
+  static Klass* resolve_or_null(Symbol* class_name, TRAPS);
 
   // Resolve a superclass or superinterface. Called from ClassFileParser,
   // parse_interfaces, resolve_instance_class_or_null, load_shared_class
   // "child_name" is the class whose super class or interface is being resolved.
-  static klassOop resolve_super_or_fail(Symbol* child_name,
+  static Klass* resolve_super_or_fail(Symbol* child_name,
                                         Symbol* class_name,
                                         Handle class_loader,
                                         Handle protection_domain,
@@ -250,7 +248,7 @@
 
   // Parse new stream. This won't update the system dictionary or
   // class hierarchy, simply parse the stream. Used by JVMTI RedefineClasses.
-  static klassOop parse_stream(Symbol* class_name,
+  static Klass* parse_stream(Symbol* class_name,
                                Handle class_loader,
                                Handle protection_domain,
                                ClassFileStream* st,
@@ -258,7 +256,7 @@
     KlassHandle nullHandle;
     return parse_stream(class_name, class_loader, protection_domain, st, nullHandle, NULL, THREAD);
   }
-  static klassOop parse_stream(Symbol* class_name,
+  static Klass* parse_stream(Symbol* class_name,
                                Handle class_loader,
                                Handle protection_domain,
                                ClassFileStream* st,
@@ -267,23 +265,23 @@
                                TRAPS);
 
   // Resolve from stream (called by jni_DefineClass and JVM_DefineClass)
-  static klassOop resolve_from_stream(Symbol* class_name, Handle class_loader,
+  static Klass* resolve_from_stream(Symbol* class_name, Handle class_loader,
                                       Handle protection_domain,
                                       ClassFileStream* st, bool verify, TRAPS);
 
   // Lookup an already loaded class. If not found NULL is returned.
-  static klassOop find(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
+  static Klass* find(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
 
   // Lookup an already loaded instance or array class.
   // Do not make any queries to class loaders; consult only the cache.
   // If not found NULL is returned.
-  static klassOop find_instance_or_array_klass(Symbol* class_name,
+  static Klass* find_instance_or_array_klass(Symbol* class_name,
                                                Handle class_loader,
                                                Handle protection_domain,
                                                TRAPS);
 
   // If the given name is known to vmSymbols, return the well-know klass:
-  static klassOop find_well_known_klass(Symbol* class_name);
+  static Klass* find_well_known_klass(Symbol* class_name);
 
   // Lookup an instance or array class that has already been loaded
   // either into the given class loader, or else into another class
@@ -306,34 +304,32 @@
   // satisfied, and it is safe for classes in the given class loader
   // to manipulate strongly-typed values of the found class, subject
   // to local linkage and access checks.
-  static klassOop find_constrained_instance_or_array_klass(Symbol* class_name,
+  static Klass* find_constrained_instance_or_array_klass(Symbol* class_name,
                                                            Handle class_loader,
                                                            TRAPS);
 
   // Iterate over all klasses in dictionary
   //   Just the classes from defining class loaders
-  static void classes_do(void f(klassOop));
+  static void classes_do(void f(Klass*));
   // Added for initialize_itable_for_klass to handle exceptions
-  static void classes_do(void f(klassOop, TRAPS), TRAPS);
+  static void classes_do(void f(Klass*, TRAPS), TRAPS);
   //   All classes, and their class loaders
-  static void classes_do(void f(klassOop, oop));
+  static void classes_do(void f(Klass*, ClassLoaderData*));
   //   All classes, and their class loaders
   //   (added for helpers that use HandleMarks and ResourceMarks)
-  static void classes_do(void f(klassOop, oop, TRAPS), TRAPS);
+  static void classes_do(void f(Klass*, ClassLoaderData*, TRAPS), TRAPS);
   // All entries in the placeholder table and their class loaders
-  static void placeholders_do(void f(Symbol*, oop));
+  static void placeholders_do(void f(Symbol*));
 
   // Iterate over all methods in all klasses in dictionary
-  static void methods_do(void f(methodOop));
+  static void methods_do(void f(Method*));
 
   // Garbage collection support
 
   // This method applies "blk->do_oop" to all the pointers to "system"
   // classes and loaders.
   static void always_strong_oops_do(OopClosure* blk);
-  static void always_strong_classes_do(OopClosure* blk);
-  // This method applies "blk->do_oop" to all the placeholders.
-  static void placeholders_do(OopClosure* blk);
+  static void always_strong_classes_do(KlassClosure* closure);
 
   // Unload (that is, break root links to) all unmarked classes and
   // loaders.  Returns "true" iff something was unloaded.
@@ -348,11 +344,9 @@
   static oop system_loader_lock()           { return _system_loader_lock_obj; }
 
 private:
-  //    Traverses preloaded oops: various system classes.  These are
-  //    guaranteed to be in the perm gen.
-  static void preloaded_oops_do(OopClosure* f);
-  static void lazily_loaded_oops_do(OopClosure* f);
-
+  // Extended Redefine classes support (tbi)
+  static void preloaded_classes_do(KlassClosure* f);
+  static void lazily_loaded_classes_do(KlassClosure* f);
 public:
   // Sharing support.
   static void reorder_dictionary();
@@ -386,28 +380,27 @@
 #endif
 
   // Verify class is in dictionary
-  static void verify_obj_klass_present(Handle obj,
-                                       Symbol* class_name,
-                                       Handle class_loader);
+  static void verify_obj_klass_present(Symbol* class_name,
+                                       ClassLoaderData* loader_data);
 
   // Initialization
   static void initialize(TRAPS);
 
   // Fast access to commonly used classes (preloaded)
-  static klassOop check_klass(klassOop k) {
+  static Klass* check_klass(Klass* k) {
     assert(k != NULL, "preloaded klass not initialized");
     return k;
   }
 
-  static klassOop check_klass_Pre(klassOop k) { return check_klass(k); }
-  static klassOop check_klass_Pre_JSR292(klassOop k) { return EnableInvokeDynamic ? check_klass(k) : k; }
-  static klassOop check_klass_Opt(klassOop k) { return k; }
-  static klassOop check_klass_Opt_Kernel(klassOop k) { return k; } //== Opt
-  static klassOop check_klass_Opt_Only_JDK15(klassOop k) {
+  static Klass* check_klass_Pre(Klass* k) { return check_klass(k); }
+  static Klass* check_klass_Pre_JSR292(Klass* k) { return EnableInvokeDynamic ? check_klass(k) : k; }
+  static Klass* check_klass_Opt(Klass* k) { return k; }
+  static Klass* check_klass_Opt_Kernel(Klass* k) { return k; } //== Opt
+  static Klass* check_klass_Opt_Only_JDK15(Klass* k) {
     assert(JDK_Version::is_gte_jdk15x_version(), "JDK 1.5 only");
     return k;
   }
-  static klassOop check_klass_Opt_Only_JDK14NewRef(klassOop k) {
+  static Klass* check_klass_Opt_Only_JDK14NewRef(Klass* k) {
     assert(JDK_Version::is_gte_jdk14x_version() && UseNewReflection, "JDK 1.4 only");
     // despite the optional loading, if you use this it must be present:
     return check_klass(k);
@@ -422,27 +415,35 @@
 
 public:
   #define WK_KLASS_DECLARE(name, symbol, option) \
-    static klassOop name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); }
+    static Klass* name() { return check_klass_##option(_well_known_klasses[WK_KLASS_ENUM_NAME(name)]); } \
+    static Klass** name##_addr() {                                                                       \
+      return &SystemDictionary::_well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)];           \
+    }
   WK_KLASSES_DO(WK_KLASS_DECLARE);
   #undef WK_KLASS_DECLARE
 
-  static klassOop well_known_klass(WKID id) {
+  static Klass* well_known_klass(WKID id) {
     assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
     return _well_known_klasses[id];
   }
 
+  static Klass** well_known_klass_addr(WKID id) {
+    assert(id >= (int)FIRST_WKID && id < (int)WKID_LIMIT, "oob");
+    return &_well_known_klasses[id];
+  }
+
   // Local definition for direct access to the private array:
   #define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)]
 
-  static klassOop box_klass(BasicType t) {
+  static Klass* box_klass(BasicType t) {
     assert((uint)t < T_VOID+1, "range check");
     return check_klass(_box_klasses[t]);
   }
-  static BasicType box_klass_type(klassOop k);  // inverse of box_klass
+  static BasicType box_klass_type(Klass* k);  // inverse of box_klass
 
   // methods returning lazily loaded klasses
   // The corresponding method to load the class must be called before calling them.
-  static klassOop abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); }
+  static Klass* abstract_ownable_synchronizer_klass() { return check_klass(_abstract_ownable_synchronizer_klass); }
 
   static void load_abstract_ownable_synchronizer_klass(TRAPS);
 
@@ -450,12 +451,20 @@
   // Tells whether ClassLoader.loadClassInternal is present
   static bool has_loadClassInternal()       { return _has_loadClassInternal; }
 
+  // Returns the class loader data to be used when looking up/updating the
+  // system dictionary.
+  static ClassLoaderData *class_loader_data(Handle class_loader) {
+    return ClassLoaderData::class_loader_data(class_loader());
+  }
+
 public:
   // Tells whether ClassLoader.checkPackageAccess is present
   static bool has_checkPackageAccess()      { return _has_checkPackageAccess; }
 
   static bool Class_klass_loaded()          { return WK_KLASS(Class_klass) != NULL; }
   static bool Cloneable_klass_loaded()      { return WK_KLASS(Cloneable_klass) != NULL; }
+  static bool Object_klass_loaded()         { return WK_KLASS(Object_klass) != NULL; }
+  static bool ClassLoader_klass_loaded()    { return WK_KLASS(ClassLoader_klass) != NULL; }
 
   // Returns default system loader
   static oop java_system_loader();
@@ -463,6 +472,8 @@
   // Compute the default system loader
   static void compute_java_system_loader(TRAPS);
 
+  // Register a new class loader
+  static ClassLoaderData* register_loader(Handle class_loader);
 private:
   // Mirrors for primitive classes (created eagerly)
   static oop check_mirror(oop m) {
@@ -517,12 +528,17 @@
   // Utility for printing loader "name" as part of tracing constraints
   static const char* loader_name(oop loader) {
     return ((loader) == NULL ? "<bootloader>" :
-            instanceKlass::cast((loader)->klass())->name()->as_C_string() );
+            InstanceKlass::cast((loader)->klass())->name()->as_C_string() );
+  }
+  static const char* loader_name(ClassLoaderData* loader_data) {
+    return (loader_data->is_the_null_class_loader_data() ? "<bootloader>" :
+            InstanceKlass::cast((loader_data->class_loader())->klass())->name()->as_C_string() );
   }
 
   // Record the error when the first attempt to resolve a reference from a constant
   // pool entry to a class fails.
   static void add_resolution_error(constantPoolHandle pool, int which, Symbol* error);
+  static void delete_resolution_error(ConstantPool* pool);
   static Symbol* find_resolution_error(constantPoolHandle pool, int which);
 
  private:
@@ -574,7 +590,7 @@
 public:
   // for VM_CounterDecay iteration support
   friend class CounterDecay;
-  static klassOop try_get_next_class();
+  static Klass* try_get_next_class();
 
 private:
   static void validate_protection_domain(instanceKlassHandle klass,
@@ -591,8 +607,8 @@
   static SymbolPropertyTable* invoke_method_table() { return _invoke_method_table; }
 
   // Basic loading operations
-  static klassOop resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
-  static klassOop resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
+  static Klass* resolve_instance_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
+  static Klass* resolve_array_class_or_null(Symbol* class_name, Handle class_loader, Handle protection_domain, TRAPS);
   static instanceKlassHandle handle_parallel_super_load(Symbol* class_name, Symbol* supername, Handle class_loader, Handle protection_domain, Handle lockObject, TRAPS);
   // Wait on SystemDictionary_lock; unlocks lockObject before
   // waiting; relocks lockObject with correct recursion count
@@ -613,7 +629,7 @@
   static bool is_parallelCapable(Handle class_loader);
   static bool is_parallelDefine(Handle class_loader);
 
-  static klassOop find_shared_class(Symbol* class_name);
+  static Klass* find_shared_class(Symbol* class_name);
 
   // Setup link to hierarchy
   static void add_to_hierarchy(instanceKlassHandle k, TRAPS);
@@ -623,31 +639,31 @@
   // the SystemDictionary_lock.
 
   // Basic find on loaded classes
-  static klassOop find_class(int index, unsigned int hash,
-                             Symbol* name, Handle loader);
-  static klassOop find_class(Symbol* class_name, Handle class_loader);
+  static Klass* find_class(int index, unsigned int hash,
+                             Symbol* name, ClassLoaderData* loader_data);
+  static Klass* find_class(Symbol* class_name, ClassLoaderData* loader_data);
 
   // Basic find on classes in the midst of being loaded
-  static Symbol* find_placeholder(Symbol* name, Handle loader);
+  static Symbol* find_placeholder(Symbol* name, ClassLoaderData* loader_data);
 
   // Updating entry in dictionary
   // Add a completely loaded class
   static void add_klass(int index, Symbol* class_name,
-                        Handle class_loader, KlassHandle obj);
+                        ClassLoaderData* loader_data, KlassHandle obj);
 
   // Add a placeholder for a class being loaded
   static void add_placeholder(int index,
                               Symbol* class_name,
-                              Handle class_loader);
+                              ClassLoaderData* loader_data);
   static void remove_placeholder(int index,
                                  Symbol* class_name,
-                                 Handle class_loader);
+                                 ClassLoaderData* loader_data);
 
   // Performs cleanups after resolve_super_or_fail. This typically needs
   // to be called on failure.
   // Won't throw, but can block.
   static void resolution_cleanups(Symbol* class_name,
-                                  Handle class_loader,
+                                  ClassLoaderData* loader_data,
                                   TRAPS);
 
   // Initialization
@@ -659,16 +675,17 @@
                                 bool defining, TRAPS);
   static void update_dictionary(int d_index, unsigned int d_hash,
                                 int p_index, unsigned int p_hash,
-                                instanceKlassHandle k, Handle loader, TRAPS);
+                                instanceKlassHandle k, Handle loader,
+                                TRAPS);
 
   // Variables holding commonly used klasses (preloaded)
-  static klassOop _well_known_klasses[];
+  static Klass* _well_known_klasses[];
 
   // Lazily loaded klasses
-  static volatile klassOop _abstract_ownable_synchronizer_klass;
+  static Klass* volatile _abstract_ownable_synchronizer_klass;
 
   // table of box klasses (int_klass, etc.)
-  static klassOop _box_klasses[T_VOID+1];
+  static Klass* _box_klasses[T_VOID+1];
 
   static oop  _java_system_loader;
 
@@ -676,18 +693,4 @@
   static bool _has_checkPackageAccess;
 };
 
-class SystemDictionaryHandles : AllStatic {
-public:
-  #define WK_KLASS_HANDLE_DECLARE(name, ignore_symbol, option) \
-    static KlassHandle name() { \
-      SystemDictionary::name(); \
-      klassOop* loc = &SystemDictionary::_well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)]; \
-      return KlassHandle(loc, true); \
-    }
-  WK_KLASSES_DO(WK_KLASS_HANDLE_DECLARE);
-  #undef WK_KLASS_HANDLE_DECLARE
-
-  static KlassHandle box_klass(BasicType t);
-};
-
 #endif // SHARE_VM_CLASSFILE_SYSTEMDICTIONARY_HPP
--- a/src/share/vm/classfile/verificationType.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/verificationType.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -57,7 +57,7 @@
       // any object or array is assignable to java.lang.Object
       return true;
     }
-    klassOop obj = SystemDictionary::resolve_or_fail(
+    Klass* obj = SystemDictionary::resolve_or_fail(
         name(), Handle(THREAD, klass->class_loader()),
         Handle(THREAD, klass->protection_domain()), true, CHECK_false);
     KlassHandle this_class(THREAD, obj);
@@ -67,10 +67,10 @@
       // java.lang.Cloneable and java.io.Serializable
       return true;
     } else if (from.is_object()) {
-      klassOop from_class = SystemDictionary::resolve_or_fail(
+      Klass* from_class = SystemDictionary::resolve_or_fail(
           from.name(), Handle(THREAD, klass->class_loader()),
           Handle(THREAD, klass->protection_domain()), true, CHECK_false);
-      return instanceKlass::cast(from_class)->is_subclass_of(this_class());
+      return InstanceKlass::cast(from_class)->is_subclass_of(this_class());
     }
   } else if (is_array() && from.is_array()) {
     VerificationType comp_this = get_component(context, CHECK_false);
--- a/src/share/vm/classfile/verifier.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/verifier.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -153,7 +153,7 @@
       if (HAS_PENDING_EXCEPTION) {
         tty->print("Verification for %s has", klassName);
         tty->print_cr(" exception pending %s ",
-          instanceKlass::cast(PENDING_EXCEPTION->klass())->external_name());
+          InstanceKlass::cast(PENDING_EXCEPTION->klass())->external_name());
       } else if (exception_name != NULL) {
         tty->print_cr("Verification for %s failed", klassName);
       }
@@ -186,7 +186,7 @@
 
 bool Verifier::is_eligible_for_verification(instanceKlassHandle klass, bool should_verify_class) {
   Symbol* name = klass->name();
-  klassOop refl_magic_klass = SystemDictionary::reflect_MagicAccessorImpl_klass();
+  Klass* refl_magic_klass = SystemDictionary::reflect_MagicAccessorImpl_klass();
 
   return (should_verify_for(klass->class_loader(), should_verify_class) &&
     // return if the class is a bootstrapping class
@@ -361,7 +361,7 @@
 }
 #endif
 
-void ErrorContext::details(outputStream* ss, methodOop method) const {
+void ErrorContext::details(outputStream* ss, Method* method) const {
   if (is_valid()) {
     ss->print_cr("");
     ss->print_cr("Exception Details:");
@@ -434,7 +434,7 @@
   ss->print_cr("");
 }
 
-void ErrorContext::location_details(outputStream* ss, methodOop method) const {
+void ErrorContext::location_details(outputStream* ss, Method* method) const {
   if (_bci != -1 && method != NULL) {
     streamIndentor si(ss);
     const char* bytecode_name = "<invalid>";
@@ -446,7 +446,7 @@
           bytecode_name = "<illegal>";
       }
     }
-    instanceKlass* ik = instanceKlass::cast(method->method_holder());
+    InstanceKlass* ik = InstanceKlass::cast(method->method_holder());
     ss->indent().print_cr("Location:");
     streamIndentor si2(ss);
     ss->indent().print_cr("%s.%s%s @%d: %s",
@@ -469,7 +469,7 @@
   }
 }
 
-void ErrorContext::bytecode_details(outputStream* ss, methodOop method) const {
+void ErrorContext::bytecode_details(outputStream* ss, Method* method) const {
   if (method != NULL) {
     streamIndentor si(ss);
     ss->indent().print_cr("Bytecode:");
@@ -478,7 +478,7 @@
   }
 }
 
-void ErrorContext::handler_details(outputStream* ss, methodOop method) const {
+void ErrorContext::handler_details(outputStream* ss, Method* method) const {
   if (method != NULL) {
     streamIndentor si(ss);
     ExceptionTable table(method);
@@ -493,13 +493,13 @@
   }
 }
 
-void ErrorContext::stackmap_details(outputStream* ss, methodOop method) const {
+void ErrorContext::stackmap_details(outputStream* ss, Method* method) const {
   if (method != NULL && method->has_stackmap_table()) {
     streamIndentor si(ss);
     ss->indent().print_cr("Stackmap Table:");
-    typeArrayOop data = method->stackmap_data();
+    Array<u1>* data = method->stackmap_data();
     stack_map_table* sm_table =
-        stack_map_table::at((address)data->byte_at_addr(0));
+        stack_map_table::at((address)data->adr_at(0));
     stack_map_frame* sm_frame = sm_table->entries();
     streamIndentor si2(ss);
     int current_offset = -1;
@@ -547,14 +547,14 @@
       _klass->external_name());
   }
 
-  objArrayHandle methods(THREAD, _klass->methods());
+  Array<Method*>* methods = _klass->methods();
   int num_methods = methods->length();
 
   for (int index = 0; index < num_methods; index++) {
     // Check for recursive re-verification before each method.
     if (was_recursively_verified())  return;
 
-    methodOop m = (methodOop)methods->obj_at(index);
+    Method* m = methods->at(index);
     if (m->is_native() || m->is_abstract()) {
       // If m is native or abstract, skip it.  It is checked in class file
       // parser that methods do not override a final method.
@@ -571,6 +571,7 @@
 }
 
 void ClassVerifier::verify_method(methodHandle m, TRAPS) {
+  HandleMark hm(THREAD);
   _method = m;   // initialize _method
   if (VerboseVerification) {
     tty->print_cr("Verifying method %s", m->name_and_sig_as_C_string());
@@ -613,7 +614,7 @@
     verify_local_variable_table(code_length, code_data, CHECK_VERIFY(this));
   }
 
-  typeArrayHandle stackmap_data(THREAD, m->stackmap_data());
+  Array<u1>* stackmap_data = m->stackmap_data();
   StackMapStream stream(stackmap_data);
   StackMapReader reader(this, &stream, code_data, code_length, THREAD);
   StackMapTable stackmap_table(&reader, &current_frame, max_locals, max_stack,
@@ -1848,7 +1849,7 @@
   if ((index <= 0) || (index >= nconstants)) {
     verify_error(ErrorContext::bad_cp_index(bci, index),
         "Illegal constant pool index %d in class %s",
-        index, instanceKlass::cast(cp->pool_holder())->external_name());
+        index, InstanceKlass::cast(cp->pool_holder())->external_name());
     return;
   }
 }
@@ -1867,7 +1868,7 @@
   if ((types & (1 << tag)) == 0) {
     verify_error(ErrorContext::bad_cp_index(bci, index),
       "Illegal type at constant pool entry %d in class %s",
-      index, instanceKlass::cast(cp->pool_holder())->external_name());
+      index, InstanceKlass::cast(cp->pool_holder())->external_name());
     return;
   }
 }
@@ -1879,7 +1880,7 @@
   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
     verify_error(ErrorContext::bad_cp_index(bci, index),
         "Illegal type at constant pool entry %d in class %s",
-        index, instanceKlass::cast(cp->pool_holder())->external_name());
+        index, InstanceKlass::cast(cp->pool_holder())->external_name());
     return;
   }
 }
@@ -1915,7 +1916,7 @@
   _message = ss.as_string();
 }
 
-klassOop ClassVerifier::load_class(Symbol* name, TRAPS) {
+Klass* ClassVerifier::load_class(Symbol* name, TRAPS) {
   // Get current loader and protection domain first.
   oop loader = current_class()->class_loader();
   oop protection_domain = current_class()->protection_domain();
@@ -1926,7 +1927,7 @@
 }
 
 bool ClassVerifier::is_protected_access(instanceKlassHandle this_class,
-                                        klassOop target_class,
+                                        Klass* target_class,
                                         Symbol* field_name,
                                         Symbol* field_sig,
                                         bool is_method) {
@@ -1937,17 +1938,17 @@
     return false;
   }
   // Check if the specified method or field is protected
-  instanceKlass* target_instance = instanceKlass::cast(target_class);
+  InstanceKlass* target_instance = InstanceKlass::cast(target_class);
   fieldDescriptor fd;
   if (is_method) {
-    methodOop m = target_instance->uncached_lookup_method(field_name, field_sig);
+    Method* m = target_instance->uncached_lookup_method(field_name, field_sig);
     if (m != NULL && m->is_protected()) {
       if (!this_class->is_same_class_package(m->method_holder())) {
         return true;
       }
     }
   } else {
-    klassOop member_klass = target_instance->find_field(field_name, field_sig, &fd);
+    Klass* member_klass = target_instance->find_field(field_name, field_sig, &fd);
     if (member_klass != NULL && fd.is_protected()) {
       if (!this_class->is_same_class_package(member_klass)) {
         return true;
@@ -1964,7 +1965,7 @@
   constantTag tag = cp->tag_at(index);
   unsigned int types;
   if (opcode == Bytecodes::_ldc || opcode == Bytecodes::_ldc_w) {
-    if (!tag.is_unresolved_string() && !tag.is_unresolved_klass()) {
+    if (!tag.is_unresolved_klass()) {
       types = (1 << JVM_CONSTANT_Integer) | (1 << JVM_CONSTANT_Float)
             | (1 << JVM_CONSTANT_String)  | (1 << JVM_CONSTANT_Class)
             | (1 << JVM_CONSTANT_MethodHandle) | (1 << JVM_CONSTANT_MethodType);
@@ -1979,7 +1980,7 @@
   }
   if (tag.is_string() && cp->is_pseudo_string_at(index)) {
     current_frame->push_stack(object_type(), CHECK_VERIFY(this));
-  } else if (tag.is_string() || tag.is_unresolved_string()) {
+  } else if (tag.is_string()) {
     current_frame->push_stack(
       VerificationType::reference_type(
         vmSymbols::java_lang_String()), CHECK_VERIFY(this));
@@ -2086,12 +2087,12 @@
 
 bool ClassVerifier::name_in_supers(
     Symbol* ref_name, instanceKlassHandle current) {
-  klassOop super = current->super();
+  Klass* super = current->super();
   while (super != NULL) {
-    if (super->klass_part()->name() == ref_name) {
+    if (super->name() == ref_name) {
       return true;
     }
-    super = super->klass_part()->super();
+    super = super->super();
   }
   return false;
 }
@@ -2200,7 +2201,7 @@
         //    be a superclass of it. See revised JVMS 5.4.4.
         break;
 
-      klassOop ref_class_oop = load_class(ref_class_name, CHECK);
+      Klass* ref_class_oop = load_class(ref_class_name, CHECK);
       if (is_protected_access(current_class(), ref_class_oop, field_name,
                               field_sig, false)) {
         // It's protected access, check if stack object is assignable to
@@ -2230,9 +2231,9 @@
     VerificationType::reference_check(), CHECK_VERIFY(this));
   if (type == VerificationType::uninitialized_this_type()) {
     // The method must be an <init> method of this class or its superclass
-    klassOop superk = current_class()->super();
+    Klass* superk = current_class()->super();
     if (ref_class_type.name() != current_class()->name() &&
-        ref_class_type.name() != superk->klass_part()->name()) {
+        ref_class_type.name() != superk->name()) {
       verify_error(ErrorContext::bad_type(bci,
           TypeOrigin::implicit(ref_class_type),
           TypeOrigin::implicit(current_type())),
@@ -2270,9 +2271,9 @@
     // of the current class.
     VerificationType objectref_type = new_class_type;
     if (name_in_supers(ref_class_type.name(), current_class())) {
-      klassOop ref_klass = load_class(
+      Klass* ref_klass = load_class(
         ref_class_type.name(), CHECK_VERIFY(this));
-      methodOop m = instanceKlass::cast(ref_klass)->uncached_lookup_method(
+      Method* m = InstanceKlass::cast(ref_klass)->uncached_lookup_method(
         vmSymbols::object_initializer_name(),
         cp->signature_ref_at(bcs->get_index_u2()));
       instanceKlassHandle mh(THREAD, m->method_holder());
@@ -2416,7 +2417,7 @@
   } else if (opcode == Bytecodes::_invokespecial
              && !ref_class_type.equals(current_type())
              && !ref_class_type.equals(VerificationType::reference_type(
-                  current_class()->super()->klass_part()->name()))) {
+                  current_class()->super()->name()))) {
     bool subtype = ref_class_type.is_assignable_from(
       current_type(), this, CHECK_VERIFY(this));
     if (!subtype) {
@@ -2450,7 +2451,7 @@
           // See the comments in verify_field_instructions() for
           // the rationale behind this.
           if (name_in_supers(ref_class_name, current_class())) {
-            klassOop ref_class = load_class(ref_class_name, CHECK);
+            Klass* ref_class = load_class(ref_class_name, CHECK);
             if (is_protected_access(
                   _klass, ref_class, method_name, method_sig, true)) {
               // It's protected access, check if stack object is
--- a/src/share/vm/classfile/verifier.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/verifier.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,7 +28,7 @@
 #include "classfile/verificationType.hpp"
 #include "memory/gcLocker.hpp"
 #include "oops/klass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/handles.hpp"
 #include "utilities/exceptions.hpp"
 
@@ -224,7 +224,7 @@
     _expected.reset_frame();
   }
 
-  void details(outputStream* ss, methodOop method) const;
+  void details(outputStream* ss, Method* method) const;
 
 #ifdef ASSERT
   void print_on(outputStream* str) const {
@@ -237,12 +237,12 @@
 #endif
 
  private:
-  void location_details(outputStream* ss, methodOop method) const;
+  void location_details(outputStream* ss, Method* method) const;
   void reason_details(outputStream* ss) const;
   void frame_details(outputStream* ss) const;
-  void bytecode_details(outputStream* ss, methodOop method) const;
-  void handler_details(outputStream* ss, methodOop method) const;
-  void stackmap_details(outputStream* ss, methodOop method) const;
+  void bytecode_details(outputStream* ss, Method* method) const;
+  void handler_details(outputStream* ss, Method* method) const;
+  void stackmap_details(outputStream* ss, Method* method) const;
 };
 
 // A new instance of this class is created for each class being verified
@@ -268,7 +268,7 @@
   }
 
   bool is_protected_access(
-    instanceKlassHandle this_class, klassOop target_class,
+    instanceKlassHandle this_class, Klass* target_class,
     Symbol* field_name, Symbol* field_sig, bool is_method);
 
   void verify_cp_index(u2 bci, constantPoolHandle cp, int index, TRAPS);
@@ -380,7 +380,7 @@
   void verify_error(ErrorContext ctx, const char* fmt, ...);
   void class_format_error(const char* fmt, ...);
 
-  klassOop load_class(Symbol* name, TRAPS);
+  Klass* load_class(Symbol* name, TRAPS);
 
   int change_sig_to_verificationType(
     SignatureStream* sig_type, VerificationType* inference_type, TRAPS);
--- a/src/share/vm/classfile/vmSymbols.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/vmSymbols.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -181,7 +181,7 @@
   }
 }
 
-void vmSymbols::serialize(SerializeOopClosure* soc) {
+void vmSymbols::serialize(SerializeClosure* soc) {
   soc->do_region((u_char*)&_symbols[FIRST_SID],
                  (SID_LIMIT - FIRST_SID) * sizeof(_symbols[0]));
   soc->do_region((u_char*)_type_signatures, sizeof(_type_signatures));
@@ -211,7 +211,7 @@
   // Then, use a binary search over the index.
   // Expected trip count is less than log2_SID_LIMIT, about eight.
   // This is slow but acceptable, given that calls are not
-  // dynamically common.  (methodOop::intrinsic_id has a cache.)
+  // dynamically common.  (Method*::intrinsic_id has a cache.)
   NOT_PRODUCT(find_sid_calls++);
   int min = (int)FIRST_SID, max = (int)SID_LIMIT - 1;
   SID sid = NO_SID, sid1;
@@ -324,20 +324,20 @@
   return vmIntrinsics::_none;
 }
 
-methodOop vmIntrinsics::method_for(vmIntrinsics::ID id) {
+Method* vmIntrinsics::method_for(vmIntrinsics::ID id) {
   if (id == _none)  return NULL;
   Symbol* cname = vmSymbols::symbol_at(class_for(id));
   Symbol* mname = vmSymbols::symbol_at(name_for(id));
   Symbol* msig  = vmSymbols::symbol_at(signature_for(id));
   if (cname == NULL || mname == NULL || msig == NULL)  return NULL;
-  klassOop k = SystemDictionary::find_well_known_klass(cname);
+  Klass* k = SystemDictionary::find_well_known_klass(cname);
   if (k == NULL)  return NULL;
-  methodOop m = instanceKlass::cast(k)->find_method(mname, msig);
+  Method* m = InstanceKlass::cast(k)->find_method(mname, msig);
   if (m == NULL &&
       cname == vmSymbols::java_lang_invoke_MethodHandle() &&
       msig == vmSymbols::star_name()) {
     // Any signature polymorphic method is represented by a fixed concrete signature:
-    m = instanceKlass::cast(k)->find_method(mname, vmSymbols::object_array_object_signature());
+    m = InstanceKlass::cast(k)->find_method(mname, vmSymbols::object_array_object_signature());
   }
   return m;
 }
@@ -504,12 +504,12 @@
 #ifndef PRODUCT
 // verify_method performs an extra check on a matched intrinsic method
 
-static bool match_method(methodOop m, Symbol* n, Symbol* s) {
+static bool match_method(Method* m, Symbol* n, Symbol* s) {
   return (m->name() == n &&
           m->signature() == s);
 }
 
-static vmIntrinsics::ID match_method_with_klass(methodOop m, Symbol* mk) {
+static vmIntrinsics::ID match_method_with_klass(Method* m, Symbol* mk) {
 #define VM_INTRINSIC_MATCH(id, klassname, namepart, sigpart, flags) \
   { Symbol* k = vmSymbols::klassname(); \
     if (mk == k) { \
@@ -524,7 +524,7 @@
 #undef VM_INTRINSIC_MATCH
 }
 
-void vmIntrinsics::verify_method(ID actual_id, methodOop m) {
+void vmIntrinsics::verify_method(ID actual_id, Method* m) {
   Symbol* mk = Klass::cast(m->method_holder())->name();
   ID declared_id = match_method_with_klass(m, mk);
 
--- a/src/share/vm/classfile/vmSymbols.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/classfile/vmSymbols.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -234,7 +234,7 @@
   template(parameter_annotations_name,                "parameterAnnotations")                     \
   template(annotation_default_name,                   "annotationDefault")                        \
   template(sun_reflect_ConstantPool,                  "sun/reflect/ConstantPool")                 \
-  template(constantPoolOop_name,                      "constantPoolOop")                          \
+  template(ConstantPool_name,                         "constantPoolOop")                          \
   template(sun_reflect_UnsafeStaticFieldAccessorImpl, "sun/reflect/UnsafeStaticFieldAccessorImpl")\
   template(base_name,                                 "base")                                     \
                                                                                                   \
@@ -314,7 +314,6 @@
   template(type_name,                                 "type")                                     \
   template(findNative_name,                           "findNative")                               \
   template(deadChild_name,                            "deadChild")                                \
-  template(addClass_name,                             "addClass")                                 \
   template(getFromClass_name,                         "getFromClass")                             \
   template(dispatch_name,                             "dispatch")                                 \
   template(getSystemClassLoader_name,                 "getSystemClassLoader")                     \
@@ -359,6 +358,8 @@
   template(values_name,                               "values")                                   \
   template(receiver_name,                             "receiver")                                 \
   template(vmtarget_name,                             "vmtarget")                                 \
+  template(next_target_name,                          "next_target")                              \
+  template(vmloader_name,                             "vmloader")                                 \
   template(vmindex_name,                              "vmindex")                                  \
   template(vmcount_name,                              "vmcount")                                  \
   template(vmentry_name,                              "vmentry")                                  \
@@ -373,6 +374,8 @@
   template(array_klass_name,                          "array_klass")                              \
   template(oop_size_name,                             "oop_size")                                 \
   template(static_oop_field_count_name,               "static_oop_field_count")                   \
+  template(loader_data_name,                          "loader_data")                              \
+  template(dependencies_name,                         "dependencies")                             \
                                                                                                   \
   /* non-intrinsic name/signature pairs: */                                                       \
   template(register_method_name,                      "register")                                 \
@@ -1012,7 +1015,7 @@
 
   // Sharing support
   static void symbols_do(SymbolClosure* f);
-  static void serialize(SerializeOopClosure* soc);
+  static void serialize(SerializeClosure* soc);
 
   static Symbol* type_signature(BasicType t) {
     assert((uint)t < T_VOID+1, "range check");
@@ -1110,7 +1113,7 @@
     return id;
   }
 
-  static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN;
+  static void verify_method(ID actual_id, Method* m) PRODUCT_RETURN;
 
   // Find out the symbols behind an intrinsic:
   static vmSymbols::SID     class_for(ID id);
@@ -1121,7 +1124,7 @@
   static const char* short_name_as_C_string(ID id, char* buf, int size);
 
   // Access to intrinsic methods:
-  static methodOop method_for(ID id);
+  static Method* method_for(ID id);
 
   // Wrapper object methods:
   static ID for_boxing(BasicType type);
--- a/src/share/vm/code/codeBlob.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/codeBlob.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -74,6 +74,7 @@
   size = align_code_offset(size);
   size += round_to(cb->total_content_size(), oopSize);
   size += round_to(cb->total_oop_size(), oopSize);
+  size += round_to(cb->total_metadata_size(), oopSize);
   return size;
 }
 
--- a/src/share/vm/code/codeBlob.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/codeBlob.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -68,8 +68,6 @@
   OopMapSet* _oop_maps;                          // OopMap for this CodeBlob
   CodeComments _comments;
 
-  friend class OopRecorder;
-
  public:
   // Returns the space needed for CodeBlob
   static unsigned int allocation_size(CodeBuffer* cb, int header_size);
--- a/src/share/vm/code/codeCache.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/codeCache.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,9 @@
 #include "precompiled.hpp"
 #include "code/codeBlob.hpp"
 #include "code/codeCache.hpp"
+#include "code/compiledIC.hpp"
 #include "code/dependencies.hpp"
+#include "code/icBuffer.hpp"
 #include "code/nmethod.hpp"
 #include "code/pcDesc.hpp"
 #include "gc_implementation/shared/markSweep.hpp"
@@ -33,7 +35,7 @@
 #include "memory/gcLocker.hpp"
 #include "memory/iterator.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
@@ -54,6 +56,7 @@
   int stub_size;
   int relocation_size;
   int scopes_oop_size;
+  int scopes_metadata_size;
   int scopes_data_size;
   int scopes_pcs_size;
 
@@ -66,6 +69,7 @@
     stub_size        = 0;
     relocation_size  = 0;
     scopes_oop_size  = 0;
+    scopes_metadata_size  = 0;
     scopes_data_size = 0;
     scopes_pcs_size  = 0;
   }
@@ -83,6 +87,7 @@
                   code_size               * 100 / total_size,
                   stub_size               * 100 / total_size,
                   scopes_oop_size         * 100 / total_size,
+                  scopes_metadata_size    * 100 / total_size,
                   scopes_data_size        * 100 / total_size,
                   scopes_pcs_size         * 100 / total_size);
   }
@@ -98,6 +103,7 @@
       stub_size        += nm->stub_size();
 
       scopes_oop_size  += nm->oops_size();
+      scopes_metadata_size  += nm->metadata_size();
       scopes_data_size += nm->scopes_data_size();
       scopes_pcs_size  += nm->scopes_pcs_size();
     } else {
@@ -284,6 +290,12 @@
   }
 }
 
+void CodeCache::alive_nmethods_do(void f(nmethod* nm)) {
+  assert_locked_or_safepoint(CodeCache_lock);
+  FOR_ALL_ALIVE_NMETHODS(nm) {
+    f(nm);
+  }
+}
 
 int CodeCache::alignment_unit() {
   return (int)_heap->alignment_unit();
@@ -448,7 +460,7 @@
 #endif //PRODUCT
 
 
-nmethod* CodeCache::find_and_remove_saved_code(methodOop m) {
+nmethod* CodeCache::find_and_remove_saved_code(Method* m) {
   MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
   nmethod* saved = _saved_nmethods;
   nmethod* prev = NULL;
@@ -468,7 +480,7 @@
       if (LogCompilation && (xtty != NULL)) {
         ttyLocker ttyl;
         xtty->begin_elem("nmethod_reconnected compile_id='%3d'", saved->compile_id());
-        xtty->method(methodOop(m));
+        xtty->method(m);
         xtty->stamp();
         xtty->end_elem();
       }
@@ -518,7 +530,7 @@
   if (LogCompilation && (xtty != NULL)) {
     ttyLocker ttyl;
     xtty->begin_elem("nmethod_disconnected compile_id='%3d'", nm->compile_id());
-    xtty->method(methodOop(nm->method()));
+    xtty->method(nm->method());
     xtty->stamp();
     xtty->end_elem();
   }
@@ -548,6 +560,32 @@
   set_needs_cache_clean(false);
   prune_scavenge_root_nmethods();
   assert(!nmethod::oops_do_marking_is_active(), "oops_do_marking_prologue must be called");
+
+#ifdef ASSERT
+  // make sure that we aren't leaking icholders
+  int count = 0;
+  FOR_ALL_BLOBS(cb) {
+    if (cb->is_nmethod()) {
+      RelocIterator iter((nmethod*)cb);
+      while(iter.next()) {
+        if (iter.type() == relocInfo::virtual_call_type) {
+          if (CompiledIC::is_icholder_call_site(iter.virtual_call_reloc())) {
+            CompiledIC *ic = CompiledIC_at(iter.reloc());
+            if (TraceCompiledIC) {
+              tty->print("noticed icholder " INTPTR_FORMAT " ", ic->cached_icholder());
+              ic->print();
+            }
+            assert(ic->cached_icholder() != NULL, "must be non-NULL");
+            count++;
+          }
+        }
+      }
+    }
+  }
+
+  assert(count + InlineCacheBuffer::pending_icholder_count() + CompiledICHolder::live_not_claimed_count() ==
+         CompiledICHolder::live_count(), "must agree");
+#endif
 }
 
 
@@ -649,8 +687,8 @@
 
   { No_Safepoint_Verifier nsv;
     for (DepChange::ContextStream str(changes, nsv); str.next(); ) {
-      klassOop d = str.klass();
-      number_of_marked_CodeBlobs += instanceKlass::cast(d)->mark_dependent_nmethods(changes);
+      Klass* d = str.klass();
+      number_of_marked_CodeBlobs += InstanceKlass::cast(d)->mark_dependent_nmethods(changes);
     }
   }
 
@@ -683,10 +721,10 @@
   int number_of_marked_CodeBlobs = 0;
 
   // Deoptimize all methods of the evolving class itself
-  objArrayOop old_methods = dependee->methods();
+  Array<Method*>* old_methods = dependee->methods();
   for (int i = 0; i < old_methods->length(); i++) {
     ResourceMark rm;
-    methodOop old_method = (methodOop) old_methods->obj_at(i);
+    Method* old_method = old_methods->at(i);
     nmethod *nm = old_method->code();
     if (nm != NULL) {
       nm->mark_for_deoptimization();
@@ -702,7 +740,7 @@
       nm->mark_for_deoptimization();
       number_of_marked_CodeBlobs++;
     } else  {
-      // flush caches in case they refer to a redefined methodOop
+      // flush caches in case they refer to a redefined Method*
       nm->clear_inline_caches();
     }
   }
@@ -721,7 +759,7 @@
 }
 
 
-int CodeCache::mark_for_deoptimization(methodOop dependee) {
+int CodeCache::mark_for_deoptimization(Method* dependee) {
   MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
   int number_of_marked_CodeBlobs = 0;
 
--- a/src/share/vm/code/codeCache.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/codeCache.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -80,6 +80,7 @@
   static void blobs_do(void f(CodeBlob* cb));       // iterates over all CodeBlobs
   static void blobs_do(CodeBlobClosure* f);         // iterates over all CodeBlobs
   static void nmethods_do(void f(nmethod* nm));     // iterates over all nmethods
+  static void alive_nmethods_do(void f(nmethod* nm)); // iterates over all alive nmethods
 
   // Lookup
   static CodeBlob* find_blob(void* start);
@@ -170,7 +171,7 @@
   static void set_needs_cache_clean(bool v)      { _needs_cache_clean = v;    }
   static void clear_inline_caches();             // clear all inline caches
 
-  static nmethod* find_and_remove_saved_code(methodOop m);
+  static nmethod* find_and_remove_saved_code(Method* m);
   static void remove_saved_code(nmethod* nm);
   static void speculatively_disconnect(nmethod* nm);
 
@@ -181,7 +182,7 @@
 #endif // HOTSWAP
 
   static void mark_all_nmethods_for_deoptimization();
-  static int  mark_for_deoptimization(methodOop dependee);
+  static int  mark_for_deoptimization(Method* dependee);
   static void make_marked_nmethods_zombies();
   static void make_marked_nmethods_not_entrant();
 
--- a/src/share/vm/code/compiledIC.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/compiledIC.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -31,8 +31,9 @@
 #include "code/vtableStubs.hpp"
 #include "interpreter/interpreter.hpp"
 #include "interpreter/linkResolver.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/icache.hpp"
@@ -44,61 +45,79 @@
 // Every time a compiled IC is changed or its type is being accessed,
 // either the CompiledIC_lock must be set or we must be at a safe point.
 
+
+// Release the CompiledICHolder* associated with this call site is there is one.
+void CompiledIC::cleanup_call_site(virtual_call_Relocation* call_site) {
+  // This call site might have become stale so inspect it carefully.
+  NativeCall* call = nativeCall_at(call_site->addr());
+  if (is_icholder_entry(call->destination())) {
+    NativeMovConstReg* value = nativeMovConstReg_at(call_site->cached_value());
+    InlineCacheBuffer::queue_for_release((CompiledICHolder*)value->data());
+  }
+}
+
+
+bool CompiledIC::is_icholder_call_site(virtual_call_Relocation* call_site) {
+  // This call site might have become stale so inspect it carefully.
+  NativeCall* call = nativeCall_at(call_site->addr());
+  return is_icholder_entry(call->destination());
+}
+
+
 //-----------------------------------------------------------------------------
 // Low-level access to an inline cache. Private, since they might not be
 // MT-safe to use.
 
-void CompiledIC::set_cached_oop(oop cache) {
+void* CompiledIC::cached_value() const {
   assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
-  assert (!is_optimized(), "an optimized virtual call does not have a cached oop");
-  assert (cache == NULL || cache != badOop, "invalid oop");
+  assert (!is_optimized(), "an optimized virtual call does not have a cached metadata");
+
+  if (!is_in_transition_state()) {
+    void* data = (void*)_value->data();
+    // If we let the metadata value here be initialized to zero...
+    assert(data != NULL || Universe::non_oop_word() == NULL,
+           "no raw nulls in CompiledIC metadatas, because of patching races");
+    return (data == (void*)Universe::non_oop_word()) ? NULL : data;
+  } else {
+    return InlineCacheBuffer::cached_value_for((CompiledIC *)this);
+  }
+}
+
+
+void CompiledIC::internal_set_ic_destination(address entry_point, bool is_icstub, void* cache, bool is_icholder) {
+  assert(entry_point != NULL, "must set legal entry point");
+  assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+  assert (!is_optimized() || cache == NULL, "an optimized virtual call does not have a cached metadata");
+  assert (cache == NULL || cache != (Metadata*)badOopVal, "invalid metadata");
+
+  assert(!is_icholder || is_icholder_entry(entry_point), "must be");
+
+  // Don't use ic_destination for this test since that forwards
+  // through ICBuffer instead of returning the actual current state of
+  // the CompiledIC.
+  if (is_icholder_entry(_ic_call->destination())) {
+    // When patching for the ICStub case the cached value isn't
+    // overwritten until the ICStub copied into the CompiledIC during
+    // the next safepoint.  Make sure that the CompiledICHolder* is
+    // marked for release at this point since it won't be identifiable
+    // once the entry point is overwritten.
+    InlineCacheBuffer::queue_for_release((CompiledICHolder*)_value->data());
+  }
 
   if (TraceCompiledIC) {
     tty->print("  ");
     print_compiled_ic();
-    tty->print_cr(" changing oop to " INTPTR_FORMAT, (address)cache);
+    tty->print(" changing destination to " INTPTR_FORMAT, entry_point);
+    if (!is_optimized()) {
+      tty->print(" changing cached %s to " INTPTR_FORMAT, is_icholder ? "icholder" : "metadata", (address)cache);
+    }
+    if (is_icstub) {
+      tty->print(" (icstub)");
+    }
+    tty->cr();
   }
 
-  if (cache == NULL)  cache = (oop)Universe::non_oop_word();
-
-  *_oop_addr = cache;
-  // fix up the relocations
-  RelocIterator iter = _oops;
-  while (iter.next()) {
-    if (iter.type() == relocInfo::oop_type) {
-      oop_Relocation* r = iter.oop_reloc();
-      if (r->oop_addr() == _oop_addr)
-        r->fix_oop_relocation();
-    }
-  }
-  return;
-}
-
-
-oop CompiledIC::cached_oop() const {
-  assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
-  assert (!is_optimized(), "an optimized virtual call does not have a cached oop");
-
-  if (!is_in_transition_state()) {
-    oop data = *_oop_addr;
-    // If we let the oop value here be initialized to zero...
-    assert(data != NULL || Universe::non_oop_word() == NULL,
-           "no raw nulls in CompiledIC oops, because of patching races");
-    return (data == (oop)Universe::non_oop_word()) ? (oop)NULL : data;
-  } else {
-    return InlineCacheBuffer::cached_oop_for((CompiledIC *)this);
-  }
-}
-
-
-void CompiledIC::set_ic_destination(address entry_point) {
-  assert(entry_point != NULL, "must set legal entry point");
-  assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
-  if (TraceCompiledIC) {
-    tty->print("  ");
-    print_compiled_ic();
-    tty->print_cr(" changing destination to " INTPTR_FORMAT, entry_point);
-  }
+  {
   MutexLockerEx pl(Patching_lock, Mutex::_no_safepoint_check_flag);
 #ifdef ASSERT
   CodeBlob* cb = CodeCache::find_blob_unsafe(_ic_call);
@@ -107,6 +126,25 @@
   _ic_call->set_destination_mt_safe(entry_point);
 }
 
+  if (is_optimized() || is_icstub) {
+    // Optimized call sites don't have a cache value and ICStub call
+    // sites only change the entry point.  Changing the value in that
+    // case could lead to MT safety issues.
+    assert(cache == NULL, "must be null");
+    return;
+  }
+
+  if (cache == NULL)  cache = (void*)Universe::non_oop_word();
+
+  _value->set_data((intptr_t)cache);
+}
+
+
+void CompiledIC::set_ic_destination(ICStub* stub) {
+  internal_set_ic_destination(stub->code_begin(), true, NULL, false);
+}
+
+
 
 address CompiledIC::ic_destination() const {
  assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
@@ -124,6 +162,11 @@
 }
 
 
+bool CompiledIC::is_icholder_call() const {
+  assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
+  return !_is_optimized && is_icholder_entry(ic_destination());
+}
+
 // Returns native address of 'call' instruction in inline-cache. Used by
 // the InlineCacheBuffer when it needs to find the stub.
 address CompiledIC::stub_address() const {
@@ -140,7 +183,6 @@
   methodHandle method = call_info->selected_method();
   bool is_invoke_interface = (bytecode == Bytecodes::_invokeinterface && !call_info->has_vtable_index());
   assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
-  assert(method->is_oop(), "cannot be NULL and must be oop");
   assert(!is_optimized(), "cannot set an optimized virtual call to megamorphic");
   assert(is_call_to_compiled() || is_call_to_interpreted(), "going directly to megamorphic?");
 
@@ -149,7 +191,7 @@
     int index = klassItable::compute_itable_index(call_info->resolved_method()());
     entry = VtableStubs::create_stub(false, index, method());
     assert(entry != NULL, "entry not computed");
-    klassOop k = call_info->resolved_method()->method_holder();
+    Klass* k = call_info->resolved_method()->method_holder();
     assert(Klass::cast(k)->is_interface(), "sanity check");
     InlineCacheBuffer::create_transition_stub(this, k, entry);
   } else {
@@ -180,7 +222,7 @@
   assert(CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
   assert(!is_optimized(), "an optimized call cannot be megamorphic");
 
-  // Cannot rely on cached_oop. It is either an interface or a method.
+  // Cannot rely on cached_value. It is either an interface or a method.
   return VtableStubs::is_entry_point(ic_destination());
 }
 
@@ -192,24 +234,16 @@
   // has been cleaned up
   CodeBlob* cb = CodeCache::find_blob_unsafe(ic_destination());
   bool is_monomorphic = (cb != NULL && cb->is_nmethod());
-  // Check that the cached_oop is a klass for non-optimized monomorphic calls
+  // Check that the cached_value is a klass for non-optimized monomorphic calls
   // This assertion is invalid for compiler1: a call that does not look optimized (no static stub) can be used
-  // for calling directly to vep without using the inline cache (i.e., cached_oop == NULL)
+  // for calling directly to vep without using the inline cache (i.e., cached_value == NULL)
 #ifdef ASSERT
-#ifdef TIERED
   CodeBlob* caller = CodeCache::find_blob_unsafe(instruction_address());
   bool is_c1_method = caller->is_compiled_by_c1();
-#else
-#ifdef COMPILER1
-  bool is_c1_method = true;
-#else
-  bool is_c1_method = false;
-#endif // COMPILER1
-#endif // TIERED
   assert( is_c1_method ||
          !is_monomorphic ||
          is_optimized() ||
-         (cached_oop() != NULL && cached_oop()->is_klass()), "sanity check");
+         (cached_metadata() != NULL && cached_metadata()->is_klass()), "sanity check");
 #endif // ASSERT
   return is_monomorphic;
 }
@@ -226,7 +260,7 @@
     // is to the interpreter.
     CodeBlob* cb = CodeCache::find_blob_unsafe(ic_destination());
     is_call_to_interpreted = (cb != NULL && cb->is_adapter_blob());
-    assert(!is_call_to_interpreted ||  (cached_oop() != NULL && cached_oop()->is_compiledICHolder()), "sanity check");
+    assert(!is_call_to_interpreted || (is_icholder_call() && cached_icholder() != NULL), "sanity check");
   } else {
     // Check if we are calling into our own codeblob (i.e., to a stub)
     CodeBlob* cb = CodeCache::find_blob(_ic_call->instruction_address());
@@ -257,19 +291,22 @@
     entry = SharedRuntime::get_resolve_virtual_call_stub();
   }
 
-  // A zombie transition will always be safe, since the oop has already been set to NULL, so
+  // A zombie transition will always be safe, since the metadata has already been set to NULL, so
   // we only need to patch the destination
   bool safe_transition = is_optimized() || SafepointSynchronize::is_at_safepoint();
 
   if (safe_transition) {
-    if (!is_optimized()) set_cached_oop(NULL);
     // Kill any leftover stub we might have too
     if (is_in_transition_state()) {
       ICStub* old_stub = ICStub_from_destination_address(stub_address());
       old_stub->clear();
     }
+    if (is_optimized()) {
     set_ic_destination(entry);
   } else {
+      set_ic_destination_and_value(entry, (void*)NULL);
+    }
+  } else {
     // Unsafe transition - create stub.
     InlineCacheBuffer::create_transition_stub(this, NULL, entry);
   }
@@ -289,12 +326,12 @@
   address dest = ic_destination();
   is_clean = dest == SharedRuntime::get_resolve_opt_virtual_call_stub() ||
              dest == SharedRuntime::get_resolve_virtual_call_stub();
-  assert(!is_clean || is_optimized() || cached_oop() == NULL, "sanity check");
+  assert(!is_clean || is_optimized() || cached_value() == NULL, "sanity check");
   return is_clean;
 }
 
 
-void CompiledIC::set_to_monomorphic(const CompiledICInfo& info) {
+void CompiledIC::set_to_monomorphic(CompiledICInfo& info) {
   assert (CompiledIC_lock->is_locked() || SafepointSynchronize::is_at_safepoint(), "");
   // Updating a cache to the wrong entry can cause bugs that are very hard
   // to track down - if cache entry gets invalid - we just clean it. In
@@ -309,7 +346,7 @@
   // transitions are mt_safe
 
   Thread *thread = Thread::current();
-  if (info._to_interpreter) {
+  if (info.to_interpreter()) {
     // Call to interpreter
     if (info.is_optimized() && is_optimized()) {
        assert(is_clean(), "unsafe IC path");
@@ -318,9 +355,9 @@
       // (either because of CHA or the static target is final)
       // At code generation time, this call has been emitted as static call
       // Call via stub
-      assert(info.cached_oop().not_null() && info.cached_oop()->is_method(), "sanity check");
+      assert(info.cached_metadata() != NULL && info.cached_metadata()->is_method(), "sanity check");
       CompiledStaticCall* csc = compiledStaticCall_at(instruction_address());
-      methodHandle method (thread, (methodOop)info.cached_oop()());
+      methodHandle method (thread, (Method*)info.cached_metadata());
       csc->set_to_interpreted(method, info.entry());
       if (TraceICs) {
          ResourceMark rm(thread);
@@ -330,17 +367,15 @@
       }
     } else {
       // Call via method-klass-holder
-      assert(info.cached_oop().not_null(), "must be set");
-      InlineCacheBuffer::create_transition_stub(this, info.cached_oop()(), info.entry());
-
+      InlineCacheBuffer::create_transition_stub(this, info.claim_cached_icholder(), info.entry());
       if (TraceICs) {
          ResourceMark rm(thread);
-         tty->print_cr ("IC@" INTPTR_FORMAT ": monomorphic to interpreter via mkh", instruction_address());
+         tty->print_cr ("IC@" INTPTR_FORMAT ": monomorphic to interpreter via icholder ", instruction_address());
       }
     }
   } else {
     // Call to compiled code
-    bool static_bound = info.is_optimized() || (info.cached_oop().is_null());
+    bool static_bound = info.is_optimized() || (info.cached_metadata() == NULL);
 #ifdef ASSERT
     CodeBlob* cb = CodeCache::find_blob_unsafe(info.entry());
     assert (cb->is_nmethod(), "must be compiled!");
@@ -352,18 +387,21 @@
                 (!is_in_transition_state() && (info.is_optimized() || static_bound || is_clean()));
 
     if (!safe) {
-      InlineCacheBuffer::create_transition_stub(this, info.cached_oop()(), info.entry());
+      InlineCacheBuffer::create_transition_stub(this, info.cached_metadata(), info.entry());
     } else {
+      if (is_optimized()) {
       set_ic_destination(info.entry());
-      if (!is_optimized()) set_cached_oop(info.cached_oop()());
+      } else {
+        set_ic_destination_and_value(info.entry(), info.cached_metadata());
+      }
     }
 
     if (TraceICs) {
       ResourceMark rm(thread);
-      assert(info.cached_oop() == NULL || info.cached_oop()()->is_klass(), "must be");
+      assert(info.cached_metadata() == NULL || info.cached_metadata()->is_klass(), "must be");
       tty->print_cr ("IC@" INTPTR_FORMAT ": monomorphic to compiled (rcvr klass) %s: %s",
         instruction_address(),
-        ((klassOop)info.cached_oop()())->print_value_string(),
+        ((Klass*)info.cached_metadata())->print_value_string(),
         (safe) ? "" : "via stub");
     }
   }
@@ -386,8 +424,6 @@
                                            bool static_bound,
                                            CompiledICInfo& info,
                                            TRAPS) {
-  info._is_optimized = is_optimized;
-
   nmethod* method_code = method->code();
   address entry = NULL;
   if (method_code != NULL) {
@@ -400,18 +436,12 @@
   }
   if (entry != NULL) {
     // Call to compiled code
-    info._entry      = entry;
-    if (static_bound || is_optimized) {
-      info._cached_oop = Handle(THREAD, (oop)NULL);
-    } else {
-      info._cached_oop = receiver_klass;
-    }
-    info._to_interpreter = false;
+    info.set_compiled_entry(entry, (static_bound || is_optimized) ? NULL : receiver_klass(), is_optimized);
   } else {
     // Note: the following problem exists with Compiler1:
     //   - at compile time we may or may not know if the destination is final
     //   - if we know that the destination is final, we will emit an optimized
-    //     virtual call (no inline cache), and need a methodOop to make a call
+    //     virtual call (no inline cache), and need a Method* to make a call
     //     to the interpreter
     //   - if we do not know if the destination is final, we emit a standard
     //     virtual call, and use CompiledICHolder to call interpreted code
@@ -422,7 +452,6 @@
     //     it look vanilla but is optimized. Code in is_call_to_interpreted
     //     is aware of this and weakens its asserts.
 
-    info._to_interpreter = true;
     // static_bound should imply is_optimized -- otherwise we have a
     // performance bug (statically-bindable method is called via
     // dynamically-dispatched call note: the reverse implication isn't
@@ -443,38 +472,46 @@
 #endif // COMPILER2
     if (is_optimized) {
       // Use stub entry
-      info._entry      = method()->get_c2i_entry();
-      info._cached_oop = method;
+      info.set_interpreter_entry(method()->get_c2i_entry(), method());
     } else {
-      // Use mkh entry
-      oop holder = oopFactory::new_compiledICHolder(method, receiver_klass, CHECK);
-      info._cached_oop = Handle(THREAD, holder);
-      info._entry      = method()->get_c2i_unverified_entry();
+      // Use icholder entry
+      CompiledICHolder* holder = new CompiledICHolder(method(), receiver_klass());
+      info.set_icholder_entry(method()->get_c2i_unverified_entry(), holder);
     }
   }
+  assert(info.is_optimized() == is_optimized, "must agree");
+}
+
+
+bool CompiledIC::is_icholder_entry(address entry) {
+  CodeBlob* cb = CodeCache::find_blob_unsafe(entry);
+  return (cb != NULL && cb->is_adapter_blob());
 }
 
 
-inline static RelocIterator parse_ic(nmethod* nm, address ic_call, oop* &_oop_addr, bool *is_optimized) {
-   address  first_oop = NULL;
-   // Mergers please note: Sun SC5.x CC insists on an lvalue for a reference parameter.
-   nmethod* tmp_nm = nm;
-   return virtual_call_Relocation::parse_ic(tmp_nm, ic_call, first_oop, _oop_addr, is_optimized);
-}
+CompiledIC::CompiledIC(nmethod* nm, NativeCall* call)
+  : _ic_call(call)
+{
+  address ic_call = call->instruction_address();
+
+  assert(ic_call != NULL, "ic_call address must be set");
+  assert(nm != NULL, "must pass nmethod");
+  assert(nm->contains(ic_call),   "must be in nmethod");
 
-CompiledIC::CompiledIC(NativeCall* ic_call)
-  : _ic_call(ic_call),
-    _oops(parse_ic(NULL, ic_call->instruction_address(), _oop_addr, &_is_optimized))
-{
+  // search for the ic_call at the given address
+  RelocIterator iter(nm, ic_call, ic_call+1);
+  bool ret = iter.next();
+  assert(ret == true, "relocInfo must exist at this address");
+  assert(iter.addr() == ic_call, "must find ic_call");
+  if (iter.type() == relocInfo::virtual_call_type) {
+    virtual_call_Relocation* r = iter.virtual_call_reloc();
+    _is_optimized = false;
+    _value = nativeMovConstReg_at(r->cached_value());
+  } else {
+    assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
+    _is_optimized = true;
+    _value = NULL;
 }
-
-
-CompiledIC::CompiledIC(Relocation* ic_reloc)
-  : _ic_call(nativeCall_at(ic_reloc->addr())),
-    _oops(parse_ic(ic_reloc->code(), ic_reloc->addr(), _oop_addr, &_is_optimized))
-{
-  assert(ic_reloc->type() == relocInfo::virtual_call_type ||
-         ic_reloc->type() == relocInfo::opt_virtual_call_type, "wrong reloc. info");
 }
 
 
@@ -639,8 +676,8 @@
 
 
 void CompiledIC::print_compiled_ic() {
-  tty->print("Inline cache at " INTPTR_FORMAT ", calling %s " INTPTR_FORMAT,
-             instruction_address(), is_call_to_interpreted() ? "interpreted " : "", ic_destination());
+  tty->print("Inline cache at " INTPTR_FORMAT ", calling %s " INTPTR_FORMAT " cached_value " INTPTR_FORMAT,
+             instruction_address(), is_call_to_interpreted() ? "interpreted " : "", ic_destination(), is_optimized() ? NULL : cached_value());
 }
 
 
--- a/src/share/vm/code/compiledIC.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/compiledIC.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,9 +26,7 @@
 #define SHARE_VM_CODE_COMPILEDIC_HPP
 
 #include "interpreter/linkResolver.hpp"
-#include "oops/compiledICHolderKlass.hpp"
-#include "oops/compiledICHolderOop.hpp"
-#include "oops/klassOop.hpp"
+#include "oops/compiledICHolder.hpp"
 #ifdef TARGET_ARCH_x86
 # include "nativeInst_x86.hpp"
 #endif
@@ -57,36 +55,88 @@
 //           /                     \      /-<-\
 //          /          [2]          \    /     \
 //      Interpreted  ---------> Monomorphic     | [3]
-//  (compiledICHolderOop)        (klassOop)     |
+//  (CompiledICHolder*)            (Klass*)     |
 //          \                        /   \     /
 //       [4] \                      / [4] \->-/
 //            \->-  Megamorphic -<-/
-//                  (methodOop)
+//                  (Method*)
 //
 // The text in paranteses () refere to the value of the inline cache receiver (mov instruction)
 //
 // The numbers in square brackets refere to the kind of transition:
 // [1]: Initial fixup. Receiver it found from debug information
 // [2]: Compilation of a method
-// [3]: Recompilation of a method (note: only entry is changed. The klassOop must stay the same)
+// [3]: Recompilation of a method (note: only entry is changed. The Klass* must stay the same)
 // [4]: Inline cache miss. We go directly to megamorphic call.
 //
 // The class automatically inserts transition stubs (using the InlineCacheBuffer) when an MT-unsafe
 // transition is made to a stub.
 //
 class CompiledIC;
+class ICStub;
 
-class CompiledICInfo {
-  friend class CompiledIC;
+class CompiledICInfo : public StackObj {
  private:
   address _entry;              // entry point for call
-  Handle  _cached_oop;         // Value of cached_oop (either in stub or inline cache)
+  void*   _cached_value;         // Value of cached_value (either in stub or inline cache)
+  bool    _is_icholder;          // Is the cached value a CompiledICHolder*
   bool    _is_optimized;       // it is an optimized virtual call (i.e., can be statically bound)
   bool    _to_interpreter;     // Call it to interpreter
+  bool    _release_icholder;
  public:
   address entry() const        { return _entry; }
-  Handle  cached_oop() const   { return _cached_oop; }
+  Metadata*    cached_metadata() const         { assert(!_is_icholder, ""); return (Metadata*)_cached_value; }
+  CompiledICHolder*    claim_cached_icholder() {
+    assert(_is_icholder, "");
+    assert(_cached_value != NULL, "must be non-NULL");
+    _release_icholder = false;
+    CompiledICHolder* icholder = (CompiledICHolder*)_cached_value;
+    icholder->claim();
+    return icholder;
+  }
   bool    is_optimized() const { return _is_optimized; }
+  bool         to_interpreter() const  { return _to_interpreter; }
+
+  void set_compiled_entry(address entry, Klass* klass, bool is_optimized) {
+    _entry      = entry;
+    _cached_value = (void*)klass;
+    _to_interpreter = false;
+    _is_icholder = false;
+    _is_optimized = is_optimized;
+    _release_icholder = false;
+  }
+
+  void set_interpreter_entry(address entry, Method* method) {
+    _entry      = entry;
+    _cached_value = (void*)method;
+    _to_interpreter = true;
+    _is_icholder = false;
+    _is_optimized = true;
+    _release_icholder = false;
+  }
+
+  void set_icholder_entry(address entry, CompiledICHolder* icholder) {
+    _entry      = entry;
+    _cached_value = (void*)icholder;
+    _to_interpreter = true;
+    _is_icholder = true;
+    _is_optimized = false;
+    _release_icholder = true;
+  }
+
+  CompiledICInfo(): _entry(NULL), _cached_value(NULL), _is_icholder(false),
+                    _to_interpreter(false), _is_optimized(false), _release_icholder(false) {
+  }
+  ~CompiledICInfo() {
+    // In rare cases the info is computed but not used, so release any
+    // CompiledICHolder* that was created
+    if (_release_icholder) {
+      assert(_is_icholder, "must be");
+      CompiledICHolder* icholder = (CompiledICHolder*)_cached_value;
+      icholder->claim();
+      delete icholder;
+    }
+  }
 };
 
 class CompiledIC: public ResourceObj {
@@ -96,18 +146,32 @@
 
  private:
   NativeCall*   _ic_call;       // the call instruction
-  oop*          _oop_addr;      // patchable oop cell for this IC
-  RelocIterator _oops;          // iteration over any and all set-oop instructions
+  NativeMovConstReg* _value;    // patchable value cell for this IC
   bool          _is_optimized;  // an optimized virtual call (i.e., no compiled IC)
 
-  CompiledIC(NativeCall* ic_call);
-  CompiledIC(Relocation* ic_reloc);    // Must be of virtual_call_type/opt_virtual_call_type
+  CompiledIC(nmethod* nm, NativeCall* ic_call);
+
+  static bool is_icholder_entry(address entry);
 
   // low-level inline-cache manipulation. Cannot be accessed directly, since it might not be MT-safe
   // to change an inline-cache. These changes the underlying inline-cache directly. They *newer* make
   // changes to a transition stub.
-  void set_ic_destination(address entry_point);
-  void set_cached_oop(oop cache);
+  void internal_set_ic_destination(address entry_point, bool is_icstub, void* cache, bool is_icholder);
+  void set_ic_destination(ICStub* stub);
+  void set_ic_destination(address entry_point) {
+    assert(_is_optimized, "use set_ic_destination_and_value instead");
+    internal_set_ic_destination(entry_point, false, NULL, false);
+  }
+  // This only for use by ICStubs where the type of the value isn't known
+  void set_ic_destination_and_value(address entry_point, void* value) {
+    internal_set_ic_destination(entry_point, false, value, is_icholder_entry(entry_point));
+  }
+  void set_ic_destination_and_value(address entry_point, Metadata* value) {
+    internal_set_ic_destination(entry_point, false, value, false);
+  }
+  void set_ic_destination_and_value(address entry_point, CompiledICHolder* value) {
+    internal_set_ic_destination(entry_point, false, value, true);
+  }
 
   // Reads the location of the transition stub. This will fail with an assertion, if no transition stub is
   // associated with the inline cache.
@@ -116,13 +180,28 @@
 
  public:
   // conversion (machine PC to CompiledIC*)
-  friend CompiledIC* CompiledIC_before(address return_addr);
-  friend CompiledIC* CompiledIC_at(address call_site);
+  friend CompiledIC* CompiledIC_before(nmethod* nm, address return_addr);
+  friend CompiledIC* CompiledIC_at(nmethod* nm, address call_site);
   friend CompiledIC* CompiledIC_at(Relocation* call_site);
 
-  // Return the cached_oop/destination associated with this inline cache. If the cache currently points
+  // This is used to release CompiledICHolder*s from nmethods that
+  // are about to be freed.  The callsite might contain other stale
+  // values of other kinds so it must be careful.
+  static void cleanup_call_site(virtual_call_Relocation* call_site);
+  static bool is_icholder_call_site(virtual_call_Relocation* call_site);
+
+  // Return the cached_metadata/destination associated with this inline cache. If the cache currently points
   // to a transition stub, it will read the values from the transition stub.
-  oop  cached_oop() const;
+  void* cached_value() const;
+  CompiledICHolder* cached_icholder() const {
+    assert(is_icholder_call(), "must be");
+    return (CompiledICHolder*) cached_value();
+  }
+  Metadata* cached_metadata() const {
+    assert(!is_icholder_call(), "must be");
+    return (Metadata*) cached_value();
+  }
+
   address ic_destination() const;
 
   bool is_optimized() const   { return _is_optimized; }
@@ -133,6 +212,8 @@
   bool is_call_to_compiled() const;
   bool is_call_to_interpreted() const;
 
+  bool is_icholder_call() const;
+
   address end_of_call() { return  _ic_call->return_address(); }
 
   // MT-safe patching of inline caches. Note: Only safe to call is_xxx when holding the CompiledIC_ock
@@ -144,7 +225,7 @@
   // They all takes a TRAP argument, since they can cause a GC if the inline-cache buffer is full.
   //
   void set_to_clean();  // Can only be called during a safepoint operation
-  void set_to_monomorphic(const CompiledICInfo& info);
+  void set_to_monomorphic(CompiledICInfo& info);
   void set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecode, TRAPS);
 
   static void compute_monomorphic_entry(methodHandle method, KlassHandle receiver_klass,
@@ -159,20 +240,22 @@
   void verify()            PRODUCT_RETURN;
 };
 
-inline CompiledIC* CompiledIC_before(address return_addr) {
-  CompiledIC* c_ic = new CompiledIC(nativeCall_before(return_addr));
+inline CompiledIC* CompiledIC_before(nmethod* nm, address return_addr) {
+  CompiledIC* c_ic = new CompiledIC(nm, nativeCall_before(return_addr));
   c_ic->verify();
   return c_ic;
 }
 
-inline CompiledIC* CompiledIC_at(address call_site) {
-  CompiledIC* c_ic = new CompiledIC(nativeCall_at(call_site));
+inline CompiledIC* CompiledIC_at(nmethod* nm, address call_site) {
+  CompiledIC* c_ic = new CompiledIC(nm, nativeCall_at(call_site));
   c_ic->verify();
   return c_ic;
 }
 
 inline CompiledIC* CompiledIC_at(Relocation* call_site) {
-  CompiledIC* c_ic = new CompiledIC(call_site);
+  assert(call_site->type() == relocInfo::virtual_call_type ||
+         call_site->type() == relocInfo::opt_virtual_call_type, "wrong reloc. info");
+  CompiledIC* c_ic = new CompiledIC(call_site->code(), nativeCall_at(call_site->addr()));
   c_ic->verify();
   return c_ic;
 }
@@ -191,7 +274,7 @@
 //
 //  Clean:            Calls directly to runtime method for fixup
 //  Compiled code:    Calls directly to compiled code
-//  Interpreted code: Calls to stub that set methodOop reference
+//  Interpreted code: Calls to stub that set Method* reference
 //
 //
 class CompiledStaticCall;
--- a/src/share/vm/code/debugInfo.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/debugInfo.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -41,6 +41,10 @@
   write_int(recorder()->oop_recorder()->find_index(h));
 }
 
+void DebugInfoWriteStream::write_metadata(Metadata* h) {
+  write_int(recorder()->oop_recorder()->find_index(h));
+}
+
 ScopeValue* DebugInfoReadStream::read_object_value() {
   int id = read_int();
 #ifdef ASSERT
@@ -109,7 +113,7 @@
 
 void ObjectValue::read_object(DebugInfoReadStream* stream) {
   _klass = read_from(stream);
-  assert(_klass->is_constant_oop(), "should be constant klass oop");
+  assert(_klass->is_constant_oop(), "should be constant java mirror oop");
   int length = stream->read_int();
   for (int i = 0; i < length; i++) {
     ScopeValue* val = read_from(stream);
@@ -198,6 +202,9 @@
 // ConstantOopWriteValue
 
 void ConstantOopWriteValue::write_on(DebugInfoWriteStream* stream) {
+  assert(JNIHandles::resolve(value()) == NULL ||
+         Universe::heap()->is_in_reserved(JNIHandles::resolve(value())),
+         "Should be in heap");
   stream->write_int(CONSTANT_OOP_CODE);
   stream->write_handle(value());
 }
@@ -211,6 +218,8 @@
 
 ConstantOopReadValue::ConstantOopReadValue(DebugInfoReadStream* stream) {
   _value = Handle(stream->read_oop());
+  assert(_value() == NULL ||
+         Universe::heap()->is_in_reserved(_value()), "Should be in heap");
 }
 
 void ConstantOopReadValue::write_on(DebugInfoWriteStream* stream) {
--- a/src/share/vm/code/debugInfo.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/debugInfo.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -40,6 +40,8 @@
 // - LocationValue   describes a value in a given location (in frame or register)
 // - ConstantValue   describes a constant
 
+class ConstantOopReadValue;
+
 class ScopeValue: public ResourceObj {
  public:
   // Testers
@@ -51,6 +53,11 @@
   virtual bool is_constant_oop() const { return false; }
   virtual bool equals(ScopeValue* other) const { return false; }
 
+  ConstantOopReadValue* as_ConstantOopReadValue() {
+    assert(is_constant_oop(), "must be");
+    return (ConstantOopReadValue*) this;
+  }
+
   // Serialization of debugging information
   virtual void write_on(DebugInfoWriteStream* stream) = 0;
   static ScopeValue* read_from(DebugInfoReadStream* stream);
@@ -94,7 +101,7 @@
      , _field_values()
      , _value()
      , _visited(false) {
-    assert(klass->is_constant_oop(), "should be constant klass oop");
+    assert(klass->is_constant_oop(), "should be constant java mirror oop");
   }
 
   ObjectValue(int id)
@@ -260,7 +267,15 @@
   } ;
 
   oop read_oop() {
-    return code()->oop_at(read_int());
+    oop o = code()->oop_at(read_int());
+    assert(o == NULL || o->is_oop(), "oop only");
+    return o;
+  }
+  Method* read_method() {
+    Method* o = (Method*)(code()->metadata_at(read_int()));
+    assert(o == NULL ||
+           o->is_metadata(), "meta data only");
+    return o;
   }
   ScopeValue* read_object_value();
   ScopeValue* get_cached_object();
@@ -279,6 +294,8 @@
   DebugInfoWriteStream(DebugInformationRecorder* recorder, int initial_size);
   void write_handle(jobject h);
   void write_bci(int bci) { write_int(bci - InvocationEntryBci); }
+
+  void write_metadata(Metadata* m);
 };
 
 #endif // SHARE_VM_CODE_DEBUGINFO_HPP
--- a/src/share/vm/code/debugInfoRec.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/debugInfoRec.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -305,7 +305,7 @@
   stream()->write_int(sender_stream_offset);
 
   // serialize scope
-  jobject method_enc = (method == NULL)? NULL: method->constant_encoding();
+  Metadata* method_enc = (method == NULL)? NULL: method->constant_encoding();
   stream()->write_int(oop_recorder()->find_index(method_enc));
   stream()->write_bci(bci);
   assert(method == NULL ||
@@ -378,26 +378,36 @@
   }
 }
 
+#ifdef ASSERT
+bool DebugInformationRecorder::recorders_frozen() {
+  return _oop_recorder->is_complete() || _oop_recorder->is_complete();
+}
+
+void DebugInformationRecorder::mark_recorders_frozen() {
+  _oop_recorder->freeze();
+}
+#endif // PRODUCT
+
 DebugToken* DebugInformationRecorder::create_scope_values(GrowableArray<ScopeValue*>* values) {
-  assert(!_oop_recorder->is_complete(), "not frozen yet");
+  assert(!recorders_frozen(), "not frozen yet");
   return (DebugToken*) (intptr_t) serialize_scope_values(values);
 }
 
 
 DebugToken* DebugInformationRecorder::create_monitor_values(GrowableArray<MonitorValue*>* monitors) {
-  assert(!_oop_recorder->is_complete(), "not frozen yet");
+  assert(!recorders_frozen(), "not frozen yet");
   return (DebugToken*) (intptr_t) serialize_monitor_values(monitors);
 }
 
 
 int DebugInformationRecorder::data_size() {
-  debug_only(_oop_recorder->oop_size());  // mark it "frozen" for asserts
+  debug_only(mark_recorders_frozen());  // mark it "frozen" for asserts
   return _stream->position();
 }
 
 
 int DebugInformationRecorder::pcs_size() {
-  debug_only(_oop_recorder->oop_size());  // mark it "frozen" for asserts
+  debug_only(mark_recorders_frozen());  // mark it "frozen" for asserts
   if (last_pc()->pc_offset() != PcDesc::upper_offset_limit)
     add_new_pc_offset(PcDesc::upper_offset_limit);
   return _pcs_length * sizeof(PcDesc);
--- a/src/share/vm/code/debugInfoRec.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/debugInfoRec.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -56,8 +56,8 @@
 //         NB: nodes from create_scope_values and create_locations
 //             can be reused for simple sharing.
 //         - mark the end of the scopes (end_safepoint or end_non_safepoint)
-//   2) Use oop_size, data_size, pcs_size to create the nmethod and
-//      finally migrate the debugging information into the nmethod
+//   2) Use oop_size, metadata_size, data_size, pcs_size to create the nmethod
+//      and finally migrate the debugging information into the nmethod
 //      by calling copy_to.
 
 class DebugToken; // Opaque datatype for stored:
@@ -123,6 +123,7 @@
   int data_size();
   int pcs_size();
   int oop_size() { return oop_recorder()->oop_size(); }
+  int metadata_size() { return oop_recorder()->metadata_size(); }
 
   // copy the generated debugging information to nmethod
   void copy_to(nmethod* nm);
@@ -193,6 +194,11 @@
   int  serialize_scope_values(GrowableArray<ScopeValue*>* values);
   int  find_sharable_decode_offset(int stream_offset);
 
+#ifndef PRODUCT
+  bool recorders_frozen();
+  void mark_recorders_frozen();
+#endif // PRODUCT
+
  public:
   enum { serialized_null = 0 };
 };
--- a/src/share/vm/code/dependencies.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/dependencies.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,6 +30,7 @@
 #include "code/dependencies.hpp"
 #include "compiler/compileLog.hpp"
 #include "oops/oop.inline.hpp"
+#include "runtime/handles.hpp"
 #include "runtime/handles.inline.hpp"
 #include "utilities/copy.hpp"
 
@@ -51,7 +52,7 @@
   _dep_seen = new(arena) GrowableArray<int>(arena, 500, 0, 0);
   DEBUG_ONLY(_deps[end_marker] = NULL);
   for (int i = (int)FIRST_TYPE; i < (int)TYPE_LIMIT; i++) {
-    _deps[i] = new(arena) GrowableArray<ciObject*>(arena, 10, 0, 0);
+    _deps[i] = new(arena) GrowableArray<ciBaseObject*>(arena, 10, 0, 0);
   }
   _content_bytes = NULL;
   _size_in_bytes = (size_t)-1;
@@ -121,9 +122,9 @@
 // Helper function.  If we are adding a new dep. under ctxk2,
 // try to find an old dep. under a broader* ctxk1.  If there is
 //
-bool Dependencies::maybe_merge_ctxk(GrowableArray<ciObject*>* deps,
+bool Dependencies::maybe_merge_ctxk(GrowableArray<ciBaseObject*>* deps,
                                     int ctxk_i, ciKlass* ctxk2) {
-  ciKlass* ctxk1 = deps->at(ctxk_i)->as_klass();
+  ciKlass* ctxk1 = deps->at(ctxk_i)->as_metadata()->as_klass();
   if (ctxk2->is_subtype_of(ctxk1)) {
     return true;  // success, and no need to change
   } else if (ctxk1->is_subtype_of(ctxk2)) {
@@ -135,10 +136,10 @@
   }
 }
 
-void Dependencies::assert_common_1(DepType dept, ciObject* x) {
+void Dependencies::assert_common_1(DepType dept, ciBaseObject* x) {
   assert(dep_args(dept) == 1, "sanity");
   log_dependency(dept, x);
-  GrowableArray<ciObject*>* deps = _deps[dept];
+  GrowableArray<ciBaseObject*>* deps = _deps[dept];
 
   // see if the same (or a similar) dep is already recorded
   if (note_dep_seen(dept, x)) {
@@ -149,10 +150,10 @@
 }
 
 void Dependencies::assert_common_2(DepType dept,
-                                   ciObject* x0, ciObject* x1) {
+                                   ciBaseObject* x0, ciBaseObject* x1) {
   assert(dep_args(dept) == 2, "sanity");
   log_dependency(dept, x0, x1);
-  GrowableArray<ciObject*>* deps = _deps[dept];
+  GrowableArray<ciBaseObject*>* deps = _deps[dept];
 
   // see if the same (or a similar) dep is already recorded
   bool has_ctxk = has_explicit_context_arg(dept);
@@ -162,9 +163,9 @@
       // look in this bucket for redundant assertions
       const int stride = 2;
       for (int i = deps->length(); (i -= stride) >= 0; ) {
-        ciObject* y1 = deps->at(i+1);
+        ciBaseObject* y1 = deps->at(i+1);
         if (x1 == y1) {  // same subject; check the context
-          if (maybe_merge_ctxk(deps, i+0, x0->as_klass())) {
+          if (maybe_merge_ctxk(deps, i+0, x0->as_metadata()->as_klass())) {
             return;
           }
         }
@@ -176,8 +177,8 @@
       // look in this bucket for redundant assertions
       const int stride = 2;
       for (int i = deps->length(); (i -= stride) >= 0; ) {
-        ciObject* y0 = deps->at(i+0);
-        ciObject* y1 = deps->at(i+1);
+        ciBaseObject* y0 = deps->at(i+0);
+        ciBaseObject* y1 = deps->at(i+1);
         if (x0 == y0 && x1 == y1) {
           return;
         }
@@ -191,31 +192,31 @@
 }
 
 void Dependencies::assert_common_3(DepType dept,
-                                   ciKlass* ctxk, ciObject* x, ciObject* x2) {
+                                   ciKlass* ctxk, ciBaseObject* x, ciBaseObject* x2) {
   assert(dep_context_arg(dept) == 0, "sanity");
   assert(dep_args(dept) == 3, "sanity");
   log_dependency(dept, ctxk, x, x2);
-  GrowableArray<ciObject*>* deps = _deps[dept];
+  GrowableArray<ciBaseObject*>* deps = _deps[dept];
 
   // try to normalize an unordered pair:
   bool swap = false;
   switch (dept) {
   case abstract_with_exclusive_concrete_subtypes_2:
-    swap = (x->ident() > x2->ident() && x != ctxk);
+    swap = (x->ident() > x2->ident() && x->as_metadata()->as_klass() != ctxk);
     break;
   case exclusive_concrete_methods_2:
-    swap = (x->ident() > x2->ident() && x->as_method()->holder() != ctxk);
+    swap = (x->ident() > x2->ident() && x->as_metadata()->as_method()->holder() != ctxk);
     break;
   }
-  if (swap) { ciObject* t = x; x = x2; x2 = t; }
+  if (swap) { ciBaseObject* t = x; x = x2; x2 = t; }
 
   // see if the same (or a similar) dep is already recorded
   if (note_dep_seen(dept, x) && note_dep_seen(dept, x2)) {
     // look in this bucket for redundant assertions
     const int stride = 3;
     for (int i = deps->length(); (i -= stride) >= 0; ) {
-      ciObject* y  = deps->at(i+1);
-      ciObject* y2 = deps->at(i+2);
+      ciBaseObject* y  = deps->at(i+1);
+      ciBaseObject* y2 = deps->at(i+2);
       if (x == y && x2 == y2) {  // same subjects; check the context
         if (maybe_merge_ctxk(deps, i+0, ctxk)) {
           return;
@@ -241,24 +242,24 @@
   assert(size_in_bytes() % sizeof(HeapWord) == 0, "copy by words");
 }
 
-static int sort_dep(ciObject** p1, ciObject** p2, int narg) {
+static int sort_dep(ciBaseObject** p1, ciBaseObject** p2, int narg) {
   for (int i = 0; i < narg; i++) {
     int diff = p1[i]->ident() - p2[i]->ident();
     if (diff != 0)  return diff;
   }
   return 0;
 }
-static int sort_dep_arg_1(ciObject** p1, ciObject** p2)
+static int sort_dep_arg_1(ciBaseObject** p1, ciBaseObject** p2)
 { return sort_dep(p1, p2, 1); }
-static int sort_dep_arg_2(ciObject** p1, ciObject** p2)
+static int sort_dep_arg_2(ciBaseObject** p1, ciBaseObject** p2)
 { return sort_dep(p1, p2, 2); }
-static int sort_dep_arg_3(ciObject** p1, ciObject** p2)
+static int sort_dep_arg_3(ciBaseObject** p1, ciBaseObject** p2)
 { return sort_dep(p1, p2, 3); }
 
 void Dependencies::sort_all_deps() {
   for (int deptv = (int)FIRST_TYPE; deptv < (int)TYPE_LIMIT; deptv++) {
     DepType dept = (DepType)deptv;
-    GrowableArray<ciObject*>* deps = _deps[dept];
+    GrowableArray<ciBaseObject*>* deps = _deps[dept];
     if (deps->length() <= 1)  continue;
     switch (dep_args(dept)) {
     case 1: deps->sort(sort_dep_arg_1, 1); break;
@@ -273,33 +274,33 @@
   size_t est_size = 100;
   for (int deptv = (int)FIRST_TYPE; deptv < (int)TYPE_LIMIT; deptv++) {
     DepType dept = (DepType)deptv;
-    GrowableArray<ciObject*>* deps = _deps[dept];
+    GrowableArray<ciBaseObject*>* deps = _deps[dept];
     est_size += deps->length()*2;  // tags and argument(s)
   }
   return est_size;
 }
 
-ciKlass* Dependencies::ctxk_encoded_as_null(DepType dept, ciObject* x) {
+ciKlass* Dependencies::ctxk_encoded_as_null(DepType dept, ciBaseObject* x) {
   switch (dept) {
   case abstract_with_exclusive_concrete_subtypes_2:
-    return x->as_klass();
+    return x->as_metadata()->as_klass();
   case unique_concrete_method:
   case exclusive_concrete_methods_2:
-    return x->as_method()->holder();
+    return x->as_metadata()->as_method()->holder();
   }
   return NULL;  // let NULL be NULL
 }
 
-klassOop Dependencies::ctxk_encoded_as_null(DepType dept, oop x) {
+Klass* Dependencies::ctxk_encoded_as_null(DepType dept, Metadata* x) {
   assert(must_be_in_vm(), "raw oops here");
   switch (dept) {
   case abstract_with_exclusive_concrete_subtypes_2:
     assert(x->is_klass(), "sanity");
-    return (klassOop) x;
+    return (Klass*) x;
   case unique_concrete_method:
   case exclusive_concrete_methods_2:
     assert(x->is_method(), "sanity");
-    return ((methodOop)x)->method_holder();
+    return ((Method*)x)->method_holder();
   }
   return NULL;  // let NULL be NULL
 }
@@ -312,7 +313,7 @@
 
   for (int deptv = (int)FIRST_TYPE; deptv < (int)TYPE_LIMIT; deptv++) {
     DepType dept = (DepType)deptv;
-    GrowableArray<ciObject*>* deps = _deps[dept];
+    GrowableArray<ciBaseObject*>* deps = _deps[dept];
     if (deps->length() == 0)  continue;
     int stride = dep_args(dept);
     int ctxkj  = dep_context_arg(dept);  // -1 if no context arg
@@ -321,8 +322,8 @@
       jbyte code_byte = (jbyte)dept;
       int skipj = -1;
       if (ctxkj >= 0 && ctxkj+1 < stride) {
-        ciKlass*  ctxk = deps->at(i+ctxkj+0)->as_klass();
-        ciObject* x    = deps->at(i+ctxkj+1);  // following argument
+        ciKlass*  ctxk = deps->at(i+ctxkj+0)->as_metadata()->as_klass();
+        ciBaseObject* x     = deps->at(i+ctxkj+1);  // following argument
         if (ctxk == ctxk_encoded_as_null(dept, x)) {
           skipj = ctxkj;  // we win:  maybe one less oop to keep track of
           code_byte |= default_context_type_bit;
@@ -331,7 +332,13 @@
       bytes.write_byte(code_byte);
       for (int j = 0; j < stride; j++) {
         if (j == skipj)  continue;
-        bytes.write_int(_oop_recorder->find_index(deps->at(i+j)->constant_encoding()));
+        ciBaseObject* v = deps->at(i+j);
+        if (v->is_object()) {
+          bytes.write_int(_oop_recorder->find_index(v->as_object()->constant_encoding()));
+        } else {
+          ciMetadata* meta = v->as_metadata();
+          bytes.write_int(_oop_recorder->find_index(meta->constant_encoding()));
+        }
       }
     }
   }
@@ -397,10 +404,10 @@
 // for the sake of the compiler log, print out current dependencies:
 void Dependencies::log_all_dependencies() {
   if (log() == NULL)  return;
-  ciObject* args[max_arg_count];
+  ciBaseObject* args[max_arg_count];
   for (int deptv = (int)FIRST_TYPE; deptv < (int)TYPE_LIMIT; deptv++) {
     DepType dept = (DepType)deptv;
-    GrowableArray<ciObject*>* deps = _deps[dept];
+    GrowableArray<ciBaseObject*>* deps = _deps[dept];
     if (deps->length() == 0)  continue;
     int stride = dep_args(dept);
     for (int i = 0; i < deps->length(); i += stride) {
@@ -415,31 +422,39 @@
 
 void Dependencies::write_dependency_to(CompileLog* log,
                                        DepType dept,
-                                       int nargs, oop args[],
-                                       klassOop witness) {
+                                       int nargs, DepArgument args[],
+                                       Klass* witness) {
   if (log == NULL) {
     return;
   }
   ciEnv* env = ciEnv::current();
-  ciObject* ciargs[max_arg_count];
+  ciBaseObject* ciargs[max_arg_count];
   assert(nargs <= max_arg_count, "oob");
   for (int j = 0; j < nargs; j++) {
-    ciargs[j] = env->get_object(args[j]);
+    if (args[j].is_oop()) {
+      ciargs[j] = env->get_object(args[j].oop_value());
+    } else {
+      ciargs[j] = env->get_metadata(args[j].metadata_value());
+    }
   }
   Dependencies::write_dependency_to(log, dept, nargs, ciargs, witness);
 }
 
 void Dependencies::write_dependency_to(CompileLog* log,
                                        DepType dept,
-                                       int nargs, ciObject* args[],
-                                       klassOop witness) {
+                                       int nargs, ciBaseObject* args[],
+                                       Klass* witness) {
   if (log == NULL)  return;
   assert(nargs <= max_arg_count, "oob");
   int argids[max_arg_count];
   int ctxkj = dep_context_arg(dept);  // -1 if no context arg
   int j;
   for (j = 0; j < nargs; j++) {
-    argids[j] = log->identify(args[j]);
+    if (args[j]->is_object()) {
+      argids[j] = log->identify(args[j]->as_object());
+    } else {
+      argids[j] = log->identify(args[j]->as_metadata());
+    }
   }
   if (witness != NULL) {
     log->begin_elem("dependency_failed");
@@ -468,8 +483,8 @@
 
 void Dependencies::write_dependency_to(xmlStream* xtty,
                                        DepType dept,
-                                       int nargs, oop args[],
-                                       klassOop witness) {
+                                       int nargs, DepArgument args[],
+                                       Klass* witness) {
   if (xtty == NULL)  return;
   ttyLocker ttyl;
   int ctxkj = dep_context_arg(dept);  // -1 if no context arg
@@ -480,16 +495,24 @@
   }
   xtty->print(" type='%s'", dep_name(dept));
   if (ctxkj >= 0) {
-    xtty->object("ctxk", args[ctxkj]);
+    xtty->object("ctxk", args[ctxkj].metadata_value());
   }
   // write remaining arguments, if any.
   for (int j = 0; j < nargs; j++) {
     if (j == ctxkj)  continue;  // already logged
     if (j == 1) {
-      xtty->object("x", args[j]);
+      if (args[j].is_oop()) {
+        xtty->object("x", args[j].oop_value());
+      } else {
+        xtty->object("x", args[j].metadata_value());
+      }
     } else {
       char xn[10]; sprintf(xn, "x%d", j);
-      xtty->object(xn, args[j]);
+      if (args[j].is_oop()) {
+        xtty->object(xn, args[j].oop_value());
+      } else {
+        xtty->object(xn, args[j].metadata_value());
+      }
     }
   }
   if (witness != NULL) {
@@ -499,8 +522,8 @@
   xtty->end_elem();
 }
 
-void Dependencies::print_dependency(DepType dept, int nargs, oop args[],
-                                    klassOop witness) {
+void Dependencies::print_dependency(DepType dept, int nargs, DepArgument args[],
+                                    Klass* witness) {
   ResourceMark rm;
   ttyLocker ttyl;   // keep the following output all in one block
   tty->print_cr("%s of type %s",
@@ -509,26 +532,29 @@
   // print arguments
   int ctxkj = dep_context_arg(dept);  // -1 if no context arg
   for (int j = 0; j < nargs; j++) {
-    oop arg = args[j];
+    DepArgument arg = args[j];
     bool put_star = false;
-    if (arg == NULL)  continue;
+    if (arg.is_null())  continue;
     const char* what;
     if (j == ctxkj) {
+      assert(arg.is_metadata(), "must be");
       what = "context";
-      put_star = !Dependencies::is_concrete_klass((klassOop)arg);
-    } else if (arg->is_method()) {
+      put_star = !Dependencies::is_concrete_klass((Klass*)arg.metadata_value());
+    } else if (arg.is_method()) {
       what = "method ";
-      put_star = !Dependencies::is_concrete_method((methodOop)arg);
-    } else if (arg->is_klass()) {
+      put_star = !Dependencies::is_concrete_method((Method*)arg.metadata_value());
+    } else if (arg.is_klass()) {
       what = "class  ";
     } else {
       what = "object ";
     }
     tty->print("  %s = %s", what, (put_star? "*": ""));
-    if (arg->is_klass())
-      tty->print("%s", Klass::cast((klassOop)arg)->external_name());
+    if (arg.is_klass())
+      tty->print("%s", Klass::cast((Klass*)arg.metadata_value())->external_name());
+    else if (arg.is_method())
+      ((Method*)arg.metadata_value())->print_value();
     else
-      arg->print_value();
+      ShouldNotReachHere(); // Provide impl for this type.
     tty->cr();
   }
   if (witness != NULL) {
@@ -539,13 +565,17 @@
   }
 }
 
-void Dependencies::DepStream::log_dependency(klassOop witness) {
+void Dependencies::DepStream::log_dependency(Klass* witness) {
   if (_deps == NULL && xtty == NULL)  return;  // fast cutout for runtime
   int nargs = argument_count();
-  oop args[max_arg_count];
+  DepArgument args[max_arg_count];
   for (int j = 0; j < nargs; j++) {
+    if (type() == call_site_target_value) {
+      args[j] = argument_oop(j);
+    } else {
     args[j] = argument(j);
   }
+  }
   if (_deps != NULL && _deps->log() != NULL) {
     Dependencies::write_dependency_to(_deps->log(),
                                       type(), nargs, args, witness);
@@ -555,9 +585,9 @@
   }
 }
 
-void Dependencies::DepStream::print_dependency(klassOop witness, bool verbose) {
+void Dependencies::DepStream::print_dependency(Klass* witness, bool verbose) {
   int nargs = argument_count();
-  oop args[max_arg_count];
+  DepArgument args[max_arg_count];
   for (int j = 0; j < nargs; j++) {
     args[j] = argument(j);
   }
@@ -615,27 +645,47 @@
   }
 }
 
+inline Metadata* Dependencies::DepStream::recorded_metadata_at(int i) {
+  Metadata* o = NULL;
+  if (_code != NULL) {
+    o = _code->metadata_at(i);
+  } else {
+    o = _deps->oop_recorder()->metadata_at(i);
+  }
+  assert(o == NULL || o->is_metadata(),
+         err_msg("Should be perm " PTR_FORMAT, o));
+  return o;
+}
+
 inline oop Dependencies::DepStream::recorded_oop_at(int i) {
   return (_code != NULL)
          ? _code->oop_at(i)
-         : JNIHandles::resolve(_deps->oop_recorder()->handle_at(i));
+    : JNIHandles::resolve(_deps->oop_recorder()->oop_at(i));
 }
 
-oop Dependencies::DepStream::argument(int i) {
-  return recorded_oop_at(argument_index(i));
+Metadata* Dependencies::DepStream::argument(int i) {
+  Metadata* result = recorded_metadata_at(argument_index(i));
+  assert(result == NULL || result->is_klass() || result->is_method(), "must be");
+  return result;
 }
 
-klassOop Dependencies::DepStream::context_type() {
+oop Dependencies::DepStream::argument_oop(int i) {
+  oop result = recorded_oop_at(argument_index(i));
+  assert(result == NULL || result->is_oop(), "must be");
+  return result;
+}
+
+Klass* Dependencies::DepStream::context_type() {
   assert(must_be_in_vm(), "raw oops here");
 
   // Most dependencies have an explicit context type argument.
   {
     int ctxkj = dep_context_arg(_type);  // -1 if no explicit context arg
     if (ctxkj >= 0) {
-      oop k = argument(ctxkj);
+      Metadata* k = argument(ctxkj);
       if (k != NULL) {       // context type was not compressed away
         assert(k->is_klass(), "type check");
-        return (klassOop) k;
+        return (Klass*) k;
       }
       // recompute "default" context type
       return ctxk_encoded_as_null(_type, argument(ctxkj+1));
@@ -647,9 +697,9 @@
   {
     int ctxkj = dep_implicit_context_arg(_type);
     if (ctxkj >= 0) {
-      oop k = argument(ctxkj)->klass();
+      Klass* k = argument_oop(ctxkj)->klass();
       assert(k->is_klass(), "type check");
-      return (klassOop) k;
+      return (Klass*) k;
     }
   }
 
@@ -675,16 +725,16 @@
   Symbol* _signature;
 
   // special classes which are not allowed to be witnesses:
-  klassOop  _participants[PARTICIPANT_LIMIT+1];
+  Klass*    _participants[PARTICIPANT_LIMIT+1];
   int       _num_participants;
 
   // cache of method lookups
-  methodOop _found_methods[PARTICIPANT_LIMIT+1];
+  Method* _found_methods[PARTICIPANT_LIMIT+1];
 
   // if non-zero, tells how many witnesses to convert to participants
   int       _record_witnesses;
 
-  void initialize(klassOop participant) {
+  void initialize(Klass* participant) {
     _record_witnesses = 0;
     _participants[0]  = participant;
     _found_methods[0] = NULL;
@@ -697,7 +747,7 @@
     }
   }
 
-  void initialize_from_method(methodOop m) {
+  void initialize_from_method(Method* m) {
     assert(m != NULL && m->is_method(), "sanity");
     _name      = m->name();
     _signature = m->signature();
@@ -706,15 +756,15 @@
  public:
   // The walker is initialized to recognize certain methods and/or types
   // as friendly participants.
-  ClassHierarchyWalker(klassOop participant, methodOop m) {
+  ClassHierarchyWalker(Klass* participant, Method* m) {
     initialize_from_method(m);
     initialize(participant);
   }
-  ClassHierarchyWalker(methodOop m) {
+  ClassHierarchyWalker(Method* m) {
     initialize_from_method(m);
     initialize(NULL);
   }
-  ClassHierarchyWalker(klassOop participant = NULL) {
+  ClassHierarchyWalker(Klass* participant = NULL) {
     _name      = NULL;
     _signature = NULL;
     initialize(participant);
@@ -727,15 +777,15 @@
   }
 
   int num_participants() { return _num_participants; }
-  klassOop participant(int n) {
+  Klass* participant(int n) {
     assert((uint)n <= (uint)_num_participants, "oob");
     return _participants[n];
   }
 
   // Note:  If n==num_participants, returns NULL.
-  methodOop found_method(int n) {
+  Method* found_method(int n) {
     assert((uint)n <= (uint)_num_participants, "oob");
-    methodOop fm = _found_methods[n];
+    Method* fm = _found_methods[n];
     assert(n == _num_participants || fm != NULL, "proper usage");
     assert(fm == NULL || fm->method_holder() == _participants[n], "sanity");
     return fm;
@@ -744,7 +794,7 @@
 #ifdef ASSERT
   // Assert that m is inherited into ctxk, without intervening overrides.
   // (May return true even if this is not true, in corner cases where we punt.)
-  bool check_method_context(klassOop ctxk, methodOop m) {
+  bool check_method_context(Klass* ctxk, Method* m) {
     if (m->method_holder() == ctxk)
       return true;  // Quick win.
     if (m->is_private())
@@ -753,10 +803,10 @@
       // The override story is complex when packages get involved.
       return true;  // Must punt the assertion to true.
     Klass* k = Klass::cast(ctxk);
-    methodOop lm = k->lookup_method(m->name(), m->signature());
+    Method* lm = k->lookup_method(m->name(), m->signature());
     if (lm == NULL && k->oop_is_instance()) {
       // It might be an abstract interface method, devoid of mirandas.
-      lm = ((instanceKlass*)k)->lookup_method_in_all_interfaces(m->name(),
+      lm = ((InstanceKlass*)k)->lookup_method_in_all_interfaces(m->name(),
                                                                 m->signature());
     }
     if (lm == m)
@@ -788,7 +838,7 @@
   }
 #endif
 
-  void add_participant(klassOop participant) {
+  void add_participant(Klass* participant) {
     assert(_num_participants + _record_witnesses < PARTICIPANT_LIMIT, "oob");
     int np = _num_participants++;
     _participants[np] = participant;
@@ -802,11 +852,11 @@
     _record_witnesses = add;
   }
 
-  bool is_witness(klassOop k) {
+  bool is_witness(Klass* k) {
     if (doing_subtype_search()) {
       return Dependencies::is_concrete_klass(k);
     } else {
-      methodOop m = instanceKlass::cast(k)->find_method(_name, _signature);
+      Method* m = InstanceKlass::cast(k)->find_method(_name, _signature);
       if (m == NULL || !Dependencies::is_concrete_method(m))  return false;
       _found_methods[_num_participants] = m;
       // Note:  If add_participant(k) is called,
@@ -815,7 +865,7 @@
     }
   }
 
-  bool is_participant(klassOop k) {
+  bool is_participant(Klass* k) {
     if (k == _participants[0]) {
       return true;
     } else if (_num_participants <= 1) {
@@ -824,7 +874,7 @@
       return in_list(k, &_participants[1]);
     }
   }
-  bool ignore_witness(klassOop witness) {
+  bool ignore_witness(Klass* witness) {
     if (_record_witnesses == 0) {
       return false;
     } else {
@@ -833,9 +883,9 @@
       return true;
     }
   }
-  static bool in_list(klassOop x, klassOop* list) {
+  static bool in_list(Klass* x, Klass** list) {
     for (int i = 0; ; i++) {
-      klassOop y = list[i];
+      Klass* y = list[i];
       if (y == NULL)  break;
       if (y == x)  return true;
     }
@@ -844,15 +894,15 @@
 
  private:
   // the actual search method:
-  klassOop find_witness_anywhere(klassOop context_type,
+  Klass* find_witness_anywhere(Klass* context_type,
                                  bool participants_hide_witnesses,
                                  bool top_level_call = true);
   // the spot-checking version:
-  klassOop find_witness_in(KlassDepChange& changes,
-                           klassOop context_type,
+  Klass* find_witness_in(KlassDepChange& changes,
+                         Klass* context_type,
                            bool participants_hide_witnesses);
  public:
-  klassOop find_witness_subtype(klassOop context_type, KlassDepChange* changes = NULL) {
+  Klass* find_witness_subtype(Klass* context_type, KlassDepChange* changes = NULL) {
     assert(doing_subtype_search(), "must set up a subtype search");
     // When looking for unexpected concrete types,
     // do not look beneath expected ones.
@@ -865,7 +915,7 @@
       return find_witness_anywhere(context_type, participants_hide_witnesses);
     }
   }
-  klassOop find_witness_definer(klassOop context_type, KlassDepChange* changes = NULL) {
+  Klass* find_witness_definer(Klass* context_type, KlassDepChange* changes = NULL) {
     assert(!doing_subtype_search(), "must set up a method definer search");
     // When looking for unexpected concrete methods,
     // look beneath expected ones, to see if there are overrides.
@@ -926,11 +976,11 @@
 #endif //PRODUCT
 
 
-klassOop ClassHierarchyWalker::find_witness_in(KlassDepChange& changes,
-                                               klassOop context_type,
+Klass* ClassHierarchyWalker::find_witness_in(KlassDepChange& changes,
+                                               Klass* context_type,
                                                bool participants_hide_witnesses) {
   assert(changes.involves_context(context_type), "irrelevant dependency");
-  klassOop new_type = changes.new_type();
+  Klass* new_type = changes.new_type();
 
   count_find_witness_calls();
   NOT_PRODUCT(deps_find_witness_singles++);
@@ -940,7 +990,7 @@
   // Must not move the class hierarchy during this check:
   assert_locked_or_safepoint(Compile_lock);
 
-  int nof_impls = instanceKlass::cast(context_type)->nof_implementors();
+  int nof_impls = InstanceKlass::cast(context_type)->nof_implementors();
   if (nof_impls > 1) {
     // Avoid this case: *I.m > { A.m, C }; B.m > C
     // %%% Until this is fixed more systematically, bail out.
@@ -952,7 +1002,7 @@
   if (participants_hide_witnesses) {
     // If the new type is a subtype of a participant, we are done.
     for (int i = 0; i < num_participants(); i++) {
-      klassOop part = participant(i);
+      Klass* part = participant(i);
       if (part == NULL)  continue;
       assert(changes.involves_context(part) == Klass::cast(new_type)->is_subtype_of(part),
              "correct marking of participants, b/c new_type is unique");
@@ -977,7 +1027,7 @@
 // them only if participants_hide_witnesses is false.
 // If top_level_call is false, skip testing the context type,
 // because the caller has already considered it.
-klassOop ClassHierarchyWalker::find_witness_anywhere(klassOop context_type,
+Klass* ClassHierarchyWalker::find_witness_anywhere(Klass* context_type,
                                                      bool participants_hide_witnesses,
                                                      bool top_level_call) {
   // Current thread must be in VM (not native mode, as in CI):
@@ -1005,13 +1055,13 @@
   // Now we must check each implementor and each subclass.
   // Use a short worklist to avoid blowing the stack.
   // Each worklist entry is a *chain* of subklass siblings to process.
-  const int CHAINMAX = 100;  // >= 1 + instanceKlass::implementors_limit
+  const int CHAINMAX = 100;  // >= 1 + InstanceKlass::implementors_limit
   Klass* chains[CHAINMAX];
   int    chaini = 0;  // index into worklist
   Klass* chain;       // scratch variable
 #define ADD_SUBCLASS_CHAIN(k)                     {  \
     assert(chaini < CHAINMAX, "oob");                \
-    chain = instanceKlass::cast(k)->subklass();      \
+    chain = InstanceKlass::cast(k)->subklass();      \
     if (chain != NULL)  chains[chaini++] = chain;    }
 
   // Look for non-abstract subclasses.
@@ -1020,9 +1070,9 @@
 
   // If it is an interface, search its direct implementors.
   // (Their subclasses are additional indirect implementors.
-  // See instanceKlass::add_implementor.)
+  // See InstanceKlass::add_implementor.)
   // (Note:  nof_implementors is always zero for non-interfaces.)
-  int nof_impls = instanceKlass::cast(context_type)->nof_implementors();
+  int nof_impls = InstanceKlass::cast(context_type)->nof_implementors();
   if (nof_impls > 1) {
     // Avoid this case: *I.m > { A.m, C }; B.m > C
     // Here, I.m has 2 concrete implementations, but m appears unique
@@ -1034,7 +1084,7 @@
     return context_type;
   }
   if (nof_impls > 0) {
-    klassOop impl = instanceKlass::cast(context_type)->implementor();
+    Klass* impl = InstanceKlass::cast(context_type)->implementor();
     assert(impl != NULL, "just checking");
     // If impl is the same as the context_type, then more than one
     // implementor has seen. No exact info in this case.
@@ -1057,8 +1107,7 @@
   // Recursively process each non-trivial sibling chain.
   while (chaini > 0) {
     Klass* chain = chains[--chaini];
-    for (Klass* subk = chain; subk != NULL; subk = subk->next_sibling()) {
-      klassOop sub = subk->as_klassOop();
+    for (Klass* sub = chain; sub != NULL; sub = sub->next_sibling()) {
       if (do_counts) { NOT_PRODUCT(deps_find_witness_steps++); }
       if (is_participant(sub)) {
         if (participants_hide_witnesses)  continue;
@@ -1076,7 +1125,7 @@
         // no need for the recursive call to re-test.  That's handy,
         // since the recursive call sees sub as the context_type.)
         if (do_counts) { NOT_PRODUCT(deps_find_witness_recursions++); }
-        klassOop witness = find_witness_anywhere(sub,
+        Klass* witness = find_witness_anywhere(sub,
                                                  participants_hide_witnesses,
                                                  /*top_level_call=*/ false);
         if (witness != NULL)  return witness;
@@ -1090,7 +1139,7 @@
 }
 
 
-bool Dependencies::is_concrete_klass(klassOop k) {
+bool Dependencies::is_concrete_klass(Klass* k) {
   if (Klass::cast(k)->is_abstract())  return false;
   // %%% We could treat classes which are concrete but
   // have not yet been instantiated as virtually abstract.
@@ -1099,7 +1148,7 @@
   return true;
 }
 
-bool Dependencies::is_concrete_method(methodOop m) {
+bool Dependencies::is_concrete_method(Method* m) {
   // Statics are irrelevant to virtual call sites.
   if (m->is_static())  return false;
 
@@ -1148,7 +1197,7 @@
 // Any use of the contents (bytecodes) of a method must be
 // marked by an "evol_method" dependency, if those contents
 // can change.  (Note: A method is always dependent on itself.)
-klassOop Dependencies::check_evol_method(methodOop m) {
+Klass* Dependencies::check_evol_method(Method* m) {
   assert(must_be_in_vm(), "raw oops here");
   // Did somebody do a JVMTI RedefineClasses while our backs were turned?
   // Or is there a now a breakpoint?
@@ -1168,17 +1217,17 @@
 // can be optimized more strongly than this, because we
 // know that the checked type comes from a concrete type,
 // and therefore we can disregard abstract types.)
-klassOop Dependencies::check_leaf_type(klassOop ctxk) {
+Klass* Dependencies::check_leaf_type(Klass* ctxk) {
   assert(must_be_in_vm(), "raw oops here");
   assert_locked_or_safepoint(Compile_lock);
-  instanceKlass* ctx = instanceKlass::cast(ctxk);
+  InstanceKlass* ctx = InstanceKlass::cast(ctxk);
   Klass* sub = ctx->subklass();
   if (sub != NULL) {
-    return sub->as_klassOop();
+    return sub;
   } else if (ctx->nof_implementors() != 0) {
     // if it is an interface, it must be unimplemented
     // (if it is not an interface, nof_implementors is always zero)
-    klassOop impl = ctx->implementor();
+    Klass* impl = ctx->implementor();
     assert(impl != NULL, "must be set");
     return impl;
   } else {
@@ -1190,8 +1239,8 @@
 // The type conck itself is allowed to have have further concrete subtypes.
 // This allows the compiler to narrow occurrences of ctxk by conck,
 // when dealing with the types of actual instances.
-klassOop Dependencies::check_abstract_with_unique_concrete_subtype(klassOop ctxk,
-                                                                   klassOop conck,
+Klass* Dependencies::check_abstract_with_unique_concrete_subtype(Klass* ctxk,
+                                                                   Klass* conck,
                                                                    KlassDepChange* changes) {
   ClassHierarchyWalker wf(conck);
   return wf.find_witness_subtype(ctxk, changes);
@@ -1200,7 +1249,7 @@
 // If a non-concrete class has no concrete subtypes, it is not (yet)
 // instantiatable.  This can allow the compiler to make some paths go
 // dead, if they are gated by a test of the type.
-klassOop Dependencies::check_abstract_with_no_concrete_subtype(klassOop ctxk,
+Klass* Dependencies::check_abstract_with_no_concrete_subtype(Klass* ctxk,
                                                                KlassDepChange* changes) {
   // Find any concrete subtype, with no participants:
   ClassHierarchyWalker wf;
@@ -1210,7 +1259,7 @@
 
 // If a concrete class has no concrete subtypes, it can always be
 // exactly typed.  This allows the use of a cheaper type test.
-klassOop Dependencies::check_concrete_with_no_concrete_subtype(klassOop ctxk,
+Klass* Dependencies::check_concrete_with_no_concrete_subtype(Klass* ctxk,
                                                                KlassDepChange* changes) {
   // Find any concrete subtype, with only the ctxk as participant:
   ClassHierarchyWalker wf(ctxk);
@@ -1223,12 +1272,12 @@
 // proper subtypes, return ctxk itself, whether it is concrete or not.
 // The returned subtype is allowed to have have further concrete subtypes.
 // That is, return CC1 for CX > CC1 > CC2, but NULL for CX > { CC1, CC2 }.
-klassOop Dependencies::find_unique_concrete_subtype(klassOop ctxk) {
+Klass* Dependencies::find_unique_concrete_subtype(Klass* ctxk) {
   ClassHierarchyWalker wf(ctxk);   // Ignore ctxk when walking.
   wf.record_witnesses(1);          // Record one other witness when walking.
-  klassOop wit = wf.find_witness_subtype(ctxk);
+  Klass* wit = wf.find_witness_subtype(ctxk);
   if (wit != NULL)  return NULL;   // Too many witnesses.
-  klassOop conck = wf.participant(0);
+  Klass* conck = wf.participant(0);
   if (conck == NULL) {
 #ifndef PRODUCT
     // Make sure the dependency mechanism will pass this discovery:
@@ -1268,10 +1317,10 @@
 // except possibly for further subtypes of k[12] themselves.
 // The context type must be abstract.  The types k1 and k2 are themselves
 // allowed to have further concrete subtypes.
-klassOop Dependencies::check_abstract_with_exclusive_concrete_subtypes(
-                                                klassOop ctxk,
-                                                klassOop k1,
-                                                klassOop k2,
+Klass* Dependencies::check_abstract_with_exclusive_concrete_subtypes(
+                                                Klass* ctxk,
+                                                Klass* k1,
+                                                Klass* k2,
                                                 KlassDepChange* changes) {
   ClassHierarchyWalker wf;
   wf.add_participant(k1);
@@ -1285,12 +1334,12 @@
 // (Note that a return of 0 means there are exactly no concrete subtypes.)
 // In this search, if ctxk is concrete, it will be reported alone.
 // For any type CC reported, no proper subtypes of CC will be reported.
-int Dependencies::find_exclusive_concrete_subtypes(klassOop ctxk,
+int Dependencies::find_exclusive_concrete_subtypes(Klass* ctxk,
                                                    int klen,
-                                                   klassOop karray[]) {
+                                                   Klass* karray[]) {
   ClassHierarchyWalker wf;
   wf.record_witnesses(klen);
-  klassOop wit = wf.find_witness_subtype(ctxk);
+  Klass* wit = wf.find_witness_subtype(ctxk);
   if (wit != NULL)  return -1;  // Too many witnesses.
   int num = wf.num_participants();
   assert(num <= klen, "oob");
@@ -1332,7 +1381,7 @@
 
 // If a class (or interface) has a unique concrete method uniqm, return NULL.
 // Otherwise, return a class that contains an interfering method.
-klassOop Dependencies::check_unique_concrete_method(klassOop ctxk, methodOop uniqm,
+Klass* Dependencies::check_unique_concrete_method(Klass* ctxk, Method* uniqm,
                                                     KlassDepChange* changes) {
   // Here is a missing optimization:  If uniqm->is_final(),
   // we don't really need to search beneath it for overrides.
@@ -1346,13 +1395,13 @@
 // (The method m must be defined or inherited in ctxk.)
 // Include m itself in the set, unless it is abstract.
 // If this set has exactly one element, return that element.
-methodOop Dependencies::find_unique_concrete_method(klassOop ctxk, methodOop m) {
+Method* Dependencies::find_unique_concrete_method(Klass* ctxk, Method* m) {
   ClassHierarchyWalker wf(m);
   assert(wf.check_method_context(ctxk, m), "proper context");
   wf.record_witnesses(1);
-  klassOop wit = wf.find_witness_definer(ctxk);
+  Klass* wit = wf.find_witness_definer(ctxk);
   if (wit != NULL)  return NULL;  // Too many witnesses.
-  methodOop fm = wf.found_method(0);  // Will be NULL if num_parts == 0.
+  Method* fm = wf.found_method(0);  // Will be NULL if num_parts == 0.
   if (Dependencies::is_concrete_method(m)) {
     if (fm == NULL) {
       // It turns out that m was always the only implementation.
@@ -1373,9 +1422,9 @@
   return fm;
 }
 
-klassOop Dependencies::check_exclusive_concrete_methods(klassOop ctxk,
-                                                        methodOop m1,
-                                                        methodOop m2,
+Klass* Dependencies::check_exclusive_concrete_methods(Klass* ctxk,
+                                                        Method* m1,
+                                                        Method* m2,
                                                         KlassDepChange* changes) {
   ClassHierarchyWalker wf(m1);
   wf.add_participant(m1->method_holder());
@@ -1389,15 +1438,15 @@
 // Fill the given array m[0..(mlen-1)] with this set, and return the length.
 // (The length may be zero if no concrete methods are found anywhere.)
 // If there are too many concrete methods to fit in marray, return -1.
-int Dependencies::find_exclusive_concrete_methods(klassOop ctxk,
+int Dependencies::find_exclusive_concrete_methods(Klass* ctxk,
                                                   int mlen,
-                                                  methodOop marray[]) {
-  methodOop m0 = marray[0];
+                                                  Method* marray[]) {
+  Method* m0 = marray[0];
   ClassHierarchyWalker wf(m0);
   assert(wf.check_method_context(ctxk, m0), "proper context");
   wf.record_witnesses(mlen);
   bool participants_hide_witnesses = true;
-  klassOop wit = wf.find_witness_definer(ctxk);
+  Klass* wit = wf.find_witness_definer(ctxk);
   if (wit != NULL)  return -1;  // Too many witnesses.
   int num = wf.num_participants();
   assert(num <= mlen, "oob");
@@ -1407,7 +1456,7 @@
   if (Dependencies::is_concrete_method(m0))
     mfill++;  // keep m0 as marray[0], the first result
   for (int i = 0; i < num; i++) {
-    methodOop fm = wf.found_method(i);
+    Method* fm = wf.found_method(i);
     if (fm == m0)  continue;  // Already put this guy in the list.
     if (mfill == mlen) {
       return -1;              // Oops.  Too many methods after all!
@@ -1438,19 +1487,15 @@
 }
 
 
-klassOop Dependencies::check_has_no_finalizable_subclasses(klassOop ctxk, KlassDepChange* changes) {
-  Klass* search_at = ctxk->klass_part();
+Klass* Dependencies::check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes) {
+  Klass* search_at = ctxk;
   if (changes != NULL)
-    search_at = changes->new_type()->klass_part(); // just look at the new bit
-  Klass* result = find_finalizable_subclass(search_at);
-  if (result == NULL) {
-    return NULL;
-  }
-  return result->as_klassOop();
+    search_at = changes->new_type(); // just look at the new bit
+  return find_finalizable_subclass(search_at);
 }
 
 
-klassOop Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
+Klass* Dependencies::check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes) {
   assert(call_site    ->is_a(SystemDictionary::CallSite_klass()),     "sanity");
   assert(method_handle->is_a(SystemDictionary::MethodHandle_klass()), "sanity");
   if (changes == NULL) {
@@ -1468,7 +1513,7 @@
 }
 
 
-void Dependencies::DepStream::trace_and_log_witness(klassOop witness) {
+void Dependencies::DepStream::trace_and_log_witness(Klass* witness) {
   if (witness != NULL) {
     if (TraceDependencies) {
       print_dependency(witness, /*verbose=*/ true);
@@ -1479,11 +1524,11 @@
 }
 
 
-klassOop Dependencies::DepStream::check_klass_dependency(KlassDepChange* changes) {
+Klass* Dependencies::DepStream::check_klass_dependency(KlassDepChange* changes) {
   assert_locked_or_safepoint(Compile_lock);
   Dependencies::check_valid_dependency_type(type());
 
-  klassOop witness = NULL;
+  Klass* witness = NULL;
   switch (type()) {
   case evol_method:
     witness = check_evol_method(method_argument(0));
@@ -1521,14 +1566,14 @@
 }
 
 
-klassOop Dependencies::DepStream::check_call_site_dependency(CallSiteDepChange* changes) {
+Klass* Dependencies::DepStream::check_call_site_dependency(CallSiteDepChange* changes) {
   assert_locked_or_safepoint(Compile_lock);
   Dependencies::check_valid_dependency_type(type());
 
-  klassOop witness = NULL;
+  Klass* witness = NULL;
   switch (type()) {
   case call_site_target_value:
-    witness = check_call_site_target_value(argument(0), argument(1), changes);
+    witness = check_call_site_target_value(argument_oop(0), argument_oop(1), changes);
     break;
   default:
     witness = NULL;
@@ -1539,7 +1584,7 @@
 }
 
 
-klassOop Dependencies::DepStream::spot_check_dependency_at(DepChange& changes) {
+Klass* Dependencies::DepStream::spot_check_dependency_at(DepChange& changes) {
   // Handle klass dependency
   if (changes.is_klass_change() && changes.as_klass_change()->involves_context(context_type()))
     return check_klass_dependency(changes.as_klass_change());
@@ -1556,23 +1601,23 @@
 void DepChange::print() {
   int nsup = 0, nint = 0;
   for (ContextStream str(*this); str.next(); ) {
-    klassOop k = str.klass();
+    Klass* k = str.klass();
     switch (str.change_type()) {
     case Change_new_type:
-      tty->print_cr("  dependee = %s", instanceKlass::cast(k)->external_name());
+      tty->print_cr("  dependee = %s", InstanceKlass::cast(k)->external_name());
       break;
     case Change_new_sub:
       if (!WizardMode) {
         ++nsup;
       } else {
-        tty->print_cr("  context super = %s", instanceKlass::cast(k)->external_name());
+        tty->print_cr("  context super = %s", InstanceKlass::cast(k)->external_name());
       }
       break;
     case Change_new_impl:
       if (!WizardMode) {
         ++nint;
       } else {
-        tty->print_cr("  context interface = %s", instanceKlass::cast(k)->external_name());
+        tty->print_cr("  context interface = %s", InstanceKlass::cast(k)->external_name());
       }
       break;
     }
@@ -1583,7 +1628,7 @@
 }
 
 void DepChange::ContextStream::start() {
-  klassOop new_type = _changes.is_klass_change() ? _changes.as_klass_change()->new_type() : (klassOop) NULL;
+  Klass* new_type = _changes.is_klass_change() ? _changes.as_klass_change()->new_type() : (Klass*) NULL;
   _change_type = (new_type == NULL ? NO_CHANGE : Start_Klass);
   _klass = new_type;
   _ti_base = NULL;
@@ -1594,7 +1639,7 @@
 bool DepChange::ContextStream::next() {
   switch (_change_type) {
   case Start_Klass:             // initial state; _klass is the new type
-    _ti_base = instanceKlass::cast(_klass)->transitive_interfaces();
+    _ti_base = InstanceKlass::cast(_klass)->transitive_interfaces();
     _ti_index = 0;
     _change_type = Change_new_type;
     return true;
@@ -1604,7 +1649,7 @@
   case Change_new_sub:
     // 6598190: brackets workaround Sun Studio C++ compiler bug 6629277
     {
-      _klass = instanceKlass::cast(_klass)->super();
+      _klass = InstanceKlass::cast(_klass)->super();
       if (_klass != NULL) {
         return true;
       }
@@ -1614,7 +1659,7 @@
     _change_type = Change_new_impl;
   case Change_new_impl:
     if (_ti_index < _ti_limit) {
-      _klass = klassOop( _ti_base->obj_at(_ti_index++) );
+      _klass = _ti_base->at(_ti_index++);
       return true;
     }
     // fall through:
@@ -1634,9 +1679,9 @@
   // Mark all dependee and all its superclasses
   // Mark transitive interfaces
   for (ContextStream str(*this); str.next(); ) {
-    klassOop d = str.klass();
-    assert(!instanceKlass::cast(d)->is_marked_dependent(), "checking");
-    instanceKlass::cast(d)->set_is_marked_dependent(true);
+    Klass* d = str.klass();
+    assert(!InstanceKlass::cast(d)->is_marked_dependent(), "checking");
+    InstanceKlass::cast(d)->set_is_marked_dependent(true);
   }
 }
 
@@ -1644,16 +1689,16 @@
   // Unmark all dependee and all its superclasses
   // Unmark transitive interfaces
   for (ContextStream str(*this); str.next(); ) {
-    klassOop d = str.klass();
-    instanceKlass::cast(d)->set_is_marked_dependent(false);
+    Klass* d = str.klass();
+    InstanceKlass::cast(d)->set_is_marked_dependent(false);
   }
 }
 
-bool KlassDepChange::involves_context(klassOop k) {
+bool KlassDepChange::involves_context(Klass* k) {
   if (k == NULL || !Klass::cast(k)->oop_is_instance()) {
     return false;
   }
-  instanceKlass* ik = instanceKlass::cast(k);
+  InstanceKlass* ik = InstanceKlass::cast(k);
   bool is_contained = ik->is_marked_dependent();
   assert(is_contained == Klass::cast(new_type())->is_subtype_of(k),
          "correct marking of potential context types");
--- a/src/share/vm/code/dependencies.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/dependencies.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -203,7 +203,7 @@
  private:
   // State for writing a new set of dependencies:
   GrowableArray<int>*       _dep_seen;  // (seen[h->ident] & (1<<dept))
-  GrowableArray<ciObject*>* _deps[TYPE_LIMIT];
+  GrowableArray<ciBaseObject*>*  _deps[TYPE_LIMIT];
 
   static const char* _dep_name[TYPE_LIMIT];
   static int         _dep_args[TYPE_LIMIT];
@@ -212,7 +212,7 @@
     return (int)dept >= 0 && dept < TYPE_LIMIT && ((1<<dept) & mask) != 0;
   }
 
-  bool note_dep_seen(int dept, ciObject* x) {
+  bool note_dep_seen(int dept, ciBaseObject* x) {
     assert(dept < BitsPerInt, "oob");
     int x_id = x->ident();
     assert(_dep_seen != NULL, "deps must be writable");
@@ -222,7 +222,7 @@
     return (seen & (1<<dept)) != 0;
   }
 
-  bool maybe_merge_ctxk(GrowableArray<ciObject*>* deps,
+  bool maybe_merge_ctxk(GrowableArray<ciBaseObject*>* deps,
                         int ctxk_i, ciKlass* ctxk);
 
   void sort_all_deps();
@@ -260,9 +260,9 @@
     assert(!is_concrete_klass(ctxk->as_instance_klass()), "must be abstract");
   }
 
-  void assert_common_1(DepType dept, ciObject* x);
-  void assert_common_2(DepType dept, ciObject* x0, ciObject* x1);
-  void assert_common_3(DepType dept, ciKlass* ctxk, ciObject* x1, ciObject* x2);
+  void assert_common_1(DepType dept, ciBaseObject* x);
+  void assert_common_2(DepType dept, ciBaseObject* x0, ciBaseObject* x1);
+  void assert_common_3(DepType dept, ciKlass* ctxk, ciBaseObject* x1, ciBaseObject* x2);
 
  public:
   // Adding assertions to a new dependency set at compile time:
@@ -286,8 +286,8 @@
   // methods to remain non-concrete until their first invocation.
   // In that case, there would be a middle ground between concrete
   // and abstract (as defined by the Java language and VM).
-  static bool is_concrete_klass(klassOop k);    // k is instantiable
-  static bool is_concrete_method(methodOop m);  // m is invocable
+  static bool is_concrete_klass(Klass* k);    // k is instantiable
+  static bool is_concrete_method(Method* m);  // m is invocable
   static Klass* find_finalizable_subclass(Klass* k);
 
   // These versions of the concreteness queries work through the CI.
@@ -314,24 +314,24 @@
   // dependency on it must fail.
 
   // Checking old assertions at run-time (in the VM only):
-  static klassOop check_evol_method(methodOop m);
-  static klassOop check_leaf_type(klassOop ctxk);
-  static klassOop check_abstract_with_unique_concrete_subtype(klassOop ctxk, klassOop conck,
+  static Klass* check_evol_method(Method* m);
+  static Klass* check_leaf_type(Klass* ctxk);
+  static Klass* check_abstract_with_unique_concrete_subtype(Klass* ctxk, Klass* conck,
                                                               KlassDepChange* changes = NULL);
-  static klassOop check_abstract_with_no_concrete_subtype(klassOop ctxk,
+  static Klass* check_abstract_with_no_concrete_subtype(Klass* ctxk,
                                                           KlassDepChange* changes = NULL);
-  static klassOop check_concrete_with_no_concrete_subtype(klassOop ctxk,
+  static Klass* check_concrete_with_no_concrete_subtype(Klass* ctxk,
                                                           KlassDepChange* changes = NULL);
-  static klassOop check_unique_concrete_method(klassOop ctxk, methodOop uniqm,
+  static Klass* check_unique_concrete_method(Klass* ctxk, Method* uniqm,
                                                KlassDepChange* changes = NULL);
-  static klassOop check_abstract_with_exclusive_concrete_subtypes(klassOop ctxk, klassOop k1, klassOop k2,
+  static Klass* check_abstract_with_exclusive_concrete_subtypes(Klass* ctxk, Klass* k1, Klass* k2,
                                                                   KlassDepChange* changes = NULL);
-  static klassOop check_exclusive_concrete_methods(klassOop ctxk, methodOop m1, methodOop m2,
+  static Klass* check_exclusive_concrete_methods(Klass* ctxk, Method* m1, Method* m2,
                                                    KlassDepChange* changes = NULL);
-  static klassOop check_has_no_finalizable_subclasses(klassOop ctxk, KlassDepChange* changes = NULL);
-  static klassOop check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes = NULL);
-  // A returned klassOop is NULL if the dependency assertion is still
-  // valid.  A non-NULL klassOop is a 'witness' to the assertion
+  static Klass* check_has_no_finalizable_subclasses(Klass* ctxk, KlassDepChange* changes = NULL);
+  static Klass* check_call_site_target_value(oop call_site, oop method_handle, CallSiteDepChange* changes = NULL);
+  // A returned Klass* is NULL if the dependency assertion is still
+  // valid.  A non-NULL Klass* is a 'witness' to the assertion
   // failure, a point in the class hierarchy where the assertion has
   // been proven false.  For example, if check_leaf_type returns
   // non-NULL, the value is a subtype of the supposed leaf type.  This
@@ -345,10 +345,10 @@
   // It is used by DepStream::spot_check_dependency_at.
 
   // Detecting possible new assertions:
-  static klassOop  find_unique_concrete_subtype(klassOop ctxk);
-  static methodOop find_unique_concrete_method(klassOop ctxk, methodOop m);
-  static int       find_exclusive_concrete_subtypes(klassOop ctxk, int klen, klassOop k[]);
-  static int       find_exclusive_concrete_methods(klassOop ctxk, int mlen, methodOop m[]);
+  static Klass*    find_unique_concrete_subtype(Klass* ctxk);
+  static Method*   find_unique_concrete_method(Klass* ctxk, Method* m);
+  static int       find_exclusive_concrete_subtypes(Klass* ctxk, int klen, Klass* k[]);
+  static int       find_exclusive_concrete_methods(Klass* ctxk, int mlen, Method* m[]);
 
   // Create the encoding which will be stored in an nmethod.
   void encode_content_bytes();
@@ -368,15 +368,15 @@
   void copy_to(nmethod* nm);
 
   void log_all_dependencies();
-  void log_dependency(DepType dept, int nargs, ciObject* args[]) {
+  void log_dependency(DepType dept, int nargs, ciBaseObject* args[]) {
     write_dependency_to(log(), dept, nargs, args);
   }
   void log_dependency(DepType dept,
-                      ciObject* x0,
-                      ciObject* x1 = NULL,
-                      ciObject* x2 = NULL) {
+                      ciBaseObject* x0,
+                      ciBaseObject* x1 = NULL,
+                      ciBaseObject* x2 = NULL) {
     if (log() == NULL)  return;
-    ciObject* args[max_arg_count];
+    ciBaseObject* args[max_arg_count];
     args[0] = x0;
     args[1] = x1;
     args[2] = x2;
@@ -384,27 +384,47 @@
     log_dependency(dept, dep_args(dept), args);
   }
 
-  static void write_dependency_to(CompileLog* log,
-                                  DepType dept,
-                                  int nargs, ciObject* args[],
-                                  klassOop witness = NULL);
+  class DepArgument : public ResourceObj {
+   private:
+    bool  _is_oop;
+    bool  _valid;
+    void* _value;
+   public:
+    DepArgument() : _is_oop(false), _value(NULL), _valid(false) {}
+    DepArgument(oop v): _is_oop(true), _value(v), _valid(true) {}
+    DepArgument(Metadata* v): _is_oop(false), _value(v), _valid(true) {}
+
+    bool is_null() const               { return _value == NULL; }
+    bool is_oop() const                { return _is_oop; }
+    bool is_metadata() const           { return !_is_oop; }
+    bool is_klass() const              { return is_metadata() && metadata_value()->is_klass(); }
+    bool is_method() const              { return is_metadata() && metadata_value()->is_method(); }
+
+    oop oop_value() const              { assert(_is_oop && _valid, "must be"); return (oop) _value; }
+    Metadata* metadata_value() const { assert(!_is_oop && _valid, "must be"); return (Metadata*) _value; }
+  };
+
   static void write_dependency_to(CompileLog* log,
                                   DepType dept,
-                                  int nargs, oop args[],
-                                  klassOop witness = NULL);
+                                  int nargs, ciBaseObject* args[],
+                                  Klass* witness = NULL);
+  static void write_dependency_to(CompileLog* log,
+                                  DepType dept,
+                                  int nargs, DepArgument args[],
+                                  Klass* witness = NULL);
   static void write_dependency_to(xmlStream* xtty,
                                   DepType dept,
-                                  int nargs, oop args[],
-                                  klassOop witness = NULL);
+                                  int nargs, DepArgument args[],
+                                  Klass* witness = NULL);
   static void print_dependency(DepType dept,
-                               int nargs, oop args[],
-                               klassOop witness = NULL);
+                               int nargs, DepArgument args[],
+                               Klass* witness = NULL);
 
  private:
   // helper for encoding common context types as zero:
-  static ciKlass* ctxk_encoded_as_null(DepType dept, ciObject* x);
+  static ciKlass* ctxk_encoded_as_null(DepType dept, ciBaseObject* x);
 
-  static klassOop ctxk_encoded_as_null(DepType dept, oop x);
+  static Klass* ctxk_encoded_as_null(DepType dept, Metadata* x);
 
  public:
   // Use this to iterate over an nmethod's dependency set.
@@ -433,13 +453,13 @@
 
     void initial_asserts(size_t byte_limit) NOT_DEBUG({});
 
+    inline Metadata* recorded_metadata_at(int i);
     inline oop recorded_oop_at(int i);
-        // => _code? _code->oop_at(i): *_deps->_oop_recorder->handle_at(i)
 
-    klassOop check_klass_dependency(KlassDepChange* changes);
-    klassOop check_call_site_dependency(CallSiteDepChange* changes);
+    Klass* check_klass_dependency(KlassDepChange* changes);
+    Klass* check_call_site_dependency(CallSiteDepChange* changes);
 
-    void trace_and_log_witness(klassOop witness);
+    void trace_and_log_witness(Klass* witness);
 
   public:
     DepStream(Dependencies* deps)
@@ -463,38 +483,39 @@
     int argument_count()         { return dep_args(type()); }
     int argument_index(int i)    { assert(0 <= i && i < argument_count(), "oob");
                                    return _xi[i]; }
-    oop argument(int i);         // => recorded_oop_at(argument_index(i))
-    klassOop context_type();
+    Metadata* argument(int i);     // => recorded_oop_at(argument_index(i))
+    oop argument_oop(int i);         // => recorded_oop_at(argument_index(i))
+    Klass* context_type();
 
     bool is_klass_type()         { return Dependencies::is_klass_type(type()); }
 
-    methodOop method_argument(int i) {
-      oop x = argument(i);
+    Method* method_argument(int i) {
+      Metadata* x = argument(i);
       assert(x->is_method(), "type");
-      return (methodOop) x;
+      return (Method*) x;
     }
-    klassOop type_argument(int i) {
-      oop x = argument(i);
+    Klass* type_argument(int i) {
+      Metadata* x = argument(i);
       assert(x->is_klass(), "type");
-      return (klassOop) x;
+      return (Klass*) x;
     }
 
     // The point of the whole exercise:  Is this dep still OK?
-    klassOop check_dependency() {
-      klassOop result = check_klass_dependency(NULL);
+    Klass* check_dependency() {
+      Klass* result = check_klass_dependency(NULL);
       if (result != NULL)  return result;
       return check_call_site_dependency(NULL);
     }
 
     // A lighter version:  Checks only around recent changes in a class
     // hierarchy.  (See Universe::flush_dependents_on.)
-    klassOop spot_check_dependency_at(DepChange& changes);
+    Klass* spot_check_dependency_at(DepChange& changes);
 
     // Log the current dependency to xtty or compilation log.
-    void log_dependency(klassOop witness = NULL);
+    void log_dependency(Klass* witness = NULL);
 
     // Print the current dependency to tty.
-    void print_dependency(klassOop witness = NULL, bool verbose = false);
+    void print_dependency(Klass* witness = NULL, bool verbose = false);
   };
   friend class Dependencies::DepStream;
 
@@ -533,7 +554,7 @@
 
   // Usage:
   // for (DepChange::ContextStream str(changes); str.next(); ) {
-  //   klassOop k = str.klass();
+  //   Klass* k = str.klass();
   //   switch (str.change_type()) {
   //     ...
   //   }
@@ -545,8 +566,8 @@
 
     // iteration variables:
     ChangeType  _change_type;
-    klassOop    _klass;
-    objArrayOop _ti_base;    // i.e., transitive_interfaces
+    Klass*      _klass;
+    Array<Klass*>* _ti_base;    // i.e., transitive_interfaces
     int         _ti_index;
     int         _ti_limit;
 
@@ -566,7 +587,7 @@
     bool next();
 
     ChangeType change_type()     { return _change_type; }
-    klassOop   klass()           { return _klass; }
+    Klass*     klass()           { return _klass; }
   };
   friend class DepChange::ContextStream;
 };
@@ -598,10 +619,10 @@
   // What kind of DepChange is this?
   virtual bool is_klass_change() const { return true; }
 
-  klassOop new_type() { return _new_type(); }
+  Klass* new_type() { return _new_type(); }
 
   // involves_context(k) is true if k is new_type or any of the super types
-  bool involves_context(klassOop k);
+  bool involves_context(Klass* k);
 };
 
 
--- a/src/share/vm/code/exceptionHandlerTable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/exceptionHandlerTable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -26,7 +26,7 @@
 #define SHARE_VM_CODE_EXCEPTIONHANDLERTABLE_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 
 // A HandlerTableEntry describes an individual entry of a subtable
 // of ExceptionHandlerTable. An entry consists of a pair(bci, pco),
--- a/src/share/vm/code/icBuffer.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/icBuffer.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -32,7 +32,7 @@
 #include "interpreter/linkResolver.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
 #include "runtime/mutexLocker.hpp"
@@ -59,16 +59,17 @@
 StubQueue* InlineCacheBuffer::_buffer    = NULL;
 ICStub*    InlineCacheBuffer::_next_stub = NULL;
 
+CompiledICHolder* InlineCacheBuffer::_pending_released = NULL;
+int InlineCacheBuffer::_pending_count = 0;
 
 void ICStub::finalize() {
   if (!is_empty()) {
     ResourceMark rm;
-    CompiledIC *ic = CompiledIC_at(ic_site());
+    CompiledIC *ic = CompiledIC_at(CodeCache::find_nmethod(ic_site()), ic_site());
     assert(CodeCache::find_nmethod(ic->instruction_address()) != NULL, "inline cache in non-nmethod?");
 
     assert(this == ICStub_from_destination_address(ic->stub_address()), "wrong owner of ic buffer");
-    ic->set_cached_oop(cached_oop());
-    ic->set_ic_destination(destination());
+    ic->set_ic_destination_and_value(destination(), cached_value());
   }
 }
 
@@ -77,25 +78,28 @@
   return InlineCacheBuffer::ic_buffer_entry_point(code_begin());
 }
 
-oop ICStub::cached_oop() const {
-  return InlineCacheBuffer::ic_buffer_cached_oop(code_begin());
+void* ICStub::cached_value() const {
+  return InlineCacheBuffer::ic_buffer_cached_value(code_begin());
 }
 
 
-void ICStub::set_stub(CompiledIC *ic, oop cached_value, address dest_addr) {
+void ICStub::set_stub(CompiledIC *ic, void* cached_val, address dest_addr) {
   // We cannot store a pointer to the 'ic' object, since it is resource allocated. Instead we
   // store the location of the inline cache. Then we have enough information recreate the CompiledIC
   // object when we need to remove the stub.
   _ic_site = ic->instruction_address();
 
   // Assemble new stub
-  InlineCacheBuffer::assemble_ic_buffer_code(code_begin(), cached_value, dest_addr);
+  InlineCacheBuffer::assemble_ic_buffer_code(code_begin(), cached_val, dest_addr);
   assert(destination() == dest_addr,   "can recover destination");
-  assert(cached_oop() == cached_value, "can recover destination");
+  assert(cached_value() == cached_val, "can recover destination");
 }
 
 
 void ICStub::clear() {
+  if (CompiledIC::is_icholder_entry(destination())) {
+    InlineCacheBuffer::queue_for_release((CompiledICHolder*)cached_value());
+  }
   _ic_site = NULL;
 }
 
@@ -161,6 +165,7 @@
     buffer()->remove_all();
     init_next_stub();
   }
+  release_pending_icholders();
 }
 
 
@@ -179,11 +184,13 @@
 }
 
 
-void InlineCacheBuffer::create_transition_stub(CompiledIC *ic, oop cached_oop, address entry) {
+void InlineCacheBuffer::create_transition_stub(CompiledIC *ic, void* cached_value, address entry) {
   assert(!SafepointSynchronize::is_at_safepoint(), "should not be called during a safepoint");
   assert (CompiledIC_lock->is_locked(), "");
-  assert(cached_oop == NULL || cached_oop->is_perm(), "must belong to perm. space");
-  if (TraceICBuffer) { tty->print_cr("  create transition stub for " INTPTR_FORMAT, ic->instruction_address()); }
+  if (TraceICBuffer) {
+    tty->print_cr("  create transition stub for " INTPTR_FORMAT " destination " INTPTR_FORMAT " cached value " INTPTR_FORMAT,
+                  ic->instruction_address(), entry, cached_value);
+  }
 
   // If an transition stub is already associate with the inline cache, then we remove the association.
   if (ic->is_in_transition_state()) {
@@ -193,10 +200,10 @@
 
   // allocate and initialize new "out-of-line" inline-cache
   ICStub* ic_stub = get_next_stub();
-  ic_stub->set_stub(ic, cached_oop, entry);
+  ic_stub->set_stub(ic, cached_value, entry);
 
   // Update inline cache in nmethod to point to new "out-of-line" allocated inline cache
-  ic->set_ic_destination(ic_stub->code_begin());
+  ic->set_ic_destination(ic_stub);
 
   set_next_stub(new_ic_stub()); // can cause safepoint synchronization
 }
@@ -208,7 +215,35 @@
 }
 
 
-oop InlineCacheBuffer::cached_oop_for(CompiledIC *ic) {
+void* InlineCacheBuffer::cached_value_for(CompiledIC *ic) {
   ICStub* stub = ICStub_from_destination_address(ic->stub_address());
-  return stub->cached_oop();
+  return stub->cached_value();
 }
+
+
+// Free CompiledICHolder*s that are no longer in use
+void InlineCacheBuffer::release_pending_icholders() {
+  assert(SafepointSynchronize::is_at_safepoint(), "should only be called during a safepoint");
+  CompiledICHolder* holder = _pending_released;
+  _pending_released = NULL;
+  while (holder != NULL) {
+    CompiledICHolder* next = holder->next();
+    delete holder;
+    holder = next;
+    _pending_count--;
+  }
+  assert(_pending_count == 0, "wrong count");
+}
+
+// Enqueue this icholder for release during the next safepoint.  It's
+// not safe to free them until them since they might be visible to
+// another thread.
+void InlineCacheBuffer::queue_for_release(CompiledICHolder* icholder) {
+  MutexLockerEx mex(InlineCacheBuffer_lock);
+  icholder->set_next(_pending_released);
+  _pending_released = icholder;
+  _pending_count++;
+  if (TraceICBuffer) {
+    tty->print_cr("enqueueing icholder " INTPTR_FORMAT " to be freed", icholder);
+  }
+}
--- a/src/share/vm/code/icBuffer.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/icBuffer.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -57,7 +57,7 @@
 
  public:
   // Creation
-  void set_stub(CompiledIC *ic, oop cached_value, address dest_addr);
+  void set_stub(CompiledIC *ic, void* cached_value, address dest_addr);
 
   // Code info
   address code_begin() const                     { return (address)this + round_to(sizeof(ICStub), CodeEntryAlignment); }
@@ -70,7 +70,7 @@
 
   // stub info
   address destination() const;  // destination of jump instruction
-  oop     cached_oop() const;   // cached_oop for stub
+  void* cached_value() const;   // cached_value for stub
 
   // Debugging
   void    verify()            PRODUCT_RETURN;
@@ -99,6 +99,9 @@
   static StubQueue* _buffer;
   static ICStub*    _next_stub;
 
+  static CompiledICHolder* _pending_released;
+  static int _pending_count;
+
   static StubQueue* buffer()                         { return _buffer;         }
   static void       set_next_stub(ICStub* next_stub) { _next_stub = next_stub; }
   static ICStub*    get_next_stub()                  { return _next_stub;      }
@@ -109,9 +112,9 @@
 
 
   // Machine-dependent implementation of ICBuffer
-  static void    assemble_ic_buffer_code(address code_begin, oop cached_oop, address entry_point);
+  static void    assemble_ic_buffer_code(address code_begin, void* cached_value, address entry_point);
   static address ic_buffer_entry_point  (address code_begin);
-  static oop     ic_buffer_cached_oop   (address code_begin);
+  static void*   ic_buffer_cached_value (address code_begin);
 
  public:
 
@@ -127,11 +130,14 @@
   // for debugging
   static bool is_empty();
 
+  static void release_pending_icholders();
+  static void queue_for_release(CompiledICHolder* icholder);
+  static int pending_icholder_count() { return _pending_count; }
 
   // New interface
-  static void    create_transition_stub(CompiledIC *ic, oop cached_oop, address entry);
+  static void    create_transition_stub(CompiledIC *ic, void* cached_value, address entry);
   static address ic_destination_for(CompiledIC *ic);
-  static oop     cached_oop_for(CompiledIC *ic);
+  static void*   cached_value_for(CompiledIC *ic);
 };
 
 #endif // SHARE_VM_CODE_ICBUFFER_HPP
--- a/src/share/vm/code/nmethod.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/nmethod.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,7 +34,7 @@
 #include "compiler/compilerOracle.hpp"
 #include "compiler/disassembler.hpp"
 #include "interpreter/bytecode.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "prims/jvmtiImpl.hpp"
 #include "runtime/sharedRuntime.hpp"
@@ -59,7 +59,7 @@
 
 #define DTRACE_METHOD_UNLOAD_PROBE(method)                                \
   {                                                                       \
-    methodOop m = (method);                                               \
+    Method* m = (method);                                                 \
     if (m != NULL) {                                                      \
       Symbol* klass_name = m->klass_name();                               \
       Symbol* name = m->name();                                           \
@@ -73,7 +73,7 @@
 #else /* USDT2 */
 #define DTRACE_METHOD_UNLOAD_PROBE(method)                                \
   {                                                                       \
-    methodOop m = (method);                                               \
+    Method* m = (method);                                                 \
     if (m != NULL) {                                                      \
       Symbol* klass_name = m->klass_name();                               \
       Symbol* name = m->name();                                           \
@@ -495,6 +495,7 @@
   ByteSize basic_lock_owner_sp_offset,
   ByteSize basic_lock_sp_offset,
   OopMapSet* oop_maps) {
+  code_buffer->finalize_oop_references(method);
   // create nmethod
   nmethod* nm = NULL;
   {
@@ -529,6 +530,7 @@
                                      int trap_offset,
                                      int frame_complete,
                                      int frame_size) {
+  code_buffer->finalize_oop_references(method);
   // create nmethod
   nmethod* nm = NULL;
   {
@@ -573,6 +575,7 @@
 )
 {
   assert(debug_info->oop_recorder() == code_buffer->oop_recorder(), "shared OR");
+  code_buffer->finalize_oop_references(method);
   // create nmethod
   nmethod* nm = NULL;
   { MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
@@ -601,11 +604,11 @@
       // the number of methods compiled.  For applications with a lot
       // classes the slow way is too slow.
       for (Dependencies::DepStream deps(nm); deps.next(); ) {
-        klassOop klass = deps.context_type();
+        Klass* klass = deps.context_type();
         if (klass == NULL)  continue;  // ignore things like evol_method
 
         // record this nmethod as dependent on this klass
-        instanceKlass::cast(klass)->add_dependent_nmethod(nm);
+        InstanceKlass::cast(klass)->add_dependent_nmethod(nm);
       }
     }
     NOT_PRODUCT(if (nm != NULL)  nmethod_stats.note_nmethod(nm));
@@ -627,7 +630,7 @@
 
 // For native wrappers
 nmethod::nmethod(
-  methodOop method,
+  Method* method,
   int nmethod_size,
   int compile_id,
   CodeOffsets* offsets,
@@ -658,7 +661,8 @@
     _consts_offset           = data_offset();
     _stub_offset             = data_offset();
     _oops_offset             = data_offset();
-    _scopes_data_offset      = _oops_offset          + round_to(code_buffer->total_oop_size(), oopSize);
+    _metadata_offset         = _oops_offset         + round_to(code_buffer->total_oop_size(), oopSize);
+    _scopes_data_offset      = _metadata_offset     + round_to(code_buffer->total_metadata_size(), wordSize);
     _scopes_pcs_offset       = _scopes_data_offset;
     _dependencies_offset     = _scopes_pcs_offset;
     _handler_table_offset    = _dependencies_offset;
@@ -672,7 +676,7 @@
     _exception_cache         = NULL;
     _pc_desc_cache.reset_to(NULL);
 
-    code_buffer->copy_oops_to(this);
+    code_buffer->copy_values_to(this);
     if (ScavengeRootsInCode && detect_scavenge_root_oops()) {
       CodeCache::add_scavenge_root_nmethod(this);
     }
@@ -710,7 +714,7 @@
 // For dtrace wrappers
 #ifdef HAVE_DTRACE_H
 nmethod::nmethod(
-  methodOop method,
+  Method* method,
   int nmethod_size,
   CodeOffsets* offsets,
   CodeBuffer* code_buffer,
@@ -738,7 +742,8 @@
     _consts_offset           = data_offset();
     _stub_offset             = data_offset();
     _oops_offset             = data_offset();
-    _scopes_data_offset      = _oops_offset          + round_to(code_buffer->total_oop_size(), oopSize);
+    _metadata_offset         = _oops_offset         + round_to(code_buffer->total_oop_size(), oopSize);
+    _scopes_data_offset      = _metadata_offset     + round_to(code_buffer->total_metadata_size(), wordSize);
     _scopes_pcs_offset       = _scopes_data_offset;
     _dependencies_offset     = _scopes_pcs_offset;
     _handler_table_offset    = _dependencies_offset;
@@ -752,7 +757,7 @@
     _exception_cache         = NULL;
     _pc_desc_cache.reset_to(NULL);
 
-    code_buffer->copy_oops_to(this);
+    code_buffer->copy_values_to(this);
     debug_only(verify_scavenge_root_oops());
     CodeCache::commit(this);
   }
@@ -792,7 +797,7 @@
 
 
 nmethod::nmethod(
-  methodOop method,
+  Method* method,
   int nmethod_size,
   int compile_id,
   int entry_bci,
@@ -847,7 +852,9 @@
     }
 
     _oops_offset             = data_offset();
-    _scopes_data_offset      = _oops_offset          + round_to(code_buffer->total_oop_size (), oopSize);
+    _metadata_offset         = _oops_offset          + round_to(code_buffer->total_oop_size(), oopSize);
+    _scopes_data_offset      = _metadata_offset      + round_to(code_buffer->total_metadata_size(), wordSize);
+
     _scopes_pcs_offset       = _scopes_data_offset   + round_to(debug_info->data_size       (), oopSize);
     _dependencies_offset     = _scopes_pcs_offset    + adjust_pcs_size(debug_info->pcs_size());
     _handler_table_offset    = _dependencies_offset  + round_to(dependencies->size_in_bytes (), oopSize);
@@ -861,7 +868,7 @@
     _pc_desc_cache.reset_to(scopes_pcs_begin());
 
     // Copy contents of ScopeDescRecorder to nmethod
-    code_buffer->copy_oops_to(this);
+    code_buffer->copy_values_to(this);
     debug_info->copy_to(this);
     dependencies->copy_to(this);
     if (ScavengeRootsInCode && detect_scavenge_root_oops()) {
@@ -1003,10 +1010,10 @@
 }
 
 
-void nmethod::copy_oops(GrowableArray<jobject>* array) {
-  //assert(oops_size() == 0, "do this handshake just once, please");
+// Have to have the same name because it's called by a template
+void nmethod::copy_values(GrowableArray<jobject>* array) {
   int length = array->length();
-  assert((address)(oops_begin() + length) <= data_end(), "oops big enough");
+  assert((address)(oops_begin() + length) <= (address)oops_end(), "oops big enough");
   oop* dest = oops_begin();
   for (int index = 0 ; index < length; index++) {
     initialize_immediate_oop(&dest[index], array->at(index));
@@ -1020,6 +1027,14 @@
   fix_oop_relocations(NULL, NULL, /*initialize_immediates=*/ true);
 }
 
+void nmethod::copy_values(GrowableArray<Metadata*>* array) {
+  int length = array->length();
+  assert((address)(metadata_begin() + length) <= (address)metadata_end(), "big enough");
+  Metadata** dest = metadata_begin();
+  for (int index = 0 ; index < length; index++) {
+    dest[index] = array->at(index);
+  }
+}
 
 bool nmethod::is_at_poll_return(address pc) {
   RelocIterator iter(this, pc, pc+1);
@@ -1054,6 +1069,9 @@
       }
       // Refresh the oop-related bits of this instruction.
       reloc->fix_oop_relocation();
+    } else if (iter.type() == relocInfo::metadata_type) {
+      metadata_Relocation* reloc = iter.metadata_reloc();
+      reloc->fix_metadata_relocation();
     }
 
     // There must not be any interfering patches or breakpoints.
@@ -1172,11 +1190,11 @@
 void nmethod::inc_decompile_count() {
   if (!is_compiled_by_c2()) return;
   // Could be gated by ProfileTraps, but do not bother...
-  methodOop m = method();
+  Method* m = method();
   if (m == NULL)  return;
-  methodDataOop mdo = m->method_data();
+  MethodData* mdo = m->method_data();
   if (mdo == NULL)  return;
-  // There is a benign race here.  See comments in methodDataOop.hpp.
+  // There is a benign race here.  See comments in methodData.hpp.
   mdo->inc_decompile_count();
 }
 
@@ -1195,7 +1213,7 @@
   // Break cycle between nmethod & method
   if (TraceClassUnloading && WizardMode) {
     tty->print_cr("[Class unloading: Making nmethod " INTPTR_FORMAT
-                  " unloadable], methodOop(" INTPTR_FORMAT
+                  " unloadable], Method*(" INTPTR_FORMAT
                   "), cause(" INTPTR_FORMAT ")",
                   this, (address)_method, (address)cause);
     if (!Universe::heap()->is_gc_active())
@@ -1205,12 +1223,12 @@
   if (is_osr_method()) {
     invalidate_osr_method();
   }
-  // If _method is already NULL the methodOop is about to be unloaded,
+  // If _method is already NULL the Method* is about to be unloaded,
   // so we don't have to break the cycle. Note that it is possible to
-  // have the methodOop live here, in case we unload the nmethod because
-  // it is pointing to some oop (other than the methodOop) being unloaded.
+  // have the Method* live here, in case we unload the nmethod because
+  // it is pointing to some oop (other than the Method*) being unloaded.
   if (_method != NULL) {
-    // OSR methods point to the methodOop, but the methodOop does not
+    // OSR methods point to the Method*, but the Method* does not
     // point back!
     if (_method->code() == this) {
       _method->clear_code(); // Break a cycle
@@ -1230,7 +1248,7 @@
   // Log the unloading.
   log_state_change();
 
-  // The methodOop is gone at this point
+  // The Method* is gone at this point
   assert(_method == NULL, "Tautology");
 
   set_osr_link(NULL);
@@ -1242,7 +1260,7 @@
   assert(_entry_bci != InvocationEntryBci, "wrong kind of nmethod");
   // Remove from list of active nmethods
   if (method() != NULL)
-    instanceKlass::cast(method()->method_holder())->remove_osr_nmethod(this);
+    InstanceKlass::cast(method()->method_holder())->remove_osr_nmethod(this);
   // Set entry as invalid
   _entry_bci = InvalidOSREntryBci;
 }
@@ -1320,7 +1338,7 @@
     // Remove nmethod from method.
     // We need to check if both the _code and _from_compiled_code_entry_point
     // refer to this nmethod because there is a race in setting these two fields
-    // in methodOop as seen in bugid 4947125.
+    // in Method* as seen in bugid 4947125.
     // If the vep() points to the zombie nmethod, the memory for the nmethod
     // could be flushed and the compiler and vtable stubs could still call
     // through it.
@@ -1440,13 +1458,13 @@
   if (!has_flushed_dependencies()) {
     set_has_flushed_dependencies();
     for (Dependencies::DepStream deps(this); deps.next(); ) {
-      klassOop klass = deps.context_type();
+      Klass* klass = deps.context_type();
       if (klass == NULL)  continue;  // ignore things like evol_method
 
       // During GC the is_alive closure is non-NULL, and is used to
       // determine liveness of dependees that need to be updated.
-      if (is_alive == NULL || is_alive->do_object_b(klass)) {
-        instanceKlass::cast(klass)->remove_dependent_nmethod(this);
+      if (is_alive == NULL || klass->is_loader_alive(is_alive)) {
+        InstanceKlass::cast(klass)->remove_dependent_nmethod(this);
       }
     }
   }
@@ -1462,16 +1480,7 @@
   if (obj == NULL || is_alive->do_object_b(obj)) {
       return false;
   }
-  if (obj->is_compiledICHolder()) {
-    compiledICHolderOop cichk_oop = compiledICHolderOop(obj);
-    if (is_alive->do_object_b(
-          cichk_oop->holder_method()->method_holder()) &&
-        is_alive->do_object_b(cichk_oop->holder_klass())) {
-      // The oop should be kept alive
-      keep_alive->do_oop(root);
-      return false;
-    }
-  }
+
   // If ScavengeRootsInCode is true, an nmethod might be unloaded
   // simply because one of its constant oops has gone dead.
   // No actual classes need to be unloaded in order for this to occur.
@@ -1486,7 +1495,7 @@
 // Transfer information from compilation to jvmti
 void nmethod::post_compiled_method_load_event() {
 
-  methodOop moop = method();
+  Method* moop = method();
 #ifndef USDT2
   HS_DTRACE_PROBE8(hotspot, compiled__method__load,
       moop->klass_name()->bytes(),
@@ -1541,10 +1550,10 @@
 
   // If a JVMTI agent has enabled the CompiledMethodUnload event then
   // post the event. Sometime later this nmethod will be made a zombie
-  // by the sweeper but the methodOop will not be valid at that point.
+  // by the sweeper but the Method* will not be valid at that point.
   // If the _jmethod_id is null then no load event was ever requested
   // so don't bother posting the unload.  The main reason for this is
-  // that the jmethodID is a weak reference to the methodOop so if
+  // that the jmethodID is a weak reference to the Method* so if
   // it's being unloaded there's no way to look it up since the weak
   // ref will have been cleared.
   if (_jmethod_id != NULL && JvmtiExport::should_post_compiled_method_unload()) {
@@ -1602,19 +1611,12 @@
     unloading_occurred = true;
   }
 
-  // Follow methodOop
-  if (can_unload(is_alive, keep_alive, (oop*)&_method, unloading_occurred)) {
-    return;
-  }
-
   // Exception cache
   ExceptionCache* ec = exception_cache();
   while (ec != NULL) {
-    oop* ex_addr = (oop*)ec->exception_type_addr();
-    oop ex = *ex_addr;
+    Klass* ex_klass = ec->exception_type();
     ExceptionCache* next_ec = ec->next();
-    if (ex != NULL && !is_alive->do_object_b(ex)) {
-      assert(!ex->is_compiledICHolder(), "Possible error here");
+    if (ex_klass != NULL && !ex_klass->is_loader_alive(is_alive)) {
       remove_from_exception_cache(ec);
     }
     ec = next_ec;
@@ -1629,27 +1631,37 @@
     while(iter.next()) {
       if (iter.type() == relocInfo::virtual_call_type) {
         CompiledIC *ic = CompiledIC_at(iter.reloc());
-        oop ic_oop = ic->cached_oop();
-        if (ic_oop != NULL && !is_alive->do_object_b(ic_oop)) {
+        if (ic->is_icholder_call()) {
           // The only exception is compiledICHolder oops which may
           // yet be marked below. (We check this further below).
-          if (ic_oop->is_compiledICHolder()) {
-            compiledICHolderOop cichk_oop = compiledICHolderOop(ic_oop);
-            if (is_alive->do_object_b(
-                  cichk_oop->holder_method()->method_holder()) &&
-                is_alive->do_object_b(cichk_oop->holder_klass())) {
+          CompiledICHolder* cichk_oop = ic->cached_icholder();
+          if (cichk_oop->holder_method()->method_holder()->is_loader_alive(is_alive) &&
+              cichk_oop->holder_klass()->is_loader_alive(is_alive)) {
               continue;
             }
+        } else {
+          Metadata* ic_oop = ic->cached_metadata();
+          if (ic_oop != NULL) {
+            if (ic_oop->is_klass()) {
+              if (((Klass*)ic_oop)->is_loader_alive(is_alive)) {
+                continue;
+              }
+            } else if (ic_oop->is_method()) {
+              if (((Method*)ic_oop)->method_holder()->is_loader_alive(is_alive)) {
+                continue;
+              }
+            } else {
+              ShouldNotReachHere();
+            }
+          }
           }
           ic->set_to_clean();
-          assert(ic->cached_oop() == NULL,
-                 "cached oop in IC should be cleared");
-        }
       }
     }
   }
 
   // Compiled code
+  {
   RelocIterator iter(this, low_boundary);
   while (iter.next()) {
     if (iter.type() == relocInfo::oop_type) {
@@ -1666,6 +1678,7 @@
       }
     }
   }
+  }
 
 
   // Scopes
@@ -1676,23 +1689,121 @@
     }
   }
 
-#ifndef PRODUCT
-  // This nmethod was not unloaded; check below that all CompiledICs
-  // refer to marked oops.
-  {
+  // Ensure that all metadata is still alive
+  verify_metadata_loaders(low_boundary, is_alive);
+}
+
+#ifdef ASSERT
+
+class CheckClass : AllStatic {
+  static BoolObjectClosure* _is_alive;
+
+  // Check class_loader is alive for this bit of metadata.
+  static void check_class(Metadata* md) {
+    Klass* klass = NULL;
+    if (md->is_klass()) {
+      klass = ((Klass*)md);
+    } else if (md->is_method()) {
+      klass = ((Method*)md)->method_holder();
+    } else if (md->is_methodData()) {
+      klass = ((MethodData*)md)->method()->method_holder();
+    } else {
+      md->print();
+      ShouldNotReachHere();
+    }
+    assert(klass->is_loader_alive(_is_alive), "must be alive");
+  }
+ public:
+  static void do_check_class(BoolObjectClosure* is_alive, nmethod* nm) {
+    assert(SafepointSynchronize::is_at_safepoint(), "this is only ok at safepoint");
+    _is_alive = is_alive;
+    nm->metadata_do(check_class);
+  }
+};
+
+// This is called during a safepoint so can use static data
+BoolObjectClosure* CheckClass::_is_alive = NULL;
+#endif // ASSERT
+
+
+// Processing of oop references should have been sufficient to keep
+// all strong references alive.  Any weak references should have been
+// cleared as well.  Visit all the metadata and ensure that it's
+// really alive.
+void nmethod::verify_metadata_loaders(address low_boundary, BoolObjectClosure* is_alive) {
+#ifdef ASSERT
     RelocIterator iter(this, low_boundary);
     while (iter.next()) {
-      if (iter.type() == relocInfo::virtual_call_type) {
-         CompiledIC *ic = CompiledIC_at(iter.reloc());
-         oop ic_oop = ic->cached_oop();
-         assert(ic_oop == NULL || is_alive->do_object_b(ic_oop),
-                "Found unmarked ic_oop in reachable nmethod");
-       }
+    // static_stub_Relocations may have dangling references to
+    // Method*s so trim them out here.  Otherwise it looks like
+    // compiled code is maintaining a link to dead metadata.
+    address static_call_addr = NULL;
+    if (iter.type() == relocInfo::opt_virtual_call_type) {
+      CompiledIC* cic = CompiledIC_at(iter.reloc());
+      if (!cic->is_call_to_interpreted()) {
+        static_call_addr = iter.addr();
+      }
+    } else if (iter.type() == relocInfo::static_call_type) {
+      CompiledStaticCall* csc = compiledStaticCall_at(iter.reloc());
+      if (!csc->is_call_to_interpreted()) {
+        static_call_addr = iter.addr();
+      }
+    }
+    if (static_call_addr != NULL) {
+      RelocIterator sciter(this, low_boundary);
+      while (sciter.next()) {
+        if (sciter.type() == relocInfo::static_stub_type &&
+            sciter.static_stub_reloc()->static_call() == static_call_addr) {
+          sciter.static_stub_reloc()->clear_inline_cache();
+        }
+      }
     }
   }
-#endif // !PRODUCT
+  // Check that the metadata embedded in the nmethod is alive
+  CheckClass::do_check_class(is_alive, this);
+#endif
 }
 
+
+// Iterate over metadata calling this function.   Used by RedefineClasses
+void nmethod::metadata_do(void f(Metadata*)) {
+  address low_boundary = verified_entry_point();
+  if (is_not_entrant()) {
+    low_boundary += NativeJump::instruction_size;
+    // %%% Note:  On SPARC we patch only a 4-byte trap, not a full NativeJump.
+    // (See comment above.)
+  }
+  {
+    // Visit all immediate references that are embedded in the instruction stream.
+    RelocIterator iter(this, low_boundary);
+    while (iter.next()) {
+      if (iter.type() == relocInfo::metadata_type ) {
+        metadata_Relocation* r = iter.metadata_reloc();
+        // In this lmetadata, we must only follow those metadatas directly embedded in
+        // the code.  Other metadatas (oop_index>0) are seen as part of
+        // the metadata section below.
+        assert(1 == (r->metadata_is_immediate()) +
+               (r->metadata_addr() >= metadata_begin() && r->metadata_addr() < metadata_end()),
+               "metadata must be found in exactly one place");
+        if (r->metadata_is_immediate() && r->metadata_value() != NULL) {
+          Metadata* md = r->metadata_value();
+          f(md);
+        }
+      }
+    }
+  }
+
+  // Visit the metadata section
+  for (Metadata** p = metadata_begin(); p < metadata_end(); p++) {
+    if (*p == Universe::non_oop_word() || *p == NULL)  continue;  // skip non-oops
+    Metadata* md = *p;
+    f(md);
+  }
+  // Call function Method*, not embedded in these other places.
+  if (_method != NULL) f(_method);
+}
+
+
 // This method is called twice during GC -- once while
 // tracing the "active" nmethods on thread stacks during
 // the (strong) marking phase, and then again when walking
@@ -1719,17 +1830,6 @@
     // (See comment above.)
   }
 
-  // Compiled code
-  f->do_oop((oop*) &_method);
-  if (!do_strong_roots_only) {
-    // weak roots processing phase -- update ExceptionCache oops
-    ExceptionCache* ec = exception_cache();
-    while(ec != NULL) {
-      f->do_oop((oop*)ec->exception_type_addr());
-      ec = ec->next();
-    }
-  } // Else strong roots phase -- skip oops in ExceptionCache
-
   RelocIterator iter(this, low_boundary);
 
   while (iter.next()) {
@@ -2063,21 +2163,21 @@
   return found_check;
 }
 
-bool nmethod::is_evol_dependent_on(klassOop dependee) {
-  instanceKlass *dependee_ik = instanceKlass::cast(dependee);
-  objArrayOop dependee_methods = dependee_ik->methods();
+bool nmethod::is_evol_dependent_on(Klass* dependee) {
+  InstanceKlass *dependee_ik = InstanceKlass::cast(dependee);
+  Array<Method*>* dependee_methods = dependee_ik->methods();
   for (Dependencies::DepStream deps(this); deps.next(); ) {
     if (deps.type() == Dependencies::evol_method) {
-      methodOop method = deps.method_argument(0);
+      Method* method = deps.method_argument(0);
       for (int j = 0; j < dependee_methods->length(); j++) {
-        if ((methodOop) dependee_methods->obj_at(j) == method) {
+        if (dependee_methods->at(j) == method) {
           // RC_TRACE macro has an embedded ResourceMark
           RC_TRACE(0x01000000,
             ("Found evol dependency of nmethod %s.%s(%s) compile_id=%d on method %s.%s(%s)",
-            _method->method_holder()->klass_part()->external_name(),
+            _method->method_holder()->external_name(),
             _method->name()->as_C_string(),
             _method->signature()->as_C_string(), compile_id(),
-            method->method_holder()->klass_part()->external_name(),
+            method->method_holder()->external_name(),
             method->name()->as_C_string(),
             method->signature()->as_C_string()));
           if (TraceDependencies || LogCompilation)
@@ -2091,11 +2191,11 @@
 }
 
 // Called from mark_for_deoptimization, when dependee is invalidated.
-bool nmethod::is_dependent_on_method(methodOop dependee) {
+bool nmethod::is_dependent_on_method(Method* dependee) {
   for (Dependencies::DepStream deps(this); deps.next(); ) {
     if (deps.type() != Dependencies::evol_method)
       continue;
-    methodOop method = deps.method_argument(0);
+    Method* method = deps.method_argument(0);
     if (method == dependee) return true;
   }
   return false;
@@ -2234,7 +2334,7 @@
   // Make sure all the entry points are correctly aligned for patching.
   NativeJump::check_verified_entry_alignment(entry_point(), verified_entry_point());
 
-  assert(method()->is_oop(), "must be valid");
+  // assert(method()->is_oop(), "must be valid");
 
   ResourceMark rm;
 
@@ -2274,11 +2374,11 @@
   if (CompiledIC_lock->owner() == cur ||
       ((cur->is_VM_thread() || cur->is_ConcurrentGC_thread()) &&
        SafepointSynchronize::is_at_safepoint())) {
-    ic = CompiledIC_at(call_site);
+    ic = CompiledIC_at(this, call_site);
     CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
   } else {
     MutexLocker ml_verify (CompiledIC_lock);
-    ic = CompiledIC_at(call_site);
+    ic = CompiledIC_at(this, call_site);
   }
   PcDesc* pd = pc_desc_at(ic->end_of_call());
   assert(pd != NULL, "PcDesc must exist");
@@ -2413,6 +2513,10 @@
                                               oops_begin(),
                                               oops_end(),
                                               oops_size());
+  if (metadata_size      () > 0) tty->print_cr(" metadata       [" INTPTR_FORMAT "," INTPTR_FORMAT "] = %d",
+                                              metadata_begin(),
+                                              metadata_end(),
+                                              metadata_size());
   if (scopes_data_size  () > 0) tty->print_cr(" scopes data    [" INTPTR_FORMAT "," INTPTR_FORMAT "] = %d",
                                               scopes_data_begin(),
                                               scopes_data_end(),
@@ -2462,10 +2566,10 @@
   tty->print_cr("Dependencies:");
   for (Dependencies::DepStream deps(this); deps.next(); ) {
     deps.print_dependency();
-    klassOop ctxk = deps.context_type();
+    Klass* ctxk = deps.context_type();
     if (ctxk != NULL) {
       Klass* k = Klass::cast(ctxk);
-      if (k->oop_is_instance() && ((instanceKlass*)k)->is_dependent_nmethod(this)) {
+      if (k->oop_is_instance() && ((InstanceKlass*)k)->is_dependent_nmethod(this)) {
         tty->print_cr("   [nmethod<=klass]%s", k->external_name());
       }
     }
@@ -2528,6 +2632,16 @@
           st.print(")");
           return st.as_string();
         }
+        case relocInfo::metadata_type: {
+          stringStream st;
+          metadata_Relocation* r = iter.metadata_reloc();
+          Metadata* obj = r->metadata_value();
+          st.print("metadata(");
+          if (obj == NULL) st.print("NULL");
+          else obj->print_value_on(&st);
+          st.print(")");
+          return st.as_string();
+        }
         case relocInfo::virtual_call_type:     return "virtual_call";
         case relocInfo::opt_virtual_call_type: return "optimized virtual_call";
         case relocInfo::static_call_type:      return "static_call";
@@ -2690,7 +2804,7 @@
     if (sd->bci() == SynchronizationEntryBCI) {
       st->print(";*synchronization entry");
     } else {
-      if (sd->method().is_null()) {
+      if (sd->method() == NULL) {
         st->print("method is NULL");
       } else if (sd->method()->is_native()) {
         st->print("method is native");
@@ -2731,7 +2845,7 @@
     for (;sd != NULL; sd = sd->sender()) {
       st->move_to(column);
       st->print("; -");
-      if (sd->method().is_null()) {
+      if (sd->method() == NULL) {
         st->print("method is NULL");
       } else {
         sd->method()->print_short_name(st);
--- a/src/share/vm/code/nmethod.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/nmethod.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -27,6 +27,7 @@
 
 #include "code/codeBlob.hpp"
 #include "code/pcDesc.hpp"
+#include "oops/metadata.hpp"
 
 // This class is used internally by nmethods, to cache
 // exception/pc/handler information.
@@ -35,7 +36,7 @@
   friend class VMStructs;
  private:
   enum { cache_size = 16 };
-  klassOop _exception_type;
+  Klass*   _exception_type;
   address  _pc[cache_size];
   address  _handler[cache_size];
   int      _count;
@@ -52,8 +53,7 @@
 
   ExceptionCache(Handle exception, address pc, address handler);
 
-  klassOop  exception_type()                { return _exception_type; }
-  klassOop* exception_type_addr()           { return &_exception_type; }
+  Klass*    exception_type()                { return _exception_type; }
   ExceptionCache* next()                    { return _next; }
   void      set_next(ExceptionCache *ec)    { _next = ec; }
 
@@ -112,12 +112,12 @@
   friend class CodeCache;  // scavengable oops
  private:
   // Shared fields for all nmethod's
-  methodOop _method;
+  Method*   _method;
   int       _entry_bci;        // != InvocationEntryBci if this nmethod is an on-stack replacement method
   jmethodID _jmethod_id;       // Cache of method()->jmethod_id()
 
   // To support simple linked-list chaining of nmethods:
-  nmethod*  _osr_link;         // from instanceKlass::osr_nmethods_head
+  nmethod*  _osr_link;         // from InstanceKlass::osr_nmethods_head
   nmethod*  _scavenge_root_link; // from CodeCache::scavenge_root_nmethods
   nmethod*  _saved_nmethod_link; // from CodeCache::speculatively_disconnect
 
@@ -148,6 +148,7 @@
   int _consts_offset;
   int _stub_offset;
   int _oops_offset;                       // offset to where embedded oop table begins (inside data)
+  int _metadata_offset;                   // embedded meta data table
   int _scopes_data_offset;
   int _scopes_pcs_offset;
   int _dependencies_offset;
@@ -226,7 +227,7 @@
   friend class nmethodLocker;
 
   // For native wrappers
-  nmethod(methodOop method,
+  nmethod(Method* method,
           int nmethod_size,
           int compile_id,
           CodeOffsets* offsets,
@@ -238,7 +239,7 @@
 
 #ifdef HAVE_DTRACE_H
   // For native wrappers
-  nmethod(methodOop method,
+  nmethod(Method* method,
           int nmethod_size,
           CodeOffsets* offsets,
           CodeBuffer *code_buffer,
@@ -246,7 +247,7 @@
 #endif // def HAVE_DTRACE_H
 
   // Creation support
-  nmethod(methodOop method,
+  nmethod(Method* method,
           int nmethod_size,
           int compile_id,
           int entry_bci,
@@ -325,7 +326,7 @@
 #endif // def HAVE_DTRACE_H
 
   // accessors
-  methodOop method() const                        { return _method; }
+  Method* method() const                          { return _method; }
   AbstractCompiler* compiler() const              { return _compiler; }
 
   // type info
@@ -350,7 +351,10 @@
   address deopt_mh_handler_begin() const          { return           header_begin() + _deoptimize_mh_offset ; }
   address unwind_handler_begin  () const          { return _unwind_handler_offset != -1 ? (header_begin() + _unwind_handler_offset) : NULL; }
   oop*    oops_begin            () const          { return (oop*)   (header_begin() + _oops_offset)         ; }
-  oop*    oops_end              () const          { return (oop*)   (header_begin() + _scopes_data_offset)  ; }
+  oop*    oops_end              () const          { return (oop*)   (header_begin() + _metadata_offset)     ; }
+
+  Metadata** metadata_begin   () const            { return (Metadata**)  (header_begin() + _metadata_offset)     ; }
+  Metadata** metadata_end     () const            { return (Metadata**)  (header_begin() + _scopes_data_offset)  ; }
 
   address scopes_data_begin     () const          { return           header_begin() + _scopes_data_offset   ; }
   address scopes_data_end       () const          { return           header_begin() + _scopes_pcs_offset    ; }
@@ -368,6 +372,7 @@
   int insts_size        () const                  { return            insts_end        () -            insts_begin        (); }
   int stub_size         () const                  { return            stub_end         () -            stub_begin         (); }
   int oops_size         () const                  { return (address)  oops_end         () - (address)  oops_begin         (); }
+  int metadata_size     () const                  { return (address)  metadata_end     () - (address)  metadata_begin     (); }
   int scopes_data_size  () const                  { return            scopes_data_end  () -            scopes_data_begin  (); }
   int scopes_pcs_size   () const                  { return (intptr_t) scopes_pcs_end   () - (intptr_t) scopes_pcs_begin   (); }
   int dependencies_size () const                  { return            dependencies_end () -            dependencies_begin (); }
@@ -381,6 +386,7 @@
   bool insts_contains        (address addr) const { return insts_begin        () <= addr && addr < insts_end        (); }
   bool stub_contains         (address addr) const { return stub_begin         () <= addr && addr < stub_end         (); }
   bool oops_contains         (oop*    addr) const { return oops_begin         () <= addr && addr < oops_end         (); }
+  bool metadata_contains     (Metadata** addr) const   { return metadata_begin     () <= addr && addr < metadata_end     (); }
   bool scopes_data_contains  (address addr) const { return scopes_data_begin  () <= addr && addr < scopes_data_end  (); }
   bool scopes_pcs_contains   (PcDesc* addr) const { return scopes_pcs_begin   () <= addr && addr < scopes_pcs_end   (); }
   bool handler_table_contains(address addr) const { return handler_table_begin() <= addr && addr < handler_table_end(); }
@@ -448,7 +454,17 @@
     return &oops_begin()[index - 1];
   }
 
-  void copy_oops(GrowableArray<jobject>* oops);
+  // Support for meta data in scopes and relocs:
+  // Note: index 0 is reserved for null.
+  Metadata*     metadata_at(int index) const      { return index == 0 ? NULL: *metadata_addr_at(index); }
+  Metadata**  metadata_addr_at(int index) const {  // for GC
+    // relocation indexes are biased by 1 (because 0 is reserved)
+    assert(index > 0 && index <= metadata_size(), "must be a valid non-zero index");
+    return &metadata_begin()[index - 1];
+  }
+
+  void copy_values(GrowableArray<jobject>* oops);
+  void copy_values(GrowableArray<Metadata*>* metadata);
 
   // Relocation support
 private:
@@ -516,6 +532,9 @@
     return (addr >= code_begin() && addr < verified_entry_point());
   }
 
+  // Check that all metadata is still alive
+  void verify_metadata_loaders(address low_boundary, BoolObjectClosure* is_alive);
+
   // unlink and deallocate this nmethod
   // Only NMethodSweeper class is expected to use this. NMethodSweeper is not
   // expected to use any other private methods/data in this class.
@@ -533,8 +552,8 @@
   void mark_as_seen_on_stack();
   bool can_not_entrant_be_converted();
 
-  // Evolution support. We make old (discarded) compiled methods point to new methodOops.
-  void set_method(methodOop method) { _method = method; }
+  // Evolution support. We make old (discarded) compiled methods point to new Method*s.
+  void set_method(Method* method) { _method = method; }
 
   // GC support
   void do_unloading(BoolObjectClosure* is_alive, OopClosure* keep_alive,
@@ -663,12 +682,12 @@
   // Evolution support. Tells if this compiled method is dependent on any of
   // methods m() of class dependee, such that if m() in dependee is replaced,
   // this compiled method will have to be deoptimized.
-  bool is_evol_dependent_on(klassOop dependee);
+  bool is_evol_dependent_on(Klass* dependee);
 
   // Fast breakpoint support. Tells if this compiled method is
   // dependent on the given method. Returns true if this nmethod
   // corresponds to the given method as well.
-  bool is_dependent_on_method(methodOop dependee);
+  bool is_dependent_on_method(Method* dependee);
 
   // is it ok to patch at address?
   bool is_patchable_at(address instr_address);
@@ -686,6 +705,12 @@
   static int osr_entry_point_offset()             { return offset_of(nmethod, _osr_entry_point); }
   static int entry_bci_offset()                   { return offset_of(nmethod, _entry_bci); }
 
+  // RedefineClasses support.   Mark metadata in nmethods as on_stack so that
+  // redefine classes doesn't purge it.
+  static void mark_on_stack(nmethod* nm) {
+    nm->metadata_do(Metadata::mark_on_stack);
+  }
+  void metadata_do(void f(Metadata*));
 };
 
 // Locks an nmethod so its code will not get removed and it will not
--- a/src/share/vm/code/oopRecorder.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/oopRecorder.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -23,68 +23,65 @@
  */
 
 #include "precompiled.hpp"
+#include "ci/ciEnv.hpp"
+#include "ci/ciInstance.hpp"
+#include "ci/ciMetadata.hpp"
 #include "code/oopRecorder.hpp"
 #include "memory/allocation.inline.hpp"
 #include "oops/oop.inline.hpp"
 
 #ifdef ASSERT
-int OopRecorder::_find_index_calls = 0;
-int OopRecorder::_hit_indexes      = 0;
-int OopRecorder::_missed_indexes   = 0;
+template <class T> int ValueRecorder<T>::_find_index_calls = 0;
+template <class T> int ValueRecorder<T>::_hit_indexes      = 0;
+template <class T> int ValueRecorder<T>::_missed_indexes   = 0;
 #endif //ASSERT
 
 
-OopRecorder::OopRecorder(Arena* arena) {
+template <class T> ValueRecorder<T>::ValueRecorder(Arena* arena) {
   _handles  = NULL;
   _indexes  = NULL;
   _arena    = arena;
   _complete = false;
 }
 
-OopRecorder::IndexCache::IndexCache() {
+template <class T> template <class X>  ValueRecorder<T>::IndexCache<X>::IndexCache() {
   assert(first_index > 0, "initial zero state of cache must be invalid index");
   Copy::zero_to_bytes(&_cache[0], sizeof(_cache));
 }
 
-int OopRecorder::oop_size() {
+template <class T> int ValueRecorder<T>::size() {
   _complete = true;
   if (_handles == NULL)  return 0;
-  return _handles->length() * sizeof(oop);
+  return _handles->length() * sizeof(T);
 }
 
-void OopRecorder::copy_to(nmethod* nm) {
+template <class T> void ValueRecorder<T>::copy_values_to(nmethod* nm) {
   assert(_complete, "must be frozen");
   maybe_initialize();  // get non-null handles, even if we have no oops
-  nm->copy_oops(_handles);
+  nm->copy_values(_handles);
 }
 
-void OopRecorder::maybe_initialize() {
+template <class T> void ValueRecorder<T>::maybe_initialize() {
   if (_handles == NULL) {
     if (_arena != NULL) {
-      _handles  = new(_arena) GrowableArray<jobject>(_arena, 10, 0, 0);
+      _handles  = new(_arena) GrowableArray<T>(_arena, 10, 0, 0);
       _no_finds = new(_arena) GrowableArray<int>(    _arena, 10, 0, 0);
     } else {
-      _handles  = new GrowableArray<jobject>(10, 0, 0);
+      _handles  = new GrowableArray<T>(10, 0, 0);
       _no_finds = new GrowableArray<int>(    10, 0, 0);
     }
   }
 }
 
 
-jobject OopRecorder::handle_at(int index) {
+template <class T> T ValueRecorder<T>::at(int index) {
   // there is always a NULL virtually present as first object
   if (index == null_index)  return NULL;
   return _handles->at(index - first_index);
 }
 
 
-// Local definition.  Used only in this module.
-inline bool OopRecorder::is_real_jobject(jobject h) {
-  return h != NULL && h != (jobject)Universe::non_oop_word();
-}
-
-
-int OopRecorder::add_handle(jobject h, bool make_findable) {
+template <class T> int ValueRecorder<T>::add_handle(T h, bool make_findable) {
   assert(!_complete, "cannot allocate more elements after size query");
   maybe_initialize();
   // indexing uses 1 as an origin--0 means null
@@ -92,14 +89,14 @@
   _handles->append(h);
 
   // Support correct operation of find_index().
-  assert(!(make_findable && !is_real_jobject(h)), "nulls are not findable");
+  assert(!(make_findable && !is_real(h)), "nulls are not findable");
   if (make_findable) {
     // This index may be returned from find_index().
     if (_indexes != NULL) {
       int* cloc = _indexes->cache_location(h);
       _indexes->set_cache_location_index(cloc, index);
     } else if (index == index_cache_threshold && _arena != NULL) {
-      _indexes = new(_arena) IndexCache();
+      _indexes = new(_arena) IndexCache<T>();
       for (int i = 0; i < _handles->length(); i++) {
         // Load the cache with pre-existing elements.
         int index0 = i + first_index;
@@ -108,10 +105,10 @@
         _indexes->set_cache_location_index(cloc, index0);
       }
     }
-  } else if (is_real_jobject(h)) {
+  } else if (is_real(h)) {
     // Remember that this index is not to be returned from find_index().
     // This case is rare, because most or all uses of allocate_index pass
-    // a jobject argument of NULL or Universe::non_oop_word.
+    // an argument of NULL or Universe::non_oop_word.
     // Thus, the expected length of _no_finds is zero.
     _no_finds->append(index);
   }
@@ -120,12 +117,12 @@
 }
 
 
-int OopRecorder::maybe_find_index(jobject h) {
+template <class T> int ValueRecorder<T>::maybe_find_index(T h) {
   debug_only(_find_index_calls++);
   assert(!_complete, "cannot allocate more elements after size query");
   maybe_initialize();
   if (h == NULL)  return null_index;
-  assert(is_real_jobject(h), "must be valid jobject");
+  assert(is_real(h), "must be valid");
   int* cloc = (_indexes == NULL)? NULL: _indexes->cache_location(h);
   if (cloc != NULL) {
     int cindex = _indexes->cache_location_index(cloc);
@@ -156,3 +153,7 @@
   }
   return -1;
 }
+
+// Explicitly instantiate these types
+template class ValueRecorder<Metadata*>;
+template class ValueRecorder<jobject>;
--- a/src/share/vm/code/oopRecorder.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/oopRecorder.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -25,14 +25,15 @@
 #ifndef SHARE_VM_CODE_OOPRECORDER_HPP
 #define SHARE_VM_CODE_OOPRECORDER_HPP
 
+#include "memory/universe.hpp"
 #include "runtime/handles.hpp"
 #include "utilities/growableArray.hpp"
 
-// Recording and retrieval of oop relocations in compiled code.
+// Recording and retrieval of either oop relocations or metadata in compiled code.
 
 class CodeBlob;
 
-class OopRecorder : public ResourceObj {
+template <class T> class ValueRecorder : public StackObj {
  public:
   // A two-way mapping from positive indexes to oop handles.
   // The zero index is reserved for a constant (sharable) null.
@@ -40,20 +41,21 @@
 
   // Use the given arena to manage storage, if not NULL.
   // By default, uses the current ResourceArea.
-  OopRecorder(Arena* arena = NULL);
+  ValueRecorder(Arena* arena = NULL);
 
-  // Generate a new index on which CodeBlob::oop_addr_at will work.
+  // Generate a new index on which nmethod::oop_addr_at will work.
   // allocate_index and find_index never return the same index,
   // and allocate_index never returns the same index twice.
   // In fact, two successive calls to allocate_index return successive ints.
-  int allocate_index(jobject h) {
+  int allocate_index(T h) {
     return add_handle(h, false);
   }
 
-  // For a given jobject, this will return the same index repeatedly.
-  // The index can later be given to oop_at to retrieve the oop.
-  // However, the oop must not be changed via CodeBlob::oop_addr_at.
-  int find_index(jobject h) {
+  // For a given jobject or Metadata*, this will return the same index
+  // repeatedly. The index can later be given to nmethod::oop_at or
+  // metadata_at to retrieve the oop.
+  // However, the oop must not be changed via nmethod::oop_addr_at.
+  int find_index(T h) {
     int index = maybe_find_index(h);
     if (index < 0) {  // previously unallocated
       index = add_handle(h, true);
@@ -61,23 +63,26 @@
     return index;
   }
 
-  // variant of find_index which does not allocate if not found (yields -1)
-  int maybe_find_index(jobject h);
+  // returns the size of the generated oop/metadata table, for sizing the
+  // CodeBlob. Must be called after all oops are allocated!
+  int size();
 
-  // returns the size of the generated oop table, for sizing the CodeBlob.
-  // must be called after all oops are allocated!
-  int oop_size();
+  // Retrieve the value at a given index.
+  T at(int index);
 
-  // Retrieve the oop handle at a given index.
-  jobject handle_at(int index);
-
-  int element_count() {
+  int count() {
+    if (_handles == NULL) return 0;
     // there is always a NULL virtually present as first object
     return _handles->length() + first_index;
   }
 
-  // copy the generated oop table to nmethod
-  void copy_to(nmethod* nm);  // => nm->copy_oops(_handles)
+  // Helper function; returns false for NULL or Universe::non_oop_word().
+  bool is_real(T h) {
+    return h != NULL && h != (T)Universe::non_oop_word();
+  }
+
+  // copy the generated table to nmethod
+  void copy_values_to(nmethod* nm);
 
   bool is_unused() { return _handles == NULL && !_complete; }
 #ifdef ASSERT
@@ -85,10 +90,13 @@
 #endif
 
  private:
+  // variant of find_index which does not allocate if not found (yields -1)
+  int maybe_find_index(T h);
+
   // leaky hash table of handle => index, to help detect duplicate insertion
-  class IndexCache: public ResourceObj {
-    // This class is only used by the OopRecorder class.
-    friend class OopRecorder;
+  template <class X> class IndexCache : public ResourceObj {
+    // This class is only used by the ValueRecorder class.
+    friend class ValueRecorder;
     enum {
       _log_cache_size = 9,
       _cache_size = (1<<_log_cache_size),
@@ -98,13 +106,13 @@
       _index_shift = _collision_bit_shift+1
     };
     int _cache[_cache_size];
-    static juint cache_index(jobject handle) {
+    static juint cache_index(X handle) {
       juint ci = (int) (intptr_t) handle;
       ci ^= ci >> (BitsPerByte*2);
       ci += ci >> (BitsPerByte*1);
       return ci & (_cache_size-1);
     }
-    int* cache_location(jobject handle) {
+    int* cache_location(X handle) {
       return &_cache[ cache_index(handle) ];
     }
     static bool cache_location_collision(int* cloc) {
@@ -122,17 +130,14 @@
     IndexCache();
   };
 
-  // Helper function; returns false for NULL or Universe::non_oop_word().
-  inline bool is_real_jobject(jobject h);
-
   void maybe_initialize();
-  int add_handle(jobject h, bool make_findable);
+  int add_handle(T h, bool make_findable);
 
   enum { null_index = 0, first_index = 1, index_cache_threshold = 20 };
 
-  GrowableArray<jobject>*   _handles;  // ordered list (first is always NULL)
+  GrowableArray<T>*        _handles;  // ordered list (first is always NULL)
   GrowableArray<int>*       _no_finds; // all unfindable indexes; usually empty
-  IndexCache*               _indexes;  // map: jobject -> its probable index
+  IndexCache<T>*           _indexes;  // map: handle -> its probable index
   Arena*                    _arena;
   bool                      _complete;
 
@@ -141,4 +146,76 @@
 #endif
 };
 
+class OopRecorder : public ResourceObj {
+ private:
+  ValueRecorder<jobject>      _oops;
+  ValueRecorder<Metadata*>    _metadata;
+ public:
+  OopRecorder(Arena* arena = NULL): _oops(arena), _metadata(arena) {}
+
+  int allocate_oop_index(jobject h) {
+    return _oops.allocate_index(h);
+  }
+  int find_index(jobject h) {
+    return _oops.find_index(h);
+  }
+  jobject oop_at(int index) {
+    return _oops.at(index);
+  }
+  int oop_size() {
+    return _oops.size();
+  }
+  int oop_count() {
+    return _oops.count();
+  }
+  bool is_real(jobject h) {
+    return _oops.is_real(h);
+  }
+
+  int allocate_metadata_index(Metadata* oop) {
+    return _metadata.allocate_index(oop);
+  }
+  int find_index(Metadata* h) {
+    return _metadata.find_index(h);
+  }
+  Metadata* metadata_at(int index) {
+    return _metadata.at(index);
+  }
+  int metadata_size() {
+    return _metadata.size();
+  }
+  int metadata_count() {
+    return _metadata.count();
+  }
+  bool is_real(Metadata* h) {
+    return _metadata.is_real(h);
+  }
+
+  bool is_unused() {
+    return _oops.is_unused() && _metadata.is_unused();
+  }
+
+  void freeze() {
+    _oops.size();
+    _metadata.size();
+  }
+
+  void copy_values_to(nmethod* nm) {
+    if (!_oops.is_unused()) {
+      _oops.copy_values_to(nm);
+    }
+    if (!_metadata.is_unused()) {
+      _metadata.copy_values_to(nm);
+    }
+  }
+
+#ifdef ASSERT
+  bool is_complete() {
+    assert(_oops.is_complete() == _metadata.is_complete(), "must agree");
+    return _oops.is_complete();
+  }
+#endif
+};
+
+
 #endif // SHARE_VM_CODE_OOPRECORDER_HPP
--- a/src/share/vm/code/relocInfo.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/relocInfo.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -439,6 +439,11 @@
         oop_Relocation* r = (oop_Relocation*)reloc();
         return oop_Relocation::spec(r->oop_index(), r->offset() + offset);
       }
+    case relocInfo::metadata_type:
+      {
+        metadata_Relocation* r = (metadata_Relocation*)reloc();
+        return metadata_Relocation::spec(r->metadata_index(), r->offset() + offset);
+      }
     default:
       ShouldNotReachHere();
     }
@@ -578,33 +583,33 @@
   unpack_2_ints(_oop_index, _offset);
 }
 
+void metadata_Relocation::pack_data_to(CodeSection* dest) {
+  short* p = (short*) dest->locs_end();
+  p = pack_2_ints_to(p, _metadata_index, _offset);
+  dest->set_locs_end((relocInfo*) p);
+}
+
+
+void metadata_Relocation::unpack_data() {
+  unpack_2_ints(_metadata_index, _offset);
+}
+
 
 void virtual_call_Relocation::pack_data_to(CodeSection* dest) {
   short*  p     = (short*) dest->locs_end();
   address point =          dest->locs_point();
 
-  // Try to make a pointer NULL first.
-  if (_oop_limit >= point &&
-      _oop_limit <= point + NativeCall::instruction_size) {
-    _oop_limit = NULL;
-  }
-  // If the _oop_limit is NULL, it "defaults" to the end of the call.
-  // See ic_call_Relocation::oop_limit() below.
-
-  normalize_address(_first_oop, dest);
-  normalize_address(_oop_limit, dest);
-  jint x0 = scaled_offset_null_special(_first_oop, point);
-  jint x1 = scaled_offset_null_special(_oop_limit, point);
-  p = pack_2_ints_to(p, x0, x1);
+  normalize_address(_cached_value, dest);
+  jint x0 = scaled_offset_null_special(_cached_value, point);
+  p = pack_1_int_to(p, x0);
   dest->set_locs_end((relocInfo*) p);
 }
 
 
 void virtual_call_Relocation::unpack_data() {
-  jint x0, x1; unpack_2_ints(x0, x1);
+  jint x0 = unpack_1_int();
   address point = addr();
-  _first_oop = x0==0? NULL: address_from_scaled_offset(x0, point);
-  _oop_limit = x1==0? NULL: address_from_scaled_offset(x1, point);
+  _cached_value = x0==0? NULL: address_from_scaled_offset(x0, point);
 }
 
 
@@ -799,100 +804,48 @@
   }
 }
 
-
-RelocIterator virtual_call_Relocation::parse_ic(nmethod* &nm, address &ic_call, address &first_oop,
-                                                oop* &oop_addr, bool *is_optimized) {
-  assert(ic_call != NULL, "ic_call address must be set");
-  assert(ic_call != NULL || first_oop != NULL, "must supply a non-null input");
-  if (nm == NULL) {
-    CodeBlob* code;
-    if (ic_call != NULL) {
-      code = CodeCache::find_blob(ic_call);
-    } else if (first_oop != NULL) {
-      code = CodeCache::find_blob(first_oop);
-    }
-    nm = code->as_nmethod_or_null();
-    assert(nm != NULL, "address to parse must be in nmethod");
-  }
-  assert(ic_call   == NULL || nm->contains(ic_call),   "must be in nmethod");
-  assert(first_oop == NULL || nm->contains(first_oop), "must be in nmethod");
-
-  address oop_limit = NULL;
-
-  if (ic_call != NULL) {
-    // search for the ic_call at the given address
-    RelocIterator iter(nm, ic_call, ic_call+1);
-    bool ret = iter.next();
-    assert(ret == true, "relocInfo must exist at this address");
-    assert(iter.addr() == ic_call, "must find ic_call");
-    if (iter.type() == relocInfo::virtual_call_type) {
-      virtual_call_Relocation* r = iter.virtual_call_reloc();
-      first_oop = r->first_oop();
-      oop_limit = r->oop_limit();
-      *is_optimized = false;
+// meta data versions
+Metadata** metadata_Relocation::metadata_addr() {
+  int n = _metadata_index;
+  if (n == 0) {
+    // metadata is stored in the code stream
+    return (Metadata**) pd_address_in_code();
     } else {
-      assert(iter.type() == relocInfo::opt_virtual_call_type, "must be a virtual call");
-      *is_optimized = true;
-      oop_addr = NULL;
-      first_oop = NULL;
-      return iter;
+    // metadata is stored in table at nmethod::metadatas_begin
+    return code()->metadata_addr_at(n);
     }
   }
 
-  // search for the first_oop, to get its oop_addr
-  RelocIterator all_oops(nm, first_oop);
-  RelocIterator iter = all_oops;
-  iter.set_limit(first_oop+1);
-  bool found_oop = false;
-  while (iter.next()) {
-    if (iter.type() == relocInfo::oop_type) {
-      assert(iter.addr() == first_oop, "must find first_oop");
-      oop_addr = iter.oop_reloc()->oop_addr();
-      found_oop = true;
-      break;
-    }
-  }
-  assert(found_oop, "must find first_oop");
 
-  bool did_reset = false;
-  while (ic_call == NULL) {
-    // search forward for the ic_call matching the given first_oop
-    while (iter.next()) {
-      if (iter.type() == relocInfo::virtual_call_type) {
-        virtual_call_Relocation* r = iter.virtual_call_reloc();
-        if (r->first_oop() == first_oop) {
-          ic_call   = r->addr();
-          oop_limit = r->oop_limit();
-          break;
-        }
-      }
-    }
-    guarantee(!did_reset, "cannot find ic_call");
-    iter = RelocIterator(nm); // search the whole nmethod
-    did_reset = true;
+Metadata* metadata_Relocation::metadata_value() {
+  Metadata* v = *metadata_addr();
+  // clean inline caches store a special pseudo-null
+  if (v == (Metadata*)Universe::non_oop_word())  v = NULL;
+  return v;
   }
 
-  assert(oop_limit != NULL && first_oop != NULL && ic_call != NULL, "");
-  all_oops.set_limit(oop_limit);
-  return all_oops;
+
+void metadata_Relocation::fix_metadata_relocation() {
+  if (!metadata_is_immediate()) {
+    // get the metadata from the pool, and re-insert it into the instruction:
+    pd_fix_value(value());
+  }
 }
 
 
-address virtual_call_Relocation::first_oop() {
-  assert(_first_oop != NULL && _first_oop < addr(), "must precede ic_call");
-  return _first_oop;
+void metadata_Relocation::verify_metadata_relocation() {
+  if (!metadata_is_immediate()) {
+    // get the metadata from the pool, and re-insert it into the instruction:
+    verify_value(value());
+  }
 }
 
-
-address virtual_call_Relocation::oop_limit() {
-  if (_oop_limit == NULL)
-    return addr() + NativeCall::instruction_size;
-  else
-    return _oop_limit;
+address virtual_call_Relocation::cached_value() {
+  assert(_cached_value != NULL && _cached_value < addr(), "must precede ic_call");
+  return _cached_value;
 }
 
 
-
 void virtual_call_Relocation::clear_inline_cache() {
   // No stubs for ICs
   // Clean IC
@@ -1139,6 +1092,25 @@
       }
       break;
     }
+  case relocInfo::metadata_type:
+    {
+      metadata_Relocation* r = metadata_reloc();
+      Metadata** metadata_addr  = NULL;
+      Metadata*    raw_metadata   = NULL;
+      Metadata*    metadata_value = NULL;
+      if (code() != NULL || r->metadata_is_immediate()) {
+        metadata_addr  = r->metadata_addr();
+        raw_metadata   = *metadata_addr;
+        metadata_value = r->metadata_value();
+      }
+      tty->print(" | [metadata_addr=" INTPTR_FORMAT " *=" INTPTR_FORMAT " offset=%d]",
+                 metadata_addr, (address)raw_metadata, r->offset());
+      if (metadata_value != NULL) {
+        tty->print("metadata_value=" INTPTR_FORMAT ": ", (address)metadata_value);
+        metadata_value->print_value_on(tty);
+      }
+      break;
+    }
   case relocInfo::external_word_type:
   case relocInfo::internal_word_type:
   case relocInfo::section_word_type:
@@ -1157,8 +1129,8 @@
   case relocInfo::virtual_call_type:
     {
       virtual_call_Relocation* r = (virtual_call_Relocation*) reloc();
-      tty->print(" | [destination=" INTPTR_FORMAT " first_oop=" INTPTR_FORMAT " oop_limit=" INTPTR_FORMAT "]",
-                 r->destination(), r->first_oop(), r->oop_limit());
+      tty->print(" | [destination=" INTPTR_FORMAT " cached_value=" INTPTR_FORMAT "]",
+                 r->destination(), r->cached_value());
       break;
     }
   case relocInfo::static_stub_type:
--- a/src/share/vm/code/relocInfo.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/relocInfo.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,6 +28,8 @@
 #include "memory/allocation.hpp"
 #include "utilities/top.hpp"
 
+class NativeMovConstReg;
+
 // Types in this file:
 //    relocInfo
 //      One element of an array of halfwords encoding compressed relocations.
@@ -35,8 +37,11 @@
 //    Relocation
 //      A flyweight object representing a single relocation.
 //      It is fully unpacked from the compressed relocation array.
+//    metadata_Relocation, ... (subclasses of Relocation)
+//      The location of some type-specific operations (metadata_addr, ...).
+//      Also, the source of relocation specs (metadata_Relocation::spec, ...).
 //    oop_Relocation, ... (subclasses of Relocation)
-//      The location of some type-specific operations (oop_addr, ...).
+//      oops in the code stream (strings, class loaders)
 //      Also, the source of relocation specs (oop_Relocation::spec, ...).
 //    RelocationHolder
 //      A ValueObj type which acts as a union holding a Relocation object.
@@ -118,7 +123,7 @@
 //   (This means that any relocInfo can be disabled by setting
 //   its type to none.  See relocInfo::remove.)
 //
-// relocInfo::oop_type -- a reference to an oop
+// relocInfo::oop_type, relocInfo::metadata_type -- a reference to an oop or meta data
 //   Value:  an oop, or else the address (handle) of an oop
 //   Instruction types: memory (load), set (load address)
 //   Data:  []       an oop stored in 4 bytes of instruction
@@ -267,7 +272,7 @@
     poll_type               = 10, // polling instruction for safepoints
     poll_return_type        = 11, // polling instruction for safepoints at return
     breakpoint_type         = 12, // an initialization barrier or safepoint
-    yet_unused_type         = 13, // Still unused
+    metadata_type           = 13, // metadata that used to be oops
     yet_unused_type_2       = 14, // Still unused
     data_prefix_tag         = 15, // tag for a prefix (carries data arguments)
     type_mask               = 15  // A mask which selects only the above values
@@ -297,6 +302,7 @@
 
   #define APPLY_TO_RELOCATIONS(visitor) \
     visitor(oop) \
+    visitor(metadata) \
     visitor(virtual_call) \
     visitor(opt_virtual_call) \
     visitor(static_call) \
@@ -972,35 +978,94 @@
   // Note:  oop_value transparently converts Universe::non_oop_word to NULL.
 };
 
+
+// copy of oop_Relocation for now but may delete stuff in both/either
+class metadata_Relocation : public DataRelocation {
+  relocInfo::relocType type() { return relocInfo::metadata_type; }
+
+ public:
+  // encode in one of these formats:  [] [n] [n l] [Nn l] [Nn Ll]
+  // an metadata in the CodeBlob's metadata pool
+  static RelocationHolder spec(int metadata_index, int offset = 0) {
+    assert(metadata_index > 0, "must be a pool-resident metadata");
+    RelocationHolder rh = newHolder();
+    new(rh) metadata_Relocation(metadata_index, offset);
+    return rh;
+  }
+  // an metadata in the instruction stream
+  static RelocationHolder spec_for_immediate() {
+    const int metadata_index = 0;
+    const int offset    = 0;    // if you want an offset, use the metadata pool
+    RelocationHolder rh = newHolder();
+    new(rh) metadata_Relocation(metadata_index, offset);
+    return rh;
+  }
+
+ private:
+  jint _metadata_index;            // if > 0, index into nmethod::metadata_at
+  jint _offset;                     // byte offset to apply to the metadata itself
+
+  metadata_Relocation(int metadata_index, int offset) {
+    _metadata_index = metadata_index; _offset = offset;
+  }
+
+  friend class RelocIterator;
+  metadata_Relocation() { }
+
+  // Fixes a Metadata pointer in the code. Most platforms embeds the
+  // Metadata pointer in the code at compile time so this is empty
+  // for them.
+  void pd_fix_value(address x);
+
+ public:
+  int metadata_index() { return _metadata_index; }
+  int offset()    { return _offset; }
+
+  // data is packed in "2_ints" format:  [i o] or [Ii Oo]
+  void pack_data_to(CodeSection* dest);
+  void unpack_data();
+
+  void fix_metadata_relocation();        // reasserts metadata value
+
+  void verify_metadata_relocation();
+
+  address value()  { return (address) *metadata_addr(); }
+
+  bool metadata_is_immediate()  { return metadata_index() == 0; }
+
+  Metadata**   metadata_addr();                  // addr or &pool[jint_data]
+  Metadata*    metadata_value();                 // *metadata_addr
+  // Note:  metadata_value transparently converts Universe::non_metadata_word to NULL.
+};
+
+
 class virtual_call_Relocation : public CallRelocation {
   relocInfo::relocType type() { return relocInfo::virtual_call_type; }
 
  public:
-  // "first_oop" points to the first associated set-oop.
+  // "cached_value" points to the first associated set-oop.
   // The oop_limit helps find the last associated set-oop.
   // (See comments at the top of this file.)
-  static RelocationHolder spec(address first_oop, address oop_limit = NULL) {
+  static RelocationHolder spec(address cached_value) {
     RelocationHolder rh = newHolder();
-    new(rh) virtual_call_Relocation(first_oop, oop_limit);
+    new(rh) virtual_call_Relocation(cached_value);
     return rh;
   }
 
-  virtual_call_Relocation(address first_oop, address oop_limit) {
-    _first_oop = first_oop; _oop_limit = oop_limit;
-    assert(first_oop != NULL, "first oop address must be specified");
+  virtual_call_Relocation(address cached_value) {
+    _cached_value = cached_value;
+    assert(cached_value != NULL, "first oop address must be specified");
   }
 
  private:
-  address _first_oop;               // location of first set-oop instruction
-  address _oop_limit;               // search limit for set-oop instructions
+  address _cached_value;               // location of set-value instruction
 
   friend class RelocIterator;
   virtual_call_Relocation() { }
 
 
  public:
-  address first_oop();
-  address oop_limit();
+  address cached_value();
 
   // data is packed as scaled offsets in "2_ints" format:  [f l] or [Ff Ll]
   // oop_limit is set to 0 if the limit falls somewhere within the call.
@@ -1010,15 +1075,6 @@
   void unpack_data();
 
   void clear_inline_cache();
-
-  // Figure out where an ic_call is hiding, given a set-oop or call.
-  // Either ic_call or first_oop must be non-null; the other is deduced.
-  // Code if non-NULL must be the nmethod, else it is deduced.
-  // The address of the patchable oop is also deduced.
-  // The returned iterator will enumerate over the oops and the ic_call,
-  // as well as any other relocations that happen to be in that span of code.
-  // Recognize relevant set_oops with:  oop_reloc()->oop_addr() == oop_addr.
-  static RelocIterator parse_ic(nmethod* &nm, address &ic_call, address &first_oop, oop* &oop_addr, bool *is_optimized);
 };
 
 
--- a/src/share/vm/code/scopeDesc.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/scopeDesc.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -65,7 +65,7 @@
     // This is a sentinel record, which is only relevant to
     // approximate queries.  Decode a reasonable frame.
     _sender_decode_offset = DebugInformationRecorder::serialized_null;
-    _method = methodHandle(_code->method());
+    _method = _code->method();
     _bci = InvocationEntryBci;
     _locals_decode_offset = DebugInformationRecorder::serialized_null;
     _expressions_decode_offset = DebugInformationRecorder::serialized_null;
@@ -75,7 +75,7 @@
     DebugInfoReadStream* stream  = stream_at(decode_offset());
 
     _sender_decode_offset = stream->read_int();
-    _method = methodHandle((methodOop) stream->read_oop());
+    _method = stream->read_method();
     _bci    = stream->read_bci();
 
     // decode offsets for body and sender
@@ -157,7 +157,7 @@
 
 void ScopeDesc::print_value_on(outputStream* st) const {
   tty->print("   ");
-  method()()->print_short_name(st);
+  method()->print_short_name(st);
   int lineno = method()->line_number_from_bci(bci());
   if (lineno != -1) {
     st->print_cr("@%d (line %d)", bci(), lineno);
--- a/src/share/vm/code/scopeDesc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/scopeDesc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -27,17 +27,17 @@
 
 #include "code/debugInfo.hpp"
 #include "code/pcDesc.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "utilities/growableArray.hpp"
 
 // SimpleScopeDesc is used when all you need to extract from
-// a given pc,nmethod pair is a methodOop and a bci. This is
+// a given pc,nmethod pair is a Method* and a bci. This is
 // quite a bit faster than allocating a full ScopeDesc, but
 // very limited in abilities.
 
 class SimpleScopeDesc : public StackObj {
  private:
-  methodOop _method;
+  Method* _method;
   int _bci;
 
  public:
@@ -46,11 +46,11 @@
     assert(pc_desc != NULL, "Must be able to find matching PcDesc");
     DebugInfoReadStream buffer(code, pc_desc->scope_decode_offset());
     int ignore_sender = buffer.read_int();
-    _method           = methodOop(buffer.read_oop());
+    _method           = buffer.read_method();
     _bci              = buffer.read_bci();
   }
 
-  methodOop method() { return _method; }
+  Method* method() { return _method; }
   int bci() { return _bci; }
 };
 
@@ -68,7 +68,7 @@
   ScopeDesc(const nmethod* code, int decode_offset, bool reexecute, bool return_oop);
 
   // JVM state
-  methodHandle method()   const { return _method; }
+  Method* method()      const { return _method; }
   int          bci()      const { return _bci;    }
   bool should_reexecute() const { return _reexecute; }
   bool return_oop()       const { return _return_oop; }
@@ -94,7 +94,7 @@
   ScopeDesc(const ScopeDesc* parent);
 
   // JVM state
-  methodHandle  _method;
+  Method*       _method;
   int           _bci;
   bool          _reexecute;
   bool          _return_oop;
--- a/src/share/vm/code/vtableStubs.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/vtableStubs.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -111,7 +111,7 @@
 }
 
 
-address VtableStubs::create_stub(bool is_vtable_stub, int vtable_index, methodOop method) {
+address VtableStubs::create_stub(bool is_vtable_stub, int vtable_index, Method* method) {
   assert(vtable_index >= 0, "must be positive");
 
   VtableStub* s = ShareVtableStubs ? lookup(is_vtable_stub, vtable_index) : NULL;
@@ -200,10 +200,10 @@
 extern "C" void bad_compiled_vtable_index(JavaThread* thread, oop receiver, int index) {
   ResourceMark rm;
   HandleMark hm;
-  klassOop klass = receiver->klass();
-  instanceKlass* ik = instanceKlass::cast(klass);
+  Klass* klass = receiver->klass();
+  InstanceKlass* ik = InstanceKlass::cast(klass);
   klassVtable* vt = ik->vtable();
-  klass->print();
+  ik->print();
   fatal(err_msg("bad compiled vtable dispatch: receiver " INTPTR_FORMAT ", "
                 "index %d (vtable length %d)",
                 (address)receiver, index, vt->length()));
--- a/src/share/vm/code/vtableStubs.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/code/vtableStubs.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -123,7 +123,7 @@
   static inline uint hash              (bool is_vtable_stub, int vtable_index);
 
  public:
-  static address     create_stub(bool is_vtable_stub, int vtable_index, methodOop method); // return the entry point of a stub for this call
+  static address     create_stub(bool is_vtable_stub, int vtable_index, Method* method); // return the entry point of a stub for this call
   static bool        is_entry_point(address pc);                     // is pc a vtable stub entry point?
   static bool        contains(address pc);                           // is pc within any stub?
   static VtableStub* stub_containing(address pc);                    // stub containing pc or NULL
--- a/src/share/vm/compiler/compileBroker.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/compiler/compileBroker.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -31,8 +31,8 @@
 #include "compiler/compilerOracle.hpp"
 #include "interpreter/linkResolver.hpp"
 #include "memory/allocation.inline.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/nativeLookup.hpp"
 #include "runtime/arguments.hpp"
@@ -242,7 +242,7 @@
   if (log != NULL)  task->log_task_done(log);
   thread->set_task(NULL);
   task->set_code_handle(NULL);
-  DEBUG_ONLY(thread->set_env((ciEnv*)badAddress));
+  thread->set_env(NULL);
   if (task->is_blocking()) {
     MutexLocker notifier(task->lock(), thread);
     task->mark_complete();
@@ -271,7 +271,8 @@
   assert(!_lock->is_locked(), "bad locking");
 
   _compile_id = compile_id;
-  _method = JNIHandles::make_global(method);
+  _method = method();
+  _method_loader = JNIHandles::make_global(_method->method_holder()->class_loader());
   _osr_bci = osr_bci;
   _is_blocking = is_blocking;
   _comp_level = comp_level;
@@ -282,6 +283,7 @@
   _code_handle = NULL;
 
   _hot_method = NULL;
+  _hot_method_loader = NULL;
   _hot_count = hot_count;
   _time_queued = 0;  // tidy
   _comment = comment;
@@ -292,8 +294,9 @@
       if (hot_method == method) {
         _hot_method = _method;
       } else {
-        _hot_method = JNIHandles::make_global(hot_method);
+        _hot_method = hot_method();
       }
+      _hot_method_loader = JNIHandles::make_global(_hot_method->method_holder()->class_loader());
     }
   }
 
@@ -318,19 +321,25 @@
 void CompileTask::free() {
   set_code(NULL);
   assert(!_lock->is_locked(), "Should not be locked when freed");
-  if (_hot_method != NULL && _hot_method != _method) {
-    JNIHandles::destroy_global(_hot_method);
-  }
-  JNIHandles::destroy_global(_method);
+  JNIHandles::destroy_global(_method_loader);
+  JNIHandles::destroy_global(_hot_method_loader);
 }
 
 
+void CompileTask::mark_on_stack() {
+  // Mark these methods as something redefine classes cannot remove.
+  _method->set_on_stack(true);
+  if (_hot_method != NULL) {
+    _hot_method->set_on_stack(true);
+  }
+}
+
 // ------------------------------------------------------------------
 // CompileTask::print
 void CompileTask::print() {
   tty->print("<CompileTask compile_id=%d ", _compile_id);
   tty->print("method=");
-  ((methodOop)JNIHandles::resolve(_method))->print_name(tty);
+  _method->print_name(tty);
   tty->print_cr(" osr_bci=%d is_blocking=%s is_complete=%s is_success=%s>",
              _osr_bci, bool_to_str(_is_blocking),
              bool_to_str(_is_complete), bool_to_str(_is_success));
@@ -365,7 +374,7 @@
 
 // ------------------------------------------------------------------
 // CompileTask::print_compilation_impl
-void CompileTask::print_compilation_impl(outputStream* st, methodOop method, int compile_id, int comp_level,
+void CompileTask::print_compilation_impl(outputStream* st, Method* method, int compile_id, int comp_level,
                                          bool is_osr_method, int osr_bci, bool is_blocking,
                                          const char* msg, bool short_form) {
   if (!short_form) {
@@ -483,19 +492,15 @@
 // ------------------------------------------------------------------
 // CompileTask::print_compilation
 void CompileTask::print_compilation(outputStream* st, bool short_form) {
-  oop rem = JNIHandles::resolve(method_handle());
-  assert(rem != NULL && rem->is_method(), "must be");
-  methodOop method = (methodOop) rem;
   bool is_osr_method = osr_bci() != InvocationEntryBci;
-  print_compilation_impl(st, method, compile_id(), comp_level(), is_osr_method, osr_bci(), is_blocking(), NULL, short_form);
+  print_compilation_impl(st, method(), compile_id(), comp_level(), is_osr_method, osr_bci(), is_blocking(), NULL, short_form);
 }
 
 // ------------------------------------------------------------------
 // CompileTask::log_task
 void CompileTask::log_task(xmlStream* log) {
   Thread* thread = Thread::current();
-  methodHandle method(thread,
-                      (methodOop)JNIHandles::resolve(method_handle()));
+  methodHandle method(thread, this->method());
   ResourceMark rm(thread);
 
   // <task id='9' method='M' osr_bci='X' level='1' blocking='1' stamp='1.234'>
@@ -530,10 +535,8 @@
     xtty->print(" comment='%s'", _comment);
   }
   if (_hot_method != NULL) {
-    methodHandle hot(thread,
-                     (methodOop)JNIHandles::resolve(_hot_method));
-    methodHandle method(thread,
-                        (methodOop)JNIHandles::resolve(_method));
+    methodHandle hot(thread, _hot_method);
+    methodHandle method(thread, _method);
     if (hot() != method()) {
       xtty->method(hot);
     }
@@ -558,8 +561,7 @@
 // CompileTask::log_task_done
 void CompileTask::log_task_done(CompileLog* log) {
   Thread* thread = Thread::current();
-  methodHandle method(thread,
-                      (methodOop)JNIHandles::resolve(method_handle()));
+  methodHandle method(thread, this->method());
   ResourceMark rm(thread);
 
   // <task_done ... stamp='1.234'>  </task>
@@ -610,7 +612,7 @@
   ++_size;
 
   // Mark the method as being in the compile queue.
-  ((methodOop)JNIHandles::resolve(task->method_handle()))->set_queued_for_compilation();
+  task->method()->set_queued_for_compilation();
 
   if (CIPrintCompileQueue) {
     print();
@@ -674,6 +676,16 @@
   --_size;
 }
 
+// methods in the compile queue need to be marked as used on the stack
+// so that they don't get reclaimed by Redefine Classes
+void CompileQueue::mark_on_stack() {
+  CompileTask* task = _first;
+  while (task != NULL) {
+    task->mark_on_stack();
+    task = task->next();
+  }
+}
+
 // ------------------------------------------------------------------
 // CompileQueue::print
 void CompileQueue::print() {
@@ -868,7 +880,7 @@
 CompilerThread* CompileBroker::make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, TRAPS) {
   CompilerThread* compiler_thread = NULL;
 
-  klassOop k =
+  Klass* k =
     SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(),
                                       true, CHECK_0);
   instanceKlassHandle klass (THREAD, k);
@@ -987,6 +999,18 @@
   }
 }
 
+
+// Set the methods on the stack as on_stack so that redefine classes doesn't
+// reclaim them
+void CompileBroker::mark_on_stack() {
+  if (_c2_method_queue != NULL) {
+    _c2_method_queue->mark_on_stack();
+  }
+  if (_c1_method_queue != NULL) {
+    _c1_method_queue->mark_on_stack();
+  }
+}
+
 // ------------------------------------------------------------------
 // CompileBroker::is_idle
 bool CompileBroker::is_idle() {
@@ -1025,9 +1049,9 @@
   }
 
   guarantee(!method->is_abstract(), "cannot compile abstract methods");
-  assert(method->method_holder()->klass_part()->oop_is_instance(),
+  assert(method->method_holder()->oop_is_instance(),
          "sanity check");
-  assert(!instanceKlass::cast(method->method_holder())->is_not_initialized(),
+  assert(!InstanceKlass::cast(method->method_holder())->is_not_initialized(),
          "method holder must be initialized");
   assert(!method->is_method_handle_intrinsic(), "do not enqueue these guys");
 
@@ -1084,7 +1108,7 @@
   // the pending list lock or a 3-way deadlock may occur
   // between the reference handler thread, a GC (instigated
   // by a compiler thread), and compiled method registration.
-  if (instanceRefKlass::owns_pending_list_lock(JavaThread::current())) {
+  if (InstanceRefKlass::owns_pending_list_lock(JavaThread::current())) {
     return;
   }
 
@@ -1179,10 +1203,10 @@
                                        methodHandle hot_method, int hot_count,
                                        const char* comment, Thread* THREAD) {
   // make sure arguments make sense
-  assert(method->method_holder()->klass_part()->oop_is_instance(), "not an instance method");
+  assert(method->method_holder()->oop_is_instance(), "not an instance method");
   assert(osr_bci == InvocationEntryBci || (0 <= osr_bci && osr_bci < method->code_size()), "bci out of range");
   assert(!method->is_abstract() && (osr_bci == InvocationEntryBci || !method->is_native()), "cannot compile abstract/native methods");
-  assert(!instanceKlass::cast(method->method_holder())->is_not_initialized(), "method holder must be initialized");
+  assert(!InstanceKlass::cast(method->method_holder())->is_not_initialized(), "method holder must be initialized");
 
   if (!TieredCompilation) {
     comp_level = CompLevel_highest_tier;
@@ -1234,7 +1258,7 @@
     method->constants()->resolve_string_constants(CHECK_AND_CLEAR_NULL);
     // Resolve all classes seen in the signature of the method
     // we are compiling.
-    methodOopDesc::load_signature_classes(method, CHECK_AND_CLEAR_NULL);
+    Method::load_signature_classes(method, CHECK_AND_CLEAR_NULL);
   }
 
   // If the method is native, do the lookup in the thread requesting
@@ -1416,7 +1440,7 @@
 // Should the current thread be blocked until this compilation request
 // has been fulfilled?
 bool CompileBroker::is_compile_blocking(methodHandle method, int osr_bci) {
-  assert(!instanceRefKlass::owns_pending_list_lock(JavaThread::current()), "possible deadlock");
+  assert(!InstanceRefKlass::owns_pending_list_lock(JavaThread::current()), "possible deadlock");
   return !BackgroundCompilation;
 }
 
@@ -1497,8 +1521,7 @@
   JavaThread *thread = JavaThread::current();
   thread->set_blocked_on_compilation(true);
 
-  methodHandle method(thread,
-                      (methodOop)JNIHandles::resolve(task->method_handle()));
+  methodHandle method(thread, task->method());
   {
     MutexLocker waiter(task->lock(), thread);
 
@@ -1583,8 +1606,7 @@
       CompileTaskWrapper ctw(task);
       nmethodLocker result_handle;  // (handle for the nmethod produced by this task)
       task->set_code_handle(&result_handle);
-      methodHandle method(thread,
-                     (methodOop)JNIHandles::resolve(task->method_handle()));
+      methodHandle method(thread, task->method());
 
       // Never compile a method if breakpoints are present in it
       if (method()->number_of_breakpoints() == 0) {
@@ -1690,7 +1712,6 @@
   }
 }
 
-
 // ------------------------------------------------------------------
 // CompileBroker::invoke_compiler_on_method
 //
@@ -1721,8 +1742,7 @@
     // accidentally be referenced once the thread transitions to
     // native.  The NoHandleMark before the transition should catch
     // any cases where this occurs in the future.
-    methodHandle method(thread,
-                        (methodOop)JNIHandles::resolve(task->method_handle()));
+    methodHandle method(thread, task->method());
     should_break = check_break_at(method, compile_id, is_osr);
     if (should_log && !CompilerOracle::should_log(method)) {
       should_log = false;
@@ -1737,7 +1757,7 @@
 
   // Allocate a new set of JNI handles.
   push_jni_handle_block();
-  jobject target_handle = JNIHandles::make_local(thread, JNIHandles::resolve(task->method_handle()));
+  Method* target_handle = task->method();
   int compilable = ciEnv::MethodCompilable;
   {
     int system_dictionary_modification_counter;
@@ -1806,8 +1826,7 @@
   }
   pop_jni_handle_block();
 
-  methodHandle method(thread,
-                      (methodOop)JNIHandles::resolve(task->method_handle()));
+  methodHandle method(thread, task->method());
 
   DTRACE_METHOD_COMPILE_END_PROBE(compiler(task->comp_level()), method, task->is_success());
 
@@ -1901,7 +1920,7 @@
   size_t maxLen = CompilerCounters::cmname_buffer_length;
 
   if (UsePerfData) {
-    const char* class_name = method->method_holder()->klass_part()->name()->as_C_string();
+    const char* class_name = method->method_holder()->name()->as_C_string();
 
     size_t s1len = strlen(class_name);
     size_t s2len = strlen(method_name);
@@ -1995,7 +2014,7 @@
 
 void CompileBroker::collect_statistics(CompilerThread* thread, elapsedTimer time, CompileTask* task) {
   bool success = task->is_success();
-  methodHandle method (thread, (methodOop)JNIHandles::resolve(task->method_handle()));
+  methodHandle method (thread, task->method());
   uint compile_id = task->compile_id();
   bool is_osr = (task->osr_bci() != standard_entry_bci);
   nmethod* code = task->code();
--- a/src/share/vm/compiler/compileBroker.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/compiler/compileBroker.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -42,7 +42,8 @@
  private:
   Monitor*     _lock;
   uint         _compile_id;
-  jobject      _method;
+  Method*      _method;
+  jobject      _method_loader;
   int          _osr_bci;
   bool         _is_complete;
   bool         _is_success;
@@ -54,7 +55,8 @@
 
   // Fields used for logging why the compilation was initiated:
   jlong        _time_queued;  // in units of os::elapsed_counter()
-  jobject      _hot_method;   // which method actually triggered this task
+  Method*      _hot_method;   // which method actually triggered this task
+  jobject      _hot_method_loader;
   int          _hot_count;    // information about its invocation counter
   const char*  _comment;      // more info about the task
 
@@ -70,7 +72,7 @@
   void free();
 
   int          compile_id() const                { return _compile_id; }
-  jobject      method_handle() const             { return _method; }
+  Method*      method() const                    { return _method; }
   int          osr_bci() const                   { return _osr_bci; }
   bool         is_complete() const               { return _is_complete; }
   bool         is_blocking() const               { return _is_blocking; }
@@ -98,7 +100,7 @@
   void         set_prev(CompileTask* prev)       { _prev = prev; }
 
 private:
-  static void  print_compilation_impl(outputStream* st, methodOop method, int compile_id, int comp_level,
+  static void  print_compilation_impl(outputStream* st, Method* method, int compile_id, int comp_level,
                                       bool is_osr_method = false, int osr_bci = -1, bool is_blocking = false,
                                       const char* msg = NULL, bool short_form = false);
 
@@ -115,6 +117,9 @@
     print_inlining(tty, method, inline_level, bci, msg);
   }
 
+  // Redefine Classes support
+  void mark_on_stack();
+
   static void  print_inline_indent(int inline_level, outputStream* st = tty);
 
   void         print();
@@ -206,6 +211,9 @@
   bool         is_empty() const                  { return _first == NULL; }
   int          size()     const                  { return _size;          }
 
+  // Redefine Classes support
+  void mark_on_stack();
+
   void         print();
 };
 
@@ -400,6 +408,9 @@
     return _perf_total_compilation != NULL ? _perf_total_compilation->get_value() : 0;
   }
 
+  // Redefine Classes support
+  static void mark_on_stack();
+
   // Print a detailed accounting of compilation time
   static void print_times();
 
--- a/src/share/vm/compiler/compileLog.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/compiler/compileLog.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -26,7 +26,7 @@
 #include "ci/ciMethod.hpp"
 #include "compiler/compileLog.hpp"
 #include "memory/allocation.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/os.hpp"
 
@@ -99,7 +99,7 @@
 
 // ------------------------------------------------------------------
 // CompileLog::identify
-int CompileLog::identify(ciObject* obj) {
+int CompileLog::identify(ciBaseObject* obj) {
   if (obj == NULL)  return 0;
   int id = obj->ident();
   if (id < 0)  return id;
@@ -121,8 +121,10 @@
   _identities[id] = 1;  // mark
 
   // Now, print the object's identity once, in detail.
-  if (obj->is_klass()) {
-    ciKlass* klass = obj->as_klass();
+  if (obj->is_metadata()) {
+    ciMetadata* mobj = obj->as_metadata();
+    if (mobj->is_klass()) {
+      ciKlass* klass = mobj->as_klass();
     begin_elem("klass id='%d'", id);
     name(klass->name());
     if (!klass->is_loaded()) {
@@ -131,8 +133,8 @@
       print(" flags='%d'", klass->modifier_flags());
     }
     end_elem();
-  } else if (obj->is_method()) {
-    ciMethod* method = obj->as_method();
+    } else if (mobj->is_method()) {
+      ciMethod* method = mobj->as_method();
     ciSignature* sig = method->signature();
     // Pre-identify items that we will need!
     identify(sig->return_type());
@@ -163,15 +165,18 @@
       print(" iicount='%d'", method->interpreter_invocation_count());
     }
     end_elem();
+    } else if (mobj->is_type()) {
+      BasicType type = mobj->as_type()->basic_type();
+      elem("type id='%d' name='%s'", id, type2name(type));
+    } else {
+      // Should not happen.
+      elem("unknown id='%d'", id);
+      ShouldNotReachHere();
+    }
   } else if (obj->is_symbol()) {
     begin_elem("symbol id='%d'", id);
     name(obj->as_symbol());
     end_elem();
-  } else if (obj->is_null_object()) {
-    elem("null_object id='%d'", id);
-  } else if (obj->is_type()) {
-    BasicType type = obj->as_type()->basic_type();
-    elem("type id='%d' name='%s'", id, type2name(type));
   } else {
     // Should not happen.
     elem("unknown id='%d'", id);
--- a/src/share/vm/compiler/compileLog.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/compiler/compileLog.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -27,7 +27,9 @@
 
 #include "utilities/xmlstream.hpp"
 
+class ciBaseObject;
 class ciObject;
+class ciMetadata;
 class ciSymbol;
 
 // CompileLog
@@ -66,7 +68,7 @@
   void          name(Symbol* s)                  { xmlStream::name(s); }
 
   // Output an object description, return obj->ident().
-  int           identify(ciObject* obj);
+  int           identify(ciBaseObject* obj);
   void          clear_identities();
 
   // virtuals
--- a/src/share/vm/compiler/compilerOracle.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/compiler/compilerOracle.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,7 +28,7 @@
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/klass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/handles.inline.hpp"
@@ -455,7 +455,7 @@
     //      exclude java/lang/String indexOf
     //      exclude,java/lang/String,indexOf
     // For easy cut-and-paste of method names, allow VM output format
-    // as produced by methodOopDesc::print_short_name:
+    // as produced by Method::print_short_name:
     //      exclude java.lang.String::indexOf
     // For simple implementation convenience here, convert them all to space.
     if (have_colon) {
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsCollectorPolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -63,7 +63,6 @@
 }
 
 void ConcurrentMarkSweepPolicy::initialize_generations() {
-  initialize_perm_generation(PermGen::ConcurrentMarkSweep);
   _generations = new GenerationSpecPtr[number_of_generations()];
   if (_generations == NULL)
     vm_exit_during_initialization("Unable to allocate gen spec");
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -48,7 +48,65 @@
     }                                                     \
   }
 
-class MarkRefsIntoClosure: public OopsInGenClosure {
+// Applies the given oop closure to all oops in all klasses visited.
+class CMKlassClosure : public KlassClosure {
+  friend class CMSOopClosure;
+  friend class CMSOopsInGenClosure;
+
+  OopClosure* _oop_closure;
+
+  // Used when _oop_closure couldn't be set in an initialization list.
+  void initialize(OopClosure* oop_closure) {
+    assert(_oop_closure == NULL, "Should only be called once");
+    _oop_closure = oop_closure;
+  }
+ public:
+  CMKlassClosure(OopClosure* oop_closure = NULL) : _oop_closure(oop_closure) { }
+
+  void do_klass(Klass* k);
+};
+
+// The base class for all CMS marking closures.
+// It's used to proxy through the metadata to the oops defined in them.
+class CMSOopClosure: public ExtendedOopClosure {
+  CMKlassClosure      _klass_closure;
+ public:
+  CMSOopClosure() : ExtendedOopClosure() {
+    _klass_closure.initialize(this);
+  }
+  CMSOopClosure(ReferenceProcessor* rp) : ExtendedOopClosure(rp) {
+    _klass_closure.initialize(this);
+  }
+
+  virtual bool do_metadata()    { return do_metadata_nv(); }
+  inline  bool do_metadata_nv() { return true; }
+
+  virtual void do_klass(Klass* k);
+  void do_klass_nv(Klass* k);
+
+  virtual void do_class_loader_data(ClassLoaderData* cld);
+};
+
+// TODO: This duplication of the CMSOopClosure class is only needed because
+//       some CMS OopClosures derive from OopsInGenClosure. It would be good
+//       to get rid of them completely.
+class CMSOopsInGenClosure: public OopsInGenClosure {
+  CMKlassClosure _klass_closure;
+ public:
+  CMSOopsInGenClosure() {
+    _klass_closure.initialize(this);
+  }
+
+  virtual bool do_metadata()    { return do_metadata_nv(); }
+  inline  bool do_metadata_nv() { return true; }
+
+  virtual void do_klass(Klass* k);
+  void do_klass_nv(Klass* k);
+
+  virtual void do_class_loader_data(ClassLoaderData* cld);
+};
+
+class MarkRefsIntoClosure: public CMSOopsInGenClosure {
  private:
   const MemRegion _span;
   CMSBitMap*      _bitMap;
@@ -58,9 +116,7 @@
   MarkRefsIntoClosure(MemRegion span, CMSBitMap* bitMap);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
-  inline void do_oop_nv(oop* p)       { MarkRefsIntoClosure::do_oop_work(p); }
-  inline void do_oop_nv(narrowOop* p) { MarkRefsIntoClosure::do_oop_work(p); }
-  bool do_header() { return true; }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
@@ -68,7 +124,7 @@
 
 // A variant of the above used in certain kinds of CMS
 // marking verification.
-class MarkRefsIntoVerifyClosure: public OopsInGenClosure {
+class MarkRefsIntoVerifyClosure: public CMSOopsInGenClosure {
  private:
   const MemRegion _span;
   CMSBitMap*      _verification_bm;
@@ -80,53 +136,16 @@
                             CMSBitMap* cms_bm);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
-  inline void do_oop_nv(oop* p)       { MarkRefsIntoVerifyClosure::do_oop_work(p); }
-  inline void do_oop_nv(narrowOop* p) { MarkRefsIntoVerifyClosure::do_oop_work(p); }
-  bool do_header() { return true; }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
 };
 
-// KlassRememberingOopClosure is used when marking of the permanent generation
-// is being done.  It adds fields to support revisiting of klasses
-// for class unloading.  _should_remember_klasses should be set to
-// indicate if klasses should be remembered.  Currently that is whenever
-// CMS class unloading is turned on.  The _revisit_stack is used
-// to save the klasses for later processing.
-class KlassRememberingOopClosure : public OopClosure {
- protected:
+// The non-parallel version (the parallel version appears further below).
+class PushAndMarkClosure: public CMSOopClosure {
+ private:
   CMSCollector* _collector;
-  CMSMarkStack* _revisit_stack;
-  bool const    _should_remember_klasses;
- public:
-  void check_remember_klasses() const PRODUCT_RETURN;
-  virtual const bool should_remember_klasses() const {
-    check_remember_klasses();
-    return _should_remember_klasses;
-  }
-  virtual void remember_klass(Klass* k);
-
-  KlassRememberingOopClosure(CMSCollector* collector,
-                             ReferenceProcessor* rp,
-                             CMSMarkStack* revisit_stack);
-};
-
-// Similar to KlassRememberingOopClosure for use when multiple
-// GC threads will execute the closure.
-
-class Par_KlassRememberingOopClosure : public KlassRememberingOopClosure {
- public:
-  Par_KlassRememberingOopClosure(CMSCollector* collector,
-                                 ReferenceProcessor* rp,
-                                 CMSMarkStack* revisit_stack):
-    KlassRememberingOopClosure(collector, rp, revisit_stack) {}
-  virtual void remember_klass(Klass* k);
-};
-
-// The non-parallel version (the parallel version appears further below).
-class PushAndMarkClosure: public KlassRememberingOopClosure {
- private:
   MemRegion     _span;
   CMSBitMap*    _bit_map;
   CMSBitMap*    _mod_union_table;
@@ -141,32 +160,26 @@
                      CMSBitMap* bit_map,
                      CMSBitMap* mod_union_table,
                      CMSMarkStack* mark_stack,
-                     CMSMarkStack* revisit_stack,
                      bool concurrent_precleaning);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { PushAndMarkClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { PushAndMarkClosure::do_oop_work(p); }
-  bool do_header() { return true; }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
-  // In support of class unloading
-  virtual const bool should_remember_mdo() const {
-    return false;
-    // return _should_remember_klasses;
-  }
-  virtual void remember_mdo(DataLayout* v);
 };
 
-// In the parallel case, the revisit stack, the bit map and the
+// In the parallel case, the bit map and the
 // reference processor are currently all shared. Access to
 // these shared mutable structures must use appropriate
 // synchronization (for instance, via CAS). The marking stack
 // used in the non-parallel case above is here replaced with
 // an OopTaskQueue structure to allow efficient work stealing.
-class Par_PushAndMarkClosure: public Par_KlassRememberingOopClosure {
+class Par_PushAndMarkClosure: public CMSOopClosure {
  private:
+  CMSCollector* _collector;
   MemRegion     _span;
   CMSBitMap*    _bit_map;
   OopTaskQueue* _work_queue;
@@ -177,26 +190,19 @@
                          MemRegion span,
                          ReferenceProcessor* rp,
                          CMSBitMap* bit_map,
-                         OopTaskQueue* work_queue,
-                         CMSMarkStack* revisit_stack);
+                         OopTaskQueue* work_queue);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { Par_PushAndMarkClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { Par_PushAndMarkClosure::do_oop_work(p); }
-  bool do_header() { return true; }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
-  // In support of class unloading
-  virtual const bool should_remember_mdo() const {
-    return false;
-    // return _should_remember_klasses;
-  }
-  virtual void remember_mdo(DataLayout* v);
 };
 
 // The non-parallel version (the parallel version appears further below).
-class MarkRefsIntoAndScanClosure: public OopsInGenClosure {
+class MarkRefsIntoAndScanClosure: public CMSOopsInGenClosure {
  private:
   MemRegion          _span;
   CMSBitMap*         _bit_map;
@@ -215,7 +221,6 @@
                              CMSBitMap* bit_map,
                              CMSBitMap* mod_union_table,
                              CMSMarkStack* mark_stack,
-                             CMSMarkStack* revisit_stack,
                              CMSCollector* collector,
                              bool should_yield,
                              bool concurrent_precleaning);
@@ -223,19 +228,13 @@
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { MarkRefsIntoAndScanClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { MarkRefsIntoAndScanClosure::do_oop_work(p); }
-  bool do_header() { return true; }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
   void set_freelistLock(Mutex* m) {
     _freelistLock = m;
   }
-  virtual const bool should_remember_klasses() const {
-    return _pushAndMarkClosure.should_remember_klasses();
-  }
-  virtual void remember_klass(Klass* k) {
-    _pushAndMarkClosure.remember_klass(k);
-  }
 
  private:
   inline void do_yield_check();
@@ -247,7 +246,7 @@
 // stack and the bitMap are shared, so access needs to be suitably
 // sycnhronized. An OopTaskQueue structure, supporting efficient
 // workstealing, replaces a CMSMarkStack for storing grey objects.
-class Par_MarkRefsIntoAndScanClosure: public OopsInGenClosure {
+class Par_MarkRefsIntoAndScanClosure: public CMSOopsInGenClosure {
  private:
   MemRegion              _span;
   CMSBitMap*             _bit_map;
@@ -261,23 +260,12 @@
                                  MemRegion span,
                                  ReferenceProcessor* rp,
                                  CMSBitMap* bit_map,
-                                 OopTaskQueue* work_queue,
-                                 CMSMarkStack*  revisit_stack);
+                                 OopTaskQueue* work_queue);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { Par_MarkRefsIntoAndScanClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { Par_MarkRefsIntoAndScanClosure::do_oop_work(p); }
-  bool do_header() { return true; }
-  // When ScanMarkedObjectsAgainClosure is used,
-  // it passes [Par_]MarkRefsIntoAndScanClosure to oop_oop_iterate(),
-  // and this delegation is used.
-  virtual const bool should_remember_klasses() const {
-    return _par_pushAndMarkClosure.should_remember_klasses();
-  }
-  // See comment on should_remember_klasses() above.
-  virtual void remember_klass(Klass* k) {
-    _par_pushAndMarkClosure.remember_klass(k);
-  }
+
   Prefetch::style prefetch_style() {
     return Prefetch::do_read;
   }
@@ -287,8 +275,9 @@
 // This closure is used during the concurrent marking phase
 // following the first checkpoint. Its use is buried in
 // the closure MarkFromRootsClosure.
-class PushOrMarkClosure: public KlassRememberingOopClosure {
+class PushOrMarkClosure: public CMSOopClosure {
  private:
+  CMSCollector*   _collector;
   MemRegion       _span;
   CMSBitMap*      _bitMap;
   CMSMarkStack*   _markStack;
@@ -302,19 +291,12 @@
                     MemRegion span,
                     CMSBitMap* bitMap,
                     CMSMarkStack* markStack,
-                    CMSMarkStack* revisitStack,
                     HeapWord* finger,
                     MarkFromRootsClosure* parent);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { PushOrMarkClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { PushOrMarkClosure::do_oop_work(p); }
-  // In support of class unloading
-  virtual const bool should_remember_mdo() const {
-    return false;
-    // return _should_remember_klasses;
-  }
-  virtual void remember_mdo(DataLayout* v);
 
   // Deal with a stack overflow condition
   void handle_stack_overflow(HeapWord* lost);
@@ -326,8 +308,9 @@
 // This closure is used during the concurrent marking phase
 // following the first checkpoint. Its use is buried in
 // the closure Par_MarkFromRootsClosure.
-class Par_PushOrMarkClosure: public Par_KlassRememberingOopClosure {
+class Par_PushOrMarkClosure: public CMSOopClosure {
  private:
+  CMSCollector*    _collector;
   MemRegion        _whole_span;
   MemRegion        _span;        // local chunk
   CMSBitMap*       _bit_map;
@@ -345,7 +328,6 @@
                         CMSBitMap* bit_map,
                         OopTaskQueue* work_queue,
                         CMSMarkStack* mark_stack,
-                        CMSMarkStack* revisit_stack,
                         HeapWord* finger,
                         HeapWord** global_finger_addr,
                         Par_MarkFromRootsClosure* parent);
@@ -353,12 +335,6 @@
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { Par_PushOrMarkClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { Par_PushOrMarkClosure::do_oop_work(p); }
-  // In support of class unloading
-  virtual const bool should_remember_mdo() const {
-    return false;
-    // return _should_remember_klasses;
-  }
-  virtual void remember_mdo(DataLayout* v);
 
   // Deal with a stack overflow condition
   void handle_stack_overflow(HeapWord* lost);
@@ -372,8 +348,9 @@
 // processing phase of the CMS final checkpoint step, as
 // well as during the concurrent precleaning of the discovered
 // reference lists.
-class CMSKeepAliveClosure: public KlassRememberingOopClosure {
+class CMSKeepAliveClosure: public CMSOopClosure {
  private:
+  CMSCollector* _collector;
   const MemRegion _span;
   CMSMarkStack* _mark_stack;
   CMSBitMap*    _bit_map;
@@ -383,7 +360,7 @@
  public:
   CMSKeepAliveClosure(CMSCollector* collector, MemRegion span,
                       CMSBitMap* bit_map, CMSMarkStack* mark_stack,
-                      CMSMarkStack* revisit_stack, bool cpc);
+                      bool cpc);
   bool    concurrent_precleaning() const { return _concurrent_precleaning; }
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
@@ -391,8 +368,9 @@
   inline void do_oop_nv(narrowOop* p) { CMSKeepAliveClosure::do_oop_work(p); }
 };
 
-class CMSInnerParMarkAndPushClosure: public Par_KlassRememberingOopClosure {
+class CMSInnerParMarkAndPushClosure: public CMSOopClosure {
  private:
+  CMSCollector* _collector;
   MemRegion     _span;
   OopTaskQueue* _work_queue;
   CMSBitMap*    _bit_map;
@@ -401,7 +379,6 @@
  public:
   CMSInnerParMarkAndPushClosure(CMSCollector* collector,
                                 MemRegion span, CMSBitMap* bit_map,
-                                CMSMarkStack* revisit_stack,
                                 OopTaskQueue* work_queue);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
@@ -412,7 +389,7 @@
 // A parallel (MT) version of the above, used when
 // reference processing is parallel; the only difference
 // is in the do_oop method.
-class CMSParKeepAliveClosure: public Par_KlassRememberingOopClosure {
+class CMSParKeepAliveClosure: public CMSOopClosure {
  private:
   MemRegion     _span;
   OopTaskQueue* _work_queue;
@@ -425,12 +402,9 @@
   DO_OOP_WORK_DEFN
  public:
   CMSParKeepAliveClosure(CMSCollector* collector, MemRegion span,
-                         CMSBitMap* bit_map, CMSMarkStack* revisit_stack,
-                         OopTaskQueue* work_queue);
+                         CMSBitMap* bit_map, OopTaskQueue* work_queue);
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
-  inline void do_oop_nv(oop* p)       { CMSParKeepAliveClosure::do_oop_work(p); }
-  inline void do_oop_nv(narrowOop* p) { CMSParKeepAliveClosure::do_oop_work(p); }
 };
 
 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -27,6 +27,7 @@
 
 #include "gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp"
 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
+#include "oops/oop.inline.hpp"
 
 // Trim our work_queue so its length is below max at return
 inline void Par_MarkRefsIntoAndScanClosure::trim_queue(uint max) {
@@ -43,42 +44,33 @@
   }
 }
 
-#ifndef PRODUCT
-void KlassRememberingOopClosure::check_remember_klasses() const {
-  assert(_should_remember_klasses == must_remember_klasses(),
-    "Should remember klasses in this context.");
+// CMSOopClosure and CMSoopsInGenClosure are duplicated,
+// until we get rid of OopsInGenClosure.
+
+inline void CMSOopClosure::do_klass(Klass* k)       { do_klass_nv(k); }
+inline void CMSOopsInGenClosure::do_klass(Klass* k) { do_klass_nv(k); }
+
+inline void CMSOopClosure::do_klass_nv(Klass* k) {
+  ClassLoaderData* cld = k->class_loader_data();
+  do_class_loader_data(cld);
 }
-#endif
-
-void KlassRememberingOopClosure::remember_klass(Klass* k) {
-  if (!_revisit_stack->push(oop(k))) {
-    fatal("Revisit stack overflow in PushOrMarkClosure");
-  }
-  check_remember_klasses();
+inline void CMSOopsInGenClosure::do_klass_nv(Klass* k) {
+  ClassLoaderData* cld = k->class_loader_data();
+  do_class_loader_data(cld);
 }
 
-inline void PushOrMarkClosure::remember_mdo(DataLayout* v) {
-  // TBD
+inline void CMSOopClosure::do_class_loader_data(ClassLoaderData* cld) {
+  assert(_klass_closure._oop_closure == this, "Must be");
+
+  bool claim = true;  // Must claim the class loader data before processing.
+  cld->oops_do(_klass_closure._oop_closure, &_klass_closure, claim);
+}
+inline void CMSOopsInGenClosure::do_class_loader_data(ClassLoaderData* cld) {
+  assert(_klass_closure._oop_closure == this, "Must be");
+
+  bool claim = true;  // Must claim the class loader data before processing.
+  cld->oops_do(_klass_closure._oop_closure, &_klass_closure, claim);
 }
 
 
-void Par_KlassRememberingOopClosure::remember_klass(Klass* k) {
-  if (!_revisit_stack->par_push(oop(k))) {
-    fatal("Revisit stack overflow in Par_KlassRememberingOopClosure");
-  }
-  check_remember_klasses();
-}
-
-inline void Par_PushOrMarkClosure::remember_mdo(DataLayout* v) {
-  // TBD
-}
-
-inline void PushOrMarkClosure::do_yield_check() {
-  _parent->do_yield_check();
-}
-
-inline void Par_PushOrMarkClosure::do_yield_check() {
-  _parent->do_yield_check();
-}
-
 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSOOPCLOSURES_INLINE_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2007, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
-#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
-#include "gc_implementation/shared/cSpaceCounters.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/blockOffsetTable.inline.hpp"
-#include "memory/compactPermGen.hpp"
-#include "memory/genCollectedHeap.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/permGen.hpp"
-#include "memory/universe.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/java.hpp"
-
-CMSPermGen::CMSPermGen(ReservedSpace rs, size_t initial_byte_size,
-             CardTableRS* ct,
-             FreeBlockDictionary<FreeChunk>::DictionaryChoice dictionaryChoice) {
-  CMSPermGenGen* g =
-    new CMSPermGenGen(rs, initial_byte_size, -1, ct);
-  if (g == NULL) {
-    vm_exit_during_initialization("Could not allocate a CompactingPermGen");
-  }
-
-  g->initialize_performance_counters();
-
-  _gen = g;
-}
-
-HeapWord* CMSPermGen::mem_allocate(size_t size) {
-  Mutex* lock = _gen->freelistLock();
-  bool lock_owned = lock->owned_by_self();
-  if (lock_owned) {
-    MutexUnlocker mul(lock);
-    return mem_allocate_in_gen(size, _gen);
-  } else {
-    return mem_allocate_in_gen(size, _gen);
-  }
-}
-
-HeapWord* CMSPermGen::request_expand_and_allocate(Generation* gen,
-                                                  size_t size,
-                                                  GCCause::Cause prev_cause /* ignored */) {
-  HeapWord* obj = gen->expand_and_allocate(size, false);
-  if (gen->capacity() >= _capacity_expansion_limit) {
-    set_capacity_expansion_limit(gen->capacity() + MaxPermHeapExpansion);
-    assert(((ConcurrentMarkSweepGeneration*)gen)->should_concurrent_collect(),
-           "Should kick off a collection if one not in progress");
-  }
-  return obj;
-}
-
-void CMSPermGen::compute_new_size() {
-  _gen->compute_new_size();
-}
-
-void CMSPermGenGen::initialize_performance_counters() {
-
-  const char* gen_name = "perm";
-
-  // Generation Counters - generation 2, 1 subspace
-  _gen_counters = new GenerationCounters(gen_name, 2, 1, &_virtual_space);
-
-  _gc_counters = NULL;
-
-  _space_counters = new GSpaceCounters(gen_name, 0,
-                                       _virtual_space.reserved_size(),
-                                       this, _gen_counters);
-}
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsPermGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2007, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
-#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
-
-#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
-#include "memory/permGen.hpp"
-
-class CardTableRS;   // fwd decl
-class ConcurrentMarkSweepGeneration;
-
-// A PermGen implemented with a CMS space, collected by a CMS collector.
-class CMSPermGen:  public PermGen {
-  friend class VMStructs;
-
- protected:
-  // The "generation" view.
-  ConcurrentMarkSweepGeneration* _gen;
-
-  // Override default implementation from PermGen
-  virtual HeapWord* request_expand_and_allocate(Generation* gen, size_t size,
-                                                GCCause::Cause prev_cause);
-
- public:
-  CMSPermGen(ReservedSpace rs, size_t initial_byte_size,
-             CardTableRS* ct, FreeBlockDictionary<FreeChunk>::DictionaryChoice);
-
-  HeapWord* mem_allocate(size_t size);
-
-  void compute_new_size();
-
-  Generation* as_gen() const { return _gen; }
-};
-
-// This is the "generation" view of a CMSPermGen.
-class CMSPermGenGen: public ConcurrentMarkSweepGeneration {
-  // Abstractly, this is a subtype that gets access to protected fields.
-  friend class CMSPermGen;
-public:
-  CMSPermGenGen(ReservedSpace rs, size_t initial_byte_size,
-                       int level, CardTableRS* ct):
-    // See comments in the constructor for CompactibleFreeListSpace
-    // regarding not using adaptive free lists for a perm gen.
-    ConcurrentMarkSweepGeneration(rs, initial_byte_size, // MinPermHeapExapnsion
-      level, ct, false /* use adaptive freelists */,
-      (FreeBlockDictionary<FreeChunk>::DictionaryChoice)CMSDictionaryChoice)
-  {}
-
-  void initialize_performance_counters();
-
-  const char* name() const {
-    return "concurrent-mark-sweep perm gen";
-  }
-
-  const char* short_name() const {
-    return "CMS Perm";
-  }
-
-  bool must_be_youngest() const { return false; }
-  bool must_be_oldest() const { return false; }
-};
-
-#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_CMSPERMGEN_HPP
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,7 +29,7 @@
 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
 #include "gc_implementation/shared/liveRange.hpp"
 #include "gc_implementation/shared/spaceDecorator.hpp"
-#include "gc_interface/collectedHeap.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/blockOffsetTable.inline.hpp"
 #include "memory/resourceArea.hpp"
@@ -658,13 +658,13 @@
     void walk_mem_region_with_cl_nopar(MemRegion mr,                    \
                                        HeapWord* bottom, HeapWord* top, \
                                        ClosureType* cl)
-  walk_mem_region_with_cl_DECL(OopClosure);
+  walk_mem_region_with_cl_DECL(ExtendedOopClosure);
   walk_mem_region_with_cl_DECL(FilteringClosure);
 
 public:
   FreeListSpace_DCTOC(CompactibleFreeListSpace* sp,
                       CMSCollector* collector,
-                      OopClosure* cl,
+                      ExtendedOopClosure* cl,
                       CardTableModRefBS::PrecisionStyle precision,
                       HeapWord* boundary) :
     Filtering_DCTOC(sp, cl, precision, boundary),
@@ -746,11 +746,11 @@
 // (There are only two of these, rather than N, because the split is due
 // only to the introduction of the FilteringClosure, a local part of the
 // impl of this abstraction.)
-FreeListSpace_DCTOC__walk_mem_region_with_cl_DEFN(OopClosure)
+FreeListSpace_DCTOC__walk_mem_region_with_cl_DEFN(ExtendedOopClosure)
 FreeListSpace_DCTOC__walk_mem_region_with_cl_DEFN(FilteringClosure)
 
 DirtyCardToOopClosure*
-CompactibleFreeListSpace::new_dcto_cl(OopClosure* cl,
+CompactibleFreeListSpace::new_dcto_cl(ExtendedOopClosure* cl,
                                       CardTableModRefBS::PrecisionStyle precision,
                                       HeapWord* boundary) {
   return new FreeListSpace_DCTOC(this, _collector, cl, precision, boundary);
@@ -781,7 +781,7 @@
 }
 
 // Apply the given closure to each oop in the space.
-void CompactibleFreeListSpace::oop_iterate(OopClosure* cl) {
+void CompactibleFreeListSpace::oop_iterate(ExtendedOopClosure* cl) {
   assert_lock_strong(freelistLock());
   HeapWord *cur, *limit;
   size_t curSize;
@@ -795,7 +795,7 @@
 }
 
 // Apply the given closure to each oop in the space \intersect memory region.
-void CompactibleFreeListSpace::oop_iterate(MemRegion mr, OopClosure* cl) {
+void CompactibleFreeListSpace::oop_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   assert_lock_strong(freelistLock());
   if (is_empty()) {
     return;
@@ -1006,13 +1006,12 @@
       }
     } else {
       // must read from what 'p' points to in each loop.
-      klassOop k = ((volatile oopDesc*)p)->klass_or_null();
+      Klass* k = ((volatile oopDesc*)p)->klass_or_null();
       if (k != NULL) {
-        assert(k->is_oop(true /* ignore mark word */), "Should be klass oop");
+        assert(k->is_klass(), "Should really be klass oop.");
         oop o = (oop)p;
-        assert(o->is_parsable(), "Should be parsable");
         assert(o->is_oop(true /* ignore mark word */), "Should be an oop.");
-        size_t res = o->size_given_klass(k->klass_part());
+        size_t res = o->size_given_klass(k);
         res = adjustObjectSize(res);
         assert(res != 0, "Block size should not be 0");
         return res;
@@ -1021,6 +1020,7 @@
   }
 }
 
+// TODO: Now that is_parsable is gone, we should combine these two functions.
 // A variant of the above that uses the Printezis bits for
 // unparsable but allocated objects. This avoids any possible
 // stalls waiting for mutators to initialize objects, and is
@@ -1048,15 +1048,15 @@
       }
     } else {
       // must read from what 'p' points to in each loop.
-      klassOop k = ((volatile oopDesc*)p)->klass_or_null();
+      Klass* k = ((volatile oopDesc*)p)->klass_or_null();
       // We trust the size of any object that has a non-NULL
       // klass and (for those in the perm gen) is parsable
       // -- irrespective of its conc_safe-ty.
-      if (k != NULL && ((oopDesc*)p)->is_parsable()) {
-        assert(k->is_oop(), "Should really be klass oop.");
+      if (k != NULL) {
+        assert(k->is_klass(), "Should really be klass oop.");
         oop o = (oop)p;
         assert(o->is_oop(), "Should be an oop");
-        size_t res = o->size_given_klass(k->klass_part());
+        size_t res = o->size_given_klass(k);
         res = adjustObjectSize(res);
         assert(res != 0, "Block size should not be 0");
         return res;
@@ -1103,7 +1103,7 @@
   // assert(CollectedHeap::use_parallel_gc_threads() || _bt.block_start(p) == p,
   //        "Should be a block boundary");
   if (FreeChunk::indicatesFreeChunk(p)) return false;
-  klassOop k = oop(p)->klass_or_null();
+  Klass* k = oop(p)->klass_or_null();
   if (k != NULL) {
     // Ignore mark word because it may have been used to
     // chain together promoted objects (the last one
@@ -1140,23 +1140,6 @@
   if (_collector->abstract_state() == CMSCollector::Sweeping) {
     CMSBitMap* live_map = _collector->markBitMap();
     return live_map->par_isMarked((HeapWord*) p);
-  } else {
-    // If we're not currently sweeping and we haven't swept the perm gen in
-    // the previous concurrent cycle then we may have dead but unswept objects
-    // in the perm gen. In this case, we use the "deadness" information
-    // that we had saved in perm_gen_verify_bit_map at the last sweep.
-    if (!CMSClassUnloadingEnabled && _collector->_permGen->reserved().contains(p)) {
-      if (_collector->verifying()) {
-        CMSBitMap* dead_map = _collector->perm_gen_verify_bit_map();
-        // Object is marked in the dead_map bitmap at the previous sweep
-        // when we know that it's dead; if the bitmap is not allocated then
-        // the object is alive.
-        return (dead_map->sizeInBits() == 0) // bit_map has been allocated
-               || !dead_map->par_isMarked((HeapWord*) p);
-      } else {
-        return false; // We can't say for sure if it's live, so we say that it's dead.
-      }
-    }
   }
   return true;
 }
@@ -2442,7 +2425,7 @@
   VerifyAllOopsClosure(const CMSCollector* collector,
     const CompactibleFreeListSpace* sp, MemRegion span,
     bool past_remark, CMSBitMap* bit_map) :
-    OopClosure(), _collector(collector), _sp(sp), _span(span),
+    _collector(collector), _sp(sp), _span(span),
     _past_remark(past_remark), _bit_map(bit_map) { }
 
   virtual void do_oop(oop* p)       { VerifyAllOopsClosure::do_oop_work(p); }
@@ -2478,8 +2461,10 @@
     VerifyAllOopsClosure cl(_collector, this, span, past_remark,
       _collector->markBitMap());
     CollectedHeap* ch = Universe::heap();
-    ch->oop_iterate(&cl);              // all oops in generations
-    ch->permanent_oop_iterate(&cl);    // all oops in perm gen
+
+    // Iterate over all oops in the heap. Uses the _no_header version
+    // since we are not interested in following the klass pointers.
+    ch->oop_iterate_no_header(&cl);
   }
 
   if (VerifyObjectStartArray) {
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -70,7 +70,6 @@
   friend class ConcurrentMarkSweepGeneration;
   friend class ASConcurrentMarkSweepGeneration;
   friend class CMSCollector;
-  friend class CMSPermGenGen;
   // Local alloc buffer for promotion into this space.
   friend class CFLS_LAB;
 
@@ -349,8 +348,8 @@
   Mutex* freelistLock() const { return &_freelistLock; }
 
   // Iteration support
-  void oop_iterate(MemRegion mr, OopClosure* cl);
-  void oop_iterate(OopClosure* cl);
+  void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
 
   void object_iterate(ObjectClosure* blk);
   // Apply the closure to each object in the space whose references
@@ -377,7 +376,7 @@
        object_iterate_careful(ObjectClosureCareful* cl);
 
   // Override: provides a DCTO_CL specific to this kind of space.
-  DirtyCardToOopClosure* new_dcto_cl(OopClosure* cl,
+  DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
                                      CardTableModRefBS::PrecisionStyle precision,
                                      HeapWord* boundary);
 
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/classLoaderData.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "code/codeCache.hpp"
@@ -260,17 +261,17 @@
 
 // The field "_initiating_occupancy" represents the occupancy percentage
 // at which we trigger a new collection cycle.  Unless explicitly specified
-// via CMSInitiating[Perm]OccupancyFraction (argument "io" below), it
+// via CMSInitiatingOccupancyFraction (argument "io" below), it
 // is calculated by:
 //
 //   Let "f" be MinHeapFreeRatio in
 //
 //    _intiating_occupancy = 100-f +
-//                           f * (CMSTrigger[Perm]Ratio/100)
-//   where CMSTrigger[Perm]Ratio is the argument "tr" below.
+//                           f * (CMSTriggerRatio/100)
+//   where CMSTriggerRatio is the argument "tr" below.
 //
 // That is, if we assume the heap is at its desired maximum occupancy at the
-// end of a collection, we let CMSTrigger[Perm]Ratio of the (purported) free
+// end of a collection, we let CMSTriggerRatio of the (purported) free
 // space be allocated before initiating a new collection cycle.
 //
 void ConcurrentMarkSweepGeneration::init_initiating_occupancy(intx io, intx tr) {
@@ -304,12 +305,6 @@
     // Initialize the _ref_processor field of CMSGen
     _cmsGen->set_ref_processor(_ref_processor);
 
-    // Allocate a dummy ref processor for perm gen.
-    ReferenceProcessor* rp2 = new ReferenceProcessor();
-    if (rp2 == NULL) {
-      vm_exit_during_initialization("Could not allocate ReferenceProcessor object");
-    }
-    _permGen->set_ref_processor(rp2);
   }
 }
 
@@ -546,11 +541,9 @@
 bool CMSCollector::_foregroundGCShouldWait = false;
 
 CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
-                           ConcurrentMarkSweepGeneration* permGen,
                            CardTableRS*                   ct,
                            ConcurrentMarkSweepPolicy*     cp):
   _cmsGen(cmsGen),
-  _permGen(permGen),
   _ct(ct),
   _ref_processor(NULL),    // will be set later
   _conc_workers(NULL),     // may be set later
@@ -558,13 +551,12 @@
   _start_sampling(false),
   _between_prologue_and_epilogue(false),
   _markBitMap(0, Mutex::leaf + 1, "CMS_markBitMap_lock"),
-  _perm_gen_verify_bit_map(0, -1 /* no mutex */, "No_lock"),
   _modUnionTable((CardTableModRefBS::card_shift - LogHeapWordSize),
                  -1 /* lock-free */, "No_lock" /* dummy */),
   _modUnionClosure(&_modUnionTable),
   _modUnionClosurePar(&_modUnionTable),
-  // Adjust my span to cover old (cms) gen and perm gen
-  _span(cmsGen->reserved()._union(permGen->reserved())),
+  // Adjust my span to cover old (cms) gen
+  _span(cmsGen->reserved()),
   // Construct the is_alive_closure with _span & markBitMap
   _is_alive_closure(_span, &_markBitMap),
   _restart_addr(NULL),
@@ -606,18 +598,8 @@
   // (MUT, marking bit map etc.) to cover both generations subject to
   // collection.
 
-  // First check that _permGen is adjacent to _cmsGen and above it.
-  assert(   _cmsGen->reserved().word_size()  > 0
-         && _permGen->reserved().word_size() > 0,
-         "generations should not be of zero size");
-  assert(_cmsGen->reserved().intersection(_permGen->reserved()).is_empty(),
-         "_cmsGen and _permGen should not overlap");
-  assert(_cmsGen->reserved().end() == _permGen->reserved().start(),
-         "_cmsGen->end() different from _permGen->start()");
-
   // For use by dirty card to oop closures.
   _cmsGen->cmsSpace()->set_collector(this);
-  _permGen->cmsSpace()->set_collector(this);
 
   // Allocate MUT and marking bit map
   {
@@ -637,10 +619,6 @@
     warning("Failed to allocate CMS Marking Stack");
     return;
   }
-  if (!_revisitStack.allocate(CMSRevisitStackSize)) {
-    warning("Failed to allocate CMS Revisit Stack");
-    return;
-  }
 
   // Support for multi-threaded concurrent phases
   if (CMSConcurrentMTEnabled) {
@@ -710,7 +688,6 @@
   }
 
   _cmsGen ->init_initiating_occupancy(CMSInitiatingOccupancyFraction, CMSTriggerRatio);
-  _permGen->init_initiating_occupancy(CMSInitiatingPermOccupancyFraction, CMSTriggerPermRatio);
 
   // Clip CMSBootstrapOccupancy between 0 and 100.
   _bootstrap_occupancy = ((double)MIN2((uintx)100, MAX2((uintx)0, CMSBootstrapOccupancy)))
@@ -801,7 +778,6 @@
          "Error");
 
   // Choose what strong roots should be scanned depending on verification options
-  // and perm gen collection mode.
   if (!CMSClassUnloadingEnabled) {
     // If class unloading is disabled we want to include all classes into the root set.
     add_root_scanning_option(SharedHeap::SO_AllClasses);
@@ -1054,15 +1030,15 @@
     MutexLockerEx y(_markBitMap.lock(),
                     Mutex::_no_safepoint_check_flag);
     // [see comments preceding SweepClosure::do_blk() below for details]
+    //
+    // Can the P-bits be deleted now?  JJJ
+    //
     // 1. need to mark the object as live so it isn't collected
     // 2. need to mark the 2nd bit to indicate the object may be uninitialized
     // 3. need to mark the end of the object so marking, precleaning or sweeping
     //    can skip over uninitialized or unparsable objects. An allocated
     //    object is considered uninitialized for our purposes as long as
-    //    its klass word is NULL. (Unparsable objects are those which are
-    //    initialized in the sense just described, but whose sizes can still
-    //    not be correctly determined. Note that the class of unparsable objects
-    //    can only occur in the perm gen. All old gen objects are parsable
+    //    its klass word is NULL.  All old gen objects are parsable
     //    as soon as they are initialized.)
     _markBitMap.mark(start);          // object is live
     _markBitMap.mark(start + 1);      // object is potentially uninitialized?
@@ -1324,7 +1300,6 @@
 //
 // OBJECT:    klass_word installed; klass_word != 0 && klass_word & 1 == 0;
 //            obj->size() computes correct size
-//            [Perm Gen objects needs to be "parsable" before they can be navigated]
 //
 // TRANSIENT: klass_word == 0; size is indeterminate until we become an OBJECT
 //
@@ -1334,7 +1309,6 @@
 //
 // OBJECT:    klass_word installed; klass_word != 0;
 //            obj->size() computes correct size
-//            [Perm Gen comment above continues to hold]
 //
 // TRANSIENT: klass_word == 0; size is indeterminate until we become an OBJECT
 //
@@ -1403,7 +1377,7 @@
   assert(!((FreeChunk*)obj_ptr)->is_free(), "Error, block will look free but show wrong size");
   OrderAccess::storestore();
 
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     // Copy gap missed by (aligned) header size calculation below
     obj->set_klass_gap(old->klass_gap());
   }
@@ -1464,7 +1438,6 @@
   ps->promo.promoted_oops_iterate_nv(dummy_cl);
 }
 
-// XXXPERM
 bool ConcurrentMarkSweepGeneration::should_collect(bool   full,
                                                    size_t size,
                                                    bool   tlab)
@@ -1517,7 +1490,8 @@
     gclog_or_tty->print_cr("cms_allocation_rate=%g", stats().cms_allocation_rate());
     gclog_or_tty->print_cr("occupancy=%3.7f", _cmsGen->occupancy());
     gclog_or_tty->print_cr("initiatingOccupancy=%3.7f", _cmsGen->initiating_occupancy());
-    gclog_or_tty->print_cr("initiatingPermOccupancy=%3.7f", _permGen->initiating_occupancy());
+    gclog_or_tty->print_cr("metadata initialized %d",
+      MetaspaceGC::should_concurrent_collect());
   }
   // ------------------------------------------------------------------
 
@@ -1546,7 +1520,7 @@
     }
   }
 
-  // Otherwise, we start a collection cycle if either the perm gen or
+  // Otherwise, we start a collection cycle if
   // old gen want a collection cycle started. Each may use
   // an appropriate criterion for making this decision.
   // XXX We need to make sure that the gen expansion
@@ -1571,22 +1545,19 @@
     return true;
   }
 
-  if (CMSClassUnloadingEnabled && _permGen->should_concurrent_collect()) {
-    bool res = update_should_unload_classes();
-    if (res) {
+  if (MetaspaceGC::should_concurrent_collect()) {
       if (Verbose && PrintGCDetails) {
-        gclog_or_tty->print_cr("CMS perm gen initiated");
+      gclog_or_tty->print("CMSCollector: collect for metadata allocation ");
       }
       return true;
     }
-  }
+
   return false;
 }
 
 // Clear _expansion_cause fields of constituent generations
 void CMSCollector::clear_expansion_cause() {
   _cmsGen->clear_expansion_cause();
-  _permGen->clear_expansion_cause();
 }
 
 // We should be conservative in starting a collection cycle.  To
@@ -1609,7 +1580,7 @@
 //   going to fail, or there is believed to be excessive fragmentation in
 //   the generation, etc... or ...
 // [.(currently done by CMSCollector::shouldConcurrentCollect() only for
-//   the case of the old generation, not the perm generation; see CR 6543076):
+//   the case of the old generation; see CR 6543076):
 //   we may be approaching a point at which allocation requests may fail because
 //   we will be out of sufficient free space given allocation rate estimates.]
 bool ConcurrentMarkSweepGeneration::should_concurrent_collect() const {
@@ -1902,13 +1873,13 @@
   return;
 }
 
-// Resize the perm generation and the tenured generation
+// Resize the tenured generation
 // after obtaining the free list locks for the
 // two generations.
 void CMSCollector::compute_new_size() {
   assert_locked_or_safepoint(Heap_lock);
   FreelistLocker z(this);
-  _permGen->compute_new_size();
+  MetaspaceGC::compute_new_size();
   _cmsGen->compute_new_size();
 }
 
@@ -2012,6 +1983,9 @@
   assert(_collectorState != Idling || _modUnionTable.isAllClear(),
     "_modUnionTable should be clear if the baton was not passed");
   _modUnionTable.clear_all();
+  assert(_collectorState != Idling || _ct->klass_rem_set()->mod_union_is_clear(),
+    "mod union for klasses should be clear if the baton was passed");
+  _ct->klass_rem_set()->clear_mod_union();
 
   // We must adjust the allocation statistics being maintained
   // in the free list space. We do so by reading and clearing
@@ -2050,10 +2024,6 @@
   _cmsGen->reset_after_compaction();
   _concurrent_cycles_since_last_unload = 0;
 
-  if (verifying() && !should_unload_classes()) {
-    perm_gen_verify_bit_map()->clear_all();
-  }
-
   // Clear any data recorded in the PLAB chunk arrays.
   if (_survivor_plab_array != NULL) {
     reset_survivor_plab_arrays();
@@ -2117,21 +2087,18 @@
   // Get locks for all free lists in all generations that this
   // collector is responsible for
   _cmsGen->freelistLock()->lock_without_safepoint_check();
-  _permGen->freelistLock()->lock_without_safepoint_check();
 }
 
 void CMSCollector::releaseFreelistLocks() const {
   // Release locks for all free lists in all generations that this
   // collector is responsible for
   _cmsGen->freelistLock()->unlock();
-  _permGen->freelistLock()->unlock();
 }
 
 bool CMSCollector::haveFreelistLocks() const {
   // Check locks for all free lists in all generations that this
   // collector is responsible for
   assert_lock_strong(_cmsGen->freelistLock());
-  assert_lock_strong(_permGen->freelistLock());
   PRODUCT_ONLY(ShouldNotReachHere());
   return true;
 }
@@ -2191,6 +2158,10 @@
       // Reset the expansion cause, now that we are about to begin
       // a new cycle.
       clear_expansion_cause();
+
+      // Clear the MetaspaceGC flag since a concurrent collection
+      // is starting but also clear it after the collection.
+      MetaspaceGC::set_should_concurrent_collect(false);
     }
     // Decide if we want to enable class unloading as part of the
     // ensuing concurrent GC cycle.
@@ -2368,6 +2339,9 @@
         reset(true);
         assert(_collectorState == Idling, "Collector state should "
           "have changed");
+
+        MetaspaceGC::set_should_concurrent_collect(false);
+
         stats().record_cms_end();
         // Don't move the concurrent_phases_end() and compute_new_size()
         // calls to here because a preempted background collection
@@ -2584,7 +2558,7 @@
 // The role of the varaible _between_prologue_and_epilogue is to
 // enforce the invocation protocol.
 void CMSCollector::gc_prologue(bool full) {
-  // Call gc_prologue_work() for each CMSGen and PermGen that
+  // Call gc_prologue_work() for the CMSGen
   // we are responsible for.
 
   // The following locking discipline assumes that we are only called
@@ -2592,7 +2566,7 @@
   assert(SafepointSynchronize::is_at_safepoint(), "world is stopped assumption");
 
   // The CMSCollector prologue must call the gc_prologues for the
-  // "generations" (including PermGen if any) that it's responsible
+  // "generations" that it's responsible
   // for.
 
   assert(   Thread::current()->is_VM_thread()
@@ -2610,19 +2584,29 @@
   // set a bit saying prologue has been called; cleared in epilogue
   _between_prologue_and_epilogue = true;
   // Claim locks for common data structures, then call gc_prologue_work()
-  // for each CMSGen and PermGen that we are responsible for.
+  // for each CMSGen.
 
   getFreelistLocks();   // gets free list locks on constituent spaces
   bitMapLock()->lock_without_safepoint_check();
 
   // Should call gc_prologue_work() for all cms gens we are responsible for
-  bool registerClosure =    _collectorState >= Marking
+  bool duringMarking =    _collectorState >= Marking
                          && _collectorState < Sweeping;
+
+  // The young collections clear the modified oops state, which tells if
+  // there are any modified oops in the class. The remark phase also needs
+  // that information. Tell the young collection to save the union of all
+  // modified klasses.
+  if (duringMarking) {
+    _ct->klass_rem_set()->set_accumulate_modified_oops(true);
+  }
+
+  bool registerClosure = duringMarking;
+
   ModUnionClosure* muc = CollectedHeap::use_parallel_gc_threads() ?
                                                &_modUnionClosurePar
                                                : &_modUnionClosure;
   _cmsGen->gc_prologue_work(full, registerClosure, muc);
-  _permGen->gc_prologue_work(full, registerClosure, muc);
 
   if (!full) {
     stats().record_gc0_begin();
@@ -2686,8 +2670,9 @@
   assert(haveFreelistLocks(), "must have freelist locks");
   assert_lock_strong(bitMapLock());
 
+  _ct->klass_rem_set()->set_accumulate_modified_oops(false);
+
   _cmsGen->gc_epilogue_work(full);
-  _permGen->gc_epilogue_work(full);
 
   if (_collectorState == AbortablePreclean || _collectorState == Precleaning) {
     // in case sampling was not already enabled, enable it
@@ -2697,14 +2682,12 @@
   _eden_chunk_index = 0;
 
   size_t cms_used   = _cmsGen->cmsSpace()->used();
-  size_t perm_used  = _permGen->cmsSpace()->used();
 
   // update performance counters - this uses a special version of
   // update_counters() that allows the utilization to be passed as a
   // parameter, avoiding multiple calls to used().
   //
   _cmsGen->update_counters(cms_used);
-  _permGen->update_counters(perm_used);
 
   if (CMSIncrementalMode) {
     icms_update_allocation_limits();
@@ -2902,6 +2885,9 @@
   HandleMark  hm;
   GenCollectedHeap* gch = GenCollectedHeap::heap();
 
+  // Get a clear set of claim bits for the strong roots processing to work with.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   // Mark from roots one level into CMS
   MarkRefsIntoClosure notOlder(_span, verification_mark_bm());
   gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
@@ -2909,16 +2895,16 @@
   gch->gen_process_strong_roots(_cmsGen->level(),
                                 true,   // younger gens are roots
                                 true,   // activate StrongRootsScope
-                                true,   // collecting perm gen
+                                false,  // not scavenging
                                 SharedHeap::ScanningOption(roots_scanning_options()),
                                 &notOlder,
                                 true,   // walk code active on stacks
-                                NULL);
+                                NULL,
+                                NULL); // SSS: Provide correct closure
 
   // Now mark from the roots
-  assert(_revisitStack.isEmpty(), "Should be empty");
   MarkFromRootsClosure markFromRootsClosure(this, _span,
-    verification_mark_bm(), verification_mark_stack(), &_revisitStack,
+    verification_mark_bm(), verification_mark_stack(),
     false /* don't yield */, true /* verifying */);
   assert(_restart_addr == NULL, "Expected pre-condition");
   verification_mark_bm()->iterate(&markFromRootsClosure);
@@ -2932,9 +2918,6 @@
   }
   assert(verification_mark_stack()->isEmpty(), "Should have been drained");
   verify_work_stacks_empty();
-  // Should reset the revisit stack above, since no class tree
-  // surgery is forthcoming.
-  _revisitStack.reset(); // throwing away all contents
 
   // Marking completed -- now verify that each bit marked in
   // verification_mark_bm() is also marked in markBitMap(); flag all
@@ -2948,26 +2931,46 @@
   }
 }
 
+class VerifyKlassOopsKlassClosure : public KlassClosure {
+  class VerifyKlassOopsClosure : public OopClosure {
+    CMSBitMap* _bitmap;
+   public:
+    VerifyKlassOopsClosure(CMSBitMap* bitmap) : _bitmap(bitmap) { }
+    void do_oop(oop* p)       { guarantee(*p == NULL || _bitmap->isMarked((HeapWord*) *p), "Should be marked"); }
+    void do_oop(narrowOop* p) { ShouldNotReachHere(); }
+  } _oop_closure;
+ public:
+  VerifyKlassOopsKlassClosure(CMSBitMap* bitmap) : _oop_closure(bitmap) {}
+  void do_klass(Klass* k) {
+    k->oops_do(&_oop_closure);
+  }
+};
+
 void CMSCollector::verify_after_remark_work_2() {
   ResourceMark rm;
   HandleMark  hm;
   GenCollectedHeap* gch = GenCollectedHeap::heap();
 
+  // Get a clear set of claim bits for the strong roots processing to work with.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   // Mark from roots one level into CMS
   MarkRefsIntoVerifyClosure notOlder(_span, verification_mark_bm(),
                                      markBitMap());
+  CMKlassClosure klass_closure(&notOlder);
+
   gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
   gch->gen_process_strong_roots(_cmsGen->level(),
                                 true,   // younger gens are roots
                                 true,   // activate StrongRootsScope
-                                true,   // collecting perm gen
+                                false,  // not scavenging
                                 SharedHeap::ScanningOption(roots_scanning_options()),
                                 &notOlder,
                                 true,   // walk code active on stacks
-                                NULL);
+                                NULL,
+                                &klass_closure);
 
   // Now mark from the roots
-  assert(_revisitStack.isEmpty(), "Should be empty");
   MarkFromRootsVerifyClosure markFromRootsClosure(this, _span,
     verification_mark_bm(), markBitMap(), verification_mark_stack());
   assert(_restart_addr == NULL, "Expected pre-condition");
@@ -2982,9 +2985,9 @@
   }
   assert(verification_mark_stack()->isEmpty(), "Should have been drained");
   verify_work_stacks_empty();
-  // Should reset the revisit stack above, since no class tree
-  // surgery is forthcoming.
-  _revisitStack.reset(); // throwing away all contents
+
+  VerifyKlassOopsKlassClosure verify_klass_oops(verification_mark_bm());
+  ClassLoaderDataGraph::classes_do(&verify_klass_oops);
 
   // Marking completed -- now verify that each bit marked in
   // verification_mark_bm() is also marked in markBitMap(); flag all
@@ -3046,7 +3049,7 @@
 }
 
 void
-ConcurrentMarkSweepGeneration::oop_iterate(MemRegion mr, OopClosure* cl) {
+ConcurrentMarkSweepGeneration::oop_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   if (freelistLock()->owned_by_self()) {
     Generation::oop_iterate(mr, cl);
   } else {
@@ -3056,7 +3059,7 @@
 }
 
 void
-ConcurrentMarkSweepGeneration::oop_iterate(OopClosure* cl) {
+ConcurrentMarkSweepGeneration::oop_iterate(ExtendedOopClosure* cl) {
   if (freelistLock()->owned_by_self()) {
     Generation::oop_iterate(cl);
   } else {
@@ -3086,10 +3089,6 @@
 }
 
 void
-ConcurrentMarkSweepGeneration::pre_adjust_pointers() {
-}
-
-void
 ConcurrentMarkSweepGeneration::post_compact() {
 }
 
@@ -3123,7 +3122,6 @@
 
 void CMSCollector::verify() {
   _cmsGen->verify();
-  _permGen->verify();
 }
 
 #ifndef PRODUCT
@@ -3149,15 +3147,12 @@
 #endif // PRODUCT
 
 // Decide if we want to enable class unloading as part of the
-// ensuing concurrent GC cycle. We will collect the perm gen and
+// ensuing concurrent GC cycle. We will collect and
 // unload classes if it's the case that:
 // (1) an explicit gc request has been made and the flag
 //     ExplicitGCInvokesConcurrentAndUnloadsClasses is set, OR
 // (2) (a) class unloading is enabled at the command line, and
-//     (b) (i)   perm gen threshold has been crossed, or
-//         (ii)  old gen is getting really full, or
-//         (iii) the previous N CMS collections did not collect the
-//               perm gen
+//     (b) old gen is getting really full
 // NOTE: Provided there is no change in the state of the heap between
 // calls to this method, it should have idempotent results. Moreover,
 // its results should be monotonically increasing (i.e. going from 0 to 1,
@@ -3165,10 +3160,10 @@
 // not collected. For the implementation below, it must thus rely on
 // the property that concurrent_cycles_since_last_unload()
 // will not decrease unless a collection cycle happened and that
-// _permGen->should_concurrent_collect() and _cmsGen->is_too_full() are
+// _cmsGen->is_too_full() are
 // themselves also monotonic in that sense. See check_monotonicity()
 // below.
-bool CMSCollector::update_should_unload_classes() {
+void CMSCollector::update_should_unload_classes() {
   _should_unload_classes = false;
   // Condition 1 above
   if (_full_gc_requested && ExplicitGCInvokesConcurrentAndUnloadsClasses) {
@@ -3177,10 +3172,8 @@
     // Disjuncts 2.b.(i,ii,iii) above
     _should_unload_classes = (concurrent_cycles_since_last_unload() >=
                               CMSClassUnloadingMaxInterval)
-                           || _permGen->should_concurrent_collect()
                            || _cmsGen->is_too_full();
   }
-  return _should_unload_classes;
 }
 
 bool ConcurrentMarkSweepGeneration::is_too_full() const {
@@ -3203,25 +3196,6 @@
   // Not unloading classes this cycle
   assert(!should_unload_classes(), "Inconsitency!");
   if ((!verifying() || unloaded_classes_last_cycle()) && should_verify) {
-    // We were not verifying, or we _were_ unloading classes in the last cycle,
-    // AND some verification options are enabled this cycle; in this case,
-    // we must make sure that the deadness map is allocated if not already so,
-    // and cleared (if already allocated previously --
-    // CMSBitMap::sizeInBits() is used to determine if it's allocated).
-    if (perm_gen_verify_bit_map()->sizeInBits() == 0) {
-      if (!perm_gen_verify_bit_map()->allocate(_permGen->reserved())) {
-        warning("Failed to allocate permanent generation verification CMS Bit Map;\n"
-                "permanent generation verification disabled");
-        return;  // Note that we leave verification disabled, so we'll retry this
-                 // allocation next cycle. We _could_ remember this failure
-                 // and skip further attempts and permanently disable verification
-                 // attempts if that is considered more desirable.
-      }
-      assert(perm_gen_verify_bit_map()->covers(_permGen->reserved()),
-              "_perm_gen_ver_bit_map inconsistency?");
-    } else {
-      perm_gen_verify_bit_map()->clear_all();
-    }
     // Include symbols, strings and code cache elements to prevent their resurrection.
     add_root_scanning_option(rso);
     set_verifying(true);
@@ -3241,10 +3215,6 @@
   if (_span.contains(p)) {
     if (_cmsGen->cmsSpace()->is_in_reserved(addr)) {
       return _cmsGen->cmsSpace()->block_start(p);
-    } else {
-      assert(_permGen->cmsSpace()->is_in_reserved(addr),
-             "Inconsistent _span?");
-      return _permGen->cmsSpace()->block_start(p);
     }
   }
   return NULL;
@@ -3560,18 +3530,27 @@
   // weak reference processing has not started yet.
   ref_processor()->set_enqueuing_is_done(false);
 
+  // Need to remember all newly created CLDs,
+  // so that we can guarantee that the remark finds them.
+  ClassLoaderDataGraph::remember_new_clds(true);
+
+  // Whenever a CLD is found, it will be claimed before proceeding to mark
+  // the klasses. The claimed marks need to be cleared before marking starts.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
+  CMKlassClosure klass_closure(&notOlder);
   {
-    // This is not needed. DEBUG_ONLY(RememberKlassesChecker imx(true);)
     COMPILER2_PRESENT(DerivedPointerTableDeactivate dpt_deact;)
     gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
     gch->gen_process_strong_roots(_cmsGen->level(),
                                   true,   // younger gens are roots
                                   true,   // activate StrongRootsScope
-                                  true,   // collecting perm gen
+                                  false,  // not scavenging
                                   SharedHeap::ScanningOption(roots_scanning_options()),
                                   &notOlder,
                                   true,   // walk all of code cache if (so & SO_CodeCache)
-                                  NULL);
+                                  NULL,
+                                  &klass_closure);
   }
 
   // Clear mod-union table; it will be dirtied in the prologue of
@@ -3582,6 +3561,8 @@
        " or no bits are set in the gc_prologue before the start of the next "
        "subsequent marking phase.");
 
+  assert(_ct->klass_rem_set()->mod_union_is_clear(), "Must be");
+
   // Save the end of the used_region of the constituent generations
   // to be used to limit the extent of sweep in each generation.
   save_sweep_limits();
@@ -3672,13 +3653,8 @@
   // already have locks
   assert_lock_strong(bitMapLock());
 
-  // Clear the revisit stack, just in case there are any
-  // obsolete contents from a short-circuited previous CMS cycle.
-  _revisitStack.reset();
   verify_work_stacks_empty();
   verify_overflow_empty();
-  assert(_revisitStack.isEmpty(), "tabula rasa");
-  DEBUG_ONLY(RememberKlassesChecker cmx(should_unload_classes());)
   bool result = false;
   if (CMSConcurrentMTEnabled && ConcGCThreads > 0) {
     result = do_marking_mt(asynch);
@@ -3726,7 +3702,6 @@
   bool          _asynch;
   bool          _result;
   CompactibleFreeListSpace*  _cms_space;
-  CompactibleFreeListSpace* _perm_space;
   char          _pad_front[64];   // padding to ...
   HeapWord*     _global_finger;   // ... avoid sharing cache line
   char          _pad_back[64];
@@ -3745,14 +3720,12 @@
  public:
   CMSConcMarkingTask(CMSCollector* collector,
                  CompactibleFreeListSpace* cms_space,
-                 CompactibleFreeListSpace* perm_space,
                  bool asynch,
                  YieldingFlexibleWorkGang* workers,
                  OopTaskQueueSet* task_queues):
     YieldingFlexibleGangTask("Concurrent marking done multi-threaded"),
     _collector(collector),
     _cms_space(cms_space),
-    _perm_space(perm_space),
     _asynch(asynch), _n_workers(0), _result(true),
     _task_queues(task_queues),
     _term(_n_workers, task_queues, _collector),
@@ -3761,8 +3734,6 @@
     _requested_size = _n_workers;
     _term.set_task(this);
     _term_term.set_task(this);
-    assert(_cms_space->bottom() < _perm_space->bottom(),
-           "Finger incorrectly initialized below");
     _restart_addr = _global_finger = _cms_space->bottom();
   }
 
@@ -3791,8 +3762,6 @@
 
   void reset(HeapWord* ra) {
     assert(_global_finger >= _cms_space->end(),  "Postcondition of ::work(i)");
-    assert(_global_finger >= _perm_space->end(), "Postcondition of ::work(i)");
-    assert(ra             <  _perm_space->end(), "ra too large");
     _restart_addr = _global_finger = ra;
     _term.reset_for_reuse();
   }
@@ -3871,17 +3840,6 @@
       // XXX: need xxx/xxx type of notation, two timers
   }
 
-  // ... do the same for the _perm_space
-  _timer.reset();
-  _timer.start();
-  do_scan_and_mark(worker_id, _perm_space);
-  _timer.stop();
-  if (PrintCMSStatistics != 0) {
-    gclog_or_tty->print_cr("Finished perm space scanning in %dth thread: %3.3f sec",
-      worker_id, _timer.seconds());
-      // XXX: need xxx/xxx type of notation, two timers
-  }
-
   // ... do work stealing
   _timer.reset();
   _timer.start();
@@ -3899,8 +3857,12 @@
   // expanded since the completion of the concurrent
   // marking. XXX This will likely change under a strict
   // ABORT semantics.
-  assert(_global_finger >  _cms_space->end() &&
-         _global_finger >= _perm_space->end(),
+  // After perm removal the comparison was changed to
+  // greater than or equal to from strictly greater than.
+  // Before perm removal the highest address sweep would
+  // have been at the end of perm gen but now is at the
+  // end of the tenured gen.
+  assert(_global_finger >=  _cms_space->end(),
          "All tasks have been completed");
   DEBUG_ONLY(_collector->verify_overflow_empty();)
 }
@@ -4025,7 +3987,6 @@
                                     &_collector->_markBitMap,
                                     work_queue(i),
                                     &_collector->_markStack,
-                                    &_collector->_revisitStack,
                                     _asynch);
         _collector->_markBitMap.iterate(&cl, my_span.start(), my_span.end());
       } // else nothing to do for this task
@@ -4042,8 +4003,9 @@
   pst->all_tasks_completed();
 }
 
-class Par_ConcMarkingClosure: public Par_KlassRememberingOopClosure {
+class Par_ConcMarkingClosure: public CMSOopClosure {
  private:
+  CMSCollector* _collector;
   CMSConcMarkingTask* _task;
   MemRegion     _span;
   CMSBitMap*    _bit_map;
@@ -4053,9 +4015,9 @@
   DO_OOP_WORK_DEFN
  public:
   Par_ConcMarkingClosure(CMSCollector* collector, CMSConcMarkingTask* task, OopTaskQueue* work_queue,
-                         CMSBitMap* bit_map, CMSMarkStack* overflow_stack,
-                         CMSMarkStack* revisit_stack):
-    Par_KlassRememberingOopClosure(collector, collector->ref_processor(), revisit_stack),
+                         CMSBitMap* bit_map, CMSMarkStack* overflow_stack):
+    CMSOopClosure(collector->ref_processor()),
+    _collector(collector),
     _task(task),
     _span(collector->_span),
     _work_queue(work_queue),
@@ -4064,6 +4026,7 @@
   { }
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
+
   void trim_queue(size_t max);
   void handle_stack_overflow(HeapWord* lost);
   void do_yield_check() {
@@ -4128,7 +4091,6 @@
       assert(new_oop->is_oop(), "Should be an oop");
       assert(_bit_map->isMarked((HeapWord*)new_oop), "Grey object");
       assert(_span.contains((HeapWord*)new_oop), "Not in span");
-      assert(new_oop->is_parsable(), "Should be parsable");
       new_oop->oop_iterate(this);  // do_oop() above
       do_yield_check();
     }
@@ -4156,9 +4118,8 @@
   oop obj_to_scan;
   CMSBitMap* bm = &(_collector->_markBitMap);
   CMSMarkStack* ovflw = &(_collector->_markStack);
-  CMSMarkStack* revisit = &(_collector->_revisitStack);
   int* seed = _collector->hash_seed(i);
-  Par_ConcMarkingClosure cl(_collector, this, work_q, bm, ovflw, revisit);
+  Par_ConcMarkingClosure cl(_collector, this, work_q, bm, ovflw);
   while (true) {
     cl.trim_queue(0);
     assert(work_q->size() == 0, "Should have been emptied above");
@@ -4184,7 +4145,6 @@
 void CMSConcMarkingTask::coordinator_yield() {
   assert(ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
          "CMS thread should hold CMS token");
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
   // First give up the locks, then yield, then re-lock
   // We should probably use a constructor/destructor idiom to
   // do this unlock/lock or modify the MutexUnlocker class to
@@ -4244,11 +4204,9 @@
   conc_workers()->set_active_workers(num_workers);
 
   CompactibleFreeListSpace* cms_space  = _cmsGen->cmsSpace();
-  CompactibleFreeListSpace* perm_space = _permGen->cmsSpace();
 
   CMSConcMarkingTask tsk(this,
                          cms_space,
-                         perm_space,
                          asynch,
                          conc_workers(),
                          task_queues());
@@ -4258,12 +4216,10 @@
   // below? In particular, may be we need to subclass the SequantialSubTasksDone
   // class?? XXX
   cms_space ->initialize_sequential_subtasks_for_marking(num_workers);
-  perm_space->initialize_sequential_subtasks_for_marking(num_workers);
 
   // Refs discovery is already non-atomic.
   assert(!ref_processor()->discovery_is_atomic(), "Should be non-atomic");
   assert(ref_processor()->discovery_is_mt(), "Discovery should be MT");
-  DEBUG_ONLY(RememberKlassesChecker cmx(should_unload_classes());)
   conc_workers()->start_task(&tsk);
   while (tsk.yielded()) {
     tsk.coordinator_yield();
@@ -4296,8 +4252,6 @@
     tsk.reset(_restart_addr);
     cms_space ->initialize_sequential_subtasks_for_marking(num_workers,
                   _restart_addr);
-    perm_space->initialize_sequential_subtasks_for_marking(num_workers,
-                  _restart_addr);
     _restart_addr = NULL;
     // Get the workers going again
     conc_workers()->start_task(&tsk);
@@ -4318,7 +4272,7 @@
   // Temporarily make refs discovery single threaded (non-MT)
   ReferenceProcessorMTDiscoveryMutator rp_mut_discovery(ref_processor(), false);
   MarkFromRootsClosure markFromRootsClosure(this, _span, &_markBitMap,
-    &_markStack, &_revisitStack, CMSYield && asynch);
+    &_markStack, CMSYield && asynch);
   // the last argument to iterate indicates whether the iteration
   // should be incremental with periodic yields.
   _markBitMap.iterate(&markFromRootsClosure);
@@ -4510,8 +4464,7 @@
     CMSPrecleanRefsYieldClosure yield_cl(this);
     assert(rp->span().equals(_span), "Spans should be equal");
     CMSKeepAliveClosure keep_alive(this, _span, &_markBitMap,
-                                   &_markStack, &_revisitStack,
-                                   true /* preclean */);
+                                   &_markStack, true /* preclean */);
     CMSDrainMarkingStackClosure complete_trace(this,
                                    _span, &_markBitMap, &_markStack,
                                    &keep_alive, true /* preclean */);
@@ -4538,8 +4491,7 @@
     // tweaking for better performance and some restructuring
     // for cleaner interfaces.
     rp->preclean_discovered_references(
-          rp->is_alive_non_header(), &keep_alive, &complete_trace,
-          &yield_cl, should_unload_classes());
+          rp->is_alive_non_header(), &keep_alive, &complete_trace, &yield_cl);
   }
 
   if (clean_survivor) {  // preclean the active survivor space(s)
@@ -4550,8 +4502,7 @@
     DefNewGeneration* dng = (DefNewGeneration*)_young_gen;
     PushAndMarkClosure pam_cl(this, _span, ref_processor(),
                              &_markBitMap, &_modUnionTable,
-                             &_markStack, &_revisitStack,
-                             true /* precleaning phase */);
+                             &_markStack, true /* precleaning phase */);
     stopTimer();
     CMSTokenSyncWithLocks ts(true /* is cms thread */,
                              bitMapLock());
@@ -4561,20 +4512,19 @@
     SurvivorSpacePrecleanClosure
       sss_cl(this, _span, &_markBitMap, &_markStack,
              &pam_cl, before_count, CMSYield);
-    DEBUG_ONLY(RememberKlassesChecker mx(should_unload_classes());)
     dng->from()->object_iterate_careful(&sss_cl);
     dng->to()->object_iterate_careful(&sss_cl);
   }
   MarkRefsIntoAndScanClosure
     mrias_cl(_span, ref_processor(), &_markBitMap, &_modUnionTable,
-             &_markStack, &_revisitStack, this, CMSYield,
+             &_markStack, this, CMSYield,
              true /* precleaning phase */);
   // CAUTION: The following closure has persistent state that may need to
   // be reset upon a decrease in the sequence of addresses it
   // processes.
   ScanMarkedObjectsAgainCarefullyClosure
     smoac_cl(this, _span,
-      &_markBitMap, &_markStack, &_revisitStack, &mrias_cl, CMSYield);
+      &_markBitMap, &_markStack, &mrias_cl, CMSYield);
 
   // Preclean dirty cards in ModUnionTable and CardTable using
   // appropriate convergence criterion;
@@ -4591,9 +4541,6 @@
        numIter < CMSPrecleanIter;
        numIter++, lastNumCards = curNumCards, cumNumCards += curNumCards) {
     curNumCards  = preclean_mod_union_table(_cmsGen, &smoac_cl);
-    if (CMSPermGenPrecleaningEnabled) {
-      curNumCards  += preclean_mod_union_table(_permGen, &smoac_cl);
-    }
     if (Verbose && PrintGCDetails) {
       gclog_or_tty->print(" (modUnionTable: %d cards)", curNumCards);
     }
@@ -4611,10 +4558,10 @@
       break;
     }
   }
+
+  preclean_klasses(&mrias_cl, _cmsGen->freelistLock());
+
   curNumCards = preclean_card_table(_cmsGen, &smoac_cl);
-  if (CMSPermGenPrecleaningEnabled) {
-    curNumCards += preclean_card_table(_permGen, &smoac_cl);
-  }
   cumNumCards += curNumCards;
   if (PrintGCDetails && PrintCMSStatistics != 0) {
     gclog_or_tty->print_cr(" (cardTable: %d cards, re-scanned %d cards, %d iterations)",
@@ -4663,13 +4610,6 @@
   verify_work_stacks_empty();
   verify_overflow_empty();
 
-  // Turn off checking for this method but turn it back on
-  // selectively.  There are yield points in this method
-  // but it is difficult to turn the checking off just around
-  // the yield points.  It is simpler to selectively turn
-  // it on.
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
-
   // strategy: starting with the first card, accumulate contiguous
   // ranges of dirty cards; clear these cards, then scan the region
   // covered by these cards.
@@ -4732,7 +4672,6 @@
         verify_work_stacks_empty();
         verify_overflow_empty();
         sample_eden();
-        DEBUG_ONLY(RememberKlassesChecker mx(should_unload_classes());)
         stop_point =
           gen->cmsSpace()->object_iterate_careful_m(dirtyRegion, cl);
       }
@@ -4743,9 +4682,8 @@
         // the bits corresponding to the partially-scanned or unscanned
         // cards. We'll either restart at the next block boundary or
         // abort the preclean.
-        assert((CMSPermGenPrecleaningEnabled && (gen == _permGen)) ||
-               (_collectorState == AbortablePreclean && should_abort_preclean()),
-               "Unparsable objects should only be in perm gen.");
+        assert((_collectorState == AbortablePreclean && should_abort_preclean()),
+               "Should only be AbortablePreclean.");
         _modUnionTable.mark_range(MemRegion(stop_point, dirtyRegion.end()));
         if (should_abort_preclean()) {
           break; // out of preclean loop
@@ -4820,17 +4758,11 @@
       sample_eden();
       verify_work_stacks_empty();
       verify_overflow_empty();
-      DEBUG_ONLY(RememberKlassesChecker mx(should_unload_classes());)
       HeapWord* stop_point =
         gen->cmsSpace()->object_iterate_careful_m(dirtyRegion, cl);
       if (stop_point != NULL) {
-        // The careful iteration stopped early because it found an
-        // uninitialized object.  Redirty the bits corresponding to the
-        // partially-scanned or unscanned cards, and start again at the
-        // next block boundary.
-        assert(CMSPermGenPrecleaningEnabled ||
-               (_collectorState == AbortablePreclean && should_abort_preclean()),
-               "Unparsable objects should only be in perm gen.");
+        assert((_collectorState == AbortablePreclean && should_abort_preclean()),
+               "Should only be AbortablePreclean.");
         _ct->ct_bs()->invalidate(MemRegion(stop_point, dirtyRegion.end()));
         if (should_abort_preclean()) {
           break; // out of preclean loop
@@ -4848,6 +4780,35 @@
   return cumNumDirtyCards;
 }
 
+class PrecleanKlassClosure : public KlassClosure {
+  CMKlassClosure _cm_klass_closure;
+ public:
+  PrecleanKlassClosure(OopClosure* oop_closure) : _cm_klass_closure(oop_closure) {}
+  void do_klass(Klass* k) {
+    if (k->has_accumulated_modified_oops()) {
+      k->clear_accumulated_modified_oops();
+
+      _cm_klass_closure.do_klass(k);
+    }
+  }
+};
+
+// The freelist lock is needed to prevent asserts, is it really needed?
+void CMSCollector::preclean_klasses(MarkRefsIntoAndScanClosure* cl, Mutex* freelistLock) {
+
+  cl->set_freelistLock(freelistLock);
+
+  CMSTokenSyncWithLocks ts(true, freelistLock, bitMapLock());
+
+  // SSS: Add equivalent to ScanMarkedObjectsAgainCarefullyClosure::do_yield_check and should_abort_preclean?
+  // SSS: We should probably check if precleaning should be aborted, at suitable intervals?
+  PrecleanKlassClosure preclean_klass_closure(cl);
+  ClassLoaderDataGraph::classes_do(&preclean_klass_closure);
+
+  verify_work_stacks_empty();
+  verify_overflow_empty();
+}
+
 void CMSCollector::checkpointRootsFinal(bool asynch,
   bool clear_all_soft_refs, bool init_mark_was_synchronous) {
   assert(_collectorState == FinalMarking, "incorrect state transition?");
@@ -4922,7 +4883,6 @@
   assert(haveFreelistLocks(), "must have free list locks");
   assert_lock_strong(bitMapLock());
 
-  DEBUG_ONLY(RememberKlassesChecker fmx(should_unload_classes());)
   if (!init_mark_was_synchronous) {
     // We might assume that we need not fill TLAB's when
     // CMSScavengeBeforeRemark is set, because we may have just done
@@ -5027,9 +4987,6 @@
   _markStack._hit_limit = 0;
   _markStack._failed_double = 0;
 
-  // Check that all the klasses have been checked
-  assert(_revisitStack.isEmpty(), "Not all klasses revisited");
-
   if ((VerifyAfterGC || VerifyDuringGC) &&
       GenCollectedHeap::heap()->total_collections() >= VerifyGCStartAt) {
     verify_after_remark();
@@ -5038,8 +4995,10 @@
   // Change under the freelistLocks.
   _collectorState = Sweeping;
   // Call isAllClear() under bitMapLock
-  assert(_modUnionTable.isAllClear(), "Should be clear by end of the"
-    " final marking");
+  assert(_modUnionTable.isAllClear(),
+      "Should be clear by end of the final marking");
+  assert(_ct->klass_rem_set()->mod_union_is_clear(),
+      "Should be clear by end of the final marking");
   if (UseAdaptiveSizePolicy) {
     size_policy()->checkpoint_roots_final_end(gch->gc_cause());
   }
@@ -5050,7 +5009,6 @@
   CMSCollector* _collector;
   int           _n_workers;
   CompactibleFreeListSpace* _cms_space;
-  CompactibleFreeListSpace* _perm_space;
 
   // The per-thread work queues, available here for stealing.
   OopTaskQueueSet*       _task_queues;
@@ -5061,12 +5019,11 @@
   // workers to be taken from the active workers in the work gang.
   CMSParRemarkTask(CMSCollector* collector,
                    CompactibleFreeListSpace* cms_space,
-                   CompactibleFreeListSpace* perm_space,
                    int n_workers, FlexibleWorkGang* workers,
                    OopTaskQueueSet* task_queues):
     AbstractGangTask("Rescan roots and grey objects in parallel"),
     _collector(collector),
-    _cms_space(cms_space), _perm_space(perm_space),
+    _cms_space(cms_space),
     _n_workers(n_workers),
     _task_queues(task_queues),
     _term(n_workers, task_queues) { }
@@ -5094,6 +5051,29 @@
   void do_work_steal(int i, Par_MarkRefsIntoAndScanClosure* cl, int* seed);
 };
 
+class RemarkKlassClosure : public KlassClosure {
+  CMKlassClosure _cm_klass_closure;
+ public:
+  RemarkKlassClosure(OopClosure* oop_closure) : _cm_klass_closure(oop_closure) {}
+  void do_klass(Klass* k) {
+    // Check if we have modified any oops in the Klass during the concurrent marking.
+    if (k->has_accumulated_modified_oops()) {
+      k->clear_accumulated_modified_oops();
+
+      // We could have transfered the current modified marks to the accumulated marks,
+      // like we do with the Card Table to Mod Union Table. But it's not really necessary.
+    } else if (k->has_modified_oops()) {
+      // Don't clear anything, this info is needed by the next young collection.
+    } else {
+      // No modified oops in the Klass.
+      return;
+    }
+
+    // The klass has modified fields, need to scan the klass.
+    _cm_klass_closure.do_klass(k);
+  }
+};
+
 // work_queue(i) is passed to the closure
 // Par_MarkRefsIntoAndScanClosure.  The "i" parameter
 // also is passed to do_dirty_card_rescan_tasks() and to
@@ -5110,7 +5090,7 @@
   Par_MarkRefsIntoAndScanClosure par_mrias_cl(_collector,
     _collector->_span, _collector->ref_processor(),
     &(_collector->_markBitMap),
-    work_queue(worker_id), &(_collector->_revisitStack));
+    work_queue(worker_id));
 
   // Rescan young gen roots first since these are likely
   // coarsely partitioned and may, on that account, constitute
@@ -5149,11 +5129,12 @@
   gch->gen_process_strong_roots(_collector->_cmsGen->level(),
                                 false,     // yg was scanned above
                                 false,     // this is parallel code
-                                true,      // collecting perm gen
+                                false,     // not scavenging
                                 SharedHeap::ScanningOption(_collector->CMSCollector::roots_scanning_options()),
                                 &par_mrias_cl,
                                 true,   // walk all of code cache if (so & SO_CodeCache)
-                                NULL);
+                                NULL,
+                                NULL);     // The dirty klasses will be handled below
   assert(_collector->should_unload_classes()
          || (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_CodeCache),
          "if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops");
@@ -5164,15 +5145,61 @@
       worker_id, _timer.seconds());
   }
 
+  // ---------- unhandled CLD scanning ----------
+  if (worker_id == 0) { // Single threaded at the moment.
+    _timer.reset();
+    _timer.start();
+
+    // Scan all new class loader data objects and new dependencies that were
+    // introduced during concurrent marking.
+    ResourceMark rm;
+    GrowableArray<ClassLoaderData*>* array = ClassLoaderDataGraph::new_clds();
+    for (int i = 0; i < array->length(); i++) {
+      par_mrias_cl.do_class_loader_data(array->at(i));
+    }
+
+    // We don't need to keep track of new CLDs anymore.
+    ClassLoaderDataGraph::remember_new_clds(false);
+
+    _timer.stop();
+    if (PrintCMSStatistics != 0) {
+      gclog_or_tty->print_cr(
+          "Finished unhandled CLD scanning work in %dth thread: %3.3f sec",
+          worker_id, _timer.seconds());
+    }
+  }
+
+  // ---------- dirty klass scanning ----------
+  if (worker_id == 0) { // Single threaded at the moment.
+    _timer.reset();
+    _timer.start();
+
+    // Scan all classes that was dirtied during the concurrent marking phase.
+    RemarkKlassClosure remark_klass_closure(&par_mrias_cl);
+    ClassLoaderDataGraph::classes_do(&remark_klass_closure);
+
+    _timer.stop();
+    if (PrintCMSStatistics != 0) {
+      gclog_or_tty->print_cr(
+          "Finished dirty klass scanning work in %dth thread: %3.3f sec",
+          worker_id, _timer.seconds());
+    }
+  }
+
+  // We might have added oops to ClassLoaderData::_handles during the
+  // concurrent marking phase. These oops point to newly allocated objects
+  // that are guaranteed to be kept alive. Either by the direct allocation
+  // code, or when the young collector processes the strong roots. Hence,
+  // we don't have to revisit the _handles block during the remark phase.
+
   // ---------- rescan dirty cards ------------
   _timer.reset();
   _timer.start();
 
   // Do the rescan tasks for each of the two spaces
-  // (cms_space and perm_space) in turn.
+  // (cms_space) in turn.
   // "worker_id" is passed to select the task_queue for "worker_id"
   do_dirty_card_rescan_tasks(_cms_space, worker_id, &par_mrias_cl);
-  do_dirty_card_rescan_tasks(_perm_space, worker_id, &par_mrias_cl);
   _timer.stop();
   if (PrintCMSStatistics != 0) {
     gclog_or_tty->print_cr(
@@ -5284,10 +5311,9 @@
   // address that performance anomaly if at all possible. XXX
   MemRegion  full_span  = _collector->_span;
   CMSBitMap* bm    = &(_collector->_markBitMap);     // shared
-  CMSMarkStack* rs = &(_collector->_revisitStack);   // shared
   MarkFromDirtyCardsClosure
     greyRescanClosure(_collector, full_span, // entire span of interest
-                      sp, bm, work_q, rs, cl);
+                      sp, bm, work_q, cl);
 
   SequentialSubTasksDone* pst = sp->conc_par_seq_tasks();
   assert(pst->valid(), "Uninitialized use?");
@@ -5551,10 +5577,9 @@
     workers->set_active_workers(n_workers);
   }
   CompactibleFreeListSpace* cms_space  = _cmsGen->cmsSpace();
-  CompactibleFreeListSpace* perm_space = _permGen->cmsSpace();
 
   CMSParRemarkTask tsk(this,
-    cms_space, perm_space,
+    cms_space,
     n_workers, workers, task_queues());
 
   // Set up for parallel process_strong_roots work.
@@ -5580,7 +5605,6 @@
   // of parallel tasks (per constituent space) that are dynamically
   // claimed by the parallel threads.
   cms_space->initialize_sequential_subtasks_for_rescan(n_workers);
-  perm_space->initialize_sequential_subtasks_for_rescan(n_workers);
 
   // It turns out that even when we're using 1 thread, doing the work in a
   // separate thread causes wide variance in run times.  We can't help this
@@ -5598,6 +5622,7 @@
     GenCollectedHeap::StrongRootsScope srs(gch);
     tsk.work(0);
   }
+
   gch->set_par_threads(0);  // 0 ==> non-parallel.
   // restore, single-threaded for now, any preserved marks
   // as a result of work_q overflow
@@ -5612,14 +5637,13 @@
   ReferenceProcessorMTDiscoveryMutator mt(ref_processor(), false);
 
   MarkRefsIntoAndScanClosure
-    mrias_cl(_span, ref_processor(), &_markBitMap, &_modUnionTable,
-             &_markStack, &_revisitStack, this,
+    mrias_cl(_span, ref_processor(), &_markBitMap, NULL /* not precleaning */,
+             &_markStack, this,
              false /* should_yield */, false /* not precleaning */);
   MarkFromDirtyCardsClosure
     markFromDirtyCardsClosure(this, _span,
                               NULL,  // space is set further below
-                              &_markBitMap, &_markStack, &_revisitStack,
-                              &mrias_cl);
+                              &_markBitMap, &_markStack, &mrias_cl);
   {
     TraceTime t("grey object rescan", PrintGCDetails, false, gclog_or_tty);
     // Iterate over the dirty cards, setting the corresponding bits in the
@@ -5629,9 +5653,6 @@
       _ct->ct_bs()->dirty_card_iterate(
                       _cmsGen->used_region(),
                       &modUnionClosure);
-      _ct->ct_bs()->dirty_card_iterate(
-                      _permGen->used_region(),
-                      &modUnionClosure);
     }
     // Having transferred these marks into the modUnionTable, we just need
     // to rescan the marked objects on the dirty cards in the modUnionTable.
@@ -5654,21 +5675,6 @@
           markFromDirtyCardsClosure.num_dirty_cards());
       }
     }
-    {
-      // .. and then repeat for dirty cards in perm gen
-      markFromDirtyCardsClosure.set_space(_permGen->cmsSpace());
-      MemRegion ur = _permGen->used_region();
-      HeapWord* lb = ur.start();
-      HeapWord* ub = (HeapWord*)round_to((intptr_t)ur.end(), alignment);
-      MemRegion perm_span(lb, ub);
-      _modUnionTable.dirty_range_iterate_clear(perm_span,
-                                               &markFromDirtyCardsClosure);
-      verify_work_stacks_empty();
-      if (PrintCMSStatistics != 0) {
-        gclog_or_tty->print(" (re-scanned "SIZE_FORMAT" dirty cards in perm gen) ",
-          markFromDirtyCardsClosure.num_dirty_cards());
-      }
-    }
   }
   if (VerifyDuringGC &&
       GenCollectedHeap::heap()->total_collections() >= VerifyGCStartAt) {
@@ -5685,15 +5691,54 @@
     gch->gen_process_strong_roots(_cmsGen->level(),
                                   true,  // younger gens as roots
                                   false, // use the local StrongRootsScope
-                                  true,  // collecting perm gen
+                                  false, // not scavenging
                                   SharedHeap::ScanningOption(roots_scanning_options()),
                                   &mrias_cl,
                                   true,   // walk code active on stacks
-                                  NULL);
+                                  NULL,
+                                  NULL);  // The dirty klasses will be handled below
+
     assert(should_unload_classes()
            || (roots_scanning_options() & SharedHeap::SO_CodeCache),
            "if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops");
   }
+
+  {
+    TraceTime t("visit unhandled CLDs", PrintGCDetails, false, gclog_or_tty);
+
+    verify_work_stacks_empty();
+
+    // Scan all class loader data objects that might have been introduced
+    // during concurrent marking.
+    ResourceMark rm;
+    GrowableArray<ClassLoaderData*>* array = ClassLoaderDataGraph::new_clds();
+    for (int i = 0; i < array->length(); i++) {
+      mrias_cl.do_class_loader_data(array->at(i));
+    }
+
+    // We don't need to keep track of new CLDs anymore.
+    ClassLoaderDataGraph::remember_new_clds(false);
+
+    verify_work_stacks_empty();
+  }
+
+  {
+    TraceTime t("dirty klass scan", PrintGCDetails, false, gclog_or_tty);
+
+    verify_work_stacks_empty();
+
+    RemarkKlassClosure remark_klass_closure(&mrias_cl);
+    ClassLoaderDataGraph::classes_do(&remark_klass_closure);
+
+    verify_work_stacks_empty();
+  }
+
+  // We might have added oops to ClassLoaderData::_handles during the
+  // concurrent marking phase. These oops point to newly allocated objects
+  // that are guaranteed to be kept alive. Either by the direct allocation
+  // code, or when the young collector processes the strong roots. Hence,
+  // we don't have to revisit the _handles block during the remark phase.
+
   verify_work_stacks_empty();
   // Restore evacuated mark words, if any, used for overflow list links
   if (!CMSOverflowEarlyRestoration) {
@@ -5749,11 +5794,9 @@
   assert(_collector->_span.equals(_span), "Inconsistency in _span");
   CMSParKeepAliveClosure par_keep_alive(_collector, _span,
                                         _mark_bit_map,
-                                        &_collector->_revisitStack,
                                         work_queue(worker_id));
   CMSParDrainMarkingStackClosure par_drain_stack(_collector, _span,
                                                  _mark_bit_map,
-                                                 &_collector->_revisitStack,
                                                  work_queue(worker_id));
   CMSIsAliveClosure is_alive_closure(_span, _mark_bit_map);
   _task.work(worker_id, is_alive_closure, par_keep_alive, par_drain_stack);
@@ -5782,13 +5825,11 @@
 };
 
 CMSParKeepAliveClosure::CMSParKeepAliveClosure(CMSCollector* collector,
-  MemRegion span, CMSBitMap* bit_map, CMSMarkStack* revisit_stack,
-  OopTaskQueue* work_queue):
-   Par_KlassRememberingOopClosure(collector, NULL, revisit_stack),
+  MemRegion span, CMSBitMap* bit_map, OopTaskQueue* work_queue):
    _span(span),
    _bit_map(bit_map),
    _work_queue(work_queue),
-   _mark_and_push(collector, span, bit_map, revisit_stack, work_queue),
+   _mark_and_push(collector, span, bit_map, work_queue),
    _low_water_mark(MIN2((uint)(work_queue->max_elems()/4),
                         (uint)(CMSWorkQueueDrainThreshold * ParallelGCThreads)))
 { }
@@ -5879,8 +5920,7 @@
   verify_work_stacks_empty();
 
   CMSKeepAliveClosure cmsKeepAliveClosure(this, _span, &_markBitMap,
-                                          &_markStack, &_revisitStack,
-                                          false /* !preclean */);
+                                          &_markStack, false /* !preclean */);
   CMSDrainMarkingStackClosure cmsDrainMarkingStackClosure(this,
                                 _span, &_markBitMap, &_markStack,
                                 &cmsKeepAliveClosure, false /* !preclean */);
@@ -5933,18 +5973,8 @@
       verify_work_stacks_empty();
 
       // Update subklass/sibling/implementor links in KlassKlass descendants
-      assert(!_revisitStack.isEmpty(), "revisit stack should not be empty");
-      oop k;
-      while ((k = _revisitStack.pop()) != NULL) {
-        ((Klass*)(oopDesc*)k)->follow_weak_klass_links(
-                       &_is_alive_closure,
-                       &cmsKeepAliveClosure);
-      }
-      assert(!ClassUnloading ||
-             (_markStack.isEmpty() && overflow_list_is_empty()),
-             "Should not have found new reachable objects");
-      assert(_revisitStack.isEmpty(), "revisit stack should have been drained");
-      cmsDrainMarkingStackClosure.do_void();
+      Klass::clean_weak_klass_links(&_is_alive_closure);
+      // Nothing should have been pushed onto the working stacks.
       verify_work_stacks_empty();
     }
 
@@ -5955,7 +5985,9 @@
     }
   }
 
-  if (should_unload_classes() || !JavaObjectsInPerm) {
+  // CMS doesn't use the StringTable as hard roots when class unloading is turned off.
+  // Need to check if we really scanned the StringTable.
+  if ((roots_scanning_options() & SharedHeap::SO_Strings) == 0) {
     TraceTime t("scrub string table", PrintGCDetails, false, gclog_or_tty);
     // Now clean up stale oops in StringTable
     StringTable::unlink(&_is_alive_closure);
@@ -6019,53 +6051,25 @@
   _inter_sweep_estimate.sample(_inter_sweep_timer.seconds());
   size_policy()->avg_cms_free_at_sweep()->sample(_cmsGen->free());
 
-  // PermGen verification support: If perm gen sweeping is disabled in
-  // this cycle, we preserve the perm gen object "deadness" information
-  // in the perm_gen_verify_bit_map. In order to do that we traverse
-  // all blocks in perm gen and mark all dead objects.
-  if (verifying() && !should_unload_classes()) {
-    assert(perm_gen_verify_bit_map()->sizeInBits() != 0,
-           "Should have already been allocated");
-    MarkDeadObjectsClosure mdo(this, _permGen->cmsSpace(),
-                               markBitMap(), perm_gen_verify_bit_map());
-    if (asynch) {
-      CMSTokenSyncWithLocks ts(true, _permGen->freelistLock(),
-                               bitMapLock());
-      _permGen->cmsSpace()->blk_iterate(&mdo);
-    } else {
-      // In the case of synchronous sweep, we already have
-      // the requisite locks/tokens.
-      _permGen->cmsSpace()->blk_iterate(&mdo);
-    }
-  }
-
   assert(!_intra_sweep_timer.is_active(), "Should not be active");
   _intra_sweep_timer.reset();
   _intra_sweep_timer.start();
   if (asynch) {
     TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty);
     CMSPhaseAccounting pa(this, "sweep", !PrintGCDetails);
-    // First sweep the old gen then the perm gen
+    // First sweep the old gen
     {
       CMSTokenSyncWithLocks ts(true, _cmsGen->freelistLock(),
                                bitMapLock());
       sweepWork(_cmsGen, asynch);
     }
 
-    // Now repeat for perm gen
-    if (should_unload_classes()) {
-      CMSTokenSyncWithLocks ts(true, _permGen->freelistLock(),
-                             bitMapLock());
-      sweepWork(_permGen, asynch);
-    }
-
     // Update Universe::_heap_*_at_gc figures.
     // We need all the free list locks to make the abstract state
     // transition from Sweeping to Resetting. See detailed note
     // further below.
     {
-      CMSTokenSyncWithLocks ts(true, _cmsGen->freelistLock(),
-                               _permGen->freelistLock());
+      CMSTokenSyncWithLocks ts(true, _cmsGen->freelistLock());
       // Update heap occupancy information which is used as
       // input to soft ref clearing policy at the next gc.
       Universe::update_heap_info_at_gc();
@@ -6074,10 +6078,6 @@
   } else {
     // already have needed locks
     sweepWork(_cmsGen,  asynch);
-
-    if (should_unload_classes()) {
-      sweepWork(_permGen, asynch);
-    }
     // Update heap occupancy information which is used as
     // input to soft ref clearing policy at the next gc.
     Universe::update_heap_info_at_gc();
@@ -6412,7 +6412,7 @@
 HeapWord* CMSCollector::next_card_start_after_block(HeapWord* addr) const {
   size_t sz = 0;
   oop p = (oop)addr;
-  if (p->klass_or_null() != NULL && p->is_parsable()) {
+  if (p->klass_or_null() != NULL) {
     sz = CompactibleFreeListSpace::adjustObjectSize(p->size());
   } else {
     sz = block_size_using_printezis_bits(addr);
@@ -6601,7 +6601,7 @@
 // This closure is used to mark refs into the CMS generation in
 // the CMS bit map. Called at the first checkpoint. This closure
 // assumes that we do not need to re-mark dirty cards; if the CMS
-// generation on which this is used is not an oldest (modulo perm gen)
+// generation on which this is used is not an oldest
 // generation then this will lose younger_gen cards!
 
 MarkRefsIntoClosure::MarkRefsIntoClosure(
@@ -6663,7 +6663,6 @@
                                                        CMSBitMap* bit_map,
                                                        CMSBitMap* mod_union_table,
                                                        CMSMarkStack*  mark_stack,
-                                                       CMSMarkStack*  revisit_stack,
                                                        CMSCollector* collector,
                                                        bool should_yield,
                                                        bool concurrent_precleaning):
@@ -6672,7 +6671,7 @@
   _bit_map(bit_map),
   _mark_stack(mark_stack),
   _pushAndMarkClosure(collector, span, rp, bit_map, mod_union_table,
-                      mark_stack, revisit_stack, concurrent_precleaning),
+                      mark_stack, concurrent_precleaning),
   _yield(should_yield),
   _concurrent_precleaning(concurrent_precleaning),
   _freelistLock(NULL)
@@ -6707,7 +6706,6 @@
       do {
         oop new_oop = _mark_stack->pop();
         assert(new_oop != NULL && new_oop->is_oop(), "Expected an oop");
-        assert(new_oop->is_parsable(), "Found unparsable oop");
         assert(_bit_map->isMarked((HeapWord*)new_oop),
                "only grey objects on this stack");
         // iterate over the oops in this oop, marking and pushing
@@ -6747,7 +6745,6 @@
   assert_lock_strong(_freelistLock);
   assert_lock_strong(_bit_map->lock());
   // relinquish the free_list_lock and bitMaplock()
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
   _bit_map->lock()->unlock();
   _freelistLock->unlock();
   ConcurrentMarkSweepThread::desynchronize(true);
@@ -6781,14 +6778,13 @@
 ///////////////////////////////////////////////////////////
 Par_MarkRefsIntoAndScanClosure::Par_MarkRefsIntoAndScanClosure(
   CMSCollector* collector, MemRegion span, ReferenceProcessor* rp,
-  CMSBitMap* bit_map, OopTaskQueue* work_queue, CMSMarkStack*  revisit_stack):
+  CMSBitMap* bit_map, OopTaskQueue* work_queue):
   _span(span),
   _bit_map(bit_map),
   _work_queue(work_queue),
   _low_water_mark(MIN2((uint)(work_queue->max_elems()/4),
                        (uint)(CMSWorkQueueDrainThreshold * ParallelGCThreads))),
-  _par_pushAndMarkClosure(collector, span, rp, bit_map, work_queue,
-                          revisit_stack)
+  _par_pushAndMarkClosure(collector, span, rp, bit_map, work_queue)
 {
   _ref_processor = rp;
   assert(_ref_processor != NULL, "_ref_processor shouldn't be NULL");
@@ -6849,16 +6845,6 @@
   if (_bitMap->isMarked(addr)) {
     // it's marked; is it potentially uninitialized?
     if (p->klass_or_null() != NULL) {
-      // If is_conc_safe is false, the object may be undergoing
-      // change by the VM outside a safepoint.  Don't try to
-      // scan it, but rather leave it for the remark phase.
-      if (CMSPermGenPrecleaningEnabled &&
-          (!p->is_conc_safe() || !p->is_parsable())) {
-        // Signal precleaning to redirty the card since
-        // the klass pointer is already installed.
-        assert(size == 0, "Initial value");
-      } else {
-        assert(p->is_parsable(), "must be parsable.");
         // an initialized object; ignore mark word in verification below
         // since we are running concurrent with mutators
         assert(p->is_oop(true), "should be an oop");
@@ -6886,7 +6872,6 @@
                    "inconsistent Printezis mark");
           }
         #endif // DEBUG
-      }
     } else {
       // an unitialized object
       assert(_bitMap->isMarked(addr+1), "missing Printezis mark?");
@@ -6900,7 +6885,7 @@
     }
   } else {
     // Either a not yet marked object or an uninitialized object
-    if (p->klass_or_null() == NULL || !p->is_parsable()) {
+    if (p->klass_or_null() == NULL) {
       // An uninitialized object, skip to the next card, since
       // we may not be able to read its P-bits yet.
       assert(size == 0, "Initial value");
@@ -6920,7 +6905,6 @@
          "CMS thread should hold CMS token");
   assert_lock_strong(_freelistLock);
   assert_lock_strong(_bitMap->lock());
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
   // relinquish the free_list_lock and bitMaplock()
   _bitMap->lock()->unlock();
   _freelistLock->unlock();
@@ -6959,7 +6943,6 @@
   DEBUG_ONLY(_collector->verify_work_stacks_empty();)
   assert(!_span.contains(addr), "we are scanning the survivor spaces");
   assert(p->klass_or_null() != NULL, "object should be initializd");
-  assert(p->is_parsable(), "must be parsable.");
   // an initialized object; ignore mark word in verification below
   // since we are running concurrent with mutators
   assert(p->is_oop(true), "should be an oop");
@@ -6977,7 +6960,6 @@
   while (!_mark_stack->isEmpty()) {
     oop new_oop = _mark_stack->pop();
     assert(new_oop != NULL && new_oop->is_oop(), "Expected an oop");
-    assert(new_oop->is_parsable(), "Found unparsable oop");
     assert(_bit_map->isMarked((HeapWord*)new_oop),
            "only grey objects on this stack");
     // iterate over the oops in this oop, marking and pushing
@@ -6997,7 +6979,6 @@
   assert(ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
          "CMS thread should hold CMS token");
   assert_lock_strong(_bit_map->lock());
-  DEBUG_ONLY(RememberKlassesChecker smx(false);)
   // Relinquish the bit map lock
   _bit_map->lock()->unlock();
   ConcurrentMarkSweepThread::desynchronize(true);
@@ -7073,14 +7054,12 @@
 MarkFromRootsClosure::MarkFromRootsClosure(CMSCollector* collector,
                         MemRegion span,
                         CMSBitMap* bitMap, CMSMarkStack*  markStack,
-                        CMSMarkStack*  revisitStack,
                         bool should_yield, bool verifying):
   _collector(collector),
   _span(span),
   _bitMap(bitMap),
   _mut(&collector->_modUnionTable),
   _markStack(markStack),
-  _revisitStack(revisitStack),
   _yield(should_yield),
   _skipBits(0)
 {
@@ -7117,7 +7096,7 @@
     assert(_skipBits == 0, "tautology");
     _skipBits = 2;  // skip next two marked bits ("Printezis-marks")
     oop p = oop(addr);
-    if (p->klass_or_null() == NULL || !p->is_parsable()) {
+    if (p->klass_or_null() == NULL) {
       DEBUG_ONLY(if (!_verifying) {)
         // We re-dirty the cards on which this object lies and increase
         // the _threshold so that we'll come back to scan this object
@@ -7160,7 +7139,6 @@
   assert(ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
          "CMS thread should hold CMS token");
   assert_lock_strong(_bitMap->lock());
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
   _bitMap->lock()->unlock();
   ConcurrentMarkSweepThread::desynchronize(true);
   ConcurrentMarkSweepThread::acknowledge_yield_request();
@@ -7227,10 +7205,6 @@
       MemRegion mr(old_threshold, _threshold);
       assert(!mr.is_empty(), "Control point invariant");
       assert(_span.contains(mr), "Should clear within span");
-      // XXX When _finger crosses from old gen into perm gen
-      // we may be doing unnecessary cleaning; do better in the
-      // future by detecting that condition and clearing fewer
-      // MUT/CT entries.
       _mut->clear_range(mr);
     }
   DEBUG_ONLY(})
@@ -7238,7 +7212,6 @@
   // the stack below.
   PushOrMarkClosure pushOrMarkClosure(_collector,
                                       _span, _bitMap, _markStack,
-                                      _revisitStack,
                                       _finger, this);
   bool res = _markStack->push(obj);
   assert(res, "Empty non-zero size stack should have space for single push");
@@ -7259,7 +7232,6 @@
                        CMSBitMap* bit_map,
                        OopTaskQueue* work_queue,
                        CMSMarkStack*  overflow_stack,
-                       CMSMarkStack*  revisit_stack,
                        bool should_yield):
   _collector(collector),
   _whole_span(collector->_span),
@@ -7268,7 +7240,6 @@
   _mut(&collector->_modUnionTable),
   _work_queue(work_queue),
   _overflow_stack(overflow_stack),
-  _revisit_stack(revisit_stack),
   _yield(should_yield),
   _skip_bits(0),
   _task(task)
@@ -7296,7 +7267,7 @@
     assert(_skip_bits == 0, "tautology");
     _skip_bits = 2;  // skip next two marked bits ("Printezis-marks")
     oop p = oop(addr);
-    if (p->klass_or_null() == NULL || !p->is_parsable()) {
+    if (p->klass_or_null() == NULL) {
       // in the case of Clean-on-Enter optimization, redirty card
       // and avoid clearing card by increasing  the threshold.
       return true;
@@ -7350,10 +7321,6 @@
     MemRegion mr(old_threshold, _threshold);
     assert(!mr.is_empty(), "Control point invariant");
     assert(_span.contains(mr), "Should clear within span"); // _whole_span ??
-    // XXX When _finger crosses from old gen into perm gen
-    // we may be doing unnecessary cleaning; do better in the
-    // future by detecting that condition and clearing fewer
-    // MUT/CT entries.
     _mut->clear_range(mr);
   }
 
@@ -7364,7 +7331,6 @@
                                       _span, _bit_map,
                                       _work_queue,
                                       _overflow_stack,
-                                      _revisit_stack,
                                       _finger,
                                       gfa, this);
   bool res = _work_queue->push(obj);   // overflow could occur here
@@ -7461,7 +7427,7 @@
   CMSCollector* collector, MemRegion span,
   CMSBitMap* verification_bm, CMSBitMap* cms_bm,
   CMSMarkStack*  mark_stack):
-  OopClosure(collector->ref_processor()),
+  CMSOopClosure(collector->ref_processor()),
   _collector(collector),
   _span(span),
   _verification_bm(verification_bm),
@@ -7513,9 +7479,9 @@
 PushOrMarkClosure::PushOrMarkClosure(CMSCollector* collector,
                      MemRegion span,
                      CMSBitMap* bitMap, CMSMarkStack*  markStack,
-                     CMSMarkStack*  revisitStack,
                      HeapWord* finger, MarkFromRootsClosure* parent) :
-  KlassRememberingOopClosure(collector, collector->ref_processor(), revisitStack),
+  CMSOopClosure(collector->ref_processor()),
+  _collector(collector),
   _span(span),
   _bitMap(bitMap),
   _markStack(markStack),
@@ -7528,13 +7494,11 @@
                      CMSBitMap* bit_map,
                      OopTaskQueue* work_queue,
                      CMSMarkStack*  overflow_stack,
-                     CMSMarkStack*  revisit_stack,
                      HeapWord* finger,
                      HeapWord** global_finger_addr,
                      Par_MarkFromRootsClosure* parent) :
-  Par_KlassRememberingOopClosure(collector,
-                            collector->ref_processor(),
-                            revisit_stack),
+  CMSOopClosure(collector->ref_processor()),
+  _collector(collector),
   _whole_span(collector->_span),
   _span(span),
   _bit_map(bit_map),
@@ -7582,6 +7546,11 @@
   _overflow_stack->expand(); // expand the stack if possible
 }
 
+void CMKlassClosure::do_klass(Klass* k) {
+  assert(_oop_closure != NULL, "Not initialized?");
+  k->oops_do(_oop_closure);
+}
+
 void PushOrMarkClosure::do_oop(oop obj) {
   // Ignore mark word because we are running concurrent with mutators.
   assert(obj->is_oop_or_null(true), "expected an oop or NULL");
@@ -7672,23 +7641,15 @@
 void Par_PushOrMarkClosure::do_oop(oop* p)       { Par_PushOrMarkClosure::do_oop_work(p); }
 void Par_PushOrMarkClosure::do_oop(narrowOop* p) { Par_PushOrMarkClosure::do_oop_work(p); }
 
-KlassRememberingOopClosure::KlassRememberingOopClosure(CMSCollector* collector,
-                                             ReferenceProcessor* rp,
-                                             CMSMarkStack* revisit_stack) :
-  OopClosure(rp),
-  _collector(collector),
-  _revisit_stack(revisit_stack),
-  _should_remember_klasses(collector->should_unload_classes()) {}
-
 PushAndMarkClosure::PushAndMarkClosure(CMSCollector* collector,
                                        MemRegion span,
                                        ReferenceProcessor* rp,
                                        CMSBitMap* bit_map,
                                        CMSBitMap* mod_union_table,
                                        CMSMarkStack*  mark_stack,
-                                       CMSMarkStack*  revisit_stack,
                                        bool           concurrent_precleaning):
-  KlassRememberingOopClosure(collector, rp, revisit_stack),
+  CMSOopClosure(rp),
+  _collector(collector),
   _span(span),
   _bit_map(bit_map),
   _mod_union_table(mod_union_table),
@@ -7759,9 +7720,9 @@
                                                MemRegion span,
                                                ReferenceProcessor* rp,
                                                CMSBitMap* bit_map,
-                                               OopTaskQueue* work_queue,
-                                               CMSMarkStack* revisit_stack):
-  Par_KlassRememberingOopClosure(collector, rp, revisit_stack),
+                                               OopTaskQueue* work_queue):
+  CMSOopClosure(rp),
+  _collector(collector),
   _span(span),
   _bit_map(bit_map),
   _work_queue(work_queue)
@@ -7817,16 +7778,7 @@
 void Par_PushAndMarkClosure::do_oop(oop* p)       { Par_PushAndMarkClosure::do_oop_work(p); }
 void Par_PushAndMarkClosure::do_oop(narrowOop* p) { Par_PushAndMarkClosure::do_oop_work(p); }
 
-void PushAndMarkClosure::remember_mdo(DataLayout* v) {
-  // TBD
-}
-
-void Par_PushAndMarkClosure::remember_mdo(DataLayout* v) {
-  // TBD
-}
-
 void CMSPrecleanRefsYieldClosure::do_yield_work() {
-  DEBUG_ONLY(RememberKlassesChecker mux(false);)
   Mutex* bml = _collector->bitMapLock();
   assert_lock_strong(bml);
   assert(ConcurrentMarkSweepThread::cms_thread_has_cms_token(),
@@ -8307,15 +8259,9 @@
            "alignment problem");
 
 #ifdef DEBUG
-      if (oop(addr)->klass_or_null() != NULL &&
-          (   !_collector->should_unload_classes()
-           || (oop(addr)->is_parsable()) &&
-               oop(addr)->is_conc_safe())) {
+      if (oop(addr)->klass_or_null() != NULL) {
         // Ignore mark word because we are running concurrent with mutators
         assert(oop(addr)->is_oop(true), "live block should be an oop");
-        // is_conc_safe is checked before performing this assertion
-        // because an object that is not is_conc_safe may yet have
-        // the return from size() correct.
         assert(size ==
                CompactibleFreeListSpace::adjustObjectSize(oop(addr)->size()),
                "P-mark and computed size do not agree");
@@ -8324,17 +8270,8 @@
 
   } else {
     // This should be an initialized object that's alive.
-    assert(oop(addr)->klass_or_null() != NULL &&
-           (!_collector->should_unload_classes()
-            || oop(addr)->is_parsable()),
+    assert(oop(addr)->klass_or_null() != NULL,
            "Should be an initialized object");
-    // Note that there are objects used during class redefinition,
-    // e.g. merge_cp in VM_RedefineClasses::merge_cp_and_rewrite(),
-    // which are discarded with their is_conc_safe state still
-    // false.  These object may be floating garbage so may be
-    // seen here.  If they are floating garbage their size
-    // should be attainable from their klass.  Do not that
-    // is_conc_safe() is true for oop(addr).
     // Ignore mark word because we are running concurrent with mutators
     assert(oop(addr)->is_oop(true), "live block should be an oop");
     // Verify that the bit map has no bits marked between
@@ -8576,11 +8513,12 @@
          (!_span.contains(addr) || _bit_map->isMarked(addr));
 }
 
+
 CMSKeepAliveClosure::CMSKeepAliveClosure( CMSCollector* collector,
                       MemRegion span,
                       CMSBitMap* bit_map, CMSMarkStack* mark_stack,
-                      CMSMarkStack* revisit_stack, bool cpc):
-  KlassRememberingOopClosure(collector, NULL, revisit_stack),
+                      bool cpc):
+  _collector(collector),
   _span(span),
   _bit_map(bit_map),
   _mark_stack(mark_stack),
@@ -8675,9 +8613,8 @@
 CMSInnerParMarkAndPushClosure::CMSInnerParMarkAndPushClosure(
                                 CMSCollector* collector,
                                 MemRegion span, CMSBitMap* bit_map,
-                                CMSMarkStack* revisit_stack,
                                 OopTaskQueue* work_queue):
-  Par_KlassRememberingOopClosure(collector, NULL, revisit_stack),
+  _collector(collector),
   _span(span),
   _bit_map(bit_map),
   _work_queue(work_queue) { }
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -41,7 +41,7 @@
 // ConcurrentMarkSweepGeneration is in support of a concurrent
 // mark-sweep old generation in the Detlefs-Printezis--Boehm-Demers-Schenker
 // style. We assume, for now, that this generation is always the
-// seniormost generation (modulo the PermGeneration), and for simplicity
+// seniormost generation and for simplicity
 // in the first implementation, that this generation is a single compactible
 // space. Neither of these restrictions appears essential, and will be
 // relaxed in the future when more time is available to implement the
@@ -610,7 +610,6 @@
 
  protected:
   ConcurrentMarkSweepGeneration* _cmsGen;  // old gen (CMS)
-  ConcurrentMarkSweepGeneration* _permGen; // perm gen
   MemRegion                      _span;    // span covering above two
   CardTableRS*                   _ct;      // card table
 
@@ -618,9 +617,6 @@
   CMSBitMap     _markBitMap;
   CMSBitMap     _modUnionTable;
   CMSMarkStack  _markStack;
-  CMSMarkStack  _revisitStack;            // used to keep track of klassKlass objects
-                                          // to revisit
-  CMSBitMap     _perm_gen_verify_bit_map; // Mark bit map for perm gen verification support.
 
   HeapWord*     _restart_addr; // in support of marking stack overflow
   void          lower_restart_addr(HeapWord* low);
@@ -783,6 +779,7 @@
   // Does precleaning work, returning a quantity indicative of
   // the amount of "useful work" done.
   size_t preclean_work(bool clean_refs, bool clean_survivors);
+  void preclean_klasses(MarkRefsIntoAndScanClosure* cl, Mutex* freelistLock);
   void abortable_preclean(); // Preclean while looking for possible abort
   void initialize_sequential_subtasks_for_young_gen_rescan(int i);
   // Helper function for above; merge-sorts the per-thread plab samples
@@ -855,7 +852,6 @@
   void setup_cms_unloading_and_verification_state();
  public:
   CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
-               ConcurrentMarkSweepGeneration* permGen,
                CardTableRS*                   ct,
                ConcurrentMarkSweepPolicy*     cp);
   ConcurrentMarkSweepThread* cmsThread() { return _cmsThread; }
@@ -891,7 +887,7 @@
   bool should_unload_classes() const {
     return _should_unload_classes;
   }
-  bool update_should_unload_classes();
+  void update_should_unload_classes();
 
   void direct_allocated(HeapWord* start, size_t size);
 
@@ -1002,9 +998,6 @@
   CMSMarkStack* verification_mark_stack() { return &_markStack; }
   CMSBitMap*    verification_mark_bm()    { return &_verification_mark_bm; }
 
-  // Get the bit map with a perm gen "deadness" information.
-  CMSBitMap* perm_gen_verify_bit_map()       { return &_perm_gen_verify_bit_map; }
-
   // Initialization errors
   bool completed_initialization() { return _completed_initialization; }
 };
@@ -1253,8 +1246,8 @@
   void save_sweep_limit();
 
   // More iteration support
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl);
-  virtual void oop_iterate(OopClosure* cl);
+  virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
+  virtual void oop_iterate(ExtendedOopClosure* cl);
   virtual void safe_object_iterate(ObjectClosure* cl);
   virtual void object_iterate(ObjectClosure* cl);
 
@@ -1273,8 +1266,6 @@
   // the space.
   FreeChunk* find_chunk_at_end();
 
-  // Overriding of unused functionality (sharing not yet supported with CMS)
-  void pre_adjust_pointers();
   void post_compact();
 
   // Debugging
@@ -1359,7 +1350,6 @@
   CMSBitMap*     _bitMap;
   CMSBitMap*     _mut;
   CMSMarkStack*  _markStack;
-  CMSMarkStack*  _revisitStack;
   bool           _yield;
   int            _skipBits;
   HeapWord*      _finger;
@@ -1370,7 +1360,6 @@
   MarkFromRootsClosure(CMSCollector* collector, MemRegion span,
                        CMSBitMap* bitMap,
                        CMSMarkStack*  markStack,
-                       CMSMarkStack*  revisitStack,
                        bool should_yield, bool verifying = false);
   bool do_bit(size_t offset);
   void reset(HeapWord* addr);
@@ -1394,7 +1383,6 @@
   CMSBitMap*     _mut;
   OopTaskQueue*  _work_queue;
   CMSMarkStack*  _overflow_stack;
-  CMSMarkStack*  _revisit_stack;
   bool           _yield;
   int            _skip_bits;
   HeapWord*      _finger;
@@ -1406,7 +1394,6 @@
                        CMSBitMap* bit_map,
                        OopTaskQueue* work_queue,
                        CMSMarkStack*  overflow_stack,
-                       CMSMarkStack*  revisit_stack,
                        bool should_yield);
   bool do_bit(size_t offset);
   inline void do_yield_check();
@@ -1419,7 +1406,7 @@
 
 // The following closures are used to do certain kinds of verification of
 // CMS marking.
-class PushAndMarkVerifyClosure: public OopClosure {
+class PushAndMarkVerifyClosure: public CMSOopClosure {
   CMSCollector*    _collector;
   MemRegion        _span;
   CMSBitMap*       _verification_bm;
@@ -1428,7 +1415,7 @@
  protected:
   void do_oop(oop p);
   template <class T> inline void do_oop_work(T *p) {
-    oop obj = oopDesc::load_decode_heap_oop_not_null(p);
+    oop obj = oopDesc::load_decode_heap_oop(p);
     do_oop(obj);
   }
  public:
@@ -1439,6 +1426,7 @@
                            CMSMarkStack*  mark_stack);
   void do_oop(oop* p);
   void do_oop(narrowOop* p);
+
   // Deal with a stack overflow condition
   void handle_stack_overflow(HeapWord* lost);
 };
@@ -1504,7 +1492,6 @@
                                 ReferenceProcessor* rp,
                                 CMSBitMap* bit_map,
                                 CMSMarkStack*  mark_stack,
-                                CMSMarkStack*  revisit_stack,
                                 MarkRefsIntoAndScanClosure* cl):
     #ifdef ASSERT
       _collector(collector),
@@ -1520,7 +1507,6 @@
                                 ReferenceProcessor* rp,
                                 CMSBitMap* bit_map,
                                 OopTaskQueue* work_queue,
-                                CMSMarkStack* revisit_stack,
                                 Par_MarkRefsIntoAndScanClosure* cl):
     #ifdef ASSERT
       _collector(collector),
@@ -1558,24 +1544,22 @@
                             CompactibleFreeListSpace* space,
                             CMSBitMap* bit_map,
                             CMSMarkStack* mark_stack,
-                            CMSMarkStack* revisit_stack,
                             MarkRefsIntoAndScanClosure* cl):
     _space(space),
     _num_dirty_cards(0),
     _scan_cl(collector, span, collector->ref_processor(), bit_map,
-                 mark_stack, revisit_stack, cl) { }
+                 mark_stack, cl) { }
 
   MarkFromDirtyCardsClosure(CMSCollector* collector,
                             MemRegion span,
                             CompactibleFreeListSpace* space,
                             CMSBitMap* bit_map,
                             OopTaskQueue* work_queue,
-                            CMSMarkStack* revisit_stack,
                             Par_MarkRefsIntoAndScanClosure* cl):
     _space(space),
     _num_dirty_cards(0),
     _scan_cl(collector, span, collector->ref_processor(), bit_map,
-             work_queue, revisit_stack, cl) { }
+             work_queue, cl) { }
 
   void do_MemRegion(MemRegion mr);
   void set_space(CompactibleFreeListSpace* space) { _space = space; }
@@ -1609,7 +1593,6 @@
                                          MemRegion     span,
                                          CMSBitMap* bitMap,
                                          CMSMarkStack*  markStack,
-                                         CMSMarkStack*  revisitStack,
                                          MarkRefsIntoAndScanClosure* cl,
                                          bool should_yield):
     _collector(collector),
@@ -1838,13 +1821,12 @@
  public:
   CMSParDrainMarkingStackClosure(CMSCollector* collector,
                                  MemRegion span, CMSBitMap* bit_map,
-                                 CMSMarkStack* revisit_stack,
                                  OopTaskQueue* work_queue):
     _collector(collector),
     _span(span),
     _bit_map(bit_map),
     _work_queue(work_queue),
-    _mark_and_push(collector, span, bit_map, revisit_stack, work_queue) { }
+    _mark_and_push(collector, span, bit_map, work_queue) { }
 
  public:
   void trim_queue(uint max);
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -266,16 +266,12 @@
 
 inline void CMSCollector::save_sweep_limits() {
   _cmsGen->save_sweep_limit();
-  _permGen->save_sweep_limit();
 }
 
 inline bool CMSCollector::is_dead_obj(oop obj) const {
   HeapWord* addr = (HeapWord*)obj;
   assert((_cmsGen->cmsSpace()->is_in_reserved(addr)
-          && _cmsGen->cmsSpace()->block_is_obj(addr))
-         ||
-         (_permGen->cmsSpace()->is_in_reserved(addr)
-          && _permGen->cmsSpace()->block_is_obj(addr)),
+          && _cmsGen->cmsSpace()->block_is_obj(addr)),
          "must be object");
   return  should_unload_classes() &&
           _collectorState == Sweeping &&
@@ -453,6 +449,14 @@
   }
 }
 
+inline void PushOrMarkClosure::do_yield_check() {
+  _parent->do_yield_check();
+}
+
+inline void Par_PushOrMarkClosure::do_yield_check() {
+  _parent->do_yield_check();
+}
+
 // Return value of "true" indicates that the on-going preclean
 // should be aborted.
 inline bool ScanMarkedObjectsAgainCarefullyClosure::do_yield_check() {
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -118,7 +118,7 @@
   track(trackOop, oop(trackOop)->klass());
 }
 
-void PromotionInfo::track(PromotedObject* trackOop, klassOop klassOfOop) {
+void PromotionInfo::track(PromotedObject* trackOop, Klass* klassOfOop) {
   // make a copy of header as it may need to be spooled
   markOop mark = oop(trackOop)->mark();
   trackOop->clear_next();
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/promotionInfo.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -170,7 +170,7 @@
   void track(PromotedObject* trackOop);      // keep track of a promoted oop
   // The following variant must be used when trackOop is not fully
   // initialized and has a NULL klass:
-  void track(PromotedObject* trackOop, klassOop klassOfOop); // keep track of a promoted oop
+  void track(PromotedObject* trackOop, Klass* klassOfOop); // keep track of a promoted oop
   void setSpace(CompactibleFreeListSpace* sp) { _space = sp; }
   CompactibleFreeListSpace* space() const     { return _space; }
   markOop nextDisplacedHeader(); // get next header & forward spool pointer
--- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/concurrentMarkSweep/vmStructs_cms.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -31,8 +31,6 @@
   nonstatic_field(CompactibleFreeListSpace,    _collector,                                    CMSCollector*)                         \
   nonstatic_field(CompactibleFreeListSpace,    _bt,                                           BlockOffsetArrayNonContigSpace)        \
                                                                                                                                      \
-  nonstatic_field(CMSPermGen,                  _gen,                                          ConcurrentMarkSweepGeneration*)        \
-  nonstatic_field(CMSBitMap,                   _bmStartWord,                                  HeapWord*)                             \
   nonstatic_field(CMSBitMap,                   _bmWordSize,                                   size_t)                                \
   nonstatic_field(CMSBitMap,                   _shifter,                                      const int)                            \
   nonstatic_field(CMSBitMap,                      _bm,                                           BitMap)                            \
@@ -57,8 +55,6 @@
                                                                           \
            declare_type(ConcurrentMarkSweepGeneration,CardGeneration)     \
            declare_type(CompactibleFreeListSpace,     CompactibleSpace)   \
-           declare_type(CMSPermGenGen,                ConcurrentMarkSweepGeneration) \
-           declare_type(CMSPermGen,                   PermGen)            \
            declare_type(ConcurrentMarkSweepThread,    NamedThread)        \
            declare_type(SurrogateLockerThread, JavaThread)                \
   declare_toplevel_type(CMSCollector)                                     \
@@ -80,6 +76,5 @@
 
 #define VM_INT_CONSTANTS_CMS(declare_constant)                            \
   declare_constant(Generation::ConcurrentMarkSweep)                       \
-  declare_constant(PermGen::ConcurrentMarkSweep)
 
 #endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_VMSTRUCTS_CMS_HPP
--- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -315,9 +315,7 @@
 }
 
 bool ConcurrentMark::not_yet_marked(oop obj) const {
-  return (_g1h->is_obj_ill(obj)
-          || (_g1h->is_in_permanent(obj)
-              && !nextMarkBitMap()->isMarked((HeapWord*)obj)));
+  return _g1h->is_obj_ill(obj);
 }
 
 CMRootRegions::CMRootRegions() :
@@ -1207,7 +1205,8 @@
     } else {
       assert(last_idx < _card_bm->size(), "sanity");
       // Note BitMap::par_at_put_range() is exclusive.
-      _card_bm->par_at_put_range(start_idx, last_idx+1, true);
+      BitMap::idx_t max_idx = MAX2(last_idx+1, _card_bm->size());
+      _card_bm->par_at_put_range(start_idx, max_idx, true);
     }
   }
 
@@ -1553,8 +1552,21 @@
 
     // Now set the bits for [ntams, top]
     BitMap::idx_t start_idx = _cm->card_bitmap_index_for(ntams);
-    BitMap::idx_t last_idx = _cm->card_bitmap_index_for(top);
+    // set_card_bitmap_range() expects the last_idx to be with
+    // the range of the bit map (see assertion in set_card_bitmap_range()),
+    // so limit it to that range with this application of MIN2.
+    BitMap::idx_t last_idx = MIN2(_cm->card_bitmap_index_for(top),
+                                  _card_bm->size()-1);
+    if (start_idx < _card_bm->size()) {
     set_card_bitmap_range(start_idx, last_idx);
+    } else {
+      // To reach here start_idx must be beyond the end of
+      // the bit map and last_idx must have been limited by
+      // the MIN2().
+      assert(start_idx == last_idx + 1,
+        err_msg("Not beyond end start_idx " SIZE_FORMAT " last_idx "
+                SIZE_FORMAT, start_idx, last_idx));
+    }
 
     // Set the bit for the region if it contains live data
     if (hr->next_marked_bytes() > 0) {
@@ -2011,7 +2023,7 @@
          (!_g1->is_in_g1_reserved(addr) || !_g1->is_obj_ill(obj));
 }
 
-class G1CMKeepAliveClosure: public OopClosure {
+class G1CMKeepAliveClosure: public ExtendedOopClosure {
   G1CollectedHeap* _g1;
   ConcurrentMark*  _cm;
  public:
@@ -2052,7 +2064,7 @@
     _oopClosure(oopClosure) { }
 
   void do_void() {
-    _markStack->drain((OopClosure*)_oopClosure, _cm->nextMarkBitMap(), false);
+    _markStack->drain(_oopClosure, _cm->nextMarkBitMap(), false);
   }
 };
 
@@ -2494,7 +2506,7 @@
       _out->print_cr(" "PTR_FORMAT"%s",
                      o, (over_tams) ? " >" : (marked) ? " M" : "");
       PrintReachableOopClosure oopCl(_out, _vo, _all);
-      o->oop_iterate(&oopCl);
+      o->oop_iterate_no_header(&oopCl);
     }
   }
 };
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -382,8 +382,16 @@
   // If the fist object's end q is at the card boundary. Start refining
   // with the corresponding card (the value of the entry will be basically
   // set to 0). If the object crosses the boundary -- start from the next card.
+  size_t n_index = _array->index_for(n);
   size_t next_index = _array->index_for(n) + !_array->is_card_boundary(n);
-  HeapWord* next_boundary = _array->address_for_index(next_index);
+  // Calculate a consistent next boundary.  If "n" is not at the boundary
+  // already, step to the boundary.
+  HeapWord* next_boundary = _array->address_for_index(n_index) +
+                            (n_index == next_index ? 0 : N_words);
+  assert(next_boundary <= _array->_end,
+         err_msg("next_boundary is beyond the end of the covered region "
+                 " next_boundary " PTR_FORMAT " _array->_end " PTR_FORMAT,
+                 next_boundary, _array->_end));
   if (csp() != NULL) {
     if (addr >= csp()->top()) return csp()->top();
     while (next_boundary < addr) {
--- a/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1BlockOffsetTable.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -61,7 +61,10 @@
   assert(index < _vs.committed_size(), "bad index");
   HeapWord* result = _reserved.start() + (index << LogN_words);
   assert(result >= _reserved.start() && result < _reserved.end(),
-         "bad address from index");
+         err_msg("bad address from index result " PTR_FORMAT
+                 " _reserved.start() " PTR_FORMAT " _reserved.end() "
+                 PTR_FORMAT,
+                 result, _reserved.start(), _reserved.end()));
   return result;
 }
 
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -463,7 +463,8 @@
   G1CollectorPolicy* g1p = g1h->g1_policy();
   HeapRegion* hr = heap_region_containing(p);
   if (hr == NULL) {
-     // perm gen (or null)
+     // null
+     assert(p == NULL, err_msg("Not NULL " PTR_FORMAT ,p));
      return false;
   } else {
     return !hr->isHumongous();
@@ -1285,6 +1286,8 @@
 
   print_heap_before_gc();
 
+  size_t metadata_prev_used = MetaspaceAux::used_in_bytes();
+
   HRSPhaseSetter x(HRSPhaseFullGC);
   verify_region_sets_optional();
 
@@ -1402,6 +1405,9 @@
     assert(!ref_processor_stw()->discovery_enabled(), "Postcondition");
     ref_processor_stw()->verify_no_references_recorded();
 
+    // Delete metaspaces for unloaded class loaders and clean up loader_data graph
+    ClassLoaderDataGraph::purge();
+
     // Note: since we've just done a full GC, concurrent
     // marking is no longer active. Therefore we need not
     // re-enable reference discovery for the CM ref processor.
@@ -1475,8 +1481,7 @@
     }
 
     if (true) { // FIXME
-      // Ask the permanent generation to adjust size for full collections
-      perm()->compute_new_size();
+      MetaspaceGC::compute_new_size();
     }
 
     // Start a new incremental collection set for the next pause
@@ -1990,8 +1995,6 @@
   _cg1r = new ConcurrentG1Refine();
 
   // Reserve the maximum.
-  PermanentGenerationSpec* pgs = collector_policy()->permanent_generation();
-  // Includes the perm-gen.
 
   // When compressed oops are enabled, the preferred heap base
   // is calculated by subtracting the requested size from the
@@ -2005,44 +2008,11 @@
   // compressed oops mode.
 
   // Since max_byte_size is aligned to the size of a heap region (checked
-  // above), we also need to align the perm gen size as it might not be.
-  const size_t total_reserved = max_byte_size +
-                                align_size_up(pgs->max_size(), HeapRegion::GrainBytes);
-  Universe::check_alignment(total_reserved, HeapRegion::GrainBytes, "g1 heap and perm");
-
-  char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
-
-  ReservedHeapSpace heap_rs(total_reserved, HeapRegion::GrainBytes,
-                            UseLargePages, addr);
-
-  if (UseCompressedOops) {
-    if (addr != NULL && !heap_rs.is_reserved()) {
-      // Failed to reserve at specified address - the requested memory
-      // region is taken already, for example, by 'java' launcher.
-      // Try again to reserver heap higher.
-      addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
-
-      ReservedHeapSpace heap_rs0(total_reserved, HeapRegion::GrainBytes,
-                                 UseLargePages, addr);
-
-      if (addr != NULL && !heap_rs0.is_reserved()) {
-        // Failed to reserve at specified address again - give up.
-        addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
-        assert(addr == NULL, "");
-
-        ReservedHeapSpace heap_rs1(total_reserved, HeapRegion::GrainBytes,
-                                   UseLargePages, addr);
-        heap_rs = heap_rs1;
-      } else {
-        heap_rs = heap_rs0;
-      }
-    }
-  }
-
-  if (!heap_rs.is_reserved()) {
-    vm_exit_during_initialization("Could not reserve enough space for object heap");
-    return JNI_ENOMEM;
-  }
+  // above).
+  Universe::check_alignment(max_byte_size, HeapRegion::GrainBytes, "g1 heap");
+
+  ReservedSpace heap_rs = Universe::reserve_heap(max_byte_size,
+                                                 HeapRegion::GrainBytes);
 
   // It is important to do this in a way such that concurrent readers can't
   // temporarily think somethings in the heap.  (I've actually seen this
@@ -2076,9 +2046,6 @@
   ReservedSpace g1_rs   = heap_rs.first_part(max_byte_size);
   _g1_reserved = MemRegion((HeapWord*)g1_rs.base(),
                            g1_rs.size()/HeapWordSize);
-  ReservedSpace perm_gen_rs = heap_rs.last_part(max_byte_size);
-
-  _perm_gen = pgs->init(perm_gen_rs, pgs->init_size(), rem_set());
 
   _g1_storage.initialize(g1_rs, 0);
   _g1_committed = MemRegion((HeapWord*)_g1_storage.low(), (size_t) 0);
@@ -2492,21 +2459,6 @@
   FullGCCount_lock->notify_all();
 }
 
-void G1CollectedHeap::collect_as_vm_thread(GCCause::Cause cause) {
-  assert_at_safepoint(true /* should_be_vm_thread */);
-  GCCauseSetter gcs(this, cause);
-  switch (cause) {
-    case GCCause::_heap_inspection:
-    case GCCause::_heap_dump: {
-      HandleMark hm;
-      do_full_collection(false);         // don't clear all soft refs
-      break;
-    }
-    default: // XXX FIX ME
-      ShouldNotReachHere(); // Unexpected use of this function
-  }
-}
-
 void G1CollectedHeap::collect(GCCause::Cause cause) {
   assert_heap_not_locked();
 
@@ -2580,7 +2532,7 @@
     HeapRegion* hr = heap_region_containing_raw(p);
     return hr->is_in(p);
   } else {
-    return _perm_gen->as_gen()->is_in(p);
+    return false;
   }
 }
 
@@ -2591,9 +2543,9 @@
 
 class IterateOopClosureRegionClosure: public HeapRegionClosure {
   MemRegion _mr;
-  OopClosure* _cl;
+  ExtendedOopClosure* _cl;
 public:
-  IterateOopClosureRegionClosure(MemRegion mr, OopClosure* cl)
+  IterateOopClosureRegionClosure(MemRegion mr, ExtendedOopClosure* cl)
     : _mr(mr), _cl(cl) {}
   bool doHeapRegion(HeapRegion* r) {
     if (!r->continuesHumongous()) {
@@ -2603,20 +2555,14 @@
   }
 };
 
-void G1CollectedHeap::oop_iterate(OopClosure* cl, bool do_perm) {
+void G1CollectedHeap::oop_iterate(ExtendedOopClosure* cl) {
   IterateOopClosureRegionClosure blk(_g1_committed, cl);
   heap_region_iterate(&blk);
-  if (do_perm) {
-    perm_gen()->oop_iterate(cl);
-  }
-}
-
-void G1CollectedHeap::oop_iterate(MemRegion mr, OopClosure* cl, bool do_perm) {
+}
+
+void G1CollectedHeap::oop_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   IterateOopClosureRegionClosure blk(mr, cl);
   heap_region_iterate(&blk);
-  if (do_perm) {
-    perm_gen()->oop_iterate(cl);
-  }
 }
 
 // Iterates an ObjectClosure over all objects within a HeapRegion.
@@ -2633,12 +2579,9 @@
   }
 };
 
-void G1CollectedHeap::object_iterate(ObjectClosure* cl, bool do_perm) {
+void G1CollectedHeap::object_iterate(ObjectClosure* cl) {
   IterateObjectClosureRegionClosure blk(cl);
   heap_region_iterate(&blk);
-  if (do_perm) {
-    perm_gen()->object_iterate(cl);
-  }
 }
 
 void G1CollectedHeap::object_iterate_since_last_GC(ObjectClosure* cl) {
@@ -2983,8 +2926,6 @@
 
 Space* G1CollectedHeap::space_containing(const void* addr) const {
   Space* res = heap_region_containing(addr);
-  if (res == NULL)
-    res = perm_gen()->space_containing(addr);
   return res;
 }
 
@@ -3139,7 +3080,7 @@
         guarantee(!_g1h->is_obj_dead(o), "mark word and concurrent mark mismatch");
       }
 
-      o->oop_iterate(&isLive);
+      o->oop_iterate_no_header(&isLive);
       if (!_hr->obj_allocated_since_prev_marking(o)) {
         size_t obj_size = o->size();    // Make sure we don't overflow
         _live_bytes += (obj_size * HeapWordSize);
@@ -3226,6 +3167,38 @@
   }
 };
 
+class YoungRefCounterClosure : public OopClosure {
+  G1CollectedHeap* _g1h;
+  int              _count;
+ public:
+  YoungRefCounterClosure(G1CollectedHeap* g1h) : _g1h(g1h), _count(0) {}
+  void do_oop(oop* p)       { if (_g1h->is_in_young(*p)) { _count++; } }
+  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
+
+  int count() { return _count; }
+  void reset_count() { _count = 0; };
+};
+
+class VerifyKlassClosure: public KlassClosure {
+  YoungRefCounterClosure _young_ref_counter_closure;
+  OopClosure *_oop_closure;
+ public:
+  VerifyKlassClosure(G1CollectedHeap* g1h, OopClosure* cl) : _young_ref_counter_closure(g1h), _oop_closure(cl) {}
+  void do_klass(Klass* k) {
+    k->oops_do(_oop_closure);
+
+    _young_ref_counter_closure.reset_count();
+    k->oops_do(&_young_ref_counter_closure);
+    if (_young_ref_counter_closure.count() > 0) {
+      guarantee(k->has_modified_oops(), err_msg("Klass %p, has young refs but is not dirty.", k));
+    }
+  }
+};
+
+// TODO: VerifyRootsClosure extends OopsInGenClosure so that we can
+//       pass it as the perm_blk to SharedHeap::process_strong_roots.
+//       When process_strong_roots stop calling perm_blk->younger_refs_iterate
+//       we can change this closure to extend the simpler OopClosure.
 class VerifyRootsClosure: public OopsInGenClosure {
 private:
   G1CollectedHeap* _g1h;
@@ -3303,39 +3276,31 @@
 void G1CollectedHeap::verify(bool silent,
                              VerifyOption vo) {
   if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
-    if (!silent) { gclog_or_tty->print("Roots (excluding permgen) "); }
+    if (!silent) { gclog_or_tty->print("Roots "); }
     VerifyRootsClosure rootsCl(vo);
 
     assert(Thread::current()->is_VM_thread(),
       "Expected to be executed serially by the VM thread at this point");
 
     CodeBlobToOopClosure blobsCl(&rootsCl, /*do_marking=*/ false);
+    VerifyKlassClosure klassCl(this, &rootsCl);
 
     // We apply the relevant closures to all the oops in the
     // system dictionary, the string table and the code cache.
     const int so = SO_AllClasses | SO_Strings | SO_CodeCache;
 
+    // Need cleared claim bits for the strong roots processing
+    ClassLoaderDataGraph::clear_claimed_marks();
+
     process_strong_roots(true,      // activate StrongRootsScope
-                         true,      // we set "collecting perm gen" to true,
-                                    // so we don't reset the dirty cards in the perm gen.
+                         false,     // we set "is scavenging" to false,
+                                    // so we don't reset the dirty cards.
                          ScanningOption(so),  // roots scanning options
                          &rootsCl,
                          &blobsCl,
-                         &rootsCl);
-
-    // If we're verifying after the marking phase of a Full GC then we can't
-    // treat the perm gen as roots into the G1 heap. Some of the objects in
-    // the perm gen may be dead and hence not marked. If one of these dead
-    // objects is considered to be a root then we may end up with a false
-    // "Root location <x> points to dead ob <y>" failure.
-    if (vo != VerifyOption_G1UseMarkWord) {
-      // Since we used "collecting_perm_gen" == true above, we will not have
-      // checked the refs from perm into the G1-collected heap. We check those
-      // references explicitly below. Whether the relevant cards are dirty
-      // is checked further below in the rem set verification.
-      if (!silent) { gclog_or_tty->print("Permgen roots "); }
-      perm_gen()->oop_iterate(&rootsCl);
-    }
+                         &klassCl
+                         );
+
     bool failures = rootsCl.failures();
 
     if (vo != VerifyOption_G1UseMarkWord) {
@@ -3431,7 +3396,6 @@
   st->print("%u survivors (" SIZE_FORMAT "K)", survivor_regions,
             (size_t) survivor_regions * HeapRegion::GrainBytes / K);
   st->cr();
-  perm()->as_gen()->print_on(st);
 }
 
 void G1CollectedHeap::print_extended_on(outputStream* st) const {
@@ -3849,7 +3813,6 @@
         if (g1_policy()->during_initial_mark_pause()) {
           concurrent_mark()->checkpointRootsInitialPre();
         }
-        perm_gen()->save_marks();
 
 #if YOUNG_LIST_VERBOSE
         gclog_or_tty->print_cr("\nBefore choosing collection set.\nYoung_list:");
@@ -4642,6 +4605,13 @@
   return obj;
 }
 
+template <class T>
+void G1ParCopyHelper::do_klass_barrier(T* p, oop new_obj) {
+  if (_g1->heap_region_containing_raw(new_obj)->is_young()) {
+    _scanned_klass->record_modified_oops();
+  }
+}
+
 template <bool do_gen_barrier, G1Barrier barrier, bool do_mark_object>
 template <class T>
 void G1ParCopyClosure<do_gen_barrier, barrier, do_mark_object>
@@ -4671,6 +4641,8 @@
     // When scanning the RS, we only care about objs in CS.
     if (barrier == G1BarrierRS) {
       _par_scan_state->update_rs(_from, p, _worker_id);
+    } else if (barrier == G1BarrierKlass) {
+      do_klass_barrier(p, forwardee);
     }
   } else {
     // The object is not in collection set. If we're a root scanning
@@ -4799,6 +4771,32 @@
   pss->retire_alloc_buffers();
 }
 
+class G1KlassScanClosure : public KlassClosure {
+ G1ParCopyHelper* _closure;
+ bool             _process_only_dirty;
+ int              _count;
+ public:
+  G1KlassScanClosure(G1ParCopyHelper* closure, bool process_only_dirty)
+      : _process_only_dirty(process_only_dirty), _closure(closure), _count(0) {}
+  void do_klass(Klass* klass) {
+    // If the klass has not been dirtied we know that there's
+    // no references into  the young gen and we can skip it.
+   if (!_process_only_dirty || klass->has_modified_oops()) {
+      // Clean the klass since we're going to scavenge all the metadata.
+      klass->clear_modified_oops();
+
+      // Tell the closure that this klass is the Klass to scavenge
+      // and is the one to dirty if oops are left pointing into the young gen.
+      _closure->set_scanned_klass(klass);
+
+      klass->oops_do(_closure);
+
+      _closure->set_scanned_klass(NULL);
+    }
+    _count++;
+  }
+};
+
 class G1ParTask : public AbstractGangTask {
 protected:
   G1CollectedHeap*       _g1h;
@@ -4866,28 +4864,34 @@
       pss.set_partial_scan_closure(&partial_scan_cl);
 
       G1ParScanExtRootClosure        only_scan_root_cl(_g1h, &pss, rp);
-      G1ParScanPermClosure           only_scan_perm_cl(_g1h, &pss, rp);
+      G1ParScanMetadataClosure       only_scan_metadata_cl(_g1h, &pss, rp);
 
       G1ParScanAndMarkExtRootClosure scan_mark_root_cl(_g1h, &pss, rp);
-      G1ParScanAndMarkPermClosure    scan_mark_perm_cl(_g1h, &pss, rp);
+      G1ParScanAndMarkMetadataClosure scan_mark_metadata_cl(_g1h, &pss, rp);
+
+      bool only_young                 = _g1h->g1_policy()->gcs_are_young();
+      G1KlassScanClosure              scan_mark_klasses_cl_s(&scan_mark_metadata_cl, false);
+      G1KlassScanClosure              only_scan_klasses_cl_s(&only_scan_metadata_cl, only_young);
 
       OopClosure*                    scan_root_cl = &only_scan_root_cl;
-      OopsInHeapRegionClosure*       scan_perm_cl = &only_scan_perm_cl;
+      G1KlassScanClosure*            scan_klasses_cl = &only_scan_klasses_cl_s;
 
       if (_g1h->g1_policy()->during_initial_mark_pause()) {
         // We also need to mark copied objects.
         scan_root_cl = &scan_mark_root_cl;
-        scan_perm_cl = &scan_mark_perm_cl;
+        scan_klasses_cl = &scan_mark_klasses_cl_s;
       }
 
       G1ParPushHeapRSClosure          push_heap_rs_cl(_g1h, &pss);
 
+      int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache;
+
       pss.start_strong_roots();
-      _g1h->g1_process_strong_roots(/* not collecting perm */ false,
-                                    SharedHeap::SO_AllClasses,
+      _g1h->g1_process_strong_roots(/* is scavenging */ true,
+                                    SharedHeap::ScanningOption(so),
                                     scan_root_cl,
                                     &push_heap_rs_cl,
-                                    scan_perm_cl,
+                                    scan_klasses_cl,
                                     worker_id);
       pss.end_strong_roots();
 
@@ -4987,30 +4991,29 @@
 
 void
 G1CollectedHeap::
-g1_process_strong_roots(bool collecting_perm_gen,
+g1_process_strong_roots(bool is_scavenging,
                         ScanningOption so,
                         OopClosure* scan_non_heap_roots,
                         OopsInHeapRegionClosure* scan_rs,
-                        OopsInGenClosure* scan_perm,
+                        G1KlassScanClosure* scan_klasses,
                         int worker_i) {
 
-  // First scan the strong roots, including the perm gen.
+  // First scan the strong roots
   double ext_roots_start = os::elapsedTime();
   double closure_app_time_sec = 0.0;
 
   BufferingOopClosure buf_scan_non_heap_roots(scan_non_heap_roots);
-  BufferingOopsInGenClosure buf_scan_perm(scan_perm);
-  buf_scan_perm.set_generation(perm_gen());
 
   // Walk the code cache w/o buffering, because StarTask cannot handle
   // unaligned oop locations.
   G1FilteredCodeBlobToOopClosure eager_scan_code_roots(this, scan_non_heap_roots);
 
   process_strong_roots(false, // no scoping; this is parallel code
-                       collecting_perm_gen, so,
+                       is_scavenging, so,
                        &buf_scan_non_heap_roots,
                        &eager_scan_code_roots,
-                       &buf_scan_perm);
+                       scan_klasses
+                       );
 
   // Now the CM ref_processor roots.
   if (!_process_strong_tasks->is_task_claimed(G1H_PS_refProcessor_oops_do)) {
@@ -5023,10 +5026,9 @@
 
   // Finish up any enqueued closure apps (attributed as object copy time).
   buf_scan_non_heap_roots.done();
-  buf_scan_perm.done();
-
-  double obj_copy_time_sec = buf_scan_perm.closure_app_seconds() +
-                                buf_scan_non_heap_roots.closure_app_seconds();
+
+  double obj_copy_time_sec = buf_scan_non_heap_roots.closure_app_seconds();
+
   g1_policy()->phase_times()->record_obj_copy_time(worker_i, obj_copy_time_sec * 1000.0);
 
   double ext_root_time_ms =
@@ -5053,7 +5055,6 @@
   if (scan_rs != NULL) {
     g1_rem_set()->oops_into_collection_set_do(scan_rs, worker_i);
   }
-
   _process_strong_tasks->all_tasks_completed();
 }
 
@@ -5113,17 +5114,17 @@
 class G1CopyingKeepAliveClosure: public OopClosure {
   G1CollectedHeap*         _g1h;
   OopClosure*              _copy_non_heap_obj_cl;
-  OopsInHeapRegionClosure* _copy_perm_obj_cl;
+  OopsInHeapRegionClosure* _copy_metadata_obj_cl;
   G1ParScanThreadState*    _par_scan_state;
 
 public:
   G1CopyingKeepAliveClosure(G1CollectedHeap* g1h,
                             OopClosure* non_heap_obj_cl,
-                            OopsInHeapRegionClosure* perm_obj_cl,
+                            OopsInHeapRegionClosure* metadata_obj_cl,
                             G1ParScanThreadState* pss):
     _g1h(g1h),
     _copy_non_heap_obj_cl(non_heap_obj_cl),
-    _copy_perm_obj_cl(perm_obj_cl),
+    _copy_metadata_obj_cl(metadata_obj_cl),
     _par_scan_state(pss)
   {}
 
@@ -5148,22 +5149,20 @@
       // phase of reference processing) the object and it's followers
       // will be copied, the reference field set to point to the
       // new location, and the RSet updated. Otherwise we need to
-      // use the the non-heap or perm closures directly to copy
+      // use the the non-heap or metadata closures directly to copy
       // the refernt object and update the pointer, while avoiding
       // updating the RSet.
 
       if (_g1h->is_in_g1_reserved(p)) {
         _par_scan_state->push_on_queue(p);
       } else {
-        // The reference field is not in the G1 heap.
-        if (_g1h->perm_gen()->is_in(p)) {
-          _copy_perm_obj_cl->do_oop(p);
-        } else {
+        assert(!ClassLoaderDataGraph::contains((address)p),
+               err_msg("Otherwise need to call _copy_metadata_obj_cl->do_oop(p) "
+                              PTR_FORMAT, p));
           _copy_non_heap_obj_cl->do_oop(p);
         }
       }
     }
-  }
 };
 
 // Serial drain queue closure. Called as the 'complete_gc'
@@ -5258,22 +5257,22 @@
     pss.set_partial_scan_closure(&partial_scan_cl);
 
     G1ParScanExtRootClosure        only_copy_non_heap_cl(_g1h, &pss, NULL);
-    G1ParScanPermClosure           only_copy_perm_cl(_g1h, &pss, NULL);
+    G1ParScanMetadataClosure       only_copy_metadata_cl(_g1h, &pss, NULL);
 
     G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, &pss, NULL);
-    G1ParScanAndMarkPermClosure    copy_mark_perm_cl(_g1h, &pss, NULL);
+    G1ParScanAndMarkMetadataClosure copy_mark_metadata_cl(_g1h, &pss, NULL);
 
     OopClosure*                    copy_non_heap_cl = &only_copy_non_heap_cl;
-    OopsInHeapRegionClosure*       copy_perm_cl = &only_copy_perm_cl;
+    OopsInHeapRegionClosure*       copy_metadata_cl = &only_copy_metadata_cl;
 
     if (_g1h->g1_policy()->during_initial_mark_pause()) {
       // We also need to mark copied objects.
       copy_non_heap_cl = &copy_mark_non_heap_cl;
-      copy_perm_cl = &copy_mark_perm_cl;
+      copy_metadata_cl = &copy_mark_metadata_cl;
     }
 
     // Keep alive closure.
-    G1CopyingKeepAliveClosure keep_alive(_g1h, copy_non_heap_cl, copy_perm_cl, &pss);
+    G1CopyingKeepAliveClosure keep_alive(_g1h, copy_non_heap_cl, copy_metadata_cl, &pss);
 
     // Complete GC closure
     G1ParEvacuateFollowersClosure drain_queue(_g1h, &pss, _task_queues, _terminator);
@@ -5372,18 +5371,18 @@
 
 
     G1ParScanExtRootClosure        only_copy_non_heap_cl(_g1h, &pss, NULL);
-    G1ParScanPermClosure           only_copy_perm_cl(_g1h, &pss, NULL);
+    G1ParScanMetadataClosure       only_copy_metadata_cl(_g1h, &pss, NULL);
 
     G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(_g1h, &pss, NULL);
-    G1ParScanAndMarkPermClosure    copy_mark_perm_cl(_g1h, &pss, NULL);
+    G1ParScanAndMarkMetadataClosure copy_mark_metadata_cl(_g1h, &pss, NULL);
 
     OopClosure*                    copy_non_heap_cl = &only_copy_non_heap_cl;
-    OopsInHeapRegionClosure*       copy_perm_cl = &only_copy_perm_cl;
+    OopsInHeapRegionClosure*       copy_metadata_cl = &only_copy_metadata_cl;
 
     if (_g1h->g1_policy()->during_initial_mark_pause()) {
       // We also need to mark copied objects.
       copy_non_heap_cl = &copy_mark_non_heap_cl;
-      copy_perm_cl = &copy_mark_perm_cl;
+      copy_metadata_cl = &copy_mark_metadata_cl;
     }
 
     // Is alive closure
@@ -5391,7 +5390,7 @@
 
     // Copying keep alive closure. Applied to referent objects that need
     // to be copied.
-    G1CopyingKeepAliveClosure keep_alive(_g1h, copy_non_heap_cl, copy_perm_cl, &pss);
+    G1CopyingKeepAliveClosure keep_alive(_g1h, copy_non_heap_cl, copy_metadata_cl, &pss);
 
     ReferenceProcessor* rp = _g1h->ref_processor_cm();
 
@@ -5502,22 +5501,22 @@
   assert(pss.refs()->is_empty(), "pre-condition");
 
   G1ParScanExtRootClosure        only_copy_non_heap_cl(this, &pss, NULL);
-  G1ParScanPermClosure           only_copy_perm_cl(this, &pss, NULL);
+  G1ParScanMetadataClosure       only_copy_metadata_cl(this, &pss, NULL);
 
   G1ParScanAndMarkExtRootClosure copy_mark_non_heap_cl(this, &pss, NULL);
-  G1ParScanAndMarkPermClosure    copy_mark_perm_cl(this, &pss, NULL);
+  G1ParScanAndMarkMetadataClosure copy_mark_metadata_cl(this, &pss, NULL);
 
   OopClosure*                    copy_non_heap_cl = &only_copy_non_heap_cl;
-  OopsInHeapRegionClosure*       copy_perm_cl = &only_copy_perm_cl;
+  OopsInHeapRegionClosure*       copy_metadata_cl = &only_copy_metadata_cl;
 
   if (_g1h->g1_policy()->during_initial_mark_pause()) {
     // We also need to mark copied objects.
     copy_non_heap_cl = &copy_mark_non_heap_cl;
-    copy_perm_cl = &copy_mark_perm_cl;
+    copy_metadata_cl = &copy_mark_metadata_cl;
   }
 
   // Keep alive closure.
-  G1CopyingKeepAliveClosure keep_alive(this, copy_non_heap_cl, copy_perm_cl, &pss);
+  G1CopyingKeepAliveClosure keep_alive(this, copy_non_heap_cl, copy_metadata_cl, &pss);
 
   // Serial Complete GC closure
   G1STWDrainQueueClosure drain_queue(this, &pss);
@@ -6241,7 +6240,7 @@
 bool G1CollectedHeap::is_in_closed_subset(const void* p) const {
   HeapRegion* hr = heap_region_containing(p);
   if (hr == NULL) {
-    return is_in_permanent(p);
+    return false;
   } else {
     return hr->is_in(p);
   }
--- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -45,9 +45,9 @@
 
 class HeapRegion;
 class HRRSCleanupTask;
-class PermanentGenerationSpec;
 class GenerationSpec;
 class OopsInHeapRegionClosure;
+class G1KlassScanClosure;
 class G1ScanHeapEvacClosure;
 class ObjectClosure;
 class SpaceClosure;
@@ -190,7 +190,6 @@
 
 class G1CollectedHeap : public SharedHeap {
   friend class VM_G1CollectForAllocation;
-  friend class VM_GenCollectForPermanentAllocation;
   friend class VM_G1CollectFull;
   friend class VM_G1IncCollectionPause;
   friend class VMStructs;
@@ -225,7 +224,7 @@
 
   static size_t _humongous_object_threshold_in_words;
 
-  // Storage for the G1 heap (excludes the permanent generation).
+  // Storage for the G1 heap.
   VirtualSpace _g1_storage;
   MemRegion    _g1_reserved;
 
@@ -630,7 +629,7 @@
 
   // Callback from VM_G1CollectFull operation.
   // Perform a full collection.
-  void do_full_collection(bool clear_all_soft_refs);
+  virtual void do_full_collection(bool clear_all_soft_refs);
 
   // Resize the heap if necessary after a full collection.  If this is
   // after a collect-for allocation, "word_size" is the allocation size,
@@ -805,17 +804,17 @@
 
   // Applies "scan_non_heap_roots" to roots outside the heap,
   // "scan_rs" to roots inside the heap (having done "set_region" to
-  // indicate the region in which the root resides), and does "scan_perm"
-  // (setting the generation to the perm generation.)  If "scan_rs" is
+  // indicate the region in which the root resides),
+  // and does "scan_metadata" If "scan_rs" is
   // NULL, then this step is skipped.  The "worker_i"
   // param is for use with parallel roots processing, and should be
   // the "i" of the calling parallel worker thread's work(i) function.
   // In the sequential case this param will be ignored.
-  void g1_process_strong_roots(bool collecting_perm_gen,
+  void g1_process_strong_roots(bool is_scavenging,
                                ScanningOption so,
                                OopClosure* scan_non_heap_roots,
                                OopsInHeapRegionClosure* scan_rs,
-                               OopsInGenClosure* scan_perm,
+                               G1KlassScanClosure* scan_klasses,
                                int worker_i);
 
   // Apply "blk" to all the weak roots of the system.  These include
@@ -1071,7 +1070,7 @@
   G1CollectedHeap(G1CollectorPolicy* policy);
 
   // Initialize the G1CollectedHeap to have the initial and
-  // maximum sizes, permanent generation, and remembered and barrier sets
+  // maximum sizes and remembered and barrier sets
   // specified by the policy object.
   jint initialize();
 
@@ -1100,6 +1099,8 @@
   // The current policy object for the collector.
   G1CollectorPolicy* g1_policy() const { return _g1_policy; }
 
+  virtual CollectorPolicy* collector_policy() const { return (CollectorPolicy*) g1_policy(); }
+
   // Adaptive size policy.  No such thing for g1.
   virtual AdaptiveSizePolicy* size_policy() { return NULL; }
 
@@ -1278,12 +1279,6 @@
   // The same as above but assume that the caller holds the Heap_lock.
   void collect_locked(GCCause::Cause cause);
 
-  // This interface assumes that it's being called by the
-  // vm thread. It collects the heap assuming that the
-  // heap lock is already held and that we are executing in
-  // the context of the vm thread.
-  virtual void collect_as_vm_thread(GCCause::Cause cause);
-
   // True iff a evacuation has failed in the most-recent collection.
   bool evacuation_failed() { return _evacuation_failed; }
 
@@ -1317,7 +1312,7 @@
   inline bool obj_in_cs(oop obj);
 
   // Return "TRUE" iff the given object address is in the reserved
-  // region of g1 (excluding the permanent generation).
+  // region of g1.
   bool is_in_g1_reserved(const void* p) const {
     return _g1_reserved.contains(p);
   }
@@ -1344,25 +1339,17 @@
 
   // Iterate over all the ref-containing fields of all objects, calling
   // "cl.do_oop" on each.
-  virtual void oop_iterate(OopClosure* cl) {
-    oop_iterate(cl, true);
-  }
-  void oop_iterate(OopClosure* cl, bool do_perm);
+  virtual void oop_iterate(ExtendedOopClosure* cl);
 
   // Same as above, restricted to a memory region.
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl) {
-    oop_iterate(mr, cl, true);
-  }
-  void oop_iterate(MemRegion mr, OopClosure* cl, bool do_perm);
+  void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
 
   // Iterate over all objects, calling "cl.do_object" on each.
-  virtual void object_iterate(ObjectClosure* cl) {
-    object_iterate(cl, true);
-  }
+  virtual void object_iterate(ObjectClosure* cl);
+
   virtual void safe_object_iterate(ObjectClosure* cl) {
-    object_iterate(cl, true);
+    object_iterate(cl);
   }
-  void object_iterate(ObjectClosure* cl, bool do_perm);
 
   // Iterate over all objects allocated since the last collection, calling
   // "cl.do_object" on each.  The heap must have been initialized properly
@@ -1524,15 +1511,6 @@
     return is_in_young(new_obj);
   }
 
-  // Can a compiler elide a store barrier when it writes
-  // a permanent oop into the heap?  Applies when the compiler
-  // is storing x to the heap, where x->is_perm() is true.
-  virtual bool can_elide_permanent_oop_store_barriers() const {
-    // At least until perm gen collection is also G1-ified, at
-    // which point this should return false.
-    return true;
-  }
-
   // Returns "true" iff the given word_size is "very large".
   static bool isHumongous(size_t word_size) {
     // Note this has to be strictly greater-than as the TLABs
@@ -1657,15 +1635,12 @@
   // This will find the region to which the object belongs and
   // then call the region version of the same function.
 
-  // Added if it is in permanent gen it isn't dead.
   // Added if it is NULL it isn't dead.
 
   bool is_obj_dead(const oop obj) const {
     const HeapRegion* hr = heap_region_containing(obj);
     if (hr == NULL) {
-      if (Universe::heap()->is_in_permanent(obj))
-        return false;
-      else if (obj == NULL) return false;
+      if (obj == NULL) return false;
       else return true;
     }
     else return is_obj_dead(obj, hr);
@@ -1674,9 +1649,7 @@
   bool is_obj_ill(const oop obj) const {
     const HeapRegion* hr = heap_region_containing(obj);
     if (hr == NULL) {
-      if (Universe::heap()->is_in_permanent(obj))
-        return false;
-      else if (obj == NULL) return false;
+      if (obj == NULL) return false;
       else return true;
     }
     else return is_obj_ill(obj, hr);
--- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -170,7 +170,6 @@
   void initialize_all() {
     initialize_flags();
     initialize_size_info();
-    initialize_perm_generation(PermGen::MarkSweepCompact);
   }
 
   CollectionSetChooser* _collectionSetChooser;
--- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -68,15 +68,11 @@
   GenMarkSweep::_ref_processor = rp;
   rp->setup_policy(clear_all_softrefs);
 
-  // When collecting the permanent generation methodOops may be moving,
+  // When collecting the permanent generation Method*s may be moving,
   // so we either have to flush all bcp data or convert it into bci.
   CodeCache::gc_prologue();
   Threads::gc_prologue();
 
-  // Increment the invocation count for the permanent generation, since it is
-  // implicitly collected whenever we do a full mark sweep collection.
-  sh->perm_gen()->stat_record()->invocations++;
-
   bool marked_for_unloading = false;
 
   allocate_stacks();
@@ -100,10 +96,6 @@
   BiasedLocking::restore_marks();
   GenMarkSweep::deallocate_stacks();
 
-  // We must invalidate the perm-gen rs, so that it gets rebuilt.
-  GenRemSet* rs = sh->rem_set();
-  rs->invalidate(sh->perm_gen()->used_region(), true /*whole_heap*/);
-
   // "free at last gc" is calculated from these.
   // CHF: cheating for now!!!
   //  Universe::set_heap_capacity_at_last_gc(Universe::heap()->capacity());
@@ -132,12 +124,15 @@
 
   SharedHeap* sh = SharedHeap::heap();
 
-  sh->process_strong_roots(true,  // activeate StrongRootsScope
-                           true,  // Collecting permanent generation.
+  // Need cleared claim bits for the strong roots processing
+  ClassLoaderDataGraph::clear_claimed_marks();
+
+  sh->process_strong_roots(true,  // activate StrongRootsScope
+                           false, // not scavenging.
                            SharedHeap::SO_SystemClasses,
                            &GenMarkSweep::follow_root_closure,
                            &GenMarkSweep::follow_code_root_closure,
-                           &GenMarkSweep::follow_root_closure);
+                           &GenMarkSweep::follow_klass_closure);
 
   // Process reference objects found during marking
   ReferenceProcessor* rp = GenMarkSweep::ref_processor();
@@ -162,14 +157,10 @@
   GenMarkSweep::follow_stack();
 
   // Update subklass/sibling/implementor links of live klasses
-  GenMarkSweep::follow_weak_klass_links();
+  Klass::clean_weak_klass_links(&GenMarkSweep::is_alive);
   assert(GenMarkSweep::_marking_stack.is_empty(),
          "stack should be empty by now");
 
-  // Visit memoized MDO's and clear any unmarked weak refs
-  GenMarkSweep::follow_mdo_weak_refs();
-  assert(GenMarkSweep::_marking_stack.is_empty(), "just drained");
-
   // Visit interned string tables and delete unmarked oops
   StringTable::unlink(&GenMarkSweep::is_alive);
   // Clean up unreferenced symbols in symbol table.
@@ -265,19 +256,11 @@
 void G1MarkSweep::mark_sweep_phase2() {
   // Now all live objects are marked, compute the new object addresses.
 
-  // It is imperative that we traverse perm_gen LAST. If dead space is
-  // allowed a range of dead object may get overwritten by a dead int
-  // array. If perm_gen is not traversed last a klassOop may get
-  // overwritten. This is fine since it is dead, but if the class has dead
-  // instances we have to skip them, and in order to find their size we
-  // need the klassOop!
-  //
   // It is not required that we traverse spaces in the same order in
   // phase2, phase3 and phase4, but the ValidateMarkSweep live oops
   // tracking expects us to do so. See comment under phase4.
 
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  Generation* pg = g1h->perm_gen();
 
   TraceTime tm("phase 2", G1Log::fine() && Verbose, true, gclog_or_tty);
   GenMarkSweep::trace("2");
@@ -292,9 +275,6 @@
   G1PrepareCompactClosure blk(sp);
   g1h->heap_region_iterate(&blk);
   blk.update_sets();
-
-  CompactPoint perm_cp(pg, NULL, NULL);
-  pg->prepare_for_compaction(&perm_cp);
 }
 
 class G1AdjustPointersClosure: public HeapRegionClosure {
@@ -319,7 +299,6 @@
 
 void G1MarkSweep::mark_sweep_phase3() {
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  Generation* pg = g1h->perm_gen();
 
   // Adjust the pointers to reflect the new locations
   TraceTime tm("phase 3", G1Log::fine() && Verbose, true, gclog_or_tty);
@@ -327,12 +306,15 @@
 
   SharedHeap* sh = SharedHeap::heap();
 
+  // Need cleared claim bits for the strong roots processing
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   sh->process_strong_roots(true,  // activate StrongRootsScope
-                           true,  // Collecting permanent generation.
+                           false, // not scavenging.
                            SharedHeap::SO_AllClasses,
                            &GenMarkSweep::adjust_root_pointer_closure,
                            NULL,  // do not touch code cache here
-                           &GenMarkSweep::adjust_pointer_closure);
+                           &GenMarkSweep::adjust_klass_closure);
 
   assert(GenMarkSweep::ref_processor() == g1h->ref_processor_stw(), "Sanity");
   g1h->ref_processor_stw()->weak_oops_do(&GenMarkSweep::adjust_root_pointer_closure);
@@ -346,7 +328,6 @@
 
   G1AdjustPointersClosure blk;
   g1h->heap_region_iterate(&blk);
-  pg->adjust_pointers();
 }
 
 class G1SpaceCompactClosure: public HeapRegionClosure {
@@ -374,23 +355,15 @@
 void G1MarkSweep::mark_sweep_phase4() {
   // All pointers are now adjusted, move objects accordingly
 
-  // It is imperative that we traverse perm_gen first in phase4. All
-  // classes must be allocated earlier than their instances, and traversing
-  // perm_gen first makes sure that all klassOops have moved to their new
-  // location before any instance does a dispatch through it's klass!
-
   // The ValidateMarkSweep live oops tracking expects us to traverse spaces
   // in the same order in phase2, phase3 and phase4. We don't quite do that
-  // here (perm_gen first rather than last), so we tell the validate code
+  // here (code and comment not fixed for perm removal), so we tell the validate code
   // to use a higher index (saved from phase2) when verifying perm_gen.
   G1CollectedHeap* g1h = G1CollectedHeap::heap();
-  Generation* pg = g1h->perm_gen();
 
   TraceTime tm("phase 4", G1Log::fine() && Verbose, true, gclog_or_tty);
   GenMarkSweep::trace("4");
 
-  pg->compact();
-
   G1SpaceCompactClosure blk;
   g1h->heap_region_iterate(&blk);
 
--- a/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -261,6 +261,7 @@
     old_space_counters()->update_used(old_space_used());
     old_collection_counters()->update_all();
     young_collection_counters()->update_all();
+    MetaspaceCounters::update_performance_counters();
   }
 }
 
--- a/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1OopClosures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -118,8 +118,21 @@
   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
 };
 
+// Add back base class for metadata
+class G1ParCopyHelper : public G1ParClosureSuper {
+  Klass* _scanned_klass;
+
+ public:
+  G1ParCopyHelper(G1CollectedHeap* g1,  G1ParScanThreadState* par_scan_state) :
+      _scanned_klass(NULL),
+      G1ParClosureSuper(g1, par_scan_state) {}
+
+  void set_scanned_klass(Klass* k) { _scanned_klass = k; }
+  template <class T> void do_klass_barrier(T* p, oop new_obj);
+};
+
 template <bool do_gen_barrier, G1Barrier barrier, bool do_mark_object>
-class G1ParCopyClosure : public G1ParClosureSuper {
+class G1ParCopyClosure : public G1ParCopyHelper {
   G1ParScanClosure _scanner;
   template <class T> void do_oop_work(T* p);
 
@@ -140,7 +153,7 @@
   G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state,
                    ReferenceProcessor* rp) :
       _scanner(g1, par_scan_state, rp),
-      G1ParClosureSuper(g1, par_scan_state) {
+      G1ParCopyHelper(g1, par_scan_state) {
     assert(_ref_processor == NULL, "sanity");
   }
 
@@ -154,10 +167,12 @@
 };
 
 typedef G1ParCopyClosure<false, G1BarrierNone, false> G1ParScanExtRootClosure;
-typedef G1ParCopyClosure<true,  G1BarrierNone, false> G1ParScanPermClosure;
+typedef G1ParCopyClosure<false, G1BarrierKlass, false> G1ParScanMetadataClosure;
+
 
 typedef G1ParCopyClosure<false, G1BarrierNone, true> G1ParScanAndMarkExtRootClosure;
-typedef G1ParCopyClosure<true,  G1BarrierNone, true> G1ParScanAndMarkPermClosure;
+typedef G1ParCopyClosure<true,  G1BarrierNone, true> G1ParScanAndMarkClosure;
+typedef G1ParCopyClosure<false, G1BarrierKlass, true> G1ParScanAndMarkMetadataClosure;
 
 // The following closure types are no longer used but are retained
 // for historical reasons:
@@ -176,7 +191,7 @@
 
 typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacFailureClosure;
 
-class FilterIntoCSClosure: public OopClosure {
+class FilterIntoCSClosure: public ExtendedOopClosure {
   G1CollectedHeap* _g1;
   OopClosure* _oc;
   DirtyCardToOopClosure* _dcto_cl;
@@ -190,10 +205,9 @@
   virtual void do_oop(oop* p)        { do_oop_nv(p); }
   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
   bool apply_to_weak_ref_discovered_field() { return true; }
-  bool do_header() { return false; }
 };
 
-class FilterOutOfRegionClosure: public OopClosure {
+class FilterOutOfRegionClosure: public ExtendedOopClosure {
   HeapWord* _r_bottom;
   HeapWord* _r_end;
   OopClosure* _oc;
@@ -203,11 +217,10 @@
   virtual void do_oop(oop* p) { do_oop_nv(p); }
   virtual void do_oop(narrowOop* p) { do_oop_nv(p); }
   bool apply_to_weak_ref_discovered_field() { return true; }
-  bool do_header() { return false; }
 };
 
 // Closure for iterating over object fields during concurrent marking
-class G1CMOopClosure : public OopClosure {
+class G1CMOopClosure : public ExtendedOopClosure {
 private:
   G1CollectedHeap*   _g1h;
   ConcurrentMark*    _cm;
@@ -220,7 +233,7 @@
 };
 
 // Closure to scan the root regions during concurrent marking
-class G1RootRegionScanClosure : public OopClosure {
+class G1RootRegionScanClosure : public ExtendedOopClosure {
 private:
   G1CollectedHeap* _g1h;
   ConcurrentMark*  _cm;
@@ -239,7 +252,7 @@
 // during an evacuation pause) to record cards containing
 // pointers into the collection set.
 
-class G1Mux2Closure : public OopClosure {
+class G1Mux2Closure : public ExtendedOopClosure {
   OopClosure* _c1;
   OopClosure* _c2;
 public:
@@ -252,7 +265,7 @@
 // A closure that returns true if it is actually applied
 // to a reference
 
-class G1TriggerClosure : public OopClosure {
+class G1TriggerClosure : public ExtendedOopClosure {
   bool _triggered;
 public:
   G1TriggerClosure();
@@ -265,7 +278,7 @@
 // A closure which uses a triggering closure to determine
 // whether to apply an oop closure.
 
-class G1InvokeIfNotTriggeredClosure: public OopClosure {
+class G1InvokeIfNotTriggeredClosure: public ExtendedOopClosure {
   G1TriggerClosure* _trigger_cl;
   OopClosure* _oop_cl;
 public:
@@ -275,7 +288,7 @@
   virtual void do_oop(narrowOop* p)  { do_oop_nv(p); }
 };
 
-class G1UpdateRSOrPushRefOopClosure: public OopClosure {
+class G1UpdateRSOrPushRefOopClosure: public ExtendedOopClosure {
   G1CollectedHeap* _g1;
   G1RemSet* _g1_rem_set;
   HeapRegion* _from;
--- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -380,7 +380,10 @@
     assert(r != NULL, "unexpected null");
 
     // Scan oops in the card looking for references into the collection set
-    HeapWord* end   = _ct_bs->addr_for(card_ptr + 1);
+    // Don't use addr_for(card_ptr + 1) which can ask for
+    // a card beyond the heap.  This is not safe without a perm
+    // gen.
+    HeapWord* end   = start + CardTableModRefBS::card_size_in_words;
     MemRegion scanRegion(start, end);
 
     UpdateRSetImmediate update_rs_cl(_g1->g1_rem_set());
@@ -530,7 +533,10 @@
   HeapRegion* r = _g1->heap_region_containing(start);
   assert(r != NULL, "unexpected null");
 
-  HeapWord* end   = _ct_bs->addr_for(card_ptr + 1);
+  // Don't use addr_for(card_ptr + 1) which can ask for
+  // a card beyond the heap.  This is not safe without a perm
+  // gen at the upper end of the heap.
+  HeapWord* end   = start + CardTableModRefBS::card_size_in_words;
   MemRegion dirtyRegion(start, end);
 
 #if CARD_REPEAT_HISTO
@@ -622,7 +628,6 @@
   // And find the region containing it.
   HeapRegion* r = _g1->heap_region_containing(start);
   if (r == NULL) {
-    guarantee(_g1->is_in_permanent(start), "Or else where?");
     // Again no need to return that this card contains refs that
     // point into the collection set.
     return false;  // Not in the G1 heap (might be in perm, for example.)
@@ -706,9 +711,7 @@
     if (res != NULL && (res != card_ptr || defer)) {
       start = _ct_bs->addr_for(res);
       r = _g1->heap_region_containing(start);
-      if (r == NULL) {
-        assert(_g1->is_in_permanent(start), "Or else where?");
-      } else {
+      if (r != NULL) {
         // Checking whether the region we got back from the cache
         // is young here is inappropriate. The region could have been
         // freed, reallocated and tagged as young while in the cache.
--- a/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -153,7 +153,7 @@
   HeapWord* start_first() { return _start_first; }
 };
 
-class UpdateRSOopClosure: public OopClosure {
+class UpdateRSOopClosure: public ExtendedOopClosure {
   HeapRegion* _from;
   G1RemSet* _rs;
   int _worker_i;
--- a/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,7 +34,8 @@
 enum G1Barrier {
   G1BarrierNone,
   G1BarrierRS,
-  G1BarrierEvac
+  G1BarrierEvac,
+  G1BarrierKlass
 };
 
 template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_object>
--- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -40,7 +40,7 @@
 size_t HeapRegion::CardsPerRegion    = 0;
 
 HeapRegionDCTOC::HeapRegionDCTOC(G1CollectedHeap* g1,
-                                 HeapRegion* hr, OopClosure* cl,
+                                 HeapRegion* hr, ExtendedOopClosure* cl,
                                  CardTableModRefBS::PrecisionStyle precision,
                                  FilterKind fk) :
   ContiguousSpaceDCTOC(hr, cl, precision, NULL),
@@ -83,8 +83,8 @@
 
   void print_object(outputStream* out, oop obj) {
 #ifdef PRODUCT
-    klassOop k = obj->klass();
-    const char* class_name = instanceKlass::cast(k)->external_name();
+    Klass* k = obj->klass();
+    const char* class_name = InstanceKlass::cast(k)->external_name();
     out->print_cr("class name %s", class_name);
 #else // PRODUCT
     obj->print_on(out);
@@ -213,10 +213,10 @@
 void HeapRegionDCTOC::walk_mem_region_with_cl(MemRegion mr,
                                               HeapWord* bottom,
                                               HeapWord* top,
-                                              OopClosure* cl) {
+                                              ExtendedOopClosure* cl) {
   G1CollectedHeap* g1h = _g1;
   int oop_size;
-  OopClosure* cl2 = NULL;
+  ExtendedOopClosure* cl2 = NULL;
 
   FilterIntoCSClosure intoCSFilt(this, g1h, cl);
   FilterOutOfRegionClosure outOfRegionFilt(_hr, cl);
@@ -535,7 +535,7 @@
   set_saved_mark();
 }
 
-void HeapRegion::oops_in_mr_iterate(MemRegion mr, OopClosure* cl) {
+void HeapRegion::oops_in_mr_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   HeapWord* p = mr.start();
   HeapWord* e = mr.end();
   oop obj;
@@ -553,7 +553,7 @@
 SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(HeapRegion_OOP_SINCE_SAVE_MARKS_DEFN)
 
 
-void HeapRegion::oop_before_save_marks_iterate(OopClosure* cl) {
+void HeapRegion::oop_before_save_marks_iterate(ExtendedOopClosure* cl) {
   oops_in_mr_iterate(MemRegion(bottom(), saved_mark_word()), cl);
 }
 
@@ -801,10 +801,10 @@
 
     if (!g1->is_obj_dead_cond(obj, this, vo)) {
       if (obj->is_oop()) {
-        klassOop klass = obj->klass();
-        if (!klass->is_perm()) {
+        Klass* klass = obj->klass();
+        if (!klass->is_metadata()) {
           gclog_or_tty->print_cr("klass "PTR_FORMAT" of object "PTR_FORMAT" "
-                                 "not in perm", klass, obj);
+                                 "not metadata", klass, obj);
           *failures = true;
           return;
         } else if (!klass->is_klass()) {
@@ -814,7 +814,7 @@
           return;
         } else {
           vl_cl.set_containing_obj(obj);
-          obj->oop_iterate(&vl_cl);
+          obj->oop_iterate_no_header(&vl_cl);
           if (vl_cl.failures()) {
             *failures = true;
           }
--- a/src/share/vm/gc_implementation/g1/heapRegion.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/heapRegion.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -85,7 +85,7 @@
 
   void walk_mem_region_with_cl(MemRegion mr,
                                HeapWord* bottom, HeapWord* top,
-                               OopClosure* cl);
+                               ExtendedOopClosure* cl);
 
   // We don't specialize this for FilteringClosure; filtering is handled by
   // the "FilterKind" mechanism.  But we provide this to avoid a compiler
@@ -94,7 +94,7 @@
                                HeapWord* bottom, HeapWord* top,
                                FilteringClosure* cl) {
     HeapRegionDCTOC::walk_mem_region_with_cl(mr, bottom, top,
-                                                       (OopClosure*)cl);
+                                             (ExtendedOopClosure*)cl);
   }
 
   // Get the actual top of the area on which the closure will
@@ -119,7 +119,7 @@
 
 public:
   HeapRegionDCTOC(G1CollectedHeap* g1,
-                  HeapRegion* hr, OopClosure* cl,
+                  HeapRegion* hr, ExtendedOopClosure* cl,
                   CardTableModRefBS::PrecisionStyle precision,
                   FilterKind fk);
 };
@@ -231,7 +231,7 @@
 
   // Requires that the region "mr" be dense with objects, and begin and end
   // with an object.
-  void oops_in_mr_iterate(MemRegion mr, OopClosure* cl);
+  void oops_in_mr_iterate(MemRegion mr, ExtendedOopClosure* cl);
 
   // The remembered set for this region.
   // (Might want to make this "inline" later, to avoid some alloc failure
@@ -606,7 +606,7 @@
 
   // Apply "cl->do_oop" to (the addresses of) all reference fields in objects
   // allocated in the current region before the last call to "save_mark".
-  void oop_before_save_marks_iterate(OopClosure* cl);
+  void oop_before_save_marks_iterate(ExtendedOopClosure* cl);
 
   // Note the start or end of marking. This tells the heap region
   // that the collector is about to start or has finished (concurrently)
--- a/src/share/vm/gc_implementation/g1/satbQueue.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/g1/satbQueue.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -27,6 +27,7 @@
 #include "gc_implementation/g1/satbQueue.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/sharedHeap.hpp"
+#include "oops/oop.inline.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/thread.hpp"
 #include "runtime/vmThread.hpp"
--- a/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -478,7 +478,7 @@
 
 ParScanClosure::ParScanClosure(ParNewGeneration* g,
                                ParScanThreadState* par_scan_state) :
-  OopsInGenClosure(g), _par_scan_state(par_scan_state), _g(g)
+  OopsInKlassOrGenClosure(g), _par_scan_state(par_scan_state), _g(g)
 {
   assert(_g->level() == 0, "Optimized for youngest generation");
   _boundary = _g->reserved().end();
@@ -607,16 +607,22 @@
 
   par_scan_state.set_young_old_boundary(_young_old_boundary);
 
+  KlassScanClosure klass_scan_closure(&par_scan_state.to_space_root_closure(),
+                                      gch->rem_set()->klass_rem_set());
+
+  int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache;
+
   par_scan_state.start_strong_roots();
   gch->gen_process_strong_roots(_gen->level(),
                                 true,  // Process younger gens, if any,
                                        // as strong roots.
                                 false, // no scope; this is parallel code
-                                false, // not collecting perm generation.
-                                SharedHeap::SO_AllClasses,
+                                true,  // is scavenging
+                                SharedHeap::ScanningOption(so),
                                 &par_scan_state.to_space_root_closure(),
                                 true,   // walk *all* scavengable nmethods
-                                &par_scan_state.older_gen_closure());
+                                &par_scan_state.older_gen_closure(),
+                                &klass_scan_closure);
   par_scan_state.end_strong_roots();
 
   // "evacuate followers".
@@ -1191,6 +1197,16 @@
   }
   assert(new_obj != NULL, "just checking");
 
+#ifndef PRODUCT
+  // This code must come after the CAS test, or it will print incorrect
+  // information.
+  if (TraceScavenge) {
+    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
+       is_in_reserved(new_obj) ? "copying" : "tenuring",
+       new_obj->klass()->internal_name(), old, new_obj, new_obj->size());
+  }
+#endif
+
   if (forward_ptr == NULL) {
     oop obj_to_push = new_obj;
     if (par_scan_state->should_be_partially_scanned(obj_to_push, old)) {
@@ -1303,6 +1319,16 @@
   }
   assert(new_obj != NULL, "just checking");
 
+#ifndef PRODUCT
+  // This code must come after the CAS test, or it will print incorrect
+  // information.
+  if (TraceScavenge) {
+    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
+       is_in_reserved(new_obj) ? "copying" : "tenuring",
+       new_obj->klass()->internal_name(), old, new_obj, new_obj->size());
+  }
+#endif
+
   // Now attempt to install the forwarding pointer (atomically).
   // We have to copy the mark word before overwriting with forwarding
   // ptr, so we can restore it below in the copy.
@@ -1494,7 +1520,7 @@
   size_t i = 1;
   oop cur = prefix;
   while (i < objsFromOverflow && cur->klass_or_null() != NULL) {
-    i++; cur = oop(cur->klass());
+    i++; cur = cur->list_ptr_from_klass();
   }
 
   // Reattach remaining (suffix) to overflow list
@@ -1505,8 +1531,8 @@
       (void) Atomic::cmpxchg_ptr(NULL, &_overflow_list, BUSY);
     }
   } else {
-    assert(cur->klass_or_null() != BUSY, "Error");
-    oop suffix = oop(cur->klass());       // suffix will be put back on global list
+    assert(cur->klass_or_null() != (Klass*)(address)BUSY, "Error");
+    oop suffix = cur->list_ptr_from_klass();       // suffix will be put back on global list
     cur->set_klass_to_list_ptr(NULL);     // break off suffix
     // It's possible that the list is still in the empty(busy) state
     // we left it in a short while ago; in that case we may be
@@ -1527,7 +1553,7 @@
       // Find the last item of suffix list
       oop last = suffix;
       while (last->klass_or_null() != NULL) {
-        last = oop(last->klass());
+        last = last->list_ptr_from_klass();
       }
       // Atomically prepend suffix to current overflow list
       observed_overflow_list = _overflow_list;
@@ -1551,7 +1577,7 @@
   ssize_t n = 0;
   while (cur != NULL) {
     oop obj_to_push = cur->forwardee();
-    oop next        = oop(cur->klass_or_null());
+    oop next        = cur->list_ptr_from_klass();
     cur->set_klass(obj_to_push->klass());
     // This may be an array object that is self-forwarded. In that case, the list pointer
     // space, cur, is not in the Java heap, but rather in the C-heap and should be freed.
--- a/src/share/vm/gc_implementation/parNew/parOopClosures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parNew/parOopClosures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -35,7 +35,7 @@
 typedef GenericTaskQueueSet<ObjToScanQueue, mtGC> ObjToScanQueueSet;
 class ParallelTaskTerminator;
 
-class ParScanClosure: public OopsInGenClosure {
+class ParScanClosure: public OopsInKlassOrGenClosure {
  protected:
   ParScanThreadState* _par_scan_state;
   ParNewGeneration*   _g;
--- a/src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parNew/parOopClosures.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -37,13 +37,13 @@
   if ((HeapWord*)obj < _boundary && !_g->to()->is_in_reserved(obj)) {
     // we need to ensure that it is copied (see comment in
     // ParScanClosure::do_oop_work).
-    klassOop objK = obj->klass();
+    Klass* objK = obj->klass();
     markOop m = obj->mark();
     oop new_obj;
     if (m->is_marked()) { // Contains forwarding pointer.
       new_obj = ParNewGeneration::real_forwardee(obj);
     } else {
-      size_t obj_sz = obj->size_given_klass(objK->klass_part());
+      size_t obj_sz = obj->size_given_klass(objK);
       new_obj = ((ParNewGeneration*)_g)->copy_to_survivor_space(_par_scan_state,
                                                                 obj, obj_sz, m);
     }
@@ -100,14 +100,22 @@
       // forwarding pointer, then the klass is valid: the klass is only
       // overwritten with an overflow next pointer after the object is
       // forwarded.
-      klassOop objK = obj->klass();
+      Klass* objK = obj->klass();
       markOop m = obj->mark();
       oop new_obj;
       if (m->is_marked()) { // Contains forwarding pointer.
         new_obj = ParNewGeneration::real_forwardee(obj);
         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
+#ifndef PRODUCT
+        if (TraceScavenge) {
+          gclog_or_tty->print_cr("{%s %s ( " PTR_FORMAT " ) " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
+             "forwarded ",
+             new_obj->klass()->internal_name(), p, obj, new_obj, new_obj->size());
+        }
+#endif
+
       } else {
-        size_t obj_sz = obj->size_given_klass(objK->klass_part());
+        size_t obj_sz = obj->size_given_klass(objK);
         new_obj = _g->copy_to_survivor_space(_par_scan_state, obj, obj_sz, m);
         oopDesc::encode_store_heap_oop_not_null(p, new_obj);
         if (root_scan) {
@@ -117,7 +125,9 @@
           (void)_par_scan_state->trim_queues(10 * ParallelGCThreads);
         }
       }
-      if (gc_barrier) {
+      if (is_scanning_a_klass()) {
+        do_klass_barrier();
+      } else if (gc_barrier) {
         // Now call parent closure
         par_do_barrier(p);
       }
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -26,7 +26,6 @@
 #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 
 // If boundary moving is being used, create the young gen and old
 // gen with ASPSYoungGen and ASPSOldGen, respectively.  Revert to
--- a/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/adjoiningGenerations.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -28,7 +28,6 @@
 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
 #include "gc_implementation/parallelScavenge/asPSOldGen.hpp"
 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 
 
 // Contains two generations that both use an AdjoiningVirtualSpaces.
--- a/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -89,7 +89,7 @@
   // fail unless the object head is also unmarked.
   virtual void do_object(oop obj) {
     CheckForUnmarkedOops object_check(_young_gen, _card_table);
-    obj->oop_iterate(&object_check);
+    obj->oop_iterate_no_header(&object_check);
     if (object_check.has_unmarked_oop()) {
       assert(_card_table->addr_is_marked_imprecise(obj), "Found unmarked young_gen object");
     }
@@ -229,8 +229,9 @@
   int dirty_card_count = 0;
 
   oop* sp_top = (oop*)space_top;
+  oop* sp_last = sp->bottom() == space_top ? sp_top : sp_top - 1;
   jbyte* start_card = byte_for(sp->bottom());
-  jbyte* end_card   = byte_for(sp_top - 1) + 1;
+  jbyte* end_card   = byte_for(sp_last) + 1;
   oop* last_scanned = NULL; // Prevent scanning objects more than once
   // The width of the stripe ssize*stripe_total must be
   // consistent with the number of stripes so that the complete slice
@@ -406,10 +407,8 @@
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
   old_gen->object_iterate(&check);
-  perm_gen->object_iterate(&check);
 }
 
 // This should be called immediately after a scavenge, before mutators resume.
@@ -418,15 +417,12 @@
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
   CheckForPreciseMarks check(heap->young_gen(), (CardTableExtension*)heap->barrier_set());
 
-  old_gen->oop_iterate(&check);
-  perm_gen->oop_iterate(&check);
+  old_gen->oop_iterate_no_header(&check);
 
   verify_all_young_refs_precise_helper(old_gen->object_space()->used_region());
-  verify_all_young_refs_precise_helper(perm_gen->object_space()->used_region());
 }
 
 void CardTableExtension::verify_all_young_refs_precise_helper(MemRegion mr) {
--- a/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -69,8 +69,8 @@
   size_t old_gen_size()       { return _initial_gen1_size; }
   size_t max_old_gen_size()   { return _max_gen1_size; }
 
-  size_t perm_gen_size()      { return PermSize; }
-  size_t max_perm_gen_size()  { return MaxPermSize; }
+  size_t metaspace_size()      { return MetaspaceSize; }
+  size_t max_metaspace_size()  { return MaxMetaspaceSize; }
 };
 
 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_GENERATIONSIZER_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/objectStartArray.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -140,8 +140,10 @@
     }
   }
   // No object starts in this slice; verify this using
-  // more traditional methods:
-  assert(object_start(end_addr - 1) <= start_addr,
+  // more traditional methods:  Note that no object can
+  // start before the start_addr.
+  assert(end_addr == start_addr ||
+         object_start(end_addr - 1) <= start_addr,
          "Oops an object does start in this slice?");
   return false;
 }
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -45,26 +45,23 @@
 
 PSYoungGen*  ParallelScavengeHeap::_young_gen = NULL;
 PSOldGen*    ParallelScavengeHeap::_old_gen = NULL;
-PSPermGen*   ParallelScavengeHeap::_perm_gen = NULL;
 PSAdaptiveSizePolicy* ParallelScavengeHeap::_size_policy = NULL;
 PSGCAdaptivePolicyCounters* ParallelScavengeHeap::_gc_policy_counters = NULL;
 ParallelScavengeHeap* ParallelScavengeHeap::_psh = NULL;
 GCTaskManager* ParallelScavengeHeap::_gc_task_manager = NULL;
 
 static void trace_gen_sizes(const char* const str,
-                            size_t pg_min, size_t pg_max,
                             size_t og_min, size_t og_max,
                             size_t yg_min, size_t yg_max)
 {
   if (TracePageSizes) {
     tty->print_cr("%s:  " SIZE_FORMAT "," SIZE_FORMAT " "
                   SIZE_FORMAT "," SIZE_FORMAT " "
-                  SIZE_FORMAT "," SIZE_FORMAT " "
                   SIZE_FORMAT,
-                  str, pg_min / K, pg_max / K,
+                  str,
                   og_min / K, og_max / K,
                   yg_min / K, yg_max / K,
-                  (pg_max + og_max + yg_max) / K);
+                  (og_max + yg_max) / K);
   }
 }
 
@@ -79,25 +76,15 @@
   size_t yg_max_size = _collector_policy->max_young_gen_size();
   size_t og_min_size = _collector_policy->min_old_gen_size();
   size_t og_max_size = _collector_policy->max_old_gen_size();
-  // Why isn't there a min_perm_gen_size()?
-  size_t pg_min_size = _collector_policy->perm_gen_size();
-  size_t pg_max_size = _collector_policy->max_perm_gen_size();
 
   trace_gen_sizes("ps heap raw",
-                  pg_min_size, pg_max_size,
                   og_min_size, og_max_size,
                   yg_min_size, yg_max_size);
 
-  // The ReservedSpace ctor used below requires that the page size for the perm
-  // gen is <= the page size for the rest of the heap (young + old gens).
   const size_t og_page_sz = os::page_size_for_region(yg_min_size + og_min_size,
                                                      yg_max_size + og_max_size,
                                                      8);
-  const size_t pg_page_sz = MIN2(os::page_size_for_region(pg_min_size,
-                                                          pg_max_size, 16),
-                                 og_page_sz);
 
-  const size_t pg_align = set_alignment(_perm_gen_alignment,  pg_page_sz);
   const size_t og_align = set_alignment(_old_gen_alignment,   og_page_sz);
   const size_t yg_align = set_alignment(_young_gen_alignment, og_page_sz);
 
@@ -121,55 +108,20 @@
     align_size_down(_collector_policy->old_gen_size(), og_align);
   og_cur_size = MAX2(og_cur_size, og_min_size);
 
-  pg_min_size = align_size_up(pg_min_size, pg_align);
-  pg_max_size = align_size_up(pg_max_size, pg_align);
-  size_t pg_cur_size = pg_min_size;
-
   trace_gen_sizes("ps heap rnd",
-                  pg_min_size, pg_max_size,
                   og_min_size, og_max_size,
                   yg_min_size, yg_max_size);
 
-  const size_t total_reserved = pg_max_size + og_max_size + yg_max_size;
-  char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
-
-  // The main part of the heap (old gen + young gen) can often use a larger page
-  // size than is needed or wanted for the perm gen.  Use the "compound
-  // alignment" ReservedSpace ctor to avoid having to use the same page size for
-  // all gens.
-
-  ReservedHeapSpace heap_rs(pg_max_size, pg_align, og_max_size + yg_max_size,
-                            og_align, addr);
+  const size_t heap_size = og_max_size + yg_max_size;
 
-  if (UseCompressedOops) {
-    if (addr != NULL && !heap_rs.is_reserved()) {
-      // Failed to reserve at specified address - the requested memory
-      // region is taken already, for example, by 'java' launcher.
-      // Try again to reserver heap higher.
-      addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
-      ReservedHeapSpace heap_rs0(pg_max_size, pg_align, og_max_size + yg_max_size,
-                                 og_align, addr);
-      if (addr != NULL && !heap_rs0.is_reserved()) {
-        // Failed to reserve at specified address again - give up.
-        addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
-        assert(addr == NULL, "");
-        ReservedHeapSpace heap_rs1(pg_max_size, pg_align, og_max_size + yg_max_size,
-                                   og_align, addr);
-        heap_rs = heap_rs1;
-      } else {
-        heap_rs = heap_rs0;
-      }
-    }
-  }
+  ReservedSpace heap_rs = Universe::reserve_heap(heap_size, og_align);
 
   MemTracker::record_virtual_memory_type((address)heap_rs.base(), mtJavaHeap);
 
-  os::trace_page_sizes("ps perm", pg_min_size, pg_max_size, pg_page_sz,
-                       heap_rs.base(), pg_max_size);
   os::trace_page_sizes("ps main", og_min_size + yg_min_size,
                        og_max_size + yg_max_size, og_page_sz,
-                       heap_rs.base() + pg_max_size,
-                       heap_rs.size() - pg_max_size);
+                       heap_rs.base(),
+                       heap_rs.size());
   if (!heap_rs.is_reserved()) {
     vm_shutdown_during_initialization(
       "Could not reserve enough space for object heap");
@@ -194,11 +146,6 @@
   const size_t init_young_size = align_size_up(4 * M, yg_align);
   yg_cur_size = MAX2(MIN2(init_young_size, yg_max_size), yg_cur_size);
 
-  // Split the reserved space into perm gen and the main heap (everything else).
-  // The main heap uses a different alignment.
-  ReservedSpace perm_rs = heap_rs.first_part(pg_max_size);
-  ReservedSpace main_rs = heap_rs.last_part(pg_max_size, og_align);
-
   // Make up the generations
   // Calculate the maximum size that a generation can grow.  This
   // includes growth into the other generation.  Note that the
@@ -208,7 +155,7 @@
   double max_gc_pause_sec = ((double) MaxGCPauseMillis)/1000.0;
   double max_gc_minor_pause_sec = ((double) MaxGCMinorPauseMillis)/1000.0;
 
-  _gens = new AdjoiningGenerations(main_rs,
+  _gens = new AdjoiningGenerations(heap_rs,
                                    og_cur_size,
                                    og_min_size,
                                    og_max_size,
@@ -233,13 +180,6 @@
                              GCTimeRatio
                              );
 
-  _perm_gen = new PSPermGen(perm_rs,
-                            pg_align,
-                            pg_cur_size,
-                            pg_cur_size,
-                            pg_max_size,
-                            "perm", 2);
-
   assert(!UseAdaptiveGCBoundary ||
     (old_gen()->virtual_space()->high_boundary() ==
      young_gen()->virtual_space()->low_boundary()),
@@ -273,7 +213,7 @@
 void ParallelScavengeHeap::update_counters() {
   young_gen()->update_counters();
   old_gen()->update_counters();
-  perm_gen()->update_counters();
+  MetaspaceCounters::update_performance_counters();
 }
 
 size_t ParallelScavengeHeap::capacity() const {
@@ -291,17 +231,8 @@
 }
 
 
-size_t ParallelScavengeHeap::permanent_capacity() const {
-  return perm_gen()->capacity_in_bytes();
-}
-
-size_t ParallelScavengeHeap::permanent_used() const {
-  return perm_gen()->used_in_bytes();
-}
-
 size_t ParallelScavengeHeap::max_capacity() const {
   size_t estimated = reserved_region().byte_size();
-  estimated -= perm_gen()->reserved().byte_size();
   if (UseAdaptiveSizePolicy) {
     estimated -= _size_policy->max_survivor_size(young_gen()->max_size());
   } else {
@@ -319,10 +250,6 @@
     return true;
   }
 
-  if (perm_gen()->is_in(p)) {
-    return true;
-  }
-
   return false;
 }
 
@@ -335,10 +262,6 @@
     return true;
   }
 
-  if (perm_gen()->is_in_reserved(p)) {
-    return true;
-  }
-
   return false;
 }
 
@@ -352,7 +275,7 @@
 bool ParallelScavengeHeap::is_in_partial_collection(const void *p) {
   assert(is_in_reserved(p) || p == NULL,
     "Does not work if address is non-null and outside of the heap");
-  // The order of the generations is perm (low addr), old, young (high addr)
+  // The order of the generations is old (low addr), young (high addr)
   return p >= old_gen()->reserved().end();
 }
 #endif
@@ -553,6 +476,18 @@
   return NULL;
 }
 
+void ParallelScavengeHeap::do_full_collection(bool clear_all_soft_refs) {
+  if (UseParallelOldGC) {
+    // The do_full_collection() parameter clear_all_soft_refs
+    // is interpreted here as maximum_compaction which will
+    // cause SoftRefs to be cleared.
+    bool maximum_compaction = clear_all_soft_refs;
+    PSParallelCompact::invoke(maximum_compaction);
+  } else {
+    PSMarkSweep::invoke(clear_all_soft_refs);
+  }
+}
+
 // Failed allocation policy. Must be called from the VM thread, and
 // only at a safepoint! Note that this method has policy for allocation
 // flow, and NOT collection policy. So we do not check for gc collection
@@ -575,7 +510,7 @@
   // Second level allocation failure.
   //   Mark sweep and allocate in young generation.
   if (result == NULL && !invoked_full_gc) {
-    invoke_full_gc(false);
+    do_full_collection(false);
     result = young_gen()->allocate(size);
   }
 
@@ -591,7 +526,7 @@
   // Fourth level allocation failure. We're running out of memory.
   //   More complete mark sweep and allocate in young generation.
   if (result == NULL) {
-    invoke_full_gc(true);
+    do_full_collection(true);
     result = young_gen()->allocate(size);
   }
 
@@ -604,160 +539,6 @@
   return result;
 }
 
-//
-// This is the policy loop for allocating in the permanent generation.
-// If the initial allocation fails, we create a vm operation which will
-// cause a collection.
-HeapWord* ParallelScavengeHeap::permanent_mem_allocate(size_t size) {
-  assert(!SafepointSynchronize::is_at_safepoint(), "should not be at safepoint");
-  assert(Thread::current() != (Thread*)VMThread::vm_thread(), "should not be in vm thread");
-  assert(!Heap_lock->owned_by_self(), "this thread should not own the Heap_lock");
-
-  HeapWord* result;
-
-  uint loop_count = 0;
-  uint gc_count = 0;
-  uint full_gc_count = 0;
-
-  do {
-    // We don't want to have multiple collections for a single filled generation.
-    // To prevent this, each thread tracks the total_collections() value, and if
-    // the count has changed, does not do a new collection.
-    //
-    // The collection count must be read only while holding the heap lock. VM
-    // operations also hold the heap lock during collections. There is a lock
-    // contention case where thread A blocks waiting on the Heap_lock, while
-    // thread B is holding it doing a collection. When thread A gets the lock,
-    // the collection count has already changed. To prevent duplicate collections,
-    // The policy MUST attempt allocations during the same period it reads the
-    // total_collections() value!
-    {
-      MutexLocker ml(Heap_lock);
-      gc_count      = Universe::heap()->total_collections();
-      full_gc_count = Universe::heap()->total_full_collections();
-
-      result = perm_gen()->allocate_permanent(size);
-
-      if (result != NULL) {
-        return result;
-      }
-
-      if (GC_locker::is_active_and_needs_gc()) {
-        // If this thread is not in a jni critical section, we stall
-        // the requestor until the critical section has cleared and
-        // GC allowed. When the critical section clears, a GC is
-        // initiated by the last thread exiting the critical section; so
-        // we retry the allocation sequence from the beginning of the loop,
-        // rather than causing more, now probably unnecessary, GC attempts.
-        JavaThread* jthr = JavaThread::current();
-        if (!jthr->in_critical()) {
-          MutexUnlocker mul(Heap_lock);
-          GC_locker::stall_until_clear();
-          continue;
-        } else {
-          if (CheckJNICalls) {
-            fatal("Possible deadlock due to allocating while"
-                  " in jni critical section");
-          }
-          return NULL;
-        }
-      }
-    }
-
-    if (result == NULL) {
-
-      // Exit the loop if the gc time limit has been exceeded.
-      // The allocation must have failed above (result must be NULL),
-      // and the most recent collection must have exceeded the
-      // gc time limit.  Exit the loop so that an out-of-memory
-      // will be thrown (returning a NULL will do that), but
-      // clear gc_overhead_limit_exceeded so that the next collection
-      // will succeeded if the applications decides to handle the
-      // out-of-memory and tries to go on.
-      const bool limit_exceeded = size_policy()->gc_overhead_limit_exceeded();
-      if (limit_exceeded) {
-        size_policy()->set_gc_overhead_limit_exceeded(false);
-        if (PrintGCDetails && Verbose) {
-          gclog_or_tty->print_cr("ParallelScavengeHeap::permanent_mem_allocate:"
-            " return NULL because gc_overhead_limit_exceeded is set");
-        }
-        assert(result == NULL, "Allocation did not fail");
-        return NULL;
-      }
-
-      // Generate a VM operation
-      VM_ParallelGCFailedPermanentAllocation op(size, gc_count, full_gc_count);
-      VMThread::execute(&op);
-
-      // Did the VM operation execute? If so, return the result directly.
-      // This prevents us from looping until time out on requests that can
-      // not be satisfied.
-      if (op.prologue_succeeded()) {
-        assert(Universe::heap()->is_in_permanent_or_null(op.result()),
-          "result not in heap");
-        // If GC was locked out during VM operation then retry allocation
-        // and/or stall as necessary.
-        if (op.gc_locked()) {
-          assert(op.result() == NULL, "must be NULL if gc_locked() is true");
-          continue;  // retry and/or stall as necessary
-        }
-        // If a NULL results is being returned, an out-of-memory
-        // will be thrown now.  Clear the gc_overhead_limit_exceeded
-        // flag to avoid the following situation.
-        //      gc_overhead_limit_exceeded is set during a collection
-        //      the collection fails to return enough space and an OOM is thrown
-        //      a subsequent GC prematurely throws an out-of-memory because
-        //        the gc_overhead_limit_exceeded counts did not start
-        //        again from 0.
-        if (op.result() == NULL) {
-          size_policy()->reset_gc_overhead_limit_count();
-        }
-        return op.result();
-      }
-    }
-
-    // The policy object will prevent us from looping forever. If the
-    // time spent in gc crosses a threshold, we will bail out.
-    loop_count++;
-    if ((QueuedAllocationWarningCount > 0) &&
-        (loop_count % QueuedAllocationWarningCount == 0)) {
-      warning("ParallelScavengeHeap::permanent_mem_allocate retries %d times \n\t"
-              " size=%d", loop_count, size);
-    }
-  } while (result == NULL);
-
-  return result;
-}
-
-//
-// This is the policy code for permanent allocations which have failed
-// and require a collection. Note that just as in failed_mem_allocate,
-// we do not set collection policy, only where & when to allocate and
-// collect.
-HeapWord* ParallelScavengeHeap::failed_permanent_mem_allocate(size_t size) {
-  assert(SafepointSynchronize::is_at_safepoint(), "should be at safepoint");
-  assert(Thread::current() == (Thread*)VMThread::vm_thread(), "should be in vm thread");
-  assert(!Universe::heap()->is_gc_active(), "not reentrant");
-  assert(!Heap_lock->owned_by_self(), "this thread should not own the Heap_lock");
-  assert(size > perm_gen()->free_in_words(), "Allocation should fail");
-
-  // We assume (and assert!) that an allocation at this point will fail
-  // unless we collect.
-
-  // First level allocation failure.  Mark-sweep and allocate in perm gen.
-  GCCauseSetter gccs(this, GCCause::_allocation_failure);
-  invoke_full_gc(false);
-  HeapWord* result = perm_gen()->allocate_permanent(size);
-
-  // Second level allocation failure. We're running out of memory.
-  if (result == NULL) {
-    invoke_full_gc(true);
-    result = perm_gen()->allocate_permanent(size);
-  }
-
-  return result;
-}
-
 void ParallelScavengeHeap::ensure_parsability(bool retire_tlabs) {
   CollectedHeap::ensure_parsability(retire_tlabs);
   young_gen()->eden_space()->ensure_parsability();
@@ -812,44 +593,15 @@
   VMThread::execute(&op);
 }
 
-// This interface assumes that it's being called by the
-// vm thread. It collects the heap assuming that the
-// heap lock is already held and that we are executing in
-// the context of the vm thread.
-void ParallelScavengeHeap::collect_as_vm_thread(GCCause::Cause cause) {
-  assert(Thread::current()->is_VM_thread(), "Precondition#1");
-  assert(Heap_lock->is_locked(), "Precondition#2");
-  GCCauseSetter gcs(this, cause);
-  switch (cause) {
-    case GCCause::_heap_inspection:
-    case GCCause::_heap_dump: {
-      HandleMark hm;
-      invoke_full_gc(false);
-      break;
-    }
-    default: // XXX FIX ME
-      ShouldNotReachHere();
-  }
-}
-
-
-void ParallelScavengeHeap::oop_iterate(OopClosure* cl) {
+void ParallelScavengeHeap::oop_iterate(ExtendedOopClosure* cl) {
   Unimplemented();
 }
 
 void ParallelScavengeHeap::object_iterate(ObjectClosure* cl) {
   young_gen()->object_iterate(cl);
   old_gen()->object_iterate(cl);
-  perm_gen()->object_iterate(cl);
 }
 
-void ParallelScavengeHeap::permanent_oop_iterate(OopClosure* cl) {
-  Unimplemented();
-}
-
-void ParallelScavengeHeap::permanent_object_iterate(ObjectClosure* cl) {
-  perm_gen()->object_iterate(cl);
-}
 
 HeapWord* ParallelScavengeHeap::block_start(const void* addr) const {
   if (young_gen()->is_in_reserved(addr)) {
@@ -862,10 +614,6 @@
     assert(old_gen()->is_in(addr),
            "addr should be in allocated part of old gen");
     return old_gen()->start_array()->object_start((HeapWord*)addr);
-  } else if (perm_gen()->is_in_reserved(addr)) {
-    assert(perm_gen()->is_in(addr),
-           "addr should be in allocated part of perm gen");
-    return perm_gen()->start_array()->object_start((HeapWord*)addr);
   }
   return 0;
 }
@@ -891,7 +639,7 @@
 void ParallelScavengeHeap::print_on(outputStream* st) const {
   young_gen()->print_on(st);
   old_gen()->print_on(st);
-  perm_gen()->print_on(st);
+  MetaspaceAux::print_on(st);
 }
 
 void ParallelScavengeHeap::gc_threads_do(ThreadClosure* tc) const {
@@ -918,11 +666,6 @@
   // Why do we need the total_collections()-filter below?
   if (total_collections() > 0) {
     if (!silent) {
-      gclog_or_tty->print("permanent ");
-    }
-    perm_gen()->verify();
-
-    if (!silent) {
       gclog_or_tty->print("tenured ");
     }
     old_gen()->verify();
@@ -1000,7 +743,6 @@
   if (ZapUnusedHeapArea) {
     young_gen()->record_spaces_top();
     old_gen()->record_spaces_top();
-    perm_gen()->record_spaces_top();
   }
 }
 
@@ -1010,7 +752,6 @@
     young_gen()->to_space()->mangle_unused_area();
     young_gen()->from_space()->mangle_unused_area();
     old_gen()->object_space()->mangle_unused_area();
-    perm_gen()->object_space()->mangle_unused_area();
   }
 }
 #endif
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,7 +28,6 @@
 #include "gc_implementation/parallelScavenge/objectStartArray.hpp"
 #include "gc_implementation/parallelScavenge/psGCAdaptivePolicyCounters.hpp"
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
 #include "gc_implementation/shared/gcPolicyCounters.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
@@ -45,7 +44,6 @@
  private:
   static PSYoungGen* _young_gen;
   static PSOldGen*   _old_gen;
-  static PSPermGen*  _perm_gen;
 
   // Sizing policy for entire heap
   static PSAdaptiveSizePolicy* _size_policy;
@@ -53,7 +51,6 @@
 
   static ParallelScavengeHeap* _psh;
 
-  size_t _perm_gen_alignment;
   size_t _young_gen_alignment;
   size_t _old_gen_alignment;
 
@@ -79,7 +76,6 @@
  public:
   ParallelScavengeHeap() : CollectedHeap() {
     _death_march_count = 0;
-    set_alignment(_perm_gen_alignment, intra_heap_alignment());
     set_alignment(_young_gen_alignment, intra_heap_alignment());
     set_alignment(_old_gen_alignment, intra_heap_alignment());
   }
@@ -94,12 +90,10 @@
     return CollectedHeap::ParallelScavengeHeap;
   }
 
-CollectorPolicy* collector_policy() const { return (CollectorPolicy*) _collector_policy; }
-  // GenerationSizer* collector_policy() const { return _collector_policy; }
+  virtual CollectorPolicy* collector_policy() const { return (CollectorPolicy*) _collector_policy; }
 
   static PSYoungGen* young_gen()     { return _young_gen; }
   static PSOldGen* old_gen()         { return _old_gen; }
-  static PSPermGen* perm_gen()       { return _perm_gen; }
 
   virtual PSAdaptiveSizePolicy* size_policy() { return _size_policy; }
 
@@ -117,7 +111,6 @@
   void post_initialize();
   void update_counters();
   // The alignment used for the various generations.
-  size_t perm_gen_alignment()  const { return _perm_gen_alignment; }
   size_t young_gen_alignment() const { return _young_gen_alignment; }
   size_t old_gen_alignment()  const { return _old_gen_alignment; }
 
@@ -128,7 +121,7 @@
   size_t capacity() const;
   size_t used() const;
 
-  // Return "true" if all generations (but perm) have reached the
+  // Return "true" if all generations have reached the
   // maximal committed limit that they can reach, without a garbage
   // collection.
   virtual bool is_maximal_no_gc() const;
@@ -142,29 +135,19 @@
   // Does this heap support heap inspection? (+PrintClassHistogram)
   bool supports_heap_inspection() const { return true; }
 
-  size_t permanent_capacity() const;
-  size_t permanent_used() const;
-
   size_t max_capacity() const;
 
   // Whether p is in the allocated part of the heap
   bool is_in(const void* p) const;
 
   bool is_in_reserved(const void* p) const;
-  bool is_in_permanent(const void *p) const {    // reserved part
-    return perm_gen()->reserved().contains(p);
-  }
 
 #ifdef ASSERT
   virtual bool is_in_partial_collection(const void *p);
 #endif
 
-  bool is_permanent(const void *p) const {    // committed part
-    return perm_gen()->is_in(p);
-  }
-
-  inline bool is_in_young(oop p);        // reserved part
-  inline bool is_in_old_or_perm(oop p);  // reserved part
+  bool is_in_young(oop p);        // reserved part
+  bool is_in_old(oop p);          // reserved part
 
   // Memory allocation.   "gc_time_limit_was_exceeded" will
   // be set to true if the adaptive size policy determine that
@@ -179,18 +162,9 @@
   // of the old generation.
   HeapWord* failed_mem_allocate(size_t size);
 
-  HeapWord* permanent_mem_allocate(size_t size);
-  HeapWord* failed_permanent_mem_allocate(size_t size);
-
   // Support for System.gc()
   void collect(GCCause::Cause cause);
 
-  // This interface assumes that it's being called by the
-  // vm thread. It collects the heap assuming that the
-  // heap lock is already held and that we are executing in
-  // the context of the vm thread.
-  void collect_as_vm_thread(GCCause::Cause cause);
-
   // These also should be called by the vm thread at a safepoint (e.g., from a
   // VM operation).
   //
@@ -199,7 +173,9 @@
   // maximum_compaction is true, it will compact everything and clear all soft
   // references.
   inline void invoke_scavenge();
-  inline void invoke_full_gc(bool maximum_compaction);
+
+  // Perform a full collection
+  virtual void do_full_collection(bool clear_all_soft_refs);
 
   bool supports_inline_contig_alloc() const { return !UseNUMA; }
 
@@ -232,18 +208,9 @@
   // initializing stores to an object at this address.
   virtual bool can_elide_initializing_store_barrier(oop new_obj);
 
-  // Can a compiler elide a store barrier when it writes
-  // a permanent oop into the heap?  Applies when the compiler
-  // is storing x to the heap, where x->is_perm() is true.
-  virtual bool can_elide_permanent_oop_store_barriers() const {
-    return true;
-  }
-
-  void oop_iterate(OopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
   void object_iterate(ObjectClosure* cl);
   void safe_object_iterate(ObjectClosure* cl) { object_iterate(cl); }
-  void permanent_oop_iterate(OopClosure* cl);
-  void permanent_object_iterate(ObjectClosure* cl);
 
   HeapWord* block_start(const void* addr) const;
   size_t block_size(const HeapWord* addr) const;
--- a/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -47,15 +47,6 @@
   PSScavenge::invoke();
 }
 
-inline void ParallelScavengeHeap::invoke_full_gc(bool maximum_compaction)
-{
-  if (UseParallelOldGC) {
-    PSParallelCompact::invoke(maximum_compaction);
-  } else {
-    PSMarkSweep::invoke(maximum_compaction);
-  }
-}
-
 inline bool ParallelScavengeHeap::is_in_young(oop p) {
   // Assumes the the old gen address range is lower than that of the young gen.
   const void* loc = (void*) p;
@@ -64,9 +55,4 @@
         err_msg("incorrect test - result=%d, p=" PTR_FORMAT, result, (void*)p));
   return result;
 }
-
-inline bool ParallelScavengeHeap::is_in_old_or_perm(oop p) {
-  return old_gen()->is_in_reserved(p) || perm_gen()->is_in_reserved(p);
-}
-
 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PARALLELSCAVENGEHEAP_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -74,6 +74,7 @@
   ParCompactionManager* cm =
     ParCompactionManager::gc_thread_compaction_manager(which);
   PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
+  PSParallelCompact::FollowKlassClosure follow_klass_closure(&mark_and_push_closure);
 
   switch (_root_type) {
     case universe:
@@ -110,6 +111,7 @@
 
     case system_dictionary:
       SystemDictionary::always_strong_oops_do(&mark_and_push_closure);
+      ClassLoaderDataGraph::always_strong_oops_do(&mark_and_push_closure, &follow_klass_closure, true);
       break;
 
     case code_cache:
@@ -202,7 +204,7 @@
   int random_seed = 17;
   do {
     while (ParCompactionManager::steal_objarray(which, &random_seed, task)) {
-      objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();
+      objArrayKlass* const k = (objArrayKlass*)task.obj()->klass();
       k->oop_follow_contents(cm, task.obj(), task.index());
       cm->follow_marking_stacks();
     }
--- a/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -198,7 +198,6 @@
                                            size_t young_live,
                                            size_t eden_live,
                                            size_t old_live,
-                                           size_t perm_live,
                                            size_t cur_eden,
                                            size_t max_old_gen_size,
                                            size_t max_eden_size,
@@ -208,7 +207,7 @@
 
   // Update statistics
   // Time statistics are updated as we go, update footprint stats here
-  _avg_base_footprint->sample(BaseFootPrintEstimate + perm_live);
+  _avg_base_footprint->sample(BaseFootPrintEstimate);
   avg_young_live()->sample(young_live);
   avg_eden_live()->sample(eden_live);
   if (is_full_gc) {
--- a/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psAdaptiveSizePolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -344,7 +344,6 @@
   void compute_generation_free_space(size_t young_live,
                                      size_t eden_live,
                                      size_t old_live,
-                                     size_t perm_live,
                                      size_t cur_eden,  // current eden in bytes
                                      size_t max_old_gen_size,
                                      size_t max_eden_size,
--- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -32,7 +32,6 @@
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
 #include "oops/objArrayKlass.inline.hpp"
-#include "oops/oop.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.pcgc.inline.hpp"
 #include "utilities/stack.inline.hpp"
@@ -175,13 +174,6 @@
   return _manager_array[index];
 }
 
-void ParCompactionManager::reset() {
-  for(uint i = 0; i < ParallelGCThreads + 1; i++) {
-    assert(manager_array(i)->revisit_klass_stack()->is_empty(), "sanity");
-    assert(manager_array(i)->revisit_mdo_stack()->is_empty(), "sanity");
-  }
-}
-
 void ParCompactionManager::follow_marking_stacks() {
   do {
     // Drain the overflow stack first, to allow stealing from the marking stack.
@@ -196,10 +188,10 @@
     // Process ObjArrays one at a time to avoid marking stack bloat.
     ObjArrayTask task;
     if (_objarray_stack.pop_overflow(task)) {
-      objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();
+      objArrayKlass* const k = (objArrayKlass*)task.obj()->klass();
       k->oop_follow_contents(this, task.obj(), task.index());
     } else if (_objarray_stack.pop_local(task)) {
-      objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();
+      objArrayKlass* const k = (objArrayKlass*)task.obj()->klass();
       k->oop_follow_contents(this, task.obj(), task.index());
     }
   } while (!marking_stacks_empty());
--- a/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psCompactionManager.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -110,9 +110,6 @@
   // popped.  If -1, there has not been any entry popped.
   static int                      _recycled_bottom;
 
-  Stack<Klass*, mtGC>                 _revisit_klass_stack;
-  Stack<DataLayout*, mtGC>            _revisit_mdo_stack;
-
   static ParMarkBitMap* _mark_bitmap;
 
   Action _action;
@@ -167,17 +164,11 @@
   static void verify_region_list_empty(uint stack_index);
   ParMarkBitMap* mark_bitmap() { return _mark_bitmap; }
 
-  // Take actions in preparation for a compaction.
-  static void reset();
-
   // void drain_stacks();
 
   bool should_update();
   bool should_copy();
 
-  Stack<Klass*, mtGC>* revisit_klass_stack() { return &_revisit_klass_stack; }
-  Stack<DataLayout*, mtGC>* revisit_mdo_stack() { return &_revisit_mdo_stack; }
-
   // Save for later processing.  Must not fail.
   inline void push(oop obj) { _marking_stack.push(obj); }
   inline void push_objarray(oop objarray, size_t index);
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -32,10 +32,10 @@
 #include "gc_implementation/parallelScavenge/psMarkSweep.hpp"
 #include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "gc_implementation/parallelScavenge/psScavenge.hpp"
 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
 #include "gc_implementation/shared/isGCActiveMark.hpp"
+#include "gc_implementation/shared/markSweep.hpp"
 #include "gc_implementation/shared/spaceDecorator.hpp"
 #include "gc_interface/gcCause.hpp"
 #include "memory/gcLocker.inline.hpp"
@@ -52,7 +52,6 @@
 #include "utilities/stack.inline.hpp"
 
 elapsedTimer        PSMarkSweep::_accumulated_time;
-unsigned int        PSMarkSweep::_total_invocations = 0;
 jlong               PSMarkSweep::_time_of_last_gc   = 0;
 CollectorCounters*  PSMarkSweep::_counters = NULL;
 
@@ -119,7 +118,6 @@
 
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
   // Increment the invocation count
   heap->increment_total_collections(true /* full */);
@@ -148,7 +146,6 @@
   if (VerifyObjectStartArray &&
       VerifyBeforeGC) {
     old_gen->verify_object_start_array();
-    perm_gen->verify_object_start_array();
   }
 
   heap->pre_full_gc_dump();
@@ -172,8 +169,6 @@
     // Let the size policy know we're starting
     size_policy->major_collection_begin();
 
-    // When collecting the permanent generation methodOops may be moving,
-    // so we either have to flush all bcp data or convert it into bci.
     CodeCache::gc_prologue();
     Threads::gc_prologue();
     BiasedLocking::preserve_marks();
@@ -181,8 +176,8 @@
     // Capture heap size before collection for printing.
     size_t prev_used = heap->used();
 
-    // Capture perm gen size before collection for sizing.
-    size_t perm_gen_prev_used = perm_gen->used_in_bytes();
+    // Capture metadata size before collection for sizing.
+    size_t metadata_prev_used = MetaspaceAux::used_in_bytes();
 
     // For PrintGCDetails
     size_t old_gen_prev_used = old_gen->used_in_bytes();
@@ -234,16 +229,16 @@
     if (bs->is_a(BarrierSet::ModRef)) {
       ModRefBarrierSet* modBS = (ModRefBarrierSet*)bs;
       MemRegion old_mr = heap->old_gen()->reserved();
-      MemRegion perm_mr = heap->perm_gen()->reserved();
-      assert(perm_mr.end() <= old_mr.start(), "Generations out of order");
-
       if (young_gen_empty) {
-        modBS->clear(MemRegion(perm_mr.start(), old_mr.end()));
+        modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
       } else {
-        modBS->invalidate(MemRegion(perm_mr.start(), old_mr.end()));
+        modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
       }
     }
 
+    // Delete metaspaces for unloaded class loaders and clean up loader_data graph
+    ClassLoaderDataGraph::purge();
+
     BiasedLocking::restore_marks();
     Threads::gc_epilogue();
     CodeCache::gc_epilogue();
@@ -267,10 +262,8 @@
         gclog_or_tty->print_cr(" collection: %d ",
                        heap->total_collections());
         if (Verbose) {
-          gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d"
-            " perm_gen_capacity: %d ",
-            old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes(),
-            perm_gen->capacity_in_bytes());
+          gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d",
+            old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes());
         }
       }
 
@@ -290,7 +283,6 @@
         size_policy->compute_generation_free_space(young_gen->used_in_bytes(),
                                  young_gen->eden_space()->used_in_bytes(),
                                  old_gen->used_in_bytes(),
-                                 perm_gen->used_in_bytes(),
                                  young_gen->eden_space()->capacity_in_bytes(),
                                  old_gen->max_gen_size(),
                                  max_eden_size,
@@ -323,8 +315,8 @@
 
     heap->resize_all_tlabs();
 
-    // We collected the perm gen, so we'll resize it here.
-    perm_gen->compute_new_size(perm_gen_prev_used);
+    // We collected the heap, recalculate the metaspace capacity
+    MetaspaceGC::compute_new_size();
 
     if (TraceGen1Time) accumulated_time()->stop();
 
@@ -336,11 +328,8 @@
         old_gen->print_used_change(old_gen_prev_used);
       }
       heap->print_heap_change(prev_used);
-      // Do perm gen after heap becase prev_used does
-      // not include the perm gen (done this way in the other
-      // collectors).
       if (PrintGCDetails) {
-        perm_gen->print_used_change(perm_gen_prev_used);
+        MetaspaceAux::print_metaspace_change(metadata_prev_used);
       }
     }
 
@@ -359,12 +348,10 @@
   if (VerifyObjectStartArray &&
       VerifyAfterGC) {
     old_gen->verify_object_start_array();
-    perm_gen->verify_object_start_array();
   }
 
   if (ZapUnusedHeapArea) {
     old_gen->object_space()->check_mangled_unused_area_complete();
-    perm_gen->object_space()->check_mangled_unused_area_complete();
   }
 
   NOT_PRODUCT(ref_processor()->verify_no_references_recorded());
@@ -490,8 +477,6 @@
   _preserved_oop_stack.clear(true);
   _marking_stack.clear();
   _objarray_stack.clear(true);
-  _revisit_klass_stack.clear(true);
-  _revisit_mdo_stack.clear(true);
 }
 
 void PSMarkSweep::mark_sweep_phase1(bool clear_all_softrefs) {
@@ -502,6 +487,9 @@
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
+  // Need to clear claim bits before the tracing starts.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   // General strong roots.
   {
     ParallelScavengeHeap::ParStrongRootsScope psrs;
@@ -514,6 +502,7 @@
     Management::oops_do(mark_and_push_closure());
     JvmtiExport::oops_do(mark_and_push_closure());
     SystemDictionary::always_strong_oops_do(mark_and_push_closure());
+    ClassLoaderDataGraph::always_strong_oops_do(mark_and_push_closure(), follow_klass_closure(), true);
     // Do not treat nmethods as strong roots for mark/sweep, since we can unload them.
     //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
   }
@@ -537,11 +526,7 @@
   follow_stack(); // Flush marking stack
 
   // Update subklass/sibling/implementor links of live klasses
-  follow_weak_klass_links();
-  assert(_marking_stack.is_empty(), "just drained");
-
-  // Visit memoized mdo's and clear unmarked weak refs
-  follow_mdo_weak_refs();
+  Klass::clean_weak_klass_links(&is_alive);
   assert(_marking_stack.is_empty(), "just drained");
 
   // Visit interned string tables and delete unmarked oops
@@ -559,13 +544,6 @@
 
   // Now all live objects are marked, compute the new object addresses.
 
-  // It is imperative that we traverse perm_gen LAST. If dead space is
-  // allowed a range of dead object may get overwritten by a dead int
-  // array. If perm_gen is not traversed last a klassOop may get
-  // overwritten. This is fine since it is dead, but if the class has dead
-  // instances we have to skip them, and in order to find their size we
-  // need the klassOop!
-  //
   // It is not required that we traverse spaces in the same order in
   // phase2, phase3 and phase4, but the ValidateMarkSweep live oops
   // tracking expects us to do so. See comment under phase4.
@@ -574,18 +552,12 @@
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
   // Begin compacting into the old gen
   PSMarkSweepDecorator::set_destination_decorator_tenured();
 
   // This will also compact the young gen spaces.
   old_gen->precompact();
-
-  // Compact the perm gen into the perm gen
-  PSMarkSweepDecorator::set_destination_decorator_perm_gen();
-
-  perm_gen->precompact();
 }
 
 // This should be moved to the shared markSweep code!
@@ -606,7 +578,9 @@
 
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
+
+  // Need to clear claim bits before the tracing starts.
+  ClassLoaderDataGraph::clear_claimed_marks();
 
   // General strong roots.
   Universe::oops_do(adjust_root_pointer_closure());
@@ -618,6 +592,7 @@
   JvmtiExport::oops_do(adjust_root_pointer_closure());
   // SO_AllClasses
   SystemDictionary::oops_do(adjust_root_pointer_closure());
+  ClassLoaderDataGraph::oops_do(adjust_root_pointer_closure(), adjust_klass_closure(), true);
   //CodeCache::scavenge_root_nmethods_oops_do(adjust_root_pointer_closure());
 
   // Now adjust pointers in remaining weak roots.  (All of which should
@@ -634,7 +609,6 @@
 
   young_gen->adjust_pointers();
   old_gen->adjust_pointers();
-  perm_gen->adjust_pointers();
 }
 
 void PSMarkSweep::mark_sweep_phase4() {
@@ -644,18 +618,12 @@
 
   // All pointers are now adjusted, move objects accordingly
 
-  // It is imperative that we traverse perm_gen first in phase4. All
-  // classes must be allocated earlier than their instances, and traversing
-  // perm_gen first makes sure that all klassOops have moved to their new
-  // location before any instance does a dispatch through it's klass!
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
-  perm_gen->compact();
   old_gen->compact();
   young_gen->compact();
 }
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,15 +36,16 @@
 class PSMarkSweep : public MarkSweep {
  private:
   static elapsedTimer        _accumulated_time;
-  static unsigned int        _total_invocations;
   static jlong               _time_of_last_gc;   // ms
   static CollectorCounters*  _counters;
 
   // Closure accessors
   static OopClosure* mark_and_push_closure() { return &MarkSweep::mark_and_push_closure; }
+  static KlassClosure* follow_klass_closure() { return &MarkSweep::follow_klass_closure; }
   static VoidClosure* follow_stack_closure() { return (VoidClosure*)&MarkSweep::follow_stack_closure; }
   static OopClosure* adjust_pointer_closure() { return (OopClosure*)&MarkSweep::adjust_pointer_closure; }
   static OopClosure* adjust_root_pointer_closure() { return (OopClosure*)&MarkSweep::adjust_root_pointer_closure; }
+  static KlassClosure* adjust_klass_closure() { return &MarkSweep::adjust_klass_closure; }
   static BoolObjectClosure* is_alive_closure() { return (BoolObjectClosure*)&MarkSweep::is_alive; }
 
  debug_only(public:)  // Used for PSParallelCompact debugging
@@ -84,7 +85,6 @@
 
   // Public accessors
   static elapsedTimer* accumulated_time() { return &_accumulated_time; }
-  static unsigned int total_invocations() { return _total_invocations; }
   static CollectorCounters* counters()    { return _counters; }
 
   // Time since last full gc (in milliseconds)
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -43,19 +43,11 @@
   _destination_decorator = heap->old_gen()->object_mark_sweep();
 }
 
-void PSMarkSweepDecorator::set_destination_decorator_perm_gen() {
-  ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
-  assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
-
-  _destination_decorator = heap->perm_gen()->object_mark_sweep();
-}
-
 void PSMarkSweepDecorator::advance_destination_decorator() {
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   assert(_destination_decorator != NULL, "Sanity");
-  guarantee(_destination_decorator != heap->perm_gen()->object_mark_sweep(), "Cannot advance perm gen decorator");
 
   PSMarkSweepDecorator* first = heap->old_gen()->object_mark_sweep();
   PSMarkSweepDecorator* second = heap->young_gen()->eden_mark_sweep();
--- a/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -59,7 +59,6 @@
   // spaces in a given order. We want to fill space A, space B, and so
   // on. The code that controls that order is in the following methods.
   static void set_destination_decorator_tenured();
-  static void set_destination_decorator_perm_gen();
   static void advance_destination_decorator();
   static PSMarkSweepDecorator* destination_decorator();
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psOldGen.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -57,9 +57,12 @@
                           const char* perf_data_name, int level) {
   initialize_virtual_space(rs, alignment);
   initialize_work(perf_data_name, level);
+
   // The old gen can grow to gen_size_limit().  _reserve reflects only
   // the current maximum that can be committed.
   assert(_reserved.byte_size() <= gen_size_limit(), "Consistency check");
+
+  initialize_performance_counters(perf_data_name, level);
 }
 
 void PSOldGen::initialize_virtual_space(ReservedSpace rs, size_t alignment) {
@@ -140,7 +143,9 @@
 
   // Update the start_array
   start_array()->set_covered_region(cmr);
+}
 
+void PSOldGen::initialize_performance_counters(const char* perf_data_name, int level) {
   // Generation Counters, generation 'level', 1 subspace
   _gen_counters = new PSGenerationCounters(perf_data_name, level, 1,
                                            virtual_space());
--- a/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psOldGen.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -107,10 +107,11 @@
   PSOldGen(size_t initial_size, size_t min_size, size_t max_size,
            const char* perf_data_name, int level);
 
-  void initialize(ReservedSpace rs, size_t alignment,
+  virtual void initialize(ReservedSpace rs, size_t alignment,
                   const char* perf_data_name, int level);
   void initialize_virtual_space(ReservedSpace rs, size_t alignment);
   void initialize_work(const char* perf_data_name, int level);
+  virtual void initialize_performance_counters(const char* perf_data_name, int level);
 
   MemRegion reserved() const                { return _reserved; }
   virtual size_t max_gen_size()             { return _max_gen_size; }
@@ -166,7 +167,7 @@
   HeapWord* allocate(size_t word_size);
 
   // Iteration.
-  void oop_iterate(OopClosure* cl) { object_space()->oop_iterate(cl); }
+  void oop_iterate_no_header(OopClosure* cl) { object_space()->oop_iterate_no_header(cl); }
   void object_iterate(ObjectClosure* cl) { object_space()->object_iterate(cl); }
 
   // Debugging - do not use for time critical operations
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,7 +36,6 @@
 #include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
 #include "gc_implementation/parallelScavenge/psScavenge.hpp"
 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
@@ -45,7 +44,7 @@
 #include "memory/gcLocker.inline.hpp"
 #include "memory/referencePolicy.hpp"
 #include "memory/referenceProcessor.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.pcgc.inline.hpp"
 #include "runtime/fprofiler.hpp"
@@ -90,7 +89,7 @@
 bool      PSParallelCompact::_print_phases = false;
 
 ReferenceProcessor* PSParallelCompact::_ref_processor = NULL;
-klassOop            PSParallelCompact::_updated_int_array_klass_obj = NULL;
+Klass*              PSParallelCompact::_updated_int_array_klass_obj = NULL;
 
 double PSParallelCompact::_dwl_mean;
 double PSParallelCompact::_dwl_std_dev;
@@ -106,7 +105,6 @@
 GrowableArray<oop> *    PSParallelCompact::_live_oops_moved_to = NULL;
 GrowableArray<size_t>*  PSParallelCompact::_live_oops_size = NULL;
 size_t                  PSParallelCompact::_live_oops_index = 0;
-size_t                  PSParallelCompact::_live_oops_index_at_perm = 0;
 GrowableArray<void*>*   PSParallelCompact::_other_refs_stack = NULL;
 GrowableArray<void*>*   PSParallelCompact::_adjusted_pointers = NULL;
 bool                    PSParallelCompact::_pointer_tracking = false;
@@ -188,7 +186,7 @@
 
 #ifndef PRODUCT
 const char* PSParallelCompact::space_names[] = {
-  "perm", "old ", "eden", "from", "to  "
+  "old ", "eden", "from", "to  "
 };
 
 void PSParallelCompact::print_region_ranges()
@@ -347,7 +345,7 @@
 void
 print_initial_summary_data(ParallelCompactData& summary_data,
                            SpaceInfo* space_info) {
-  unsigned int id = PSParallelCompact::perm_space_id;
+  unsigned int id = PSParallelCompact::old_space_id;
   const MutableSpace* space;
   do {
     space = space_info[id].space();
@@ -480,7 +478,7 @@
   const size_t beg_ofs = region_offset(addr);
   _region_data[beg_region].add_live_obj(RegionSize - beg_ofs);
 
-  klassOop klass = ((oop)addr)->klass();
+  Klass* klass = ((oop)addr)->klass();
   // Middle regions--completely spanned by this object.
   for (size_t region = beg_region + 1; region < end_region; ++region) {
     _region_data[region].set_partial_obj_size(RegionSize);
@@ -765,17 +763,6 @@
   return result;
 }
 
-klassOop ParallelCompactData::calc_new_klass(klassOop old_klass) {
-  klassOop updated_klass;
-  if (PSParallelCompact::should_update_klass(old_klass)) {
-    updated_klass = (klassOop) calc_new_pointer(old_klass);
-  } else {
-    updated_klass = old_klass;
-  }
-
-  return updated_klass;
-}
-
 #ifdef  ASSERT
 void ParallelCompactData::verify_clear(const PSVirtualSpace* vspace)
 {
@@ -817,15 +804,25 @@
 
 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_root_pointer_closure(true);
 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_pointer_closure(false);
+PSParallelCompact::AdjustKlassClosure PSParallelCompact::_adjust_klass_closure;
 
 void PSParallelCompact::AdjustPointerClosure::do_oop(oop* p)       { adjust_pointer(p, _is_root); }
 void PSParallelCompact::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p, _is_root); }
 
 void PSParallelCompact::FollowStackClosure::do_void() { _compaction_manager->follow_marking_stacks(); }
 
-void PSParallelCompact::MarkAndPushClosure::do_oop(oop* p)       { mark_and_push(_compaction_manager, p); }
+void PSParallelCompact::MarkAndPushClosure::do_oop(oop* p)       {
+  mark_and_push(_compaction_manager, p);
+}
 void PSParallelCompact::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(_compaction_manager, p); }
 
+void PSParallelCompact::FollowKlassClosure::do_klass(Klass* klass) {
+  klass->oops_do(_mark_and_push_closure);
+}
+void PSParallelCompact::AdjustKlassClosure::do_klass(Klass* klass) {
+  klass->oops_do(&PSParallelCompact::_adjust_root_pointer_closure);
+}
+
 void PSParallelCompact::post_initialize() {
   ParallelScavengeHeap* heap = gc_heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
@@ -880,22 +877,13 @@
 
   ParallelScavengeHeap* heap = gc_heap();
   PSYoungGen* young_gen = heap->young_gen();
-  MutableSpace* perm_space = heap->perm_gen()->object_space();
-
-  _space_info[perm_space_id].set_space(perm_space);
+
   _space_info[old_space_id].set_space(heap->old_gen()->object_space());
   _space_info[eden_space_id].set_space(young_gen->eden_space());
   _space_info[from_space_id].set_space(young_gen->from_space());
   _space_info[to_space_id].set_space(young_gen->to_space());
 
-  _space_info[perm_space_id].set_start_array(heap->perm_gen()->start_array());
   _space_info[old_space_id].set_start_array(heap->old_gen()->start_array());
-
-  _space_info[perm_space_id].set_min_dense_prefix(perm_space->top());
-  if (TraceParallelOldGCDensePrefix) {
-    tty->print_cr("perm min_dense_prefix=" PTR_FORMAT,
-                  _space_info[perm_space_id].min_dense_prefix());
-  }
 }
 
 void PSParallelCompact::initialize_dead_wood_limiter()
@@ -919,19 +907,19 @@
     _heap_used      = heap->used();
     _young_gen_used = heap->young_gen()->used_in_bytes();
     _old_gen_used   = heap->old_gen()->used_in_bytes();
-    _perm_gen_used  = heap->perm_gen()->used_in_bytes();
+    _metadata_used  = MetaspaceAux::used_in_bytes();
   };
 
   size_t heap_used() const      { return _heap_used; }
   size_t young_gen_used() const { return _young_gen_used; }
   size_t old_gen_used() const   { return _old_gen_used; }
-  size_t perm_gen_used() const  { return _perm_gen_used; }
+  size_t metadata_used() const  { return _metadata_used; }
 
 private:
   size_t _heap_used;
   size_t _young_gen_used;
   size_t _old_gen_used;
-  size_t _perm_gen_used;
+  size_t _metadata_used;
 };
 
 void
@@ -976,7 +964,6 @@
 
   pre_gc_values->fill(heap);
 
-  ParCompactionManager::reset();
   NOT_PRODUCT(_mark_bitmap.reset_counters());
   DEBUG_ONLY(add_obj_count = add_obj_size = 0;)
   DEBUG_ONLY(mark_bitmap_count = mark_bitmap_size = 0;)
@@ -1003,7 +990,6 @@
   if (VerifyObjectStartArray &&
       VerifyBeforeGC) {
     heap->old_gen()->verify_object_start_array();
-    heap->perm_gen()->verify_object_start_array();
   }
 
   DEBUG_ONLY(mark_bitmap()->verify_clear();)
@@ -1017,7 +1003,7 @@
 {
   TraceTime tm("post compact", print_phases(), true, gclog_or_tty);
 
-  for (unsigned int id = perm_space_id; id < last_space_id; ++id) {
+  for (unsigned int id = old_space_id; id < last_space_id; ++id) {
     // Clear the marking bitmap, summary data and split info.
     clear_data_covering_space(SpaceId(id));
     // Update top().  Must be done after clearing the bitmap and summary data.
@@ -1046,16 +1032,17 @@
   if (bs->is_a(BarrierSet::ModRef)) {
     ModRefBarrierSet* modBS = (ModRefBarrierSet*)bs;
     MemRegion old_mr = heap->old_gen()->reserved();
-    MemRegion perm_mr = heap->perm_gen()->reserved();
-    assert(perm_mr.end() <= old_mr.start(), "Generations out of order");
 
     if (young_gen_empty) {
-      modBS->clear(MemRegion(perm_mr.start(), old_mr.end()));
+      modBS->clear(MemRegion(old_mr.start(), old_mr.end()));
     } else {
-      modBS->invalidate(MemRegion(perm_mr.start(), old_mr.end()));
+      modBS->invalidate(MemRegion(old_mr.start(), old_mr.end()));
     }
   }
 
+  // Delete metaspaces for unloaded class loaders and clean up loader_data graph
+  ClassLoaderDataGraph::purge();
+
   Threads::gc_epilogue();
   CodeCache::gc_epilogue();
   JvmtiExport::gc_epilogue();
@@ -1409,8 +1396,7 @@
   const size_t space_capacity = space->capacity_in_words();
 
   const double density = double(space_live) / double(space_capacity);
-  const size_t min_percent_free =
-          id == perm_space_id ? PermMarkSweepDeadRatio : MarkSweepDeadRatio;
+  const size_t min_percent_free = MarkSweepDeadRatio;
   const double limiter = dead_wood_limiter(density, min_percent_free);
   const size_t dead_wood_max = space_used - space_live;
   const size_t dead_wood_limit = MIN2(size_t(space_capacity * limiter),
@@ -1868,7 +1854,6 @@
 
   // The amount of live data that will end up in old space (assuming it fits).
   size_t old_space_total_live = 0;
-  assert(perm_space_id < old_space_id, "should not count perm data here");
   for (unsigned int id = old_space_id; id < last_space_id; ++id) {
     old_space_total_live += pointer_delta(_space_info[id].new_top(),
                                           _space_info[id].space()->bottom());
@@ -1886,8 +1871,7 @@
   }
 #endif // #ifndef PRODUCT
 
-  // Permanent and Old generations.
-  summarize_space(perm_space_id, maximum_compaction);
+  // Old generations.
   summarize_space(old_space_id, maximum_compaction);
 
   // Summarize the remaining spaces in the young gen.  The initial target space
@@ -2013,7 +1997,6 @@
   GCCause::Cause gc_cause = heap->gc_cause();
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
   PSAdaptiveSizePolicy* size_policy = heap->size_policy();
 
   // The scope of casr should end after code that can change
@@ -2062,8 +2045,6 @@
     // Let the size policy know we're starting
     size_policy->major_collection_begin();
 
-    // When collecting the permanent generation methodOops may be moving,
-    // so we either have to flush all bcp data or convert it into bci.
     CodeCache::gc_prologue();
     Threads::gc_prologue();
 
@@ -2098,10 +2079,6 @@
     adjust_roots();
 
     compaction_start.update();
-    // Does the perm gen always have to be done serially because
-    // klasses are used in the update of an object?
-    compact_perm(vmthread_cm);
-
     compact();
 
     // Reset the mark bitmap, summary data, and do other bookkeeping.  Must be
@@ -2118,10 +2095,8 @@
         gclog_or_tty->print_cr(" collection: %d ",
                        heap->total_collections());
         if (Verbose) {
-          gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d"
-            " perm_gen_capacity: %d ",
-            old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes(),
-            perm_gen->capacity_in_bytes());
+          gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d",
+            old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes());
         }
       }
 
@@ -2142,7 +2117,6 @@
                               young_gen->used_in_bytes(),
                               young_gen->eden_space()->used_in_bytes(),
                               old_gen->used_in_bytes(),
-                              perm_gen->used_in_bytes(),
                               young_gen->eden_space()->capacity_in_bytes(),
                               old_gen->max_gen_size(),
                               max_eden_size,
@@ -2175,8 +2149,8 @@
 
     heap->resize_all_tlabs();
 
-    // We collected the perm gen, so we'll resize it here.
-    perm_gen->compute_new_size(pre_gc_values.perm_gen_used());
+    // Resize the metaspace capactiy after a collection
+    MetaspaceGC::compute_new_size();
 
     if (TraceGen1Time) accumulated_time()->stop();
 
@@ -2186,8 +2160,7 @@
         young_gen->print_used_change(pre_gc_values.young_gen_used());
         old_gen->print_used_change(pre_gc_values.old_gen_used());
         heap->print_heap_change(pre_gc_values.heap_used());
-        // Print perm gen last (print_heap_change() excludes the perm gen).
-        perm_gen->print_used_change(pre_gc_values.perm_gen_used());
+        MetaspaceAux::print_metaspace_change(pre_gc_values.metadata_used());
       } else {
         heap->print_heap_change(pre_gc_values.heap_used());
       }
@@ -2205,7 +2178,6 @@
       ParCompactionManager::manager_array(int(i));
     assert(cm->marking_stack()->is_empty(),       "should be empty");
     assert(ParCompactionManager::region_list(int(i))->is_empty(), "should be empty");
-    assert(cm->revisit_klass_stack()->is_empty(), "should be empty");
   }
 #endif // ASSERT
 
@@ -2219,12 +2191,10 @@
   if (VerifyObjectStartArray &&
       VerifyAfterGC) {
     old_gen->verify_object_start_array();
-    perm_gen->verify_object_start_array();
   }
 
   if (ZapUnusedHeapArea) {
     old_gen->object_space()->check_mangled_unused_area_complete();
-    perm_gen->object_space()->check_mangled_unused_area_complete();
   }
 
   NOT_PRODUCT(ref_processor()->verify_no_references_recorded());
@@ -2357,6 +2327,9 @@
   PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
   PSParallelCompact::FollowStackClosure follow_stack_closure(cm);
 
+  // Need new claim bits before marking starts.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   {
     TraceTime tm_m("par mark", print_phases(), true, gclog_or_tty);
     ParallelScavengeHeap::ParStrongRootsScope psrs;
@@ -2407,11 +2380,7 @@
   cm->follow_marking_stacks(); // Flush marking stack.
 
   // Update subklass/sibling/implementor links of live klasses
-  // revisit_klass_stack is used in follow_weak_klass_links().
-  follow_weak_klass_links();
-
-  // Revisit memoized MDO's and clear any unmarked weak refs
-  follow_mdo_weak_refs();
+  Klass::clean_weak_klass_links(is_alive_closure());
 
   // Visit interned string tables and delete unmarked oops
   StringTable::unlink(is_alive_closure());
@@ -2421,6 +2390,39 @@
   assert(cm->marking_stacks_empty(), "marking stacks should be empty");
 }
 
+void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) {
+  ClassLoaderData* cld = klass->class_loader_data();
+  assert(cld->has_defined(klass), "inconsistency!");
+
+  // The actual processing of the klass is done when we
+  // traverse the list of Klasses in the class loader data.
+  PSParallelCompact::follow_class_loader(cm, cld);
+}
+
+void PSParallelCompact::adjust_klass(ParCompactionManager* cm, Klass* klass) {
+  ClassLoaderData* cld = klass->class_loader_data();
+  assert(cld->has_defined(klass), "inconsistency!");
+
+  // The actual processing of the klass is done when we
+  // traverse the list of Klasses in the class loader data.
+  PSParallelCompact::adjust_class_loader(cm, cld);
+}
+
+void PSParallelCompact::follow_class_loader(ParCompactionManager* cm,
+                                            ClassLoaderData* cld) {
+  PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
+  PSParallelCompact::FollowKlassClosure follow_klass_closure(&mark_and_push_closure);
+
+  cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true);
+}
+
+void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm,
+                                            ClassLoaderData* cld) {
+  cld->oops_do(PSParallelCompact::adjust_root_pointer_closure(),
+               PSParallelCompact::adjust_klass_closure(),
+               true);
+}
+
 // This should be moved to the shared markSweep code!
 class PSAlwaysTrueClosure: public BoolObjectClosure {
 public:
@@ -2433,6 +2435,9 @@
   // Adjust the pointers to reflect the new locations
   TraceTime tm("adjust roots", print_phases(), true, gclog_or_tty);
 
+  // Need new claim bits when tracing through and adjusting pointers.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   // General strong roots.
   Universe::oops_do(adjust_root_pointer_closure());
   JNIHandles::oops_do(adjust_root_pointer_closure());   // Global (strong) JNI handles
@@ -2443,6 +2448,7 @@
   JvmtiExport::oops_do(adjust_root_pointer_closure());
   // SO_AllClasses
   SystemDictionary::oops_do(adjust_root_pointer_closure());
+  ClassLoaderDataGraph::oops_do(adjust_root_pointer_closure(), adjust_klass_closure(), true);
 
   // Now adjust pointers in remaining weak roots.  (All of which should
   // have been cleared if they pointed to non-surviving objects.)
@@ -2460,14 +2466,6 @@
                                               adjust_root_pointer_closure());
 }
 
-void PSParallelCompact::compact_perm(ParCompactionManager* cm) {
-  TraceTime tm("compact perm gen", print_phases(), true, gclog_or_tty);
-  // trace("4");
-
-  gc_heap()->perm_gen()->start_array()->reset();
-  move_and_update(cm, perm_space_id);
-}
-
 void PSParallelCompact::enqueue_region_draining_tasks(GCTaskQueue* q,
                                                       uint parallel_gc_threads)
 {
@@ -2501,7 +2499,9 @@
   // "which" must be 0 <= which < task_count
 
   which = 0;
-  for (unsigned int id = to_space_id; id > perm_space_id; --id) {
+  // id + 1 is used to test termination so unsigned  can
+  // be used with an old_space_id == 0.
+  for (unsigned int id = to_space_id; id + 1 > old_space_id; --id) {
     SpaceInfo* const space_info = _space_info + id;
     MutableSpace* const space = space_info->space();
     HeapWord* const new_top = space_info->new_top();
@@ -2509,9 +2509,8 @@
     const size_t beg_region = sd.addr_to_region_idx(space_info->dense_prefix());
     const size_t end_region =
       sd.addr_to_region_idx(sd.region_align_up(new_top));
-    assert(end_region > 0, "perm gen cannot be empty");
-
-    for (size_t cur = end_region - 1; cur >= beg_region; --cur) {
+
+    for (size_t cur = end_region - 1; cur + 1 > beg_region; --cur) {
       if (sd.region(cur)->claim_unsafe()) {
         ParCompactionManager::region_list_push(which, cur);
 
@@ -2662,8 +2661,6 @@
 
 #ifdef  ASSERT
     // Verify that all regions have been processed before the deferred updates.
-    // Note that perm_space_id is skipped; this type of verification is not
-    // valid until the perm gen is compacted by regions.
     for (unsigned int id = old_space_id; id < last_space_id; ++id) {
       verify_complete(SpaceId(id));
     }
@@ -2722,66 +2719,6 @@
 }
 #endif  // #ifdef ASSERT
 
-void
-PSParallelCompact::follow_weak_klass_links() {
-  // All klasses on the revisit stack are marked at this point.
-  // Update and follow all subklass, sibling and implementor links.
-  // Check all the stacks here even if not all the workers are active.
-  // There is no accounting which indicates which stacks might have
-  // contents to be followed.
-  if (PrintRevisitStats) {
-    gclog_or_tty->print_cr("#classes in system dictionary = %d",
-                           SystemDictionary::number_of_classes());
-  }
-  for (uint i = 0; i < ParallelGCThreads + 1; i++) {
-    ParCompactionManager* cm = ParCompactionManager::manager_array(i);
-    KeepAliveClosure keep_alive_closure(cm);
-    Stack<Klass*, mtGC>* const rks = cm->revisit_klass_stack();
-    if (PrintRevisitStats) {
-      gclog_or_tty->print_cr("Revisit klass stack[%u] length = " SIZE_FORMAT,
-                             i, rks->size());
-    }
-    while (!rks->is_empty()) {
-      Klass* const k = rks->pop();
-      k->follow_weak_klass_links(is_alive_closure(), &keep_alive_closure);
-    }
-
-    cm->follow_marking_stacks();
-  }
-}
-
-void
-PSParallelCompact::revisit_weak_klass_link(ParCompactionManager* cm, Klass* k) {
-  cm->revisit_klass_stack()->push(k);
-}
-
-void PSParallelCompact::revisit_mdo(ParCompactionManager* cm, DataLayout* p) {
-  cm->revisit_mdo_stack()->push(p);
-}
-
-void PSParallelCompact::follow_mdo_weak_refs() {
-  // All strongly reachable oops have been marked at this point;
-  // we can visit and clear any weak references from MDO's which
-  // we memoized during the strong marking phase.
-  if (PrintRevisitStats) {
-    gclog_or_tty->print_cr("#classes in system dictionary = %d",
-                           SystemDictionary::number_of_classes());
-  }
-  for (uint i = 0; i < ParallelGCThreads + 1; i++) {
-    ParCompactionManager* cm = ParCompactionManager::manager_array(i);
-    Stack<DataLayout*, mtGC>* rms = cm->revisit_mdo_stack();
-    if (PrintRevisitStats) {
-      gclog_or_tty->print_cr("Revisit MDO stack[%u] size = " SIZE_FORMAT,
-                             i, rms->size());
-    }
-    while (!rms->is_empty()) {
-      rms->pop()->follow_weak_refs(is_alive_closure());
-    }
-
-    cm->follow_marking_stacks();
-  }
-}
-
 
 #ifdef VALIDATE_MARK_SWEEP
 
@@ -2829,7 +2766,7 @@
     _pointer_tracking = true;
 
     AdjusterTracker checker;
-    obj->oop_iterate(&checker);
+    obj->oop_iterate_no_header(&checker);
   }
 }
 
@@ -2842,10 +2779,10 @@
 }
 
 
-void PSParallelCompact::reset_live_oop_tracking(bool at_perm) {
+void PSParallelCompact::reset_live_oop_tracking() {
   if (ValidateMarkSweep) {
     guarantee((size_t)_live_oops->length() == _live_oops_index, "should be at end of live oops");
-    _live_oops_index = at_perm ? _live_oops_index_at_perm : 0;
+    _live_oops_index = 0;
   }
 }
 
@@ -2995,7 +2932,7 @@
 PSParallelCompact::SpaceId PSParallelCompact::space_id(HeapWord* addr) {
   assert(Universe::heap()->is_in_reserved(addr), "addr not in the heap");
 
-  for (unsigned int id = perm_space_id; id < last_space_id; ++id) {
+  for (unsigned int id = old_space_id; id < last_space_id; ++id) {
     if (_space_info[id].space()->contains(addr)) {
       return SpaceId(id);
     }
@@ -3483,12 +3420,3 @@
   do_addr(addr);
   return ParMarkBitMap::incomplete;
 }
-
-// Prepare for compaction.  This method is executed once
-// (i.e., by a single thread) before compaction.
-// Save the updated location of the intArrayKlassObj for
-// filling holes in the dense prefix.
-void PSParallelCompact::compact_prologue() {
-  _updated_int_array_klass_obj = (klassOop)
-    summary_data().calc_new_pointer(Universe::intArrayKlassObj());
-}
--- a/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -38,7 +38,6 @@
 class PSAdaptiveSizePolicy;
 class PSYoungGen;
 class PSOldGen;
-class PSPermGen;
 class ParCompactionManager;
 class ParallelTaskTerminator;
 class PSParallelCompact;
@@ -405,9 +404,6 @@
     return calc_new_pointer((HeapWord*) p);
   }
 
-  // Return the updated address for the given klass
-  klassOop calc_new_klass(klassOop);
-
 #ifdef  ASSERT
   void verify_clear(const PSVirtualSpace* vspace);
   void verify_clear();
@@ -779,7 +775,7 @@
   typedef ParallelCompactData::RegionData RegionData;
 
   typedef enum {
-    perm_space_id, old_space_id, eden_space_id,
+    old_space_id, eden_space_id,
     from_space_id, to_space_id, last_space_id
   } SpaceId;
 
@@ -821,7 +817,7 @@
     virtual void do_void();
   };
 
-  class AdjustPointerClosure: public OopsInGenClosure {
+  class AdjustPointerClosure: public OopClosure {
    private:
     bool _is_root;
    public:
@@ -832,11 +828,18 @@
     virtual void do_code_blob(CodeBlob* cb) const { }
   };
 
+  class AdjustKlassClosure : public KlassClosure {
+   public:
+    void do_klass(Klass* klass);
+  };
+
   friend class KeepAliveClosure;
   friend class FollowStackClosure;
   friend class AdjustPointerClosure;
+  friend class AdjustKlassClosure;
+  friend class FollowKlassClosure;
   friend class FollowRootClosure;
-  friend class instanceKlassKlass;
+  friend class InstanceClassLoaderKlass;
   friend class RefProcTaskProxy;
 
  private:
@@ -852,12 +855,13 @@
   static bool                 _print_phases;
   static AdjustPointerClosure _adjust_root_pointer_closure;
   static AdjustPointerClosure _adjust_pointer_closure;
+  static AdjustKlassClosure   _adjust_klass_closure;
 
   // Reference processing (used in ...follow_contents)
   static ReferenceProcessor*  _ref_processor;
 
   // Updated location of intArrayKlassObj.
-  static klassOop _updated_int_array_klass_obj;
+  static Klass* _updated_int_array_klass_obj;
 
   // Values computed at initialization and used by dead_wood_limiter().
   static double _dwl_mean;
@@ -869,10 +873,6 @@
 #endif  // #ifdef ASSERT
 
  private:
-  // Closure accessors
-  static OopClosure* adjust_pointer_closure()      { return (OopClosure*)&_adjust_pointer_closure; }
-  static OopClosure* adjust_root_pointer_closure() { return (OopClosure*)&_adjust_root_pointer_closure; }
-  static BoolObjectClosure* is_alive_closure()     { return (BoolObjectClosure*)&_is_alive_closure; }
 
   static void initialize_space_info();
 
@@ -888,8 +888,6 @@
   // Mark live objects
   static void marking_phase(ParCompactionManager* cm,
                             bool maximum_heap_compaction);
-  static void follow_weak_klass_links();
-  static void follow_mdo_weak_refs();
 
   template <class T> static inline void adjust_pointer(T* p, bool is_root);
   static void adjust_root_pointer(oop* p) { adjust_pointer(p, true); }
@@ -981,9 +979,6 @@
   // Adjust addresses in roots.  Does not adjust addresses in heap.
   static void adjust_roots();
 
-  // Serial code executed in preparation for the compaction phase.
-  static void compact_prologue();
-
   // Move objects to new locations.
   static void compact_perm(ParCompactionManager* cm);
   static void compact();
@@ -1049,6 +1044,17 @@
     virtual void do_oop(narrowOop* p);
   };
 
+  // The one and only place to start following the classes.
+  // Should only be applied to the ClassLoaderData klasses list.
+  class FollowKlassClosure : public KlassClosure {
+   private:
+    MarkAndPushClosure* _mark_and_push_closure;
+   public:
+    FollowKlassClosure(MarkAndPushClosure* mark_and_push_closure) :
+        _mark_and_push_closure(mark_and_push_closure) { }
+    void do_klass(Klass* klass);
+  };
+
   PSParallelCompact();
 
   // Convenient accessor for Universe::heap().
@@ -1066,6 +1072,12 @@
   // in the event of a failure.
   static bool initialize();
 
+  // Closure accessors
+  static OopClosure* adjust_pointer_closure()      { return (OopClosure*)&_adjust_pointer_closure; }
+  static OopClosure* adjust_root_pointer_closure() { return (OopClosure*)&_adjust_root_pointer_closure; }
+  static KlassClosure* adjust_klass_closure()      { return (KlassClosure*)&_adjust_klass_closure; }
+  static BoolObjectClosure* is_alive_closure()     { return (BoolObjectClosure*)&_is_alive_closure; }
+
   // Public accessors
   static elapsedTimer* accumulated_time() { return &_accumulated_time; }
   static unsigned int total_invocations() { return _total_invocations; }
@@ -1073,16 +1085,25 @@
 
   // Used to add tasks
   static GCTaskManager* const gc_task_manager();
-  static klassOop updated_int_array_klass_obj() {
+  static Klass* updated_int_array_klass_obj() {
     return _updated_int_array_klass_obj;
   }
 
   // Marking support
   static inline bool mark_obj(oop obj);
+  static inline bool is_marked(oop obj);
   // Check mark and maybe push on marking stack
   template <class T> static inline void mark_and_push(ParCompactionManager* cm,
                                                       T* p);
 
+  static void follow_klass(ParCompactionManager* cm, Klass* klass);
+  static void adjust_klass(ParCompactionManager* cm, Klass* klass);
+
+  static void follow_class_loader(ParCompactionManager* cm,
+                                  ClassLoaderData* klass);
+  static void adjust_class_loader(ParCompactionManager* cm,
+                                  ClassLoaderData* klass);
+
   // Compaction support.
   // Return true if p is in the range [beg_addr, end_addr).
   static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr);
@@ -1094,9 +1115,6 @@
   static inline HeapWord*         dense_prefix(SpaceId space_id);
   static inline ObjectStartArray* start_array(SpaceId space_id);
 
-  // Return true if the klass should be updated.
-  static inline bool should_update_klass(klassOop k);
-
   // Move and update the live objects in the specified space.
   static void move_and_update(ParCompactionManager* cm, SpaceId space_id);
 
@@ -1179,7 +1197,7 @@
   static void track_interior_pointers(oop obj);
   static void check_interior_pointers();
 
-  static void reset_live_oop_tracking(bool at_perm);
+  static void reset_live_oop_tracking();
   static void register_live_oop(oop p, size_t size);
   static void validate_live_oop(oop p, size_t size);
   static void live_oop_moved_to(HeapWord* q, size_t size, HeapWord* compaction_top);
@@ -1192,13 +1210,6 @@
   static void print_new_location_of_heap_address(HeapWord* q);
 #endif  // #ifdef VALIDATE_MARK_SWEEP
 
-  // Call backs for class unloading
-  // Update subklass/sibling/implementor links at end of marking.
-  static void revisit_weak_klass_link(ParCompactionManager* cm, Klass* k);
-
-  // Clear unmarked oops in MDOs at the end of marking.
-  static void revisit_mdo(ParCompactionManager* cm, DataLayout* p);
-
 #ifndef PRODUCT
   // Debugging support.
   static const char* space_names[last_space_id];
@@ -1231,6 +1242,10 @@
   }
 }
 
+inline bool PSParallelCompact::is_marked(oop obj) {
+  return mark_bitmap()->is_marked(obj);
+}
+
 template <class T>
 inline void PSParallelCompact::follow_root(ParCompactionManager* cm, T* p) {
   assert(!Universe::heap()->is_in_reserved(p),
@@ -1270,8 +1285,7 @@
   if (!oopDesc::is_null(heap_oop)) {
     oop obj     = oopDesc::decode_heap_oop_not_null(heap_oop);
     oop new_obj = (oop)summary_data().calc_new_pointer(obj);
-    assert(new_obj != NULL ||                     // is forwarding ptr?
-           obj->is_shared(),                      // never forwarded?
+    assert(new_obj != NULL,                    // is forwarding ptr?
            "should be forwarded");
     // Just always do the update unconditionally?
     if (new_obj != NULL) {
@@ -1353,10 +1367,6 @@
   return _space_info[id].start_array();
 }
 
-inline bool PSParallelCompact::should_update_klass(klassOop k) {
-  return ((HeapWord*) k) >= dense_prefix(perm_space_id);
-}
-
 #ifdef ASSERT
 inline void
 PSParallelCompact::check_new_location(HeapWord* old_addr, HeapWord* new_addr)
@@ -1448,8 +1458,7 @@
     ParMarkBitMapClosure(PSParallelCompact::mark_bitmap(), cm),
     _start_array(PSParallelCompact::start_array(space_id))
   {
-    assert(space_id == PSParallelCompact::perm_space_id ||
-           space_id == PSParallelCompact::old_space_id,
+    assert(space_id == PSParallelCompact::old_space_id,
            "cannot use FillClosure in the young gen");
   }
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psPermGen.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 2001, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
-#include "gc_implementation/parallelScavenge/psMarkSweepDecorator.hpp"
-#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
-#include "gc_implementation/shared/gcUtil.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "oops/markOop.inline.hpp"
-
-PSPermGen::PSPermGen(ReservedSpace rs, size_t alignment,
-                     size_t initial_size, size_t min_size, size_t max_size,
-                     const char* gen_name, int level) :
-  PSOldGen(rs, alignment, initial_size, min_size, max_size, gen_name, level),
-  _last_used(0)
-{
-  assert(object_mark_sweep() != NULL, "Sanity");
-
-  object_mark_sweep()->set_allowed_dead_ratio(PermMarkSweepDeadRatio);
-  _avg_size = new AdaptivePaddedAverage(AdaptivePermSizeWeight,
-                                        PermGenPadding);
-}
-
-HeapWord* PSPermGen::allocate_permanent(size_t size) {
-  assert_locked_or_safepoint(Heap_lock);
-  HeapWord* obj = allocate_noexpand(size);
-
-  if (obj == NULL) {
-    obj = expand_and_allocate(size);
-  }
-
-  return obj;
-}
-
-void PSPermGen::compute_new_size(size_t used_before_collection) {
-  // Update our padded average of objects allocated in perm
-  // gen between collections.
-  assert(used_before_collection >= _last_used,
-                                "negative allocation amount since last GC?");
-
-  const size_t alloc_since_last_gc = used_before_collection - _last_used;
-  _avg_size->sample(alloc_since_last_gc);
-
-  const size_t current_live = used_in_bytes();
-  // Stash away the current amount live for the next call to this method.
-  _last_used = current_live;
-
-  // We have different alignment constraints than the rest of the heap.
-  const size_t alignment = MAX2(MinPermHeapExpansion,
-                                virtual_space()->alignment());
-
-  // Compute the desired size:
-  //  The free space is the newly computed padded average,
-  //  so the desired size is what's live + the free space.
-  size_t desired_size = current_live + (size_t)_avg_size->padded_average();
-  desired_size = align_size_up(desired_size, alignment);
-
-  // ...and no larger or smaller than our max and min allowed.
-  desired_size = MAX2(MIN2(desired_size, _max_gen_size), _min_gen_size);
-  assert(desired_size <= _max_gen_size, "just checking");
-
-  const size_t size_before = _virtual_space->committed_size();
-
-  if (desired_size == size_before) {
-    // no change, we're done
-    return;
-  }
-
-  {
-    // We'll be growing or shrinking the heap:  in either case,
-    // we need to hold a lock.
-    MutexLocker x(ExpandHeap_lock);
-    if (desired_size > size_before) {
-      const size_t change_bytes = desired_size - size_before;
-      const size_t aligned_change_bytes =
-        align_size_up(change_bytes, alignment);
-      expand_by(aligned_change_bytes);
-    } else {
-      // Shrinking
-      const size_t change_bytes =
-        size_before - desired_size;
-      const size_t aligned_change_bytes = align_size_down(change_bytes, alignment);
-      shrink(aligned_change_bytes);
-    }
-  }
-
-  // While this code isn't controlled by AdaptiveSizePolicy, it's
-  // convenient to see all resizing decsions under the same flag.
-  if (PrintAdaptiveSizePolicy) {
-    ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
-    assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
-
-    gclog_or_tty->print_cr("AdaptiveSizePolicy::perm generation size: "
-                           "collection: %d "
-                           "(" SIZE_FORMAT ") -> (" SIZE_FORMAT ") ",
-                           heap->total_collections(),
-                           size_before, _virtual_space->committed_size());
-  }
-}
-
-void PSPermGen::precompact() {
-  // Reset start array first.
-  _start_array.reset();
-  object_mark_sweep()->precompact();
-}
--- a/src/share/vm/gc_implementation/parallelScavenge/psPermGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2001, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
-#define SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
-
-#include "gc_implementation/parallelScavenge/psOldGen.hpp"
-
-class AdaptivePaddedAverage;
-
-class PSPermGen : public PSOldGen {
-  friend class VMStructs;
- protected:
-  AdaptivePaddedAverage* _avg_size;  // Used for sizing
-  size_t _last_used;                 // Amount used at last GC, used for sizing
-
- public:
-  // Initialize the generation.
-  PSPermGen(ReservedSpace rs, size_t alignment, size_t initial_byte_size,
-            size_t minimum_byte_size, size_t maximum_byte_size,
-            const char* gen_name, int level);
-
-  // Permanent Gen special allocation. Uses the OldGen allocation
-  // routines, which should not be directly called on this generation.
-  HeapWord* allocate_permanent(size_t word_size);
-
-  // Size calculation.
-  void compute_new_size(size_t used_before_collection);
-
-  // MarkSweep code
-  virtual void precompact();
-
-  virtual const char* name() const { return "PSPermGen"; }
-};
-
-#endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSPERMGEN_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -199,7 +199,6 @@
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
   MutableSpace* to_space = heap->young_gen()->to_space();
   MutableSpace* old_space = heap->old_gen()->object_space();
-  MutableSpace* perm_space = heap->perm_gen()->object_space();
 #endif /* ASSERT */
 
   OopStarTaskQueue* const tq = claimed_stack_depth();
@@ -318,11 +317,11 @@
     obj = obj->forwardee();
   }
 
-#ifdef DEBUG
+#ifndef PRODUCT
   if (TraceScavenge) {
     gclog_or_tty->print_cr("{%s %s 0x%x (%d)}",
                            "promotion-failure",
-                           obj->blueprint()->internal_name(),
+                           obj->klass()->internal_name(),
                            obj, obj->size());
 
   }
--- a/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -212,13 +212,13 @@
     new_obj = o->forwardee();
   }
 
-#ifdef DEBUG
+#ifndef PRODUCT
   // This code must come after the CAS test, or it will print incorrect
   // information.
   if (TraceScavenge) {
-    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (" SIZE_FORMAT ")}",
+    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
        PSScavenge::should_scavenge(&new_obj) ? "copying" : "tenuring",
-       new_obj->blueprint()->internal_name(), o, new_obj, new_obj->size());
+       new_obj->klass()->internal_name(), o, new_obj, new_obj->size());
   }
 #endif
 
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -284,7 +284,6 @@
 
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
   PSAdaptiveSizePolicy* size_policy = heap->size_policy();
   heap->increment_total_collections();
 
@@ -338,7 +337,6 @@
     if (VerifyObjectStartArray &&
         VerifyBeforeGC) {
       old_gen->verify_object_start_array();
-      perm_gen->verify_object_start_array();
     }
 
     // Verify no unmarked old->young roots
@@ -370,12 +368,11 @@
     // Reset our survivor overflow.
     set_survivor_overflow(false);
 
-    // We need to save the old/perm top values before
+    // We need to save the old top values before
     // creating the promotion_manager. We pass the top
     // values to the card_table, to prevent it from
     // straying into the promotion labs.
     HeapWord* old_top = old_gen->object_space()->top();
-    HeapWord* perm_top = perm_gen->object_space()->top();
 
     // Release all previously held resources
     gc_task_manager()->release_all_resources();
@@ -403,8 +400,6 @@
         q->enqueue(new OldToYoungRootsTask(old_gen, old_top, i, stripe_total));
       }
 
-      q->enqueue(new SerialOldToYoungRootsTask(perm_gen, perm_top));
-
       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::universe));
       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jni_handles));
       // We scan the thread roots in parallel
@@ -454,13 +449,11 @@
       reference_processor()->enqueue_discovered_references(NULL);
     }
 
-    if (!JavaObjectsInPerm) {
       // Unlink any dead interned Strings
       StringTable::unlink(&_is_alive_closure);
       // Process the remaining live ones
       PSScavengeRootsClosure root_closure(promotion_manager);
       StringTable::oops_do(&root_closure);
-    }
 
     // Finally, flush the promotion_manager's labs, and deallocate its stacks.
     PSPromotionManager::post_scavenge();
@@ -503,10 +496,8 @@
                          heap->total_collections());
 
           if (Verbose) {
-            gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d"
-              " perm_gen_capacity: %d ",
-              old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes(),
-              perm_gen->capacity_in_bytes());
+            gclog_or_tty->print("old_gen_capacity: %d young_gen_capacity: %d",
+              old_gen->capacity_in_bytes(), young_gen->capacity_in_bytes());
           }
         }
 
@@ -564,7 +555,6 @@
           size_policy->compute_generation_free_space(young_gen->used_in_bytes(),
                                    young_gen->eden_space()->used_in_bytes(),
                                    old_gen->used_in_bytes(),
-                                   perm_gen->used_in_bytes(),
                                    young_gen->eden_space()->capacity_in_bytes(),
                                    old_gen->max_gen_size(),
                                    max_eden_size,
@@ -614,7 +604,6 @@
     if (VerifyObjectStartArray &&
         VerifyAfterGC) {
       old_gen->verify_object_start_array();
-      perm_gen->verify_object_start_array();
     }
 
     // Verify all old -> young cards are now precise
@@ -810,11 +799,8 @@
 
   PSYoungGen* young_gen = heap->young_gen();
   PSOldGen* old_gen = heap->old_gen();
-  PSPermGen* perm_gen = heap->perm_gen();
 
   // Set boundary between young_gen and old_gen
-  assert(perm_gen->reserved().end() <= old_gen->object_space()->bottom(),
-         "perm above old");
   assert(old_gen->reserved().end() <= young_gen->eden_space()->bottom(),
          "old above young");
   _young_generation_boundary = young_gen->eden_space()->bottom();
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -137,6 +137,8 @@
   template <class T, bool promote_immediately>
     inline static void copy_and_push_safe_barrier(PSPromotionManager* pm, T* p);
 
+  static void copy_and_push_safe_barrier_from_klass(PSPromotionManager* pm, oop* p);
+
   // Is an object in the young generation
   // This assumes that the HeapWord argument is in the heap,
   // so it only checks one side of the complete predicate.
--- a/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,6 +30,7 @@
 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
 #include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#include "memory/iterator.hpp"
 
 inline void PSScavenge::save_to_space_top_before_gc() {
   ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
@@ -75,10 +76,22 @@
   oop new_obj = o->is_forwarded()
         ? o->forwardee()
         : pm->copy_to_survivor_space<promote_immediately>(o);
+
+#ifndef PRODUCT
+  // This code must come after the CAS test, or it will print incorrect
+  // information.
+  if (TraceScavenge &&  o->is_forwarded()) {
+    gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " -> " PTR_FORMAT " (%d)}",
+       "forwarding",
+       new_obj->klass()->internal_name(), o, new_obj, new_obj->size());
+  }
+#endif
+
   oopDesc::encode_store_heap_oop_not_null(p, new_obj);
 
   // We cannot mark without test, as some code passes us pointers
-  // that are outside the heap.
+  // that are outside the heap. These pointers are either from roots
+  // or from metadata.
   if ((!PSScavenge::is_obj_in_young((HeapWord*)p)) &&
       Universe::heap()->is_in_reserved(p)) {
     if (PSScavenge::is_obj_in_young((HeapWord*)new_obj)) {
@@ -108,4 +121,85 @@
 typedef PSRootsClosure</*promote_immediately=*/false> PSScavengeRootsClosure;
 typedef PSRootsClosure</*promote_immediately=*/true> PSPromoteRootsClosure;
 
+// Scavenges a single oop in a Klass.
+class PSScavengeFromKlassClosure: public OopClosure {
+ private:
+  PSPromotionManager* _pm;
+  // Used to redirty a scanned klass if it has oops
+  // pointing to the young generation after being scanned.
+  Klass*             _scanned_klass;
+ public:
+  PSScavengeFromKlassClosure(PSPromotionManager* pm) : _pm(pm), _scanned_klass(NULL) { }
+  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
+  void do_oop(oop* p)       {
+    ParallelScavengeHeap* psh = ParallelScavengeHeap::heap();
+    assert(!psh->is_in_reserved(p), "GC barrier needed");
+    if (PSScavenge::should_scavenge(p)) {
+      assert(!Universe::heap()->is_in_reserved(p), "Not from meta-data?");
+      assert(PSScavenge::should_scavenge(p, true), "revisiting object?");
+
+      oop o = *p;
+      oop new_obj;
+      if (o->is_forwarded()) {
+        new_obj = o->forwardee();
+      } else {
+        new_obj = _pm->copy_to_survivor_space</*promote_immediately=*/false>(o);
+      }
+      oopDesc::encode_store_heap_oop_not_null(p, new_obj);
+
+      if (PSScavenge::is_obj_in_young((HeapWord*)new_obj)) {
+        do_klass_barrier();
+      }
+    }
+  }
+
+  void set_scanned_klass(Klass* klass) {
+    assert(_scanned_klass == NULL || klass == NULL, "Should always only handling one klass at a time");
+    _scanned_klass = klass;
+  }
+
+ private:
+  void do_klass_barrier() {
+    assert(_scanned_klass != NULL, "Should not be called without having a scanned klass");
+    _scanned_klass->record_modified_oops();
+  }
+
+};
+
+// Scavenges the oop in a Klass.
+class PSScavengeKlassClosure: public KlassClosure {
+ private:
+  PSScavengeFromKlassClosure _oop_closure;
+ protected:
+ public:
+  PSScavengeKlassClosure(PSPromotionManager* pm) : _oop_closure(pm) { }
+  void do_klass(Klass* klass) {
+    // If the klass has not been dirtied we know that there's
+    // no references into  the young gen and we can skip it.
+
+#ifndef PRODUCT
+    if (TraceScavenge) {
+      ResourceMark rm;
+      gclog_or_tty->print_cr("PSScavengeKlassClosure::do_klass %p, %s, dirty: %s",
+                             klass,
+                             klass->external_name(),
+                             klass->has_modified_oops() ? "true" : "false");
+    }
+#endif
+
+    if (klass->has_modified_oops()) {
+      // Clean the klass since we're going to scavenge all the metadata.
+      klass->clear_modified_oops();
+
+      // Setup the promotion manager to redirty this klass
+      // if references are left in the young gen.
+      _oop_closure.set_scanned_klass(klass);
+
+      klass->oops_do(&_oop_closure);
+
+      _oop_closure.set_scanned_klass(NULL);
+    }
+  }
+};
+
 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_PSSCAVENGE_INLINE_HPP
--- a/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -78,7 +78,13 @@
       break;
 
     case system_dictionary:
+      {
       SystemDictionary::oops_do(&roots_closure);
+
+        // Move this to another root_type?
+        PSScavengeKlassClosure klass_closure(pm);
+        ClassLoaderDataGraph::oops_do(&roots_closure, &klass_closure, false);
+      }
       break;
 
     case management:
--- a/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -166,7 +166,7 @@
   HeapWord** end_addr() const   { return eden_space()->end_addr(); }
 
   // Iteration.
-  void oop_iterate(OopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
   void object_iterate(ObjectClosure* cl);
 
   virtual void reset_after_change();
--- a/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -54,27 +54,6 @@
   }
 }
 
-VM_ParallelGCFailedPermanentAllocation::VM_ParallelGCFailedPermanentAllocation(size_t size,
-  unsigned int gc_count, unsigned int full_gc_count) :
-  VM_GC_Operation(gc_count, GCCause::_allocation_failure, full_gc_count, true /* full */),
-  _size(size),
-  _result(NULL)
-{
-}
-
-void VM_ParallelGCFailedPermanentAllocation::doit() {
-  SvcGCMarker sgcm(SvcGCMarker::FULL);
-
-  ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
-  assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "must be a ParallelScavengeHeap");
-
-  GCCauseSetter gccs(heap, _gc_cause);
-  _result = heap->failed_permanent_mem_allocate(_size);
-  if (_result == NULL && GC_locker::is_active_and_needs_gc()) {
-    set_gc_locked();
-  }
-}
-
 // Only used for System.gc() calls
 VM_ParallelGCSystemGC::VM_ParallelGCSystemGC(unsigned int gc_count,
                                              unsigned int full_gc_count,
@@ -96,6 +75,6 @@
     // If (and only if) the scavenge fails, this will invoke a full gc.
     heap->invoke_scavenge();
   } else {
-    heap->invoke_full_gc(false);
+    heap->do_full_collection(false);
   }
 }
--- a/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmPSOperations.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -45,22 +45,6 @@
   HeapWord* result() const       { return _result; }
 };
 
-class VM_ParallelGCFailedPermanentAllocation: public VM_GC_Operation {
-private:
-  size_t    _size;
-  HeapWord* _result;
-
- public:
-  VM_ParallelGCFailedPermanentAllocation(size_t size,
-                                         unsigned int gc_count,
-                                         unsigned int full_gc_count);
-  virtual VMOp_Type type() const {
-    return VMOp_ParallelGCFailedPermanentAllocation;
-  }
-  virtual void doit();
-  HeapWord* result() const       { return _result; }
-};
-
 class VM_ParallelGCSystemGC: public VM_GC_Operation {
  public:
   VM_ParallelGCSystemGC(unsigned int gc_count, unsigned int full_gc_count,
--- a/src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -58,11 +58,9 @@
   nonstatic_field(PSOldGen,                    _min_gen_size,                                 const size_t)                          \
   nonstatic_field(PSOldGen,                    _max_gen_size,                                 const size_t)                          \
                                                                                                                                      \
-  nonstatic_field(PSPermGen,                   _last_used,                                    size_t)                                \
                                                                                                                                      \
      static_field(ParallelScavengeHeap,        _young_gen,                                    PSYoungGen*)                           \
      static_field(ParallelScavengeHeap,        _old_gen,                                      PSOldGen*)                             \
-     static_field(ParallelScavengeHeap,        _perm_gen,                                     PSPermGen*)                            \
      static_field(ParallelScavengeHeap,        _psh,                                          ParallelScavengeHeap*)                 \
                                                                                                                                      \
 
@@ -81,7 +79,6 @@
            declare_type(ASPSYoungGen, PSYoungGen)                         \
   declare_toplevel_type(PSOldGen)                                         \
            declare_type(ASPSOldGen, PSOldGen)                             \
-           declare_type(PSPermGen, PSOldGen)                              \
                                                                           \
   /*****************************/                                         \
   /* Parallel GC pointer types */                                         \
@@ -94,7 +91,6 @@
   declare_toplevel_type(ASPSYoungGen*)                                    \
   declare_toplevel_type(PSOldGen*)                                        \
   declare_toplevel_type(ASPSOldGen*)                                      \
-  declare_toplevel_type(PSPermGen*)                                       \
   declare_toplevel_type(ParallelScavengeHeap*)
 
 #endif // SHARE_VM_GC_IMPLEMENTATION_PARALLELSCAVENGE_VMSTRUCTS_PARALLELGC_HPP
--- a/src/share/vm/gc_implementation/shared/cSpaceCounters.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/cSpaceCounters.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "gc_implementation/shared/cSpaceCounters.hpp"
+#include "memory/metaspace.hpp"
 #include "memory/resourceArea.hpp"
 
 CSpaceCounters::CSpaceCounters(const char* name, int ordinal, size_t max_size,
@@ -44,7 +45,7 @@
     PerfDataManager::create_string_constant(SUN_GC, cname, name, CHECK);
 
     cname = PerfDataManager::counter_name(_name_space, "maxCapacity");
-    PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes,
+    _max_capacity = PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,
                                      (jlong)max_size, CHECK);
 
     cname = PerfDataManager::counter_name(_name_space, "capacity");
--- a/src/share/vm/gc_implementation/shared/cSpaceCounters.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/cSpaceCounters.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -38,6 +38,7 @@
  private:
   PerfVariable*      _capacity;
   PerfVariable*      _used;
+  PerfVariable*      _max_capacity;
 
   // Constant PerfData types don't need to retain a reference.
   // However, it's a good idea to document them here.
@@ -55,15 +56,15 @@
       if (_name_space != NULL) FREE_C_HEAP_ARRAY(char, _name_space, mtInternal);
   }
 
-  inline void update_capacity() {
+  virtual inline void update_capacity() {
     _capacity->set_value(_space->capacity());
   }
 
-  inline void update_used() {
+  virtual inline void update_used() {
     _used->set_value(_space->used());
   }
 
-  inline void update_all() {
+  virtual inline void update_all() {
     update_used();
     update_capacity();
   }
--- a/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -175,7 +175,7 @@
 {}
 
 SurrogateLockerThread* SurrogateLockerThread::make(TRAPS) {
-  klassOop k =
+  Klass* k =
     SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(),
                                       true, CHECK_NULL);
   instanceKlassHandle klass (THREAD, k);
@@ -255,13 +255,13 @@
     }
     switch(msg) {
       case acquirePLL: {
-        instanceRefKlass::acquire_pending_list_lock(&pll_basic_lock);
+        InstanceRefKlass::acquire_pending_list_lock(&pll_basic_lock);
         debug_only(owned++;)
         break;
       }
       case releaseAndNotifyPLL: {
         assert(owned > 0, "Don't have PLL");
-        instanceRefKlass::release_and_notify_pending_list_lock(&pll_basic_lock);
+        InstanceRefKlass::release_and_notify_pending_list_lock(&pll_basic_lock);
         debug_only(owned--;)
         break;
       }
--- a/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -40,7 +40,7 @@
   _end = end;
 }
 
-void ImmutableSpace::oop_iterate(OopClosure* cl) {
+void ImmutableSpace::oop_iterate(ExtendedOopClosure* cl) {
   HeapWord* obj_addr = bottom();
   HeapWord* t = end();
   // Could call objects iterate, but this is easier.
--- a/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -59,7 +59,7 @@
   virtual size_t capacity_in_words(Thread*) const { return capacity_in_words(); }
 
   // Iteration.
-  virtual void oop_iterate(OopClosure* cl);
+  virtual void oop_iterate(ExtendedOopClosure* cl);
   virtual void object_iterate(ObjectClosure* cl);
 
   // Debugging
--- a/src/share/vm/gc_implementation/shared/markSweep.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/markSweep.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,13 +26,13 @@
 #include "compiler/compileBroker.hpp"
 #include "gc_implementation/shared/markSweep.inline.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.inline.hpp"
 #include "oops/oop.inline.hpp"
 
+unsigned int            MarkSweep::_total_invocations = 0;
+
 Stack<oop, mtGC>              MarkSweep::_marking_stack;
-Stack<DataLayout*, mtGC>      MarkSweep::_revisit_mdo_stack;
-Stack<Klass*, mtGC>           MarkSweep::_revisit_klass_stack;
 Stack<ObjArrayTask, mtGC>     MarkSweep::_objarray_stack;
 
 Stack<oop, mtGC>              MarkSweep::_preserved_oop_stack;
@@ -62,47 +62,6 @@
 GrowableArray<size_t>   * MarkSweep::_last_gc_live_oops_size = NULL;
 #endif
 
-void MarkSweep::revisit_weak_klass_link(Klass* k) {
-  _revisit_klass_stack.push(k);
-}
-
-void MarkSweep::follow_weak_klass_links() {
-  // All klasses on the revisit stack are marked at this point.
-  // Update and follow all subklass, sibling and implementor links.
-  if (PrintRevisitStats) {
-    gclog_or_tty->print_cr("#classes in system dictionary = %d",
-                           SystemDictionary::number_of_classes());
-    gclog_or_tty->print_cr("Revisit klass stack size = " SIZE_FORMAT,
-                           _revisit_klass_stack.size());
-  }
-  while (!_revisit_klass_stack.is_empty()) {
-    Klass* const k = _revisit_klass_stack.pop();
-    k->follow_weak_klass_links(&is_alive, &keep_alive);
-  }
-  follow_stack();
-}
-
-void MarkSweep::revisit_mdo(DataLayout* p) {
-  _revisit_mdo_stack.push(p);
-}
-
-void MarkSweep::follow_mdo_weak_refs() {
-  // All strongly reachable oops have been marked at this point;
-  // we can visit and clear any weak references from MDO's which
-  // we memoized during the strong marking phase.
-  assert(_marking_stack.is_empty(), "Marking stack should be empty");
-  if (PrintRevisitStats) {
-    gclog_or_tty->print_cr("#classes in system dictionary = %d",
-                           SystemDictionary::number_of_classes());
-    gclog_or_tty->print_cr("Revisit MDO stack size = " SIZE_FORMAT,
-                           _revisit_mdo_stack.size());
-  }
-  while (!_revisit_mdo_stack.is_empty()) {
-    _revisit_mdo_stack.pop()->follow_weak_refs(&is_alive);
-  }
-  follow_stack();
-}
-
 MarkSweep::FollowRootClosure  MarkSweep::follow_root_closure;
 CodeBlobToOopClosure MarkSweep::follow_code_root_closure(&MarkSweep::follow_root_closure, /*do_marking=*/ true);
 
@@ -110,10 +69,46 @@
 void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }
 
 MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;
+MarkSweep::FollowKlassClosure MarkSweep::follow_klass_closure;
+MarkSweep::AdjustKlassClosure MarkSweep::adjust_klass_closure;
 
-void MarkSweep::MarkAndPushClosure::do_oop(oop* p)       { assert(*p == NULL || (*p)->is_oop(), ""); mark_and_push(p); }
+void MarkSweep::MarkAndPushClosure::do_oop(oop* p)       { mark_and_push(p); }
 void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }
 
+void MarkSweep::FollowKlassClosure::do_klass(Klass* klass) {
+  klass->oops_do(&MarkSweep::mark_and_push_closure);
+}
+void MarkSweep::AdjustKlassClosure::do_klass(Klass* klass) {
+  klass->oops_do(&MarkSweep::adjust_pointer_closure);
+}
+
+void MarkSweep::follow_klass(Klass* klass) {
+  ClassLoaderData* cld = klass->class_loader_data();
+  assert(cld->has_defined(klass), "inconsistency!");
+
+  // The actual processing of the klass is done when we
+  // traverse the list of Klasses in the class loader data.
+  MarkSweep::follow_class_loader(cld);
+}
+
+void MarkSweep::adjust_klass(Klass* klass) {
+  ClassLoaderData* cld = klass->class_loader_data();
+  assert(cld->has_defined(klass), "inconsistency!");
+
+  // The actual processing of the klass is done when we
+  // traverse the list of Klasses in the class loader data.
+  MarkSweep::adjust_class_loader(cld);
+}
+
+void MarkSweep::follow_class_loader(ClassLoaderData* cld) {
+  cld->oops_do(&MarkSweep::mark_and_push_closure, &MarkSweep::follow_klass_closure, true);
+}
+
+void MarkSweep::adjust_class_loader(ClassLoaderData* cld) {
+  cld->oops_do(&MarkSweep::adjust_root_pointer_closure, &MarkSweep::adjust_klass_closure, true);
+}
+
+
 void MarkSweep::follow_stack() {
   do {
     while (!_marking_stack.is_empty()) {
@@ -124,7 +119,7 @@
     // Process ObjArrays one at a time to avoid marking stack bloat.
     if (!_objarray_stack.is_empty()) {
       ObjArrayTask task = _objarray_stack.pop();
-      objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();
+      objArrayKlass* const k = (objArrayKlass*)task.obj()->klass();
       k->oop_follow_contents(task.obj(), task.index());
     }
   } while (!_marking_stack.is_empty() || !_objarray_stack.is_empty());
@@ -237,7 +232,7 @@
     _pointer_tracking = true;
 
     AdjusterTracker checker;
-    obj->oop_iterate(&checker);
+    obj->oop_iterate_no_header(&checker);
   }
 }
 
@@ -248,10 +243,10 @@
   }
 }
 
-void MarkSweep::reset_live_oop_tracking(bool at_perm) {
+void MarkSweep::reset_live_oop_tracking() {
   if (ValidateMarkSweep) {
     guarantee((size_t)_live_oops->length() == _live_oops_index, "should be at end of live oops");
-    _live_oops_index = at_perm ? _live_oops_index_at_perm : 0;
+    _live_oops_index = 0;
   }
 }
 
--- a/src/share/vm/gc_implementation/shared/markSweep.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/markSweep.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -76,8 +76,17 @@
    public:
     virtual void do_oop(oop* p);
     virtual void do_oop(narrowOop* p);
-    virtual const bool should_remember_mdo() const { return true; }
-    virtual void remember_mdo(DataLayout* p) { MarkSweep::revisit_mdo(p); }
+  };
+
+  // The one and only place to start following the classes.
+  // Should only be applied to the ClassLoaderData klasses list.
+  class FollowKlassClosure : public KlassClosure {
+   public:
+    void do_klass(Klass* klass);
+  };
+  class AdjustKlassClosure : public KlassClosure {
+   public:
+    void do_klass(Klass* klass);
   };
 
   class FollowStackClosure: public VoidClosure {
@@ -121,13 +130,12 @@
   // Vars
   //
  protected:
+  // Total invocations of a MarkSweep collection
+  static unsigned int _total_invocations;
+
   // Traversal stacks used during phase1
   static Stack<oop, mtGC>                      _marking_stack;
   static Stack<ObjArrayTask, mtGC>             _objarray_stack;
-  // Stack for live klasses to revisit at end of marking phase
-  static Stack<Klass*, mtGC>                   _revisit_klass_stack;
-  // Set (stack) of MDO's to revisit at end of marking phase
-  static Stack<DataLayout*, mtGC>              _revisit_mdo_stack;
 
   // Space for storing/restoring mark word
   static Stack<markOop, mtGC>                  _preserved_mark_stack;
@@ -167,27 +175,25 @@
 #endif
 
   // Non public closures
-  static IsAliveClosure   is_alive;
   static KeepAliveClosure keep_alive;
 
-  // Class unloading. Update subklass/sibling/implementor links at end of marking phase.
-  static void follow_weak_klass_links();
-
-  // Class unloading. Clear weak refs in MDO's (ProfileData)
-  // at the end of the marking phase.
-  static void follow_mdo_weak_refs();
-
   // Debugging
   static void trace(const char* msg) PRODUCT_RETURN;
 
  public:
   // Public closures
+  static IsAliveClosure       is_alive;
   static FollowRootClosure    follow_root_closure;
   static CodeBlobToOopClosure follow_code_root_closure; // => follow_root_closure
   static MarkAndPushClosure   mark_and_push_closure;
+  static FollowKlassClosure   follow_klass_closure;
   static FollowStackClosure   follow_stack_closure;
   static AdjustPointerClosure adjust_root_pointer_closure;
   static AdjustPointerClosure adjust_pointer_closure;
+  static AdjustKlassClosure   adjust_klass_closure;
+
+  // Accessors
+  static unsigned int total_invocations() { return _total_invocations; }
 
   // Reference Processing
   static ReferenceProcessor* const ref_processor() { return _ref_processor; }
@@ -196,12 +202,20 @@
   static void mark_object(oop obj);
   // Mark pointer and follow contents.  Empty marking stack afterwards.
   template <class T> static inline void follow_root(T* p);
+
   // Check mark and maybe push on marking stack
-  template <class T> static inline void mark_and_push(T* p);
+  template <class T> static void mark_and_push(T* p);
+
   static inline void push_objarray(oop obj, size_t index);
 
   static void follow_stack();   // Empty marking stack.
 
+  static void follow_klass(Klass* klass);
+  static void adjust_klass(Klass* klass);
+
+  static void follow_class_loader(ClassLoaderData* cld);
+  static void adjust_class_loader(ClassLoaderData* cld);
+
   static void preserve_mark(oop p, markOop mark);
                                 // Save the mark word so it can be restored later
   static void adjust_marks();   // Adjust the pointers in the preserved marks table
@@ -219,7 +233,7 @@
   static void track_interior_pointers(oop obj);
   static void check_interior_pointers();
 
-  static void reset_live_oop_tracking(bool at_perm);
+  static void reset_live_oop_tracking();
   static void register_live_oop(oop p, size_t size);
   static void validate_live_oop(oop p, size_t size);
   static void live_oop_moved_to(HeapWord* q, size_t size, HeapWord* compaction_top);
@@ -231,12 +245,6 @@
   // tracking down heap stomps.
   static void print_new_location_of_heap_address(HeapWord* q);
 #endif
-
-  // Call backs for class unloading
-  // Update subklass/sibling/implementor links at end of marking.
-  static void revisit_weak_klass_link(Klass* k);
-  // For weak refs clearing in MDO's
-  static void revisit_mdo(DataLayout* p);
 };
 
 class PreservedMark VALUE_OBJ_CLASS_SPEC {
--- a/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -88,9 +88,8 @@
     oop new_obj = oop(obj->mark()->decode_pointer());
     assert(new_obj != NULL ||                         // is forwarding ptr?
            obj->mark() == markOopDesc::prototype() || // not gc marked?
-           (UseBiasedLocking && obj->mark()->has_bias_pattern()) ||
+           (UseBiasedLocking && obj->mark()->has_bias_pattern()),
                                                       // not gc marked?
-           obj->is_shared(),                          // never forwarded?
            "should be forwarded");
     if (new_obj != NULL) {
       assert(Universe::heap()->is_in_reserved(new_obj),
--- a/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -216,7 +216,7 @@
   return (HeapWord*)Atomic::cmpxchg_ptr(obj, top_addr(), expected_top) == expected_top;
 }
 
-void MutableSpace::oop_iterate(OopClosure* cl) {
+void MutableSpace::oop_iterate(ExtendedOopClosure* cl) {
   HeapWord* obj_addr = bottom();
   HeapWord* t = top();
   // Could call objects iterate, but this is easier.
@@ -225,6 +225,15 @@
   }
 }
 
+void MutableSpace::oop_iterate_no_header(OopClosure* cl) {
+  HeapWord* obj_addr = bottom();
+  HeapWord* t = top();
+  // Could call objects iterate, but this is easier.
+  while (obj_addr < t) {
+    obj_addr += oop(obj_addr)->oop_iterate_no_header(cl);
+  }
+}
+
 void MutableSpace::object_iterate(ObjectClosure* cl) {
   HeapWord* p = bottom();
   while (p < top()) {
--- a/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -133,7 +133,8 @@
   bool cas_deallocate(HeapWord *obj, size_t size);
 
   // Iteration.
-  void oop_iterate(OopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
+  void oop_iterate_no_header(OopClosure* cl);
   void object_iterate(ObjectClosure* cl);
 
   // Debugging
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -70,13 +70,13 @@
 
 void VM_GC_Operation::acquire_pending_list_lock() {
   // we may enter this with pending exception set
-  instanceRefKlass::acquire_pending_list_lock(&_pending_list_basic_lock);
+  InstanceRefKlass::acquire_pending_list_lock(&_pending_list_basic_lock);
 }
 
 
 void VM_GC_Operation::release_and_notify_pending_list_lock() {
 
-  instanceRefKlass::release_and_notify_pending_list_lock(&_pending_list_basic_lock);
+  InstanceRefKlass::release_and_notify_pending_list_lock(&_pending_list_basic_lock);
 }
 
 // Allocations may fail in several threads at about the same time,
@@ -192,31 +192,69 @@
   gch->do_full_collection(gch->must_clear_all_soft_refs(), _max_level);
 }
 
-void VM_GenCollectForPermanentAllocation::doit() {
+void VM_CollectForMetadataAllocation::doit() {
   SvcGCMarker sgcm(SvcGCMarker::FULL);
 
-  SharedHeap* heap = (SharedHeap*)Universe::heap();
+  CollectedHeap* heap = Universe::heap();
   GCCauseSetter gccs(heap, _gc_cause);
-  switch (heap->kind()) {
-    case (CollectedHeap::GenCollectedHeap): {
-      GenCollectedHeap* gch = (GenCollectedHeap*)heap;
-      gch->do_full_collection(gch->must_clear_all_soft_refs(),
-                              gch->n_gens() - 1);
-      break;
+
+  bool do_cms_concurrent = false;
+
+  // Check again if the space is available.  Another thread
+  // may have similarly failed a metadata allocation and induced
+  // a GC that freed space for the allocation.
+  if (!MetadataAllocationFailALot) {
+    _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+    }
+
+  if (_result == NULL) {
+    if (!UseConcMarkSweepGC) {
+      // Don't clear the soft refs the first time.
+      heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
+      _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+      // Don't do this for now
+      // This seems too costly to do a second full GC
+      // Let the metaspace grow instead
+      // if (_result == NULL) {
+      //  // If allocation fails again, clear soft refs
+      //  heap->collect_as_vm_thread(GCCause::_last_ditch_collection);
+      //  _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+      // }
+    } else {
+      MetaspaceGC::set_should_concurrent_collect(true);
+      do_cms_concurrent = true;
     }
-#ifndef SERIALGC
-    case (CollectedHeap::G1CollectedHeap): {
-      G1CollectedHeap* g1h = (G1CollectedHeap*)heap;
-      g1h->do_full_collection(_gc_cause == GCCause::_last_ditch_collection);
-      break;
+    if (_result == NULL) {
+      // If still failing, allow the Metaspace to expand.
+      // See delta_capacity_until_GC() for explanation of the
+      // amount of the expansion.
+      // This should work unless there really is no more space
+      // or a MaxMetaspaceSize has been specified on the command line.
+      MetaspaceGC::set_expand_after_GC(true);
+      size_t before_inc = MetaspaceGC::capacity_until_GC();
+      size_t delta_words = MetaspaceGC::delta_capacity_until_GC(_size);
+      MetaspaceGC::inc_capacity_until_GC(delta_words);
+      if (PrintGCDetails && Verbose) {
+        gclog_or_tty->print_cr("Increase capacity to GC from " SIZE_FORMAT
+          " to " SIZE_FORMAT, before_inc, MetaspaceGC::capacity_until_GC());
+  }
+      _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+      if (do_cms_concurrent && _result == NULL) {
+        // Rather than fail with a metaspace out-of-memory, do a full
+        // GC for CMS.
+        heap->collect_as_vm_thread(GCCause::_metadata_GC_threshold);
+        _result = _loader_data->metaspace_non_null()->allocate(_size, _mdtype);
+      }
+      if (_result == NULL) {
+        if (PrintGCDetails) {
+          gclog_or_tty->print_cr("\nAfter Metaspace GC failed to allocate size "
+                                 SIZE_FORMAT, _size);
+        }
+      }
     }
-#endif // SERIALGC
-    default:
-      ShouldNotReachHere();
   }
-  _res = heap->perm_gen()->allocate(_size, false);
-  assert(heap->is_in_reserved_or_null(_res), "result not in heap");
-  if (_res == NULL && GC_locker::is_active_and_needs_gc()) {
+
+  if (_result == NULL && GC_locker::is_active_and_needs_gc()) {
     set_gc_locked();
   }
 }
--- a/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -42,7 +42,6 @@
 //          VM_GenCollectFull
 //          VM_GenCollectFullConcurrent
 //          VM_ParallelGCFailedAllocation
-//          VM_ParallelGCFailedPermanentAllocation
 //          VM_ParallelGCSystemGC
 //  VM_GC_Operation
 //   - implements methods common to all classes in the hierarchy:
@@ -53,9 +52,7 @@
 //     is specified; and also the attach "inspectheap" operation
 //
 //  VM_GenCollectForAllocation
-//  VM_GenCollectForPermanentAllocation
 //  VM_ParallelGCFailedAllocation
-//  VM_ParallelGCFailedPermanentAllocation
 //   - this operation is invoked when allocation is failed;
 //     operation performs garbage collection and tries to
 //     allocate afterwards;
@@ -191,24 +188,27 @@
   virtual void doit();
 };
 
-class VM_GenCollectForPermanentAllocation: public VM_GC_Operation {
+class VM_CollectForMetadataAllocation: public VM_GC_Operation {
  private:
-  HeapWord*   _res;
+  MetaWord*                _result;
   size_t      _size;                       // size of object to be allocated
+  Metaspace::MetadataType  _mdtype;
+  ClassLoaderData*         _loader_data;
  public:
-  VM_GenCollectForPermanentAllocation(size_t size,
+  VM_CollectForMetadataAllocation(ClassLoaderData* loader_data,
+                                  size_t size, Metaspace::MetadataType mdtype,
                                       unsigned int gc_count_before,
                                       unsigned int full_gc_count_before,
                                       GCCause::Cause gc_cause)
     : VM_GC_Operation(gc_count_before, gc_cause, full_gc_count_before, true),
-      _size(size) {
-    _res = NULL;
-    _gc_cause = gc_cause;
+      _loader_data(loader_data), _size(size), _mdtype(mdtype), _result(NULL) {
   }
-  ~VM_GenCollectForPermanentAllocation()  {}
-  virtual VMOp_Type type() const { return VMOp_GenCollectForPermanentAllocation; }
+  ~VM_CollectForMetadataAllocation()  {
+    MetaspaceGC::set_expand_after_GC(false);
+  }
+  virtual VMOp_Type type() const { return VMOp_CollectForMetadataAllocation; }
   virtual void doit();
-  HeapWord* result() const       { return _res; }
+  MetaWord* result() const       { return _result; }
 };
 
 class SvcGCMarker : public StackObj {
--- a/src/share/vm/gc_interface/collectedHeap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_interface/collectedHeap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -114,6 +114,38 @@
   }
 }
 
+// This interface assumes that it's being called by the
+// vm thread. It collects the heap assuming that the
+// heap lock is already held and that we are executing in
+// the context of the vm thread.
+void CollectedHeap::collect_as_vm_thread(GCCause::Cause cause) {
+  assert(Thread::current()->is_VM_thread(), "Precondition#1");
+  assert(Heap_lock->is_locked(), "Precondition#2");
+  GCCauseSetter gcs(this, cause);
+  switch (cause) {
+    case GCCause::_heap_inspection:
+    case GCCause::_heap_dump:
+    case GCCause::_metadata_GC_threshold : {
+      HandleMark hm;
+      do_full_collection(false);        // don't clear all soft refs
+      break;
+    }
+    case GCCause::_last_ditch_collection: {
+      HandleMark hm;
+      do_full_collection(true);         // do clear all soft refs
+      break;
+    }
+    default:
+      ShouldNotReachHere(); // Unexpected use of this function
+  }
+}
+MetaWord* CollectedHeap::satisfy_failed_metadata_allocation(
+                                              ClassLoaderData* loader_data,
+                                              size_t size, Metaspace::MetadataType mdtype) {
+  return collector_policy()->satisfy_failed_metadata_allocation(loader_data, size, mdtype);
+}
+
+
 void CollectedHeap::pre_initialize() {
   // Used for ReduceInitialCardMarks (when COMPILER2 is used);
   // otherwise remains unused.
@@ -215,9 +247,7 @@
       assert(is_in(old_obj), "Not in allocated heap");
       assert(!can_elide_initializing_store_barrier(old_obj),
              "Else should have been filtered in new_store_pre_barrier()");
-      assert(!is_in_permanent(old_obj), "Sanity: not expected");
       assert(old_obj->is_oop(true), "Not an oop");
-      assert(old_obj->is_parsable(), "Will not be concurrently parsable");
       assert(deferred.word_size() == (size_t)(old_obj->size()),
              "Mismatch: multiple objects?");
     }
@@ -470,15 +500,11 @@
   assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
   assert(size >= 0, "int won't convert to size_t");
   HeapWord* obj;
-  if (JavaObjectsInPerm) {
-    obj = common_permanent_mem_allocate_init(size, CHECK_NULL);
-  } else {
     assert(ScavengeRootsInCode > 0, "must be");
     obj = common_mem_allocate_init(size, CHECK_NULL);
-  }
   post_allocation_setup_common(klass, obj);
   assert(Universe::is_bootstrapping() ||
-         !((oop)obj)->blueprint()->oop_is_array(), "must not be an array");
+         !((oop)obj)->is_array(), "must not be an array");
   NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value(obj, size));
   oop mirror = (oop)obj;
 
@@ -490,7 +516,7 @@
     real_klass->set_java_mirror(mirror);
   }
 
-  instanceMirrorKlass* mk = instanceMirrorKlass::cast(mirror->klass());
+  InstanceMirrorKlass* mk = InstanceMirrorKlass::cast(mirror->klass());
   assert(size == mk->instance_size(real_klass), "should have been set");
 
   // notify jvmti and dtrace
--- a/src/share/vm/gc_interface/collectedHeap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_interface/collectedHeap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -77,7 +77,6 @@
 class CollectedHeap : public CHeapObj<mtInternal> {
   friend class VMStructs;
   friend class IsGCActiveMark; // Block structured external access to _is_gc_active
-  friend class constantPoolCacheKlass; // allocate() method inserts is_conc_safe
 
 #ifdef ASSERT
   static int       _fire_out_of_memory_count;
@@ -140,14 +139,6 @@
   // is guaranteed initialized to zeros.
   inline static HeapWord* common_mem_allocate_init(size_t size, TRAPS);
 
-  // Same as common_mem version, except memory is allocated in the permanent area
-  // If there is no permanent area, revert to common_mem_allocate_noinit
-  inline static HeapWord* common_permanent_mem_allocate_noinit(size_t size, TRAPS);
-
-  // Same as common_mem version, except memory is allocated in the permanent area
-  // If there is no permanent area, revert to common_mem_allocate_init
-  inline static HeapWord* common_permanent_mem_allocate_init(size_t size, TRAPS);
-
   // Helper functions for (VM) allocation.
   inline static void post_allocation_setup_common(KlassHandle klass, HeapWord* obj);
   inline static void post_allocation_setup_no_klass_install(KlassHandle klass,
@@ -221,14 +212,11 @@
   // reach, without a garbage collection.
   virtual bool is_maximal_no_gc() const = 0;
 
-  virtual size_t permanent_capacity() const = 0;
-  virtual size_t permanent_used() const = 0;
-
   // Support for java.lang.Runtime.maxMemory():  return the maximum amount of
   // memory that the vm could make available for storing 'normal' java objects.
   // This is based on the reserved address space, but should not include space
-  // that the vm uses internally for bookkeeping or temporary storage (e.g.,
-  // perm gen space or, in the case of the young gen, one of the survivor
+  // that the vm uses internally for bookkeeping or temporary storage
+  // (e.g., in the case of the young gen, one of the survivor
   // spaces).
   virtual size_t max_capacity() const = 0;
 
@@ -250,6 +238,15 @@
     return p == NULL || is_in(p);
   }
 
+  bool is_in_place(Metadata** p) {
+    return !Universe::heap()->is_in(p);
+  }
+  bool is_in_place(oop* p) { return Universe::heap()->is_in(p); }
+  bool is_in_place(narrowOop* p) {
+    oop o = oopDesc::load_decode_heap_oop_not_null(p);
+    return Universe::heap()->is_in((const void*)o);
+  }
+
   // Let's define some terms: a "closed" subset of a heap is one that
   //
   // 1) contains all currently-allocated objects, and
@@ -282,37 +279,12 @@
     return p == NULL || is_in_closed_subset(p);
   }
 
-  // XXX is_permanent() and is_in_permanent() should be better named
-  // to distinguish one from the other.
-
-  // Returns "TRUE" if "p" is allocated as "permanent" data.
-  // If the heap does not use "permanent" data, returns the same
-  // value is_in_reserved() would return.
-  // NOTE: this actually returns true if "p" is in reserved space
-  // for the space not that it is actually allocated (i.e. in committed
-  // space). If you need the more conservative answer use is_permanent().
-  virtual bool is_in_permanent(const void *p) const = 0;
-
-
 #ifdef ASSERT
   // Returns true if "p" is in the part of the
   // heap being collected.
   virtual bool is_in_partial_collection(const void *p) = 0;
 #endif
 
-  bool is_in_permanent_or_null(const void *p) const {
-    return p == NULL || is_in_permanent(p);
-  }
-
-  // Returns "TRUE" if "p" is in the committed area of  "permanent" data.
-  // If the heap does not use "permanent" data, returns the same
-  // value is_in() would return.
-  virtual bool is_permanent(const void *p) const = 0;
-
-  bool is_permanent_or_null(const void *p) const {
-    return p == NULL || is_permanent(p);
-  }
-
   // An object is scavengable if its location may move during a scavenge.
   // (A scavenge is a GC which is not a full GC.)
   virtual bool is_scavengable(const void *p) = 0;
@@ -320,7 +292,7 @@
   // Returns "TRUE" if "p" is a method oop in the
   // current heap, with high probability. This predicate
   // is not stable, in general.
-  bool is_valid_method(oop p) const;
+  bool is_valid_method(Method* p) const;
 
   void set_gc_cause(GCCause::Cause v) {
      if (UsePerfData) {
@@ -338,11 +310,6 @@
   // May be overridden to set additional parallelism.
   virtual void set_par_threads(uint t) { _n_par_threads = t; };
 
-  // Preload classes into the shared portion of the heap, and then dump
-  // that data to a file so that it can be loaded directly by another
-  // VM (then terminate).
-  virtual void preload_and_dump(TRAPS) { ShouldNotReachHere(); }
-
   // Allocate and initialize instances of Class
   static oop Class_obj_allocate(KlassHandle klass, int size, KlassHandle real_klass, TRAPS);
 
@@ -351,30 +318,15 @@
   inline static oop array_allocate(KlassHandle klass, int size, int length, TRAPS);
   inline static oop array_allocate_nozero(KlassHandle klass, int size, int length, TRAPS);
 
-  // Special obj/array allocation facilities.
-  // Some heaps may want to manage "permanent" data uniquely. These default
-  // to the general routines if the heap does not support such handling.
-  inline static oop permanent_obj_allocate(KlassHandle klass, int size, TRAPS);
-  // permanent_obj_allocate_no_klass_install() does not do the installation of
-  // the klass pointer in the newly created object (as permanent_obj_allocate()
-  // above does).  This allows for a delay in the installation of the klass
-  // pointer that is needed during the create of klassKlass's.  The
-  // method post_allocation_install_obj_klass() is used to install the
-  // klass pointer.
-  inline static oop permanent_obj_allocate_no_klass_install(KlassHandle klass,
-                                                            int size,
-                                                            TRAPS);
-  inline static void post_allocation_install_obj_klass(KlassHandle klass, oop obj);
-  inline static oop permanent_array_allocate(KlassHandle klass, int size, int length, TRAPS);
+  inline static void post_allocation_install_obj_klass(KlassHandle klass,
+                                                       oop obj);
 
   // Raw memory allocation facilities
   // The obj and array allocate methods are covers for these methods.
-  // The permanent allocation method should default to mem_allocate if
-  // permanent memory isn't supported. mem_allocate() should never be
+  // mem_allocate() should never be
   // called to allocate TLABs, only individual objects.
   virtual HeapWord* mem_allocate(size_t size,
                                  bool* gc_overhead_limit_was_exceeded) = 0;
-  virtual HeapWord* permanent_mem_allocate(size_t size) = 0;
 
   // Utilities for turning raw memory into filler objects.
   //
@@ -504,11 +456,6 @@
   // remembered set.
   virtual void flush_deferred_store_barrier(JavaThread* thread);
 
-  // Can a compiler elide a store barrier when it writes
-  // a permanent oop into the heap?  Applies when the compiler
-  // is storing x to the heap, where x->is_perm() is true.
-  virtual bool can_elide_permanent_oop_store_barriers() const = 0;
-
   // Does this heap support heap inspection (+PrintClassHistogram?)
   virtual bool supports_heap_inspection() const = 0;
 
@@ -517,11 +464,19 @@
   // "CollectedHeap" supports.
   virtual void collect(GCCause::Cause cause) = 0;
 
+  // Perform a full collection
+  virtual void do_full_collection(bool clear_all_soft_refs) = 0;
+
   // This interface assumes that it's being called by the
   // vm thread. It collects the heap assuming that the
   // heap lock is already held and that we are executing in
   // the context of the vm thread.
-  virtual void collect_as_vm_thread(GCCause::Cause cause) = 0;
+  virtual void collect_as_vm_thread(GCCause::Cause cause);
+
+  // Callback from VM_CollectForMetadataAllocation operation.
+  MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
+                                               size_t size,
+                                               Metaspace::MetadataType mdtype);
 
   // Returns the barrier set for this heap
   BarrierSet* barrier_set() { return _barrier_set; }
@@ -552,28 +507,19 @@
   // Return the CollectorPolicy for the heap
   virtual CollectorPolicy* collector_policy() const = 0;
 
+  void oop_iterate_no_header(OopClosure* cl);
+
   // Iterate over all the ref-containing fields of all objects, calling
-  // "cl.do_oop" on each. This includes objects in permanent memory.
-  virtual void oop_iterate(OopClosure* cl) = 0;
+  // "cl.do_oop" on each.
+  virtual void oop_iterate(ExtendedOopClosure* cl) = 0;
 
   // Iterate over all objects, calling "cl.do_object" on each.
-  // This includes objects in permanent memory.
   virtual void object_iterate(ObjectClosure* cl) = 0;
 
   // Similar to object_iterate() except iterates only
   // over live objects.
   virtual void safe_object_iterate(ObjectClosure* cl) = 0;
 
-  // Behaves the same as oop_iterate, except only traverses
-  // interior pointers contained in permanent memory. If there
-  // is no permanent memory, does nothing.
-  virtual void permanent_oop_iterate(OopClosure* cl) = 0;
-
-  // Behaves the same as object_iterate, except only traverses
-  // object contained in permanent memory. If there is no
-  // permanent memory, does nothing.
-  virtual void permanent_object_iterate(ObjectClosure* cl) = 0;
-
   // NOTE! There is no requirement that a collector implement these
   // functions.
   //
--- a/src/share/vm/gc_interface/collectedHeap.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_interface/collectedHeap.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -74,11 +74,10 @@
   // and the beginning of the world.
   assert(klass() != NULL || !Universe::is_fully_initialized(), "NULL klass");
   assert(klass() == NULL || klass()->is_klass(), "not a klass");
-  assert(klass() == NULL || klass()->klass_part() != NULL, "not a klass");
   assert(obj != NULL, "NULL object pointer");
   obj->set_klass(klass());
-  assert(!Universe::is_fully_initialized() || obj->blueprint() != NULL,
-         "missing blueprint");
+  assert(!Universe::is_fully_initialized() || obj->klass() != NULL,
+         "missing klass");
 }
 
 // Support for jvmti and dtrace
@@ -91,7 +90,7 @@
 
   if (DTraceAllocProbes) {
     // support for Dtrace object alloc event (no-op most of the time)
-    if (klass() != NULL && klass()->klass_part()->name() != NULL) {
+    if (klass() != NULL && klass()->name() != NULL) {
       SharedRuntime::dtrace_object_alloc(obj);
     }
   }
@@ -101,7 +100,7 @@
                                               HeapWord* obj) {
   post_allocation_setup_common(klass, obj);
   assert(Universe::is_bootstrapping() ||
-         !((oop)obj)->blueprint()->oop_is_array(), "must not be an array");
+         !((oop)obj)->is_array(), "must not be an array");
   // notify jvmti and dtrace
   post_allocation_notify(klass, (oop)obj);
 }
@@ -115,7 +114,7 @@
   assert(length >= 0, "length should be non-negative");
   ((arrayOop)obj)->set_length(length);
   post_allocation_setup_common(klass, obj);
-  assert(((oop)obj)->blueprint()->oop_is_array(), "must be an array");
+  assert(((oop)obj)->is_array(), "must be an array");
   // notify jvmti and dtrace (must be after length is set for dtrace)
   post_allocation_notify(klass, (oop)obj);
 }
@@ -184,49 +183,6 @@
   return obj;
 }
 
-// Need to investigate, do we really want to throw OOM exception here?
-HeapWord* CollectedHeap::common_permanent_mem_allocate_noinit(size_t size, TRAPS) {
-  if (HAS_PENDING_EXCEPTION) {
-    NOT_PRODUCT(guarantee(false, "Should not allocate with exception pending"));
-    return NULL;  // caller does a CHECK_NULL too
-  }
-
-#ifdef ASSERT
-  if (CIFireOOMAt > 0 && THREAD->is_Compiler_thread() &&
-      ++_fire_out_of_memory_count >= CIFireOOMAt) {
-    // For testing of OOM handling in the CI throw an OOM and see how
-    // it does.  Historically improper handling of these has resulted
-    // in crashes which we really don't want to have in the CI.
-    THROW_OOP_0(Universe::out_of_memory_error_perm_gen());
-  }
-#endif
-
-  HeapWord* result = Universe::heap()->permanent_mem_allocate(size);
-  if (result != NULL) {
-    NOT_PRODUCT(Universe::heap()->
-      check_for_non_bad_heap_word_value(result, size));
-    assert(!HAS_PENDING_EXCEPTION,
-           "Unexpected exception, will result in uninitialized storage");
-    return result;
-  }
-  // -XX:+HeapDumpOnOutOfMemoryError and -XX:OnOutOfMemoryError support
-  report_java_out_of_memory("PermGen space");
-
-  if (JvmtiExport::should_post_resource_exhausted()) {
-    JvmtiExport::post_resource_exhausted(
-        JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR,
-        "PermGen space");
-  }
-
-  THROW_OOP_0(Universe::out_of_memory_error_perm_gen());
-}
-
-HeapWord* CollectedHeap::common_permanent_mem_allocate_init(size_t size, TRAPS) {
-  HeapWord* obj = common_permanent_mem_allocate_noinit(size, CHECK_NULL);
-  init_obj(obj, size);
-  return obj;
-}
-
 HeapWord* CollectedHeap::allocate_from_tlab(Thread* thread, size_t size) {
   assert(UseTLAB, "should use UseTLAB");
 
@@ -286,42 +242,6 @@
   return (oop)obj;
 }
 
-oop CollectedHeap::permanent_obj_allocate(KlassHandle klass, int size, TRAPS) {
-  oop obj = permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL);
-  post_allocation_install_obj_klass(klass, obj);
-  NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value((HeapWord*) obj,
-                                                              size));
-  return obj;
-}
-
-oop CollectedHeap::permanent_obj_allocate_no_klass_install(KlassHandle klass,
-                                                           int size,
-                                                           TRAPS) {
-  debug_only(check_for_valid_allocation_state());
-  assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
-  assert(size >= 0, "int won't convert to size_t");
-  HeapWord* obj = common_permanent_mem_allocate_init(size, CHECK_NULL);
-  post_allocation_setup_no_klass_install(klass, obj);
-#ifndef PRODUCT
-  const size_t hs = oopDesc::header_size();
-  Universe::heap()->check_for_bad_heap_word_value(obj+hs, size-hs);
-#endif
-  return (oop)obj;
-}
-
-oop CollectedHeap::permanent_array_allocate(KlassHandle klass,
-                                            int size,
-                                            int length,
-                                            TRAPS) {
-  debug_only(check_for_valid_allocation_state());
-  assert(!Universe::heap()->is_gc_active(), "Allocation during gc not allowed");
-  assert(size >= 0, "int won't convert to size_t");
-  HeapWord* obj = common_permanent_mem_allocate_init(size, CHECK_NULL);
-  post_allocation_setup_array(klass, obj, length);
-  NOT_PRODUCT(Universe::heap()->check_for_bad_heap_word_value(obj, size));
-  return (oop)obj;
-}
-
 // Returns "TRUE" if "p" is a method oop in the
 // current heap with high probability. NOTE: The main
 // current consumers of this interface are Forte::
@@ -334,18 +254,12 @@
 // predicate is_valid_method() is not stable, so
 // it is possible that by the time "p" is used, it
 // is no longer valid.
-inline bool CollectedHeap::is_valid_method(oop p) const {
+inline bool CollectedHeap::is_valid_method(Method* p) const {
   return
     p != NULL &&
 
-    // Check whether it is aligned at a HeapWord boundary.
-    Space::is_aligned(p) &&
-
-    // Check whether "method" is in the allocated part of the
-    // permanent generation -- this needs to be checked before
-    // p->klass() below to avoid a SEGV (but see below
-    // for a potential window of vulnerability).
-    is_permanent((void*)p) &&
+    // Check whether "method" is metadata
+    p->is_metadata() &&
 
     // See if GC is active; however, there is still an
     // apparently unavoidable window after this call
@@ -354,10 +268,14 @@
     // it's a risk the client must accept.
     !is_gc_active() &&
 
-    // Check that p is a methodOop.
-    p->klass() == Universe::methodKlassObj();
+    // Check that p is a Method*.
+    p->is_method();
 }
 
+inline void CollectedHeap::oop_iterate_no_header(OopClosure* cl) {
+  NoHeaderExtendedOopClosure no_header_cl(cl);
+  oop_iterate(&no_header_cl);
+}
 
 #ifndef PRODUCT
 
--- a/src/share/vm/gc_interface/gcCause.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_interface/gcCause.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -60,8 +60,8 @@
     case _tenured_generation_full:
       return "Tenured Generation Full";
 
-    case _permanent_generation_full:
-      return "Permanent Generation Full";
+    case _metadata_GC_threshold:
+      return "Metadata GC Threshold";
 
     case _cms_generation_full:
       return "CMS Generation Full";
--- a/src/share/vm/gc_interface/gcCause.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/gc_interface/gcCause.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -55,7 +55,7 @@
     /* implementation specific */
 
     _tenured_generation_full,
-    _permanent_generation_full,
+    _metadata_GC_threshold,
 
     _cms_generation_full,
     _cms_initial_mark,
--- a/src/share/vm/interpreter/abstractInterpreter.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/abstractInterpreter.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -176,21 +176,21 @@
 
   // Activation size in words for a method that is just being called.
   // Parameters haven't been pushed so count them too.
-  static int        size_top_interpreter_activation(methodOop method);
+  static int        size_top_interpreter_activation(Method* method);
 
   // Deoptimization support
   // Compute the entry address for continuation after
-  static address deopt_continue_after_entry(methodOop method,
+  static address deopt_continue_after_entry(Method* method,
                                             address bcp,
                                             int callee_parameters,
                                             bool is_top_frame);
   // Compute the entry address for reexecution
-  static address deopt_reexecute_entry(methodOop method, address bcp);
+  static address deopt_reexecute_entry(Method* method, address bcp);
   // Deoptimization should reexecute this bytecode
   static bool    bytecode_should_reexecute(Bytecodes::Code code);
 
   // share implementation of size_activation and layout_activation:
-  static int        size_activation(methodOop method,
+  static int        size_activation(Method* method,
                                     int temps,
                                     int popframe_args,
                                     int monitors,
@@ -210,7 +210,7 @@
                              is_top_frame);
   }
 
-  static int       layout_activation(methodOop method,
+  static int       layout_activation(Method* method,
                                      int temps,
                                      int popframe_args,
                                      int monitors,
--- a/src/share/vm/interpreter/bytecode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "interpreter/bytecode.hpp"
 #include "interpreter/linkResolver.hpp"
-#include "oops/constantPoolOop.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/fieldType.hpp"
 #include "runtime/handles.inline.hpp"
@@ -159,7 +159,7 @@
 Handle Bytecode_invoke::appendix(TRAPS) {
   ConstantPoolCacheEntry* cpce = cpcache_entry();
   if (cpce->has_appendix())
-    return Handle(THREAD, cpce->f1_appendix());
+    return Handle(THREAD, cpce->appendix_if_resolved(constants()));
   return Handle();  // usual case
 }
 
@@ -179,11 +179,7 @@
 
 ConstantPoolCacheEntry* Bytecode_member_ref::cpcache_entry() const {
   int index = this->index();
-  DEBUG_ONLY({
-      if (!has_index_u4(code()))
-        index = constantPoolOopDesc::get_cpcache_index(index);
-    });
-  return cpcache()->entry_at(index);
+  return cpcache()->entry_at(ConstantPool::decode_cpcache_index(index, true));
 }
 
 // Implementation of Bytecode_field
@@ -207,7 +203,7 @@
 int Bytecode_loadconstant::pool_index() const {
   int index = raw_index();
   if (has_cache_index()) {
-    return _method->constants()->cache()->entry_at(index)->constant_pool_index();
+    return _method->constants()->object_to_cp_index(index);
   }
   return index;
 }
@@ -221,7 +217,7 @@
 oop Bytecode_loadconstant::resolve_constant(TRAPS) const {
   assert(_method.not_null(), "must supply method to resolve constant");
   int index = raw_index();
-  constantPoolOop constants = _method->constants();
+  ConstantPool* constants = _method->constants();
   if (has_cache_index()) {
     return constants->resolve_cached_constant_at(index, THREAD);
   } else {
--- a/src/share/vm/interpreter/bytecode.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecode.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -27,7 +27,7 @@
 
 #include "interpreter/bytecodes.hpp"
 #include "memory/allocation.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #ifdef TARGET_ARCH_x86
 # include "bytes_x86.hpp"
 #endif
@@ -68,8 +68,8 @@
   int     get_native_u4_at   (int offset)        const     { return Bytes::get_native_u4(addr_at(offset)); }
 
  public:
-  Bytecode(methodOop method, address bcp): _bcp(bcp), _code(Bytecodes::code_at(method, addr_at(0))) {
-    assert(method != NULL, "this form requires a valid methodOop");
+  Bytecode(Method* method, address bcp): _bcp(bcp), _code(Bytecodes::code_at(method, addr_at(0))) {
+    assert(method != NULL, "this form requires a valid Method*");
   }
   // Defined in ciStreams.hpp
   inline Bytecode(const ciBytecodeStream* stream, address bcp = NULL);
@@ -96,11 +96,11 @@
   }
   int get_index_u1_cpcache(Bytecodes::Code bc) const {
     assert_same_format_as(bc); assert_index_size(1, bc);
-    return *(jubyte*)addr_at(1) + constantPoolOopDesc::CPCACHE_INDEX_TAG;
+    return *(jubyte*)addr_at(1) + ConstantPool::CPCACHE_INDEX_TAG;
   }
   int get_index_u2_cpcache(Bytecodes::Code bc) const {
     assert_same_format_as(bc); assert_index_size(2, bc); assert_native_index(bc);
-    return Bytes::get_native_u2(addr_at(1)) + constantPoolOopDesc::CPCACHE_INDEX_TAG;
+    return Bytes::get_native_u2(addr_at(1)) + ConstantPool::CPCACHE_INDEX_TAG;
   }
   int get_index_u4(Bytecodes::Code bc) const {
     assert_same_format_as(bc); assert_index_size(4, bc);
@@ -158,7 +158,7 @@
 
 class Bytecode_lookupswitch: public Bytecode {
  public:
-  Bytecode_lookupswitch(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_lookupswitch(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   // Defined in ciStreams.hpp
   inline Bytecode_lookupswitch(const ciBytecodeStream* stream);
   void verify() const PRODUCT_RETURN;
@@ -174,7 +174,7 @@
 
 class Bytecode_tableswitch: public Bytecode {
  public:
-  Bytecode_tableswitch(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_tableswitch(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   // Defined in ciStreams.hpp
   inline Bytecode_tableswitch(const ciBytecodeStream* stream);
   void verify() const PRODUCT_RETURN;
@@ -196,8 +196,8 @@
   Bytecode_member_ref(methodHandle method, int bci)  : Bytecode(method(), method()->bcp_from(bci)), _method(method) {}
 
   methodHandle method() const                    { return _method; }
-  constantPoolOop constants() const              { return _method->constants(); }
-  constantPoolCacheOop cpcache() const           { return _method->constants()->cache(); }
+  ConstantPool* constants() const              { return _method->constants(); }
+  ConstantPoolCache* cpcache() const           { return _method->constants()->cache(); }
   ConstantPoolCacheEntry* cpcache_entry() const;
 
  public:
@@ -278,7 +278,7 @@
 // Abstraction for checkcast
 class Bytecode_checkcast: public Bytecode {
  public:
-  Bytecode_checkcast(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_checkcast(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   void verify() const { assert(Bytecodes::java_code(code()) == Bytecodes::_checkcast, "check checkcast"); }
 
   // Returns index
@@ -288,7 +288,7 @@
 // Abstraction for instanceof
 class Bytecode_instanceof: public Bytecode {
  public:
-  Bytecode_instanceof(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_instanceof(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   void verify() const { assert(code() == Bytecodes::_instanceof, "check instanceof"); }
 
   // Returns index
@@ -297,7 +297,7 @@
 
 class Bytecode_new: public Bytecode {
  public:
-  Bytecode_new(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_new(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   void verify() const { assert(java_code() == Bytecodes::_new, "check new"); }
 
   // Returns index
@@ -306,7 +306,7 @@
 
 class Bytecode_multianewarray: public Bytecode {
  public:
-  Bytecode_multianewarray(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_multianewarray(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   void verify() const { assert(java_code() == Bytecodes::_multianewarray, "check new"); }
 
   // Returns index
@@ -315,7 +315,7 @@
 
 class Bytecode_anewarray: public Bytecode {
  public:
-  Bytecode_anewarray(methodOop method, address bcp): Bytecode(method, bcp) { verify(); }
+  Bytecode_anewarray(Method* method, address bcp): Bytecode(method, bcp) { verify(); }
   void verify() const { assert(java_code() == Bytecodes::_anewarray, "check anewarray"); }
 
   // Returns index
@@ -340,11 +340,11 @@
            stdc == Bytecodes::_ldc2_w, "load constant");
   }
 
-  // Only non-standard bytecodes (fast_aldc) have CP cache indexes.
+  // Only non-standard bytecodes (fast_aldc) have reference cache indexes.
   bool has_cache_index() const { return code() >= Bytecodes::number_of_java_codes; }
 
   int pool_index() const;               // index into constant pool
-  int cache_index() const {             // index into CP cache (or -1 if none)
+  int cache_index() const {             // index into reference cache (or -1 if none)
     return has_cache_index() ? raw_index() : -1;
   }
 
--- a/src/share/vm/interpreter/bytecodeInterpreter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodeInterpreter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -490,7 +490,7 @@
   register address          pc = istate->bcp();
   register jubyte opcode;
   register intptr_t*        locals = istate->locals();
-  register constantPoolCacheOop  cp = istate->constants(); // method()->constants()->cache()
+  register ConstantPoolCache*    cp = istate->constants(); // method()->constants()->cache()
 #ifdef LOTS_OF_REGS
   register JavaThread*      THREAD = istate->thread();
   register volatile jbyte*  BYTE_MAP_BASE = _byte_map_base;
@@ -679,7 +679,7 @@
               // The bias pattern is present in the object's header. Need to check
               // whether the bias owner and the epoch are both still current.
               intptr_t xx = ((intptr_t) THREAD) ^ (intptr_t) mark;
-              xx = (intptr_t) rcvr->klass()->klass_part()->prototype_header() ^ xx;
+              xx = (intptr_t) rcvr->klass()->prototype_header() ^ xx;
               intptr_t yy = (xx & ~((int) markOopDesc::age_mask_in_place));
               if (yy != 0 ) {
                 // At this point we know that the header has the bias pattern and
@@ -723,8 +723,8 @@
                     // value as the comparison value when doing the cas to acquire the
                     // bias in the current epoch. In other words, we allow transfer of
                     // the bias from one thread to another directly in this situation.
-                    xx = (intptr_t) rcvr->klass()->klass_part()->prototype_header() | (intptr_t) THREAD;
-                    if (Atomic::cmpxchg_ptr((intptr_t)THREAD | (intptr_t) rcvr->klass()->klass_part()->prototype_header(),
+                    xx = (intptr_t) rcvr->klass()->prototype_header() | (intptr_t) THREAD;
+                    if (Atomic::cmpxchg_ptr((intptr_t)THREAD | (intptr_t) rcvr->klass()->prototype_header(),
                                             (intptr_t*) rcvr->mark_addr(),
                                             (intptr_t) mark) != (intptr_t) mark) {
                       CALL_VM(InterpreterRuntime::monitorenter(THREAD, mon), handle_exception);
@@ -741,8 +741,8 @@
                   // bias of this particular object, so it's okay to continue in the
                   // normal locking code.
                   //
-                  xx = (intptr_t) rcvr->klass()->klass_part()->prototype_header() | (intptr_t) THREAD;
-                  if (Atomic::cmpxchg_ptr(rcvr->klass()->klass_part()->prototype_header(),
+                  xx = (intptr_t) rcvr->klass()->prototype_header() | (intptr_t) THREAD;
+                  if (Atomic::cmpxchg_ptr(rcvr->klass()->prototype_header(),
                                           (intptr_t*) rcvr->mark_addr(),
                                           mark) == mark) {
                     // (*counters->revoked_lock_entry_count_addr())++;
@@ -1530,7 +1530,7 @@
 
           oop rcvr = LOCALS_OBJECT(0);
           VERIFY_OOP(rcvr);
-          if (rcvr->klass()->klass_part()->has_finalizer()) {
+          if (rcvr->klass()->has_finalizer()) {
             CALL_VM(InterpreterRuntime::register_finalizer(THREAD, rcvr), handle_exception);
           }
           goto handle_return;
@@ -1625,14 +1625,13 @@
           // arrObj, index are set
           if (rhsObject != NULL) {
             /* Check assignability of rhsObject into arrObj */
-            klassOop rhsKlassOop = rhsObject->klass(); // EBX (subclass)
-            assert(arrObj->klass()->klass()->klass_part()->oop_is_objArrayKlass(), "Ack not an objArrayKlass");
-            klassOop elemKlassOop = ((objArrayKlass*) arrObj->klass()->klass_part())->element_klass(); // superklass EAX
+            Klass* rhsKlassOop = rhsObject->klass(); // EBX (subclass)
+            Klass* elemKlassOop = objArrayKlass::cast(arrObj->klass())->element_klass(); // superklass EAX
             //
             // Check for compatibilty. This check must not GC!!
             // Seems way more expensive now that we must dispatch
             //
-            if (rhsKlassOop != elemKlassOop && !rhsKlassOop->klass_part()->is_subtype_of(elemKlassOop)) { // ebx->is...
+            if (rhsKlassOop != elemKlassOop && !rhsKlassOop->is_subtype_of(elemKlassOop)) { // ebx->is...
               VM_JAVA_ERROR(vmSymbols::java_lang_ArrayStoreException(), "");
             }
           }
@@ -1774,7 +1773,8 @@
 
           oop obj;
           if ((Bytecodes::Code)opcode == Bytecodes::_getstatic) {
-            obj = (oop) cache->f1_as_instance();
+            Klass* k = (Klass*) cache->f1();
+            obj = k->java_mirror();
             MORE_STACK(1);  // Assume single slot push
           } else {
             obj = (oop) STACK_OBJECT(-1);
@@ -1885,7 +1885,8 @@
             --count;
           }
           if ((Bytecodes::Code)opcode == Bytecodes::_putstatic) {
-            obj = (oop) cache->f1_as_instance();
+            Klass* k = (Klass*) cache->f1();
+            obj = k->java_mirror();
           } else {
             --count;
             obj = (oop) STACK_OBJECT(count);
@@ -1944,14 +1945,14 @@
 
       CASE(_new): {
         u2 index = Bytes::get_Java_u2(pc+1);
-        constantPoolOop constants = istate->method()->constants();
+        ConstantPool* constants = istate->method()->constants();
         if (!constants->tag_at(index).is_unresolved_klass()) {
           // Make sure klass is initialized and doesn't have a finalizer
-          oop entry = constants->slot_at(index).get_oop();
+          Klass* entry = constants->slot_at(index).get_klass();
           assert(entry->is_klass(), "Should be resolved klass");
-          klassOop k_entry = (klassOop) entry;
-          assert(k_entry->klass_part()->oop_is_instance(), "Should be instanceKlass");
-          instanceKlass* ik = (instanceKlass*) k_entry->klass_part();
+          Klass* k_entry = (Klass*) entry;
+          assert(k_entry->oop_is_instance(), "Should be InstanceKlass");
+          InstanceKlass* ik = (InstanceKlass*) k_entry;
           if ( ik->is_initialized() && ik->can_be_fastpath_allocated() ) {
             size_t obj_size = ik->size_helper();
             oop result = NULL;
@@ -2037,14 +2038,14 @@
             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
             }
-            klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
-            klassOop objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
+            Klass* klassOf = (Klass*) METHOD->constants()->slot_at(index).get_klass();
+            Klass* objKlassOop = STACK_OBJECT(-1)->klass(); //ebx
             //
             // Check for compatibilty. This check must not GC!!
             // Seems way more expensive now that we must dispatch
             //
             if (objKlassOop != klassOf &&
-                !objKlassOop->klass_part()->is_subtype_of(klassOf)) {
+                !objKlassOop->is_subtype_of(klassOf)) {
               ResourceMark rm(THREAD);
               const char* objName = Klass::cast(objKlassOop)->external_name();
               const char* klassName = Klass::cast(klassOf)->external_name();
@@ -2072,13 +2073,13 @@
             if (METHOD->constants()->tag_at(index).is_unresolved_klass()) {
               CALL_VM(InterpreterRuntime::quicken_io_cc(THREAD), handle_exception);
             }
-            klassOop klassOf = (klassOop) METHOD->constants()->slot_at(index).get_oop();
-            klassOop objKlassOop = STACK_OBJECT(-1)->klass();
+            Klass* klassOf = (Klass*) METHOD->constants()->slot_at(index).get_klass();
+            Klass* objKlassOop = STACK_OBJECT(-1)->klass();
             //
             // Check for compatibilty. This check must not GC!!
             // Seems way more expensive now that we must dispatch
             //
-            if ( objKlassOop == klassOf || objKlassOop->klass_part()->is_subtype_of(klassOf)) {
+            if ( objKlassOop == klassOf || objKlassOop->is_subtype_of(klassOf)) {
               SET_STACK_INT(1, -1);
             } else {
               SET_STACK_INT(0, -1);
@@ -2100,7 +2101,7 @@
             wide = true;
           }
 
-          constantPoolOop constants = METHOD->constants();
+          ConstantPool* constants = METHOD->constants();
           switch (constants->tag_at(index).value()) {
           case JVM_CONSTANT_Integer:
             SET_STACK_INT(constants->int_at(index), 0);
@@ -2111,16 +2112,24 @@
             break;
 
           case JVM_CONSTANT_String:
-            VERIFY_OOP(constants->resolved_string_at(index));
-            SET_STACK_OBJECT(constants->resolved_string_at(index), 0);
+            {
+              oop result = constants->resolved_references()->obj_at(index);
+              if (result == NULL) {
+                CALL_VM(InterpreterRuntime::resolve_ldc(THREAD, (Bytecodes::Code) opcode), handle_exception);
+                SET_STACK_OBJECT(THREAD->vm_result(), 0);
+                THREAD->set_vm_result(NULL);
+              } else {
+                VERIFY_OOP(result);
+                SET_STACK_OBJECT(result, 0);
+              }
             break;
+            }
 
           case JVM_CONSTANT_Class:
             VERIFY_OOP(constants->resolved_klass_at(index)->java_mirror());
             SET_STACK_OBJECT(constants->resolved_klass_at(index)->java_mirror(), 0);
             break;
 
-          case JVM_CONSTANT_UnresolvedString:
           case JVM_CONSTANT_UnresolvedClass:
           case JVM_CONSTANT_UnresolvedClassInError:
             CALL_VM(InterpreterRuntime::ldc(THREAD, wide), handle_exception);
@@ -2137,7 +2146,7 @@
         {
           u2 index = Bytes::get_Java_u2(pc+1);
 
-          constantPoolOop constants = METHOD->constants();
+          ConstantPool* constants = METHOD->constants();
           switch (constants->tag_at(index).value()) {
 
           case JVM_CONSTANT_Long:
@@ -2154,15 +2163,6 @@
 
       CASE(_fast_aldc_w):
       CASE(_fast_aldc): {
-        if (!EnableInvokeDynamic) {
-          // We should not encounter this bytecode if !EnableInvokeDynamic.
-          // The verifier will stop it.  However, if we get past the verifier,
-          // this will stop the thread in a reasonable way, without crashing the JVM.
-          CALL_VM(InterpreterRuntime::throw_IncompatibleClassChangeError(THREAD),
-                  handle_exception);
-          ShouldNotReachHere();
-        }
-
         u2 index;
         int incr;
         if (opcode == Bytecodes::_fast_aldc) {
@@ -2176,12 +2176,12 @@
         // We are resolved if the f1 field contains a non-null object (CallSite, etc.)
         // This kind of CP cache entry does not need to match the flags byte, because
         // there is a 1-1 relation between bytecode type and CP entry type.
-        ConstantPoolCacheEntry* cache = cp->entry_at(index);
-        oop result = cache->f1_as_instance();
+        ConstantPool* constants = METHOD->constants();
+        oop result = constants->resolved_references()->obj_at(index);
         if (result == NULL) {
           CALL_VM(InterpreterRuntime::resolve_ldc(THREAD, (Bytecodes::Code) opcode),
                   handle_exception);
-          result = cache->f1_as_instance();
+          result = THREAD->vm_result();
         }
 
         VERIFY_OOP(result);
@@ -2201,16 +2201,15 @@
 
         int index = Bytes::get_native_u4(pc+1);
 
-        // We are resolved if the f1 field contains a non-null object (CallSite, etc.)
+        // We are resolved if the resolved_references field contains a non-null object (CallSite, etc.)
         // This kind of CP cache entry does not need to match the flags byte, because
         // there is a 1-1 relation between bytecode type and CP entry type.
-        assert(constantPoolCacheOopDesc::is_secondary_index(index), "incorrect format");
-        ConstantPoolCacheEntry* cache = cp->secondary_entry_at(index);
-        oop result = cache->f1_as_instance();
+        ConstantPool* constants = METHOD->constants();
+        oop result = constants->resolved_references()->obj_at(index);
         if (result == NULL) {
           CALL_VM(InterpreterRuntime::resolve_invokedynamic(THREAD),
                   handle_exception);
-          result = cache->f1_as_instance();
+          result = THREAD->vm_result();
         }
 
         VERIFY_OOP(result);
@@ -2218,7 +2217,7 @@
         CHECK_NULL(method_handle);
 
         istate->set_msg(call_method_handle);
-        istate->set_callee((methodOop) method_handle);
+        istate->set_callee((Method*) method_handle);
         istate->set_bcp_advance(5);
 
         UPDATE_PC_AND_RETURN(0); // I'll be back...
@@ -2244,7 +2243,7 @@
         // This code isn't produced by javac, but could be produced by
         // another compliant java compiler.
         if (cache->is_forced_virtual()) {
-          methodOop callee;
+          Method* callee;
           CHECK_NULL(STACK_OBJECT(-(cache->parameter_size())));
           if (cache->is_vfinal()) {
             callee = cache->f2_as_vfinal_method();
@@ -2253,9 +2252,9 @@
             int parms = cache->parameter_size();
             // Same comments as invokevirtual apply here
             VERIFY_OOP(STACK_OBJECT(-parms));
-            instanceKlass* rcvrKlass = (instanceKlass*)
-                                 STACK_OBJECT(-parms)->klass()->klass_part();
-            callee = (methodOop) rcvrKlass->start_of_vtable()[ cache->f2_as_index()];
+            InstanceKlass* rcvrKlass = (InstanceKlass*)
+                                 STACK_OBJECT(-parms)->klass();
+            callee = (Method*) rcvrKlass->start_of_vtable()[ cache->f2_as_index()];
           }
           istate->set_callee(callee);
           istate->set_callee_entry_point(callee->from_interpreted_entry());
@@ -2269,14 +2268,14 @@
         }
 
         // this could definitely be cleaned up QQQ
-        methodOop callee;
-        klassOop iclass = cache->f1_as_klass();
-        // instanceKlass* interface = (instanceKlass*) iclass->klass_part();
+        Method* callee;
+        Klass* iclass = cache->f1_as_klass();
+        // InstanceKlass* interface = (InstanceKlass*) iclass;
         // get receiver
         int parms = cache->parameter_size();
         oop rcvr = STACK_OBJECT(-parms);
         CHECK_NULL(rcvr);
-        instanceKlass* int2 = (instanceKlass*) rcvr->klass()->klass_part();
+        InstanceKlass* int2 = (InstanceKlass*) rcvr->klass();
         itableOffsetEntry* ki = (itableOffsetEntry*) int2->start_of_itable();
         int i;
         for ( i = 0 ; i < int2->itable_length() ; i++, ki++ ) {
@@ -2323,7 +2322,7 @@
 
         istate->set_msg(call_method);
         {
-          methodOop callee;
+          Method* callee;
           if ((Bytecodes::Code)opcode == Bytecodes::_invokevirtual) {
             CHECK_NULL(STACK_OBJECT(-(cache->parameter_size())));
             if (cache->is_vfinal()) callee = cache->f2_as_vfinal_method();
@@ -2331,13 +2330,13 @@
               // get receiver
               int parms = cache->parameter_size();
               // this works but needs a resourcemark and seems to create a vtable on every call:
-              // methodOop callee = rcvr->klass()->klass_part()->vtable()->method_at(cache->f2_as_index());
+              // Method* callee = rcvr->klass()->vtable()->method_at(cache->f2_as_index());
               //
               // this fails with an assert
-              // instanceKlass* rcvrKlass = instanceKlass::cast(STACK_OBJECT(-parms)->klass());
+              // InstanceKlass* rcvrKlass = InstanceKlass::cast(STACK_OBJECT(-parms)->klass());
               // but this works
               VERIFY_OOP(STACK_OBJECT(-parms));
-              instanceKlass* rcvrKlass = (instanceKlass*) STACK_OBJECT(-parms)->klass()->klass_part();
+              InstanceKlass* rcvrKlass = (InstanceKlass*) STACK_OBJECT(-parms)->klass();
               /*
                 Executing this code in java.lang.String:
                     public String(char value[]) {
@@ -2345,16 +2344,16 @@
                           this.value = (char[])value.clone();
                      }
 
-                 a find on rcvr->klass()->klass_part() reports:
+                 a find on rcvr->klass() reports:
                  {type array char}{type array class}
                   - klass: {other class}
 
-                  but using instanceKlass::cast(STACK_OBJECT(-parms)->klass()) causes in assertion failure
-                  because rcvr->klass()->klass_part()->oop_is_instance() == 0
+                  but using InstanceKlass::cast(STACK_OBJECT(-parms)->klass()) causes in assertion failure
+                  because rcvr->klass()->oop_is_instance() == 0
                   However it seems to have a vtable in the right location. Huh?
 
               */
-              callee = (methodOop) rcvrKlass->start_of_vtable()[ cache->f2_as_index()];
+              callee = (Method*) rcvrKlass->start_of_vtable()[ cache->f2_as_index()];
             }
           } else {
             if ((Bytecodes::Code)opcode == Bytecodes::_invokespecial) {
@@ -2500,7 +2499,7 @@
     CALL_VM(continuation_bci = (intptr_t)InterpreterRuntime::exception_handler_for_exception(THREAD, except_oop()),
             handle_exception);
 
-    except_oop = (oop) THREAD->vm_result();
+    except_oop = THREAD->vm_result();
     THREAD->set_vm_result(NULL);
     if (continuation_bci >= 0) {
       // Place exception on top of stack
--- a/src/share/vm/interpreter/bytecodeInterpreter.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodeInterpreter.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -26,8 +26,8 @@
 #define SHARE_VM_INTERPRETER_BYTECODEINTERPRETER_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "runtime/basicLock.hpp"
 #include "runtime/frame.hpp"
 #include "runtime/globals.hpp"
@@ -62,7 +62,7 @@
 typedef class BytecodeInterpreter* interpreterState;
 
 struct call_message {
-    class methodOopDesc* _callee;    /* method to call during call_method request */
+    class Method* _callee;    /* method to call during call_method request */
     address   _callee_entry_point;   /* address to jump to for call_method request */
     int       _bcp_advance;          /* size of the invoke bytecode operation */
 };
@@ -119,8 +119,8 @@
     JavaThread*           _thread;        // the vm's java thread pointer
     address               _bcp;           // instruction pointer
     intptr_t*             _locals;        // local variable pointer
-    constantPoolCacheOop  _constants;     // constant pool cache
-    methodOop             _method;        // method being executed
+    ConstantPoolCache*    _constants;     // constant pool cache
+    Method*               _method;        // method being executed
     DataLayout*           _mdx;           // compiler profiling data for current bytecode
     intptr_t*             _stack;         // expression stack
     messages              _msg;           // frame manager <-> interpreter message
@@ -143,7 +143,7 @@
 static void layout_interpreterState(interpreterState to_fill,
                                     frame* caller,
                                     frame* interpreter_frame,
-                                    methodOop method,
+                                    Method* method,
                                     intptr_t* locals,
                                     intptr_t* stack,
                                     intptr_t* stack_base,
@@ -197,16 +197,16 @@
 
 inline intptr_t* locals() { return _locals; }
 
-inline constantPoolCacheOop constants() { return _constants; }
-inline methodOop method() { return _method; }
+inline ConstantPoolCache* constants() { return _constants; }
+inline Method* method() { return _method; }
 inline DataLayout* mdx() { return _mdx; }
 inline void set_mdx(DataLayout *new_mdx) { _mdx = new_mdx; }
 
 inline messages msg() { return _msg; }
 inline void set_msg(messages new_msg) { _msg = new_msg; }
 
-inline methodOop callee() { return _result._to_call._callee; }
-inline void set_callee(methodOop new_callee) { _result._to_call._callee = new_callee; }
+inline Method* callee() { return _result._to_call._callee; }
+inline void set_callee(Method* new_callee) { _result._to_call._callee = new_callee; }
 inline void set_callee_entry_point(address entry) { _result._to_call._callee_entry_point = entry; }
 inline void set_osr_buf(address buf) { _result._osr._osr_buf = buf; }
 inline void set_osr_entry(address entry) { _result._osr._osr_entry = entry; }
--- a/src/share/vm/interpreter/bytecodeStream.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodeStream.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -27,7 +27,8 @@
 
 #include "interpreter/bytecode.hpp"
 #include "memory/allocation.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
+#include "runtime/handles.inline.hpp"
 #ifdef TARGET_ARCH_x86
 # include "bytes_x86.hpp"
 #endif
@@ -45,7 +46,7 @@
 #endif
 
 // A BytecodeStream is used for fast iteration over the bytecodes
-// of a methodOop.
+// of a Method*.
 //
 // Usage:
 //
--- a/src/share/vm/interpreter/bytecodeTracer.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodeTracer.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -29,8 +29,8 @@
 #include "interpreter/interpreter.hpp"
 #include "interpreter/interpreterRuntime.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "runtime/mutexLocker.hpp"
 #include "runtime/timer.hpp"
 
@@ -46,7 +46,7 @@
   // between critical sections.  Use only pointer-comparison
   // operations on the pointer, except within a critical section.
   // (Also, ensure that occasional false positives are benign.)
-  methodOop _current_method;
+  Method* _current_method;
   bool      _is_wide;
   Bytecodes::Code _code;
   address   _next_pc;                // current decoding position
@@ -58,16 +58,19 @@
 
   int       get_index_u1()           { return *(address)_next_pc++; }
   int       get_index_u2()           { int i=Bytes::get_Java_u2(_next_pc); _next_pc+=2; return i; }
-  int       get_index_u1_cpcache()   { return get_index_u1() + constantPoolOopDesc::CPCACHE_INDEX_TAG; }
-  int       get_index_u2_cpcache()   { int i=Bytes::get_native_u2(_next_pc); _next_pc+=2; return i + constantPoolOopDesc::CPCACHE_INDEX_TAG; }
+  int       get_index_u1_cpcache()   { return get_index_u1() + ConstantPool::CPCACHE_INDEX_TAG; }
+  int       get_index_u2_cpcache()   { int i=Bytes::get_native_u2(_next_pc); _next_pc+=2; return i + ConstantPool::CPCACHE_INDEX_TAG; }
   int       get_index_u4()           { int i=Bytes::get_native_u4(_next_pc); _next_pc+=4; return i; }
   int       get_index_special()      { return (is_wide()) ? get_index_u2() : get_index_u1(); }
-  methodOop method()                 { return _current_method; }
+  Method* method()                 { return _current_method; }
   bool      is_wide()                { return _is_wide; }
   Bytecodes::Code raw_code()         { return Bytecodes::Code(_code); }
 
 
   bool      check_index(int i, int& cp_index, outputStream* st = tty);
+  bool      check_cp_cache_index(int i, int& cp_index, outputStream* st = tty);
+  bool      check_obj_index(int i, int& cp_index, outputStream* st = tty);
+  bool      check_invokedynamic_index(int i, int& cp_index, outputStream* st = tty);
   void      print_constant(int i, outputStream* st = tty);
   void      print_field_or_method(int i, outputStream* st = tty);
   void      print_field_or_method(int orig_i, int i, outputStream* st = tty);
@@ -122,7 +125,7 @@
     _code = Bytecodes::_illegal;
   }
 
-  // Used for methodOop::print_codes().  The input bcp comes from
+  // Used for Method*::print_codes().  The input bcp comes from
   // BytecodeStream, which will skip wide bytecodes.
   void trace(methodHandle method, address bcp, outputStream* st) {
     _current_method = method();
@@ -152,7 +155,7 @@
 
 // %%% This set_closure thing seems overly general, given that
 // nobody uses it.  Also, if BytecodePrinter weren't hidden
-// then methodOop could use instances of it directly and it
+// then Method* could use instances of it directly and it
 // would be easier to remove races on _current_method and bcp.
 // Since this is not product functionality, we can defer cleanup.
 
@@ -170,7 +173,7 @@
     // The ttyLocker also prevents races between two threads
     // trying to use the single instance of BytecodePrinter.
     // Using the ttyLocker prevents the system from coming to
-    // a safepoint within this code, which is sensitive to methodOop
+    // a safepoint within this code, which is sensitive to Method*
     // movement.
     //
     // There used to be a leaf mutex here, but the ttyLocker will
@@ -217,56 +220,59 @@
 }
 
 bool BytecodePrinter::check_index(int i, int& cp_index, outputStream* st) {
-  constantPoolOop constants = method()->constants();
+  ConstantPool* constants = method()->constants();
+  int ilimit = constants->length();
+  Bytecodes::Code code = raw_code();
+
+  ConstantPoolCache* cache = NULL;
+  if (Bytecodes::uses_cp_cache(code)) {
+    bool okay = true;
+    switch (code) {
+    case Bytecodes::_fast_aldc:
+    case Bytecodes::_fast_aldc_w:
+      okay = check_obj_index(i, cp_index, st);
+      break;
+    case Bytecodes::_invokedynamic:
+      okay = check_invokedynamic_index(i, cp_index, st);
+      break;
+    default:
+      okay = check_cp_cache_index(i, cp_index, st);
+      break;
+    }
+    if (!okay) return false;
+  }
+
+
+  // check cp index
+  if (cp_index >= 0 && cp_index < ilimit) {
+    if (WizardMode)  st->print(" cp[%d]", cp_index);
+    return true;
+  }
+
+  st->print_cr(" CP[%d] not in CP", cp_index);
+  return false;
+}
+
+bool BytecodePrinter::check_cp_cache_index(int i, int& cp_index, outputStream* st) {
+  ConstantPool* constants = method()->constants();
   int ilimit = constants->length(), climit = 0;
   Bytecodes::Code code = raw_code();
 
-  constantPoolCacheOop cache = NULL;
-  if (Bytecodes::uses_cp_cache(code)) {
-    cache = constants->cache();
-    if (cache != NULL) {
-      //climit = cache->length();  // %%% private!
-      size_t size = cache->size() * HeapWordSize;
-      size -= sizeof(constantPoolCacheOopDesc);
-      size /= sizeof(ConstantPoolCacheEntry);
-      climit = (int) size;
-    }
-  }
-
-  if (cache != NULL && constantPoolCacheOopDesc::is_secondary_index(i)) {
-    i = constantPoolCacheOopDesc::decode_secondary_index(i);
-    st->print(" secondary cache[%d] of", i);
-    if (i >= 0 && i < climit) {
-      if (!cache->entry_at(i)->is_secondary_entry()) {
-        st->print_cr(" not secondary entry?", i);
-        return false;
-      }
-      i = cache->entry_at(i)->main_entry_index() + constantPoolOopDesc::CPCACHE_INDEX_TAG;
-      goto check_cache_index;
-    } else {
-      st->print_cr(" not in cache[*]?", i);
-      return false;
-    }
-  }
-
-  if (cache != NULL) {
-    goto check_cache_index;
-  }
-
- check_cp_index:
-  if (i >= 0 && i < ilimit) {
-    if (WizardMode)  st->print(" cp[%d]", i);
+  ConstantPoolCache* cache = constants->cache();
+  // If rewriter hasn't run, the index is the cp_index
+  if (cache == NULL) {
     cp_index = i;
     return true;
   }
+  //climit = cache->length();  // %%% private!
+  size_t size = cache->size() * HeapWordSize;
+  size -= sizeof(ConstantPoolCache);
+  size /= sizeof(ConstantPoolCacheEntry);
+  climit = (int) size;
 
-  st->print_cr(" CP[%d] not in CP", i);
-  return false;
-
- check_cache_index:
 #ifdef ASSERT
   {
-    const int CPCACHE_INDEX_TAG = constantPoolOopDesc::CPCACHE_INDEX_TAG;
+    const int CPCACHE_INDEX_TAG = ConstantPool::CPCACHE_INDEX_TAG;
     if (i >= CPCACHE_INDEX_TAG && i < climit + CPCACHE_INDEX_TAG) {
       i -= CPCACHE_INDEX_TAG;
     } else {
@@ -276,22 +282,42 @@
   }
 #endif //ASSERT
   if (i >= 0 && i < climit) {
-    if (cache->entry_at(i)->is_secondary_entry()) {
-      st->print_cr(" secondary entry?");
+    cp_index = cache->entry_at(i)->constant_pool_index();
+  } else {
+    st->print_cr(" not in CP[*]?", i);
       return false;
     }
-    i = cache->entry_at(i)->constant_pool_index();
-    goto check_cp_index;
+  return true;
   }
-  st->print_cr(" not in CP[*]?", i);
+
+
+bool BytecodePrinter::check_obj_index(int i, int& cp_index, outputStream* st) {
+  ConstantPool* constants = method()->constants();
+  i -= ConstantPool::CPCACHE_INDEX_TAG;
+
+  if (i >= 0 && i < constants->resolved_references()->length()) {
+     cp_index = constants->object_to_cp_index(i);
+     return true;
+  } else {
+    st->print_cr(" not in OBJ[*]?", i);
   return false;
 }
+}
+
+
+bool BytecodePrinter::check_invokedynamic_index(int i, int& cp_index, outputStream* st) {
+  ConstantPool* constants = method()->constants();
+  assert(ConstantPool::is_invokedynamic_index(i), "not secondary index?");
+  i = ConstantPool::decode_invokedynamic_index(i) + ConstantPool::CPCACHE_INDEX_TAG;
+
+  return check_cp_cache_index(i, cp_index, st);
+}
 
 void BytecodePrinter::print_constant(int i, outputStream* st) {
   int orig_i = i;
   if (!check_index(orig_i, i, st))  return;
 
-  constantPoolOop constants = method()->constants();
+  ConstantPool* constants = method()->constants();
   constantTag tag = constants->tag_at(i);
 
   if (tag.is_int()) {
@@ -303,13 +329,10 @@
   } else if (tag.is_double()) {
     st->print_cr(" %f", constants->double_at(i));
   } else if (tag.is_string()) {
-    oop string = constants->pseudo_string_at(i);
-    print_oop(string, st);
-  } else if (tag.is_unresolved_string()) {
     const char* string = constants->string_at_noresolve(i);
     st->print_cr(" %s", string);
   } else if (tag.is_klass()) {
-    st->print_cr(" %s", constants->resolved_klass_at(i)->klass_part()->external_name());
+    st->print_cr(" %s", constants->resolved_klass_at(i)->external_name());
   } else if (tag.is_unresolved_klass()) {
     st->print_cr(" <unresolved klass at %d>", i);
   } else if (tag.is_object()) {
@@ -336,7 +359,7 @@
 }
 
 void BytecodePrinter::print_field_or_method(int orig_i, int i, outputStream* st) {
-  constantPoolOop constants = method()->constants();
+  ConstantPool* constants = method()->constants();
   constantTag tag = constants->tag_at(i);
 
   bool has_klass = true;
@@ -438,7 +461,7 @@
       break;
     case Bytecodes::_anewarray: {
         int klass_index = get_index_u2();
-        constantPoolOop constants = method()->constants();
+        ConstantPool* constants = method()->constants();
         Symbol* name = constants->klass_name_at(klass_index);
         st->print_cr(" %s ", name->as_C_string());
       }
@@ -446,7 +469,7 @@
     case Bytecodes::_multianewarray: {
         int klass_index = get_index_u2();
         int nof_dims = get_index_u1();
-        constantPoolOop constants = method()->constants();
+        ConstantPool* constants = method()->constants();
         Symbol* name = constants->klass_name_at(klass_index);
         st->print_cr(" %s %d", name->as_C_string(), nof_dims);
       }
@@ -552,7 +575,7 @@
     case Bytecodes::_checkcast:
     case Bytecodes::_instanceof:
       { int i = get_index_u2();
-        constantPoolOop constants = method()->constants();
+        ConstantPool* constants = method()->constants();
         Symbol* name = constants->klass_name_at(i);
         st->print_cr(" %d <%s>", i, name->as_C_string());
       }
@@ -570,7 +593,7 @@
 
 
 void BytecodePrinter::bytecode_epilog(int bci, outputStream* st) {
-  methodDataOop mdo = method()->method_data();
+  MethodData* mdo = method()->method_data();
   if (mdo != NULL) {
     ProfileData* data = mdo->bci_to_data(bci);
     if (data != NULL) {
--- a/src/share/vm/interpreter/bytecodes.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodes.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "interpreter/bytecodes.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #ifdef TARGET_ARCH_x86
 # include "bytes_x86.hpp"
 #endif
@@ -61,7 +61,7 @@
 u_short         Bytecodes::_flags         [(1<<BitsPerByte)*2];
 
 #ifdef ASSERT
-bool Bytecodes::check_method(const methodOopDesc* method, address bcp) {
+bool Bytecodes::check_method(const Method* method, address bcp) {
   return method->contains(bcp);
 }
 #endif
@@ -89,11 +89,11 @@
   return true;
 }
 
-Bytecodes::Code Bytecodes::code_at(methodOop method, int bci) {
+Bytecodes::Code Bytecodes::code_at(Method* method, int bci) {
   return code_at(method, method->bcp_from(bci));
 }
 
-Bytecodes::Code Bytecodes::non_breakpoint_code_at(const methodOopDesc* method, address bcp) {
+Bytecodes::Code Bytecodes::non_breakpoint_code_at(const Method* method, address bcp) {
   assert(method != NULL, "must have the method for breakpoint conversion");
   assert(method->contains(bcp), "must be valid bcp in method");
   return method->orig_bytecode_at(method->bci_from(bcp));
--- a/src/share/vm/interpreter/bytecodes.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/bytecodes.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -353,7 +353,7 @@
 
   // Verify that bcp points into method
 #ifdef ASSERT
-  static bool        check_method(const methodOopDesc* method, address bcp);
+  static bool        check_method(const Method* method, address bcp);
 #endif
   static bool check_must_rewrite(Bytecodes::Code bc);
 
@@ -368,26 +368,26 @@
   // argument is used for conversion of breakpoints into the original
   // bytecode.  The CI uses these methods but guarantees that
   // breakpoints are hidden so the method argument should be passed as
-  // NULL since in that case the bcp and methodOop are unrelated
+  // NULL since in that case the bcp and Method* are unrelated
   // memory.
-  static Code       code_at(const methodOopDesc* method, address bcp) {
+  static Code       code_at(const Method* method, address bcp) {
     assert(method == NULL || check_method(method, bcp), "bcp must point into method");
     Code code = cast(*bcp);
-    assert(code != _breakpoint || method != NULL, "need methodOop to decode breakpoint");
+    assert(code != _breakpoint || method != NULL, "need Method* to decode breakpoint");
     return (code != _breakpoint) ? code : non_breakpoint_code_at(method, bcp);
   }
-  static Code       java_code_at(const methodOopDesc* method, address bcp) {
+  static Code       java_code_at(const Method* method, address bcp) {
     return java_code(code_at(method, bcp));
   }
 
   // Fetch a bytecode or a breakpoint:
   static Code       code_or_bp_at(address bcp)    { return (Code)cast(*bcp); }
 
-  static Code       code_at(methodOop method, int bci);
+  static Code       code_at(Method* method, int bci);
   static bool       is_active_breakpoint_at(address bcp) { return (Code)*bcp == _breakpoint; }
 
   // find a bytecode, behind a breakpoint if necessary:
-  static Code       non_breakpoint_code_at(const methodOopDesc* method, address bcp);
+  static Code       non_breakpoint_code_at(const Method* method, address bcp);
 
   // Bytecode attributes
   static bool        is_defined     (int  code)    { return 0 <= code && code < number_of_codes && flags(code, false) != 0; }
@@ -408,11 +408,11 @@
   // if 'end' is provided, it indicates the end of the code buffer which
   // should not be read past when parsing.
   static int         special_length_at(Bytecodes::Code code, address bcp, address end = NULL);
-  static int         special_length_at(methodOop method, address bcp, address end = NULL) { return special_length_at(code_at(method, bcp), bcp, end); }
+  static int         special_length_at(Method* method, address bcp, address end = NULL) { return special_length_at(code_at(method, bcp), bcp, end); }
   static int         raw_special_length_at(address bcp, address end = NULL);
   static int         length_for_code_at(Bytecodes::Code code, address bcp)  { int l = length_for(code); return l > 0 ? l : special_length_at(code, bcp); }
-  static int         length_at      (methodOop method, address bcp)  { return length_for_code_at(code_at(method, bcp), bcp); }
-  static int         java_length_at (methodOop method, address bcp)  { return length_for_code_at(java_code_at(method, bcp), bcp); }
+  static int         length_at      (Method* method, address bcp)  { return length_for_code_at(code_at(method, bcp), bcp); }
+  static int         java_length_at (Method* method, address bcp)  { return length_for_code_at(java_code_at(method, bcp), bcp); }
   static bool        is_java_code   (Code code)    { return 0 <= code && code < number_of_java_codes; }
 
   static bool        is_aload       (Code code)    { return (code == _aload  || code == _aload_0  || code == _aload_1
--- a/src/share/vm/interpreter/interpreter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/interpreter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -32,8 +32,8 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/forte.hpp"
 #include "prims/jvmtiExport.hpp"
@@ -312,7 +312,7 @@
 // Deoptimization support
 
 // If deoptimization happens, this function returns the point of next bytecode to continue execution
-address AbstractInterpreter::deopt_continue_after_entry(methodOop method, address bcp, int callee_parameters, bool is_top_frame) {
+address AbstractInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) {
   assert(method->contains(bcp), "just checkin'");
   Bytecodes::Code code   = Bytecodes::java_code_at(method, bcp);
   assert(!Interpreter::bytecode_should_reexecute(code), "should not reexecute");
@@ -350,7 +350,7 @@
       // (NOT needed for the old calling convension)
       if (!is_top_frame) {
         int index = Bytes::get_native_u4(bcp+1);
-        method->constants()->cache()->secondary_entry_at(index)->set_parameter_size(callee_parameters);
+        method->constants()->invokedynamic_cp_cache_entry_at(index)->set_parameter_size(callee_parameters);
       }
       break;
     }
@@ -382,7 +382,7 @@
 // the bytecode.
 // Note: Bytecodes::_athrow is a special case in that it does not return
 //       Interpreter::deopt_entry(vtos, 0) like others
-address AbstractInterpreter::deopt_reexecute_entry(methodOop method, address bcp) {
+address AbstractInterpreter::deopt_reexecute_entry(Method* method, address bcp) {
   assert(method->contains(bcp), "just checkin'");
   Bytecodes::Code code   = Bytecodes::java_code_at(method, bcp);
 #ifdef COMPILER1
--- a/src/share/vm/interpreter/interpreterRuntime.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/interpreterRuntime.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -33,10 +33,9 @@
 #include "interpreter/templateTable.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/cpCacheOop.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
@@ -98,7 +97,7 @@
   if (ProfileInterpreter) {
     // ProfileTraps uses MDOs independently of ProfileInterpreter.
     // That is why we must check both ProfileInterpreter and mdo != NULL.
-    methodDataOop mdo = last_frame(thread).interpreter_frame_method()->method_data();
+    MethodData* mdo = last_frame(thread).interpreter_frame_method()->method_data();
     if (mdo != NULL) {
       NEEDS_CLEANUP;
       last_frame(thread).interpreter_frame_set_mdp(mdo->bci_to_dp(last_frame(thread).interpreter_frame_bci()));
@@ -112,25 +111,14 @@
 
 IRT_ENTRY(void, InterpreterRuntime::ldc(JavaThread* thread, bool wide))
   // access constant pool
-  constantPoolOop pool = method(thread)->constants();
+  ConstantPool* pool = method(thread)->constants();
   int index = wide ? get_index_u2(thread, Bytecodes::_ldc_w) : get_index_u1(thread, Bytecodes::_ldc);
   constantTag tag = pool->tag_at(index);
 
-  if (tag.is_unresolved_klass() || tag.is_klass()) {
-    klassOop klass = pool->klass_at(index, CHECK);
+  assert (tag.is_unresolved_klass() || tag.is_klass(), "wrong ldc call");
+  Klass* klass = pool->klass_at(index, CHECK);
     oop java_class = klass->java_mirror();
     thread->set_vm_result(java_class);
-  } else {
-#ifdef ASSERT
-    // If we entered this runtime routine, we believed the tag contained
-    // an unresolved string, an unresolved class or a resolved class.
-    // However, another thread could have resolved the unresolved string
-    // or class by the time we go there.
-    assert(tag.is_unresolved_string()|| tag.is_string(), "expected string");
-#endif
-    oop s_oop = pool->string_at(index, CHECK);
-    thread->set_vm_result(s_oop);
-  }
 IRT_END
 
 IRT_ENTRY(void, InterpreterRuntime::resolve_ldc(JavaThread* thread, Bytecodes::Code bytecode)) {
@@ -144,10 +132,11 @@
   {
     // The bytecode wrappers aren't GC-safe so construct a new one
     Bytecode_loadconstant ldc2(m, bci(thread));
-    ConstantPoolCacheEntry* cpce = m->constants()->cache()->entry_at(ldc2.cache_index());
-    assert(result == cpce->f1_as_instance(), "expected result for assembly code");
+    oop coop = m->constants()->resolved_references()->obj_at(ldc2.cache_index());
+    assert(result == coop, "expected result for assembly code");
   }
 #endif
+  thread->set_vm_result(result);
 }
 IRT_END
 
@@ -155,8 +144,8 @@
 //------------------------------------------------------------------------------------------------------------------------
 // Allocation
 
-IRT_ENTRY(void, InterpreterRuntime::_new(JavaThread* thread, constantPoolOopDesc* pool, int index))
-  klassOop k_oop = pool->klass_at(index, CHECK);
+IRT_ENTRY(void, InterpreterRuntime::_new(JavaThread* thread, ConstantPool* pool, int index))
+  Klass* k_oop = pool->klass_at(index, CHECK);
   instanceKlassHandle klass (THREAD, k_oop);
 
   // Make sure we are not instantiating an abstract klass
@@ -190,11 +179,11 @@
 IRT_END
 
 
-IRT_ENTRY(void, InterpreterRuntime::anewarray(JavaThread* thread, constantPoolOopDesc* pool, int index, jint size))
+IRT_ENTRY(void, InterpreterRuntime::anewarray(JavaThread* thread, ConstantPool* pool, int index, jint size))
   // Note: no oopHandle for pool & klass needed since they are not used
   //       anymore after new_objArray() and no GC can happen before.
   //       (This may have to change if this code changes!)
-  klassOop  klass = pool->klass_at(index, CHECK);
+  Klass*    klass = pool->klass_at(index, CHECK);
   objArrayOop obj = oopFactory::new_objArray(klass, size, CHECK);
   thread->set_vm_result(obj);
 IRT_END
@@ -202,11 +191,11 @@
 
 IRT_ENTRY(void, InterpreterRuntime::multianewarray(JavaThread* thread, jint* first_size_address))
   // We may want to pass in more arguments - could make this slightly faster
-  constantPoolOop constants = method(thread)->constants();
+  ConstantPool* constants = method(thread)->constants();
   int          i = get_index_u2(thread, Bytecodes::_multianewarray);
-  klassOop klass = constants->klass_at(i, CHECK);
+  Klass* klass = constants->klass_at(i, CHECK);
   int   nof_dims = number_of_dimensions(thread);
-  assert(oop(klass)->is_klass(), "not a class");
+  assert(klass->is_klass(), "not a class");
   assert(nof_dims >= 1, "multianewarray rank must be nonzero");
 
   // We must create an array of jints to pass to multi_allocate.
@@ -229,8 +218,8 @@
 
 IRT_ENTRY(void, InterpreterRuntime::register_finalizer(JavaThread* thread, oopDesc* obj))
   assert(obj->is_oop(), "must be a valid oop");
-  assert(obj->klass()->klass_part()->has_finalizer(), "shouldn't be here otherwise");
-  instanceKlass::register_finalizer(instanceOop(obj), CHECK);
+  assert(obj->klass()->has_finalizer(), "shouldn't be here otherwise");
+  InstanceKlass::register_finalizer(instanceOop(obj), CHECK);
 IRT_END
 
 
@@ -238,13 +227,13 @@
 IRT_ENTRY(void, InterpreterRuntime::quicken_io_cc(JavaThread* thread))
   // Force resolving; quicken the bytecode
   int which = get_index_u2(thread, Bytecodes::_checkcast);
-  constantPoolOop cpool = method(thread)->constants();
+  ConstantPool* cpool = method(thread)->constants();
   // We'd expect to assert that we're only here to quicken bytecodes, but in a multithreaded
   // program we might have seen an unquick'd bytecode in the interpreter but have another
   // thread quicken the bytecode before we get here.
   // assert( cpool->tag_at(which).is_unresolved_klass(), "should only come here to quicken bytecodes" );
-  klassOop klass = cpool->klass_at(which, CHECK);
-  thread->set_vm_result(klass);
+  Klass* klass = cpool->klass_at(which, CHECK);
+  thread->set_vm_result_2(klass);
 IRT_END
 
 
@@ -258,17 +247,17 @@
   methodHandle trap_method(thread, method(thread));
 
   if (trap_method.not_null()) {
-    methodDataHandle trap_mdo(thread, trap_method->method_data());
-    if (trap_mdo.is_null()) {
-      methodOopDesc::build_interpreter_method_data(trap_method, THREAD);
+    MethodData* trap_mdo = trap_method->method_data();
+    if (trap_mdo == NULL) {
+      Method::build_interpreter_method_data(trap_method, THREAD);
       if (HAS_PENDING_EXCEPTION) {
         assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here");
         CLEAR_PENDING_EXCEPTION;
       }
-      trap_mdo = methodDataHandle(thread, trap_method->method_data());
+      trap_mdo = trap_method->method_data();
       // and fall through...
     }
-    if (trap_mdo.not_null()) {
+    if (trap_mdo != NULL) {
       // Update per-method count of trap events.  The interpreter
       // is updating the MDO to simulate the effect of compiler traps.
       int trap_bci = trap_method->bci_from(bcp(thread));
@@ -277,9 +266,9 @@
   }
 }
 
-static Handle get_preinitialized_exception(klassOop k, TRAPS) {
+static Handle get_preinitialized_exception(Klass* k, TRAPS) {
   // get klass
-  instanceKlass* klass = instanceKlass::cast(k);
+  InstanceKlass* klass = InstanceKlass::cast(k);
   assert(klass->is_initialized(),
          "this klass should have been initialized during VM initialization");
   // create instance - do not call constructor since we may have no
@@ -417,7 +406,7 @@
       tty->print_cr(" at bci %d for thread " INTPTR_FORMAT, current_bci, thread);
     }
 // Don't go paging in something which won't be used.
-//     else if (h_extable->length() == 0) {
+//     else if (extable->length() == 0) {
 //       // disabled for now - interpreter is not using shortcut yet
 //       // (shortcut is not to call runtime if we have no exception handlers)
 //       // warning("performance bug: should not call runtime if method has no exception handlers");
@@ -534,7 +523,7 @@
   // class is intitialized.  This is required so that access to the static
   // field will call the initialization function every time until the class
   // is completely initialized ala. in 2.17.5 in JVM Specification.
-  instanceKlass *klass = instanceKlass::cast(info.klass()->as_klassOop());
+  InstanceKlass *klass = InstanceKlass::cast(info.klass()());
   bool uninitialized_static = ((bytecode == Bytecodes::_getstatic || bytecode == Bytecodes::_putstatic) &&
                                !klass->is_initialized());
   Bytecodes::Code get_code = (Bytecodes::Code)0;
@@ -554,7 +543,8 @@
     info.field_offset(),
     state,
     info.access_flags().is_final(),
-    info.access_flags().is_volatile()
+    info.access_flags().is_volatile(),
+    pool->pool_holder()
   );
 IRT_END
 
@@ -644,15 +634,15 @@
 //------------------------------------------------------------------------------------------------------------------------
 // Invokes
 
-IRT_ENTRY(Bytecodes::Code, InterpreterRuntime::get_original_bytecode_at(JavaThread* thread, methodOopDesc* method, address bcp))
+IRT_ENTRY(Bytecodes::Code, InterpreterRuntime::get_original_bytecode_at(JavaThread* thread, Method* method, address bcp))
   return method->orig_bytecode_at(method->bci_from(bcp));
 IRT_END
 
-IRT_ENTRY(void, InterpreterRuntime::set_original_bytecode_at(JavaThread* thread, methodOopDesc* method, address bcp, Bytecodes::Code new_code))
+IRT_ENTRY(void, InterpreterRuntime::set_original_bytecode_at(JavaThread* thread, Method* method, address bcp, Bytecodes::Code new_code))
   method->set_orig_bytecode_at(method->bci_from(bcp), new_code);
 IRT_END
 
-IRT_ENTRY(void, InterpreterRuntime::_breakpoint(JavaThread* thread, methodOopDesc* method, address bcp))
+IRT_ENTRY(void, InterpreterRuntime::_breakpoint(JavaThread* thread, Method* method, address bcp))
   JvmtiExport::post_raw_breakpoint(thread, method, bcp);
 IRT_END
 
@@ -669,7 +659,7 @@
     assert(Universe::heap()->is_in_reserved_or_null(receiver()),
            "sanity check");
     assert(receiver.is_null() ||
-           Universe::heap()->is_in_reserved(receiver->klass()),
+           !Universe::heap()->is_in_reserved(receiver->klass()),
            "sanity check");
   }
 
@@ -744,8 +734,10 @@
   } // end JvmtiHideSingleStepping
 
   cache_entry(thread)->set_method_handle(
+      pool,
       info.resolved_method(),
-      info.resolved_appendix());
+      info.resolved_appendix(),
+      pool->resolved_references());
 }
 IRT_END
 
@@ -762,16 +754,18 @@
   CallInfo info;
   constantPoolHandle pool(thread, method(thread)->constants());
   int index = get_index_u4(thread, bytecode);
-
   {
     JvmtiHideSingleStepping jhss(thread);
     LinkResolver::resolve_invoke(info, Handle(), pool,
                                  index, bytecode, CHECK);
   } // end JvmtiHideSingleStepping
 
-  pool->cache()->secondary_entry_at(index)->set_dynamic_call(
+  ConstantPoolCacheEntry* cp_cache_entry = pool->invokedynamic_cp_cache_entry_at(index);
+  cp_cache_entry->set_dynamic_call(
+      pool,
       info.resolved_method(),
-      info.resolved_appendix());
+      info.resolved_appendix(),
+      pool->resolved_references());
 }
 IRT_END
 
@@ -790,7 +784,7 @@
     // to examine nm directly since it might have been freed and used
     // for something else.
     frame fr = thread->last_frame();
-    methodOop method =  fr.interpreter_frame_method();
+    Method* method =  fr.interpreter_frame_method();
     int bci = method->bci_from(fr.interpreter_frame_bcp());
     nm = method->lookup_osr_nmethod_for(bci, CompLevel_none, false);
   }
@@ -844,10 +838,10 @@
   return osr_nm;
 IRT_END
 
-IRT_LEAF(jint, InterpreterRuntime::bcp_to_di(methodOopDesc* method, address cur_bcp))
+IRT_LEAF(jint, InterpreterRuntime::bcp_to_di(Method* method, address cur_bcp))
   assert(ProfileInterpreter, "must be profiling interpreter");
   int bci = method->bci_from(cur_bcp);
-  methodDataOop mdo = method->method_data();
+  MethodData* mdo = method->method_data();
   if (mdo == NULL)  return 0;
   return mdo->bci_to_di(bci);
 IRT_END
@@ -861,7 +855,7 @@
   frame fr = thread->last_frame();
   assert(fr.is_interpreted_frame(), "must come from interpreter");
   methodHandle method(thread, fr.interpreter_frame_method());
-  methodOopDesc::build_interpreter_method_data(method, THREAD);
+  Method::build_interpreter_method_data(method, THREAD);
   if (HAS_PENDING_EXCEPTION) {
     assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here");
     CLEAR_PENDING_EXCEPTION;
@@ -871,10 +865,10 @@
 
 
 #ifdef ASSERT
-IRT_LEAF(void, InterpreterRuntime::verify_mdp(methodOopDesc* method, address bcp, address mdp))
+IRT_LEAF(void, InterpreterRuntime::verify_mdp(Method* method, address bcp, address mdp))
   assert(ProfileInterpreter, "must be profiling interpreter");
 
-  methodDataOop mdo = method->method_data();
+  MethodData* mdo = method->method_data();
   assert(mdo != NULL, "must not be null");
 
   int bci = method->bci_from(bcp);
@@ -907,7 +901,7 @@
   HandleMark hm(thread);
   frame fr = thread->last_frame();
   assert(fr.is_interpreted_frame(), "must come from interpreter");
-  methodDataHandle h_mdo(thread, fr.interpreter_frame_method()->method_data());
+  MethodData* h_mdo = fr.interpreter_frame_method()->method_data();
 
   // Grab a lock to ensure atomic access to setting the return bci and
   // the displacement.  This can block and GC, invalidating all naked oops.
@@ -943,7 +937,7 @@
 
   // check the access_flags for the field in the klass
 
-  instanceKlass* ik = instanceKlass::cast(java_lang_Class::as_klassOop(cp_entry->f1_as_klass_mirror()));
+  InstanceKlass* ik = InstanceKlass::cast(cp_entry->f1_as_klass());
   int index = cp_entry->field_index();
   if ((ik->field_access_flags(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return;
 
@@ -966,7 +960,7 @@
     // non-static field accessors have an object, but we need a handle
     h_obj = Handle(thread, obj);
   }
-  instanceKlassHandle h_cp_entry_f1(thread, java_lang_Class::as_klassOop(cp_entry->f1_as_klass_mirror()));
+  instanceKlassHandle h_cp_entry_f1(thread, (Klass*)cp_entry->f1_as_klass());
   jfieldID fid = jfieldIDWorkaround::to_jfieldID(h_cp_entry_f1, cp_entry->f2_as_index(), is_static);
   JvmtiExport::post_field_access(thread, method(thread), bcp(thread), h_cp_entry_f1, h_obj, fid);
 IRT_END
@@ -974,10 +968,10 @@
 IRT_ENTRY(void, InterpreterRuntime::post_field_modification(JavaThread *thread,
   oopDesc* obj, ConstantPoolCacheEntry *cp_entry, jvalue *value))
 
-  klassOop k = java_lang_Class::as_klassOop(cp_entry->f1_as_klass_mirror());
+  Klass* k = (Klass*)cp_entry->f1_as_klass();
 
   // check the access_flags for the field in the klass
-  instanceKlass* ik = instanceKlass::cast(k);
+  InstanceKlass* ik = InstanceKlass::cast(k);
   int index = cp_entry->field_index();
   // bail out if field modifications are not watched
   if ((ik->field_access_flags(index) & JVM_ACC_FIELD_MODIFICATION_WATCHED) == 0) return;
@@ -1183,7 +1177,7 @@
 address                  SignatureHandlerLibrary::_buffer       = NULL;
 
 
-IRT_ENTRY(void, InterpreterRuntime::prepare_native_call(JavaThread* thread, methodOopDesc* method))
+IRT_ENTRY(void, InterpreterRuntime::prepare_native_call(JavaThread* thread, Method* method))
   methodHandle m(thread, method);
   assert(m->is_native(), "sanity check");
   // lookup native function entry point if it doesn't exist
--- a/src/share/vm/interpreter/interpreterRuntime.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/interpreterRuntime.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,7 +28,7 @@
 #include "interpreter/bytecode.hpp"
 #include "interpreter/linkResolver.hpp"
 #include "memory/universe.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/frame.inline.hpp"
 #include "runtime/signature.hpp"
 #include "utilities/top.hpp"
@@ -55,7 +55,7 @@
  private:
   // Helper functions to access current interpreter state
   static frame     last_frame(JavaThread *thread)    { return thread->last_frame(); }
-  static methodOop method(JavaThread *thread)        { return last_frame(thread).interpreter_frame_method(); }
+  static Method*   method(JavaThread *thread)        { return last_frame(thread).interpreter_frame_method(); }
   static address   bcp(JavaThread *thread)           { return last_frame(thread).interpreter_frame_bcp(); }
   static int       bci(JavaThread *thread)           { return last_frame(thread).interpreter_frame_bci(); }
   static void      set_bcp_and_mdp(address bcp, JavaThread*thread);
@@ -88,9 +88,9 @@
   static void    resolve_ldc   (JavaThread* thread, Bytecodes::Code bytecode);
 
   // Allocation
-  static void    _new          (JavaThread* thread, constantPoolOopDesc* pool, int index);
+  static void    _new          (JavaThread* thread, ConstantPool* pool, int index);
   static void    newarray      (JavaThread* thread, BasicType type, jint size);
-  static void    anewarray     (JavaThread* thread, constantPoolOopDesc* pool, int index, jint size);
+  static void    anewarray     (JavaThread* thread, ConstantPool* pool, int index, jint size);
   static void    multianewarray(JavaThread* thread, jint* first_size_address);
   static void    register_finalizer(JavaThread* thread, oopDesc* obj);
 
@@ -124,9 +124,9 @@
   static void    resolve_invokedynamic(JavaThread* thread);
 
   // Breakpoints
-  static void _breakpoint(JavaThread* thread, methodOopDesc* method, address bcp);
-  static Bytecodes::Code get_original_bytecode_at(JavaThread* thread, methodOopDesc* method, address bcp);
-  static void            set_original_bytecode_at(JavaThread* thread, methodOopDesc* method, address bcp, Bytecodes::Code new_code);
+  static void _breakpoint(JavaThread* thread, Method* method, address bcp);
+  static Bytecodes::Code get_original_bytecode_at(JavaThread* thread, Method* method, address bcp);
+  static void            set_original_bytecode_at(JavaThread* thread, Method* method, address bcp, Bytecodes::Code new_code);
   static bool is_breakpoint(JavaThread *thread) { return Bytecodes::code_or_bp_at(bcp(thread)) == Bytecodes::_breakpoint; }
 
   // Safepoints
@@ -142,9 +142,9 @@
   static int  interpreter_contains(address pc);
 
   // Native signature handlers
-  static void prepare_native_call(JavaThread* thread, methodOopDesc* method);
+  static void prepare_native_call(JavaThread* thread, Method* method);
   static address slow_signature_handler(JavaThread* thread,
-                                        methodOopDesc* method,
+                                        Method* method,
                                         intptr_t* from, intptr_t* to);
 
 #if defined(IA32) || defined(AMD64) || defined(ARM)
@@ -174,11 +174,11 @@
   static nmethod* frequency_counter_overflow(JavaThread* thread, address branch_bcp);
 
   // Interpreter profiling support
-  static jint    bcp_to_di(methodOopDesc* method, address cur_bcp);
+  static jint    bcp_to_di(Method* method, address cur_bcp);
   static void    profile_method(JavaThread* thread);
   static void    update_mdp_for_ret(JavaThread* thread, int bci);
 #ifdef ASSERT
-  static void    verify_mdp(methodOopDesc* method, address bcp, address mdp);
+  static void    verify_mdp(Method* method, address bcp, address mdp);
 #endif // ASSERT
 };
 
--- a/src/share/vm/interpreter/linkResolver.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/linkResolver.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -75,7 +75,7 @@
 
 
 void CallInfo::set_static(KlassHandle resolved_klass, methodHandle resolved_method, TRAPS) {
-  int vtable_index = methodOopDesc::nonvirtual_vtable_index;
+  int vtable_index = Method::nonvirtual_vtable_index;
   set_common(resolved_klass, resolved_klass, resolved_method, resolved_method, vtable_index, CHECK);
 }
 
@@ -85,7 +85,7 @@
   // comes from java/lang/Object, it can be the subject of a virtual call, so
   // we should pick the vtable index from the resolved method.
   // Other than that case, there is no valid vtable index to specify.
-  int vtable_index = methodOopDesc::invalid_vtable_index;
+  int vtable_index = Method::invalid_vtable_index;
   if (resolved_method->method_holder() == SystemDictionary::Object_klass()) {
     assert(resolved_method->vtable_index() == selected_method->vtable_index(), "sanity check");
     vtable_index = resolved_method->vtable_index();
@@ -94,7 +94,7 @@
 }
 
 void CallInfo::set_virtual(KlassHandle resolved_klass, KlassHandle selected_klass, methodHandle resolved_method, methodHandle selected_method, int vtable_index, TRAPS) {
-  assert(vtable_index >= 0 || vtable_index == methodOopDesc::nonvirtual_vtable_index, "valid index");
+  assert(vtable_index >= 0 || vtable_index == Method::nonvirtual_vtable_index, "valid index");
   set_common(resolved_klass, selected_klass, resolved_method, selected_method, vtable_index, CHECK);
   assert(!resolved_method->is_compiled_lambda_form(), "these must be handled via an invokehandle call");
 }
@@ -103,11 +103,11 @@
   if (resolved_method.is_null()) {
     THROW_MSG(vmSymbols::java_lang_InternalError(), "resolved method is null");
   }
-  KlassHandle resolved_klass = SystemDictionaryHandles::MethodHandle_klass();
+  KlassHandle resolved_klass = SystemDictionary::MethodHandle_klass();
   assert(resolved_method->intrinsic_id() == vmIntrinsics::_invokeBasic ||
          resolved_method->is_compiled_lambda_form(),
          "linkMethod must return one of these");
-  int vtable_index = methodOopDesc::nonvirtual_vtable_index;
+  int vtable_index = Method::nonvirtual_vtable_index;
   assert(resolved_method->vtable_index() == vtable_index, "");
   set_common(resolved_klass, resolved_klass, resolved_method, resolved_method, vtable_index, CHECK);
   _resolved_appendix = resolved_appendix;
@@ -131,7 +131,7 @@
       // don't force compilation, resolve was on behalf of compiler
       return;
     }
-    if (instanceKlass::cast(selected_method->method_holder())->is_not_initialized()) {
+    if (InstanceKlass::cast(selected_method->method_holder())->is_not_initialized()) {
       // 'is_not_initialized' means not only '!is_initialized', but also that
       // initialization has not been started yet ('!being_initialized')
       // Do not force compilation of methods in uninitialized classes.
@@ -152,8 +152,8 @@
 // Klass resolution
 
 void LinkResolver::check_klass_accessability(KlassHandle ref_klass, KlassHandle sel_klass, TRAPS) {
-  if (!Reflection::verify_class_access(ref_klass->as_klassOop(),
-                                       sel_klass->as_klassOop(),
+  if (!Reflection::verify_class_access(ref_klass(),
+                                       sel_klass(),
                                        true)) {
     ResourceMark rm(THREAD);
     Exceptions::fthrow(
@@ -168,13 +168,13 @@
 }
 
 void LinkResolver::resolve_klass(KlassHandle& result, constantPoolHandle pool, int index, TRAPS) {
-  klassOop result_oop = pool->klass_ref_at(index, CHECK);
+  Klass* result_oop = pool->klass_ref_at(index, CHECK);
   result = KlassHandle(THREAD, result_oop);
 }
 
 void LinkResolver::resolve_klass_no_update(KlassHandle& result, constantPoolHandle pool, int index, TRAPS) {
-  klassOop result_oop =
-         constantPoolOopDesc::klass_ref_at_if_loaded_check(pool, index, CHECK);
+  Klass* result_oop =
+         ConstantPool::klass_ref_at_if_loaded_check(pool, index, CHECK);
   result = KlassHandle(THREAD, result_oop);
 }
 
@@ -185,7 +185,7 @@
 // According to JVM spec. $5.4.3c & $5.4.3d
 
 void LinkResolver::lookup_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
-  methodOop result_oop = klass->uncached_lookup_method(name, signature);
+  Method* result_oop = klass->uncached_lookup_method(name, signature);
   if (EnableInvokeDynamic && result_oop != NULL) {
     vmIntrinsics::ID iid = result_oop->intrinsic_id();
     if (MethodHandles::is_signature_polymorphic(iid)) {
@@ -198,7 +198,7 @@
 
 // returns first instance method
 void LinkResolver::lookup_instance_method_in_klasses(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
-  methodOop result_oop = klass->uncached_lookup_method(name, signature);
+  Method* result_oop = klass->uncached_lookup_method(name, signature);
   result = methodHandle(THREAD, result_oop);
   while (!result.is_null() && result->is_static()) {
     klass = KlassHandle(THREAD, Klass::cast(result->method_holder())->super());
@@ -209,12 +209,12 @@
 
 int LinkResolver::vtable_index_of_miranda_method(KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
   ResourceMark rm(THREAD);
-  klassVtable *vt = instanceKlass::cast(klass())->vtable();
+  klassVtable *vt = InstanceKlass::cast(klass())->vtable();
   return vt->index_of_miranda(name, signature);
 }
 
 void LinkResolver::lookup_method_in_interfaces(methodHandle& result, KlassHandle klass, Symbol* name, Symbol* signature, TRAPS) {
-  instanceKlass *ik = instanceKlass::cast(klass());
+  InstanceKlass *ik = InstanceKlass::cast(klass());
   result = methodHandle(THREAD, ik->lookup_method_in_all_interfaces(name, signature));
 }
 
@@ -264,8 +264,8 @@
       // We will ask Java code to spin an adapter method for it.
       if (!MethodHandles::enabled()) {
         // Make sure the Java part of the runtime has been booted up.
-        klassOop natives = SystemDictionary::MethodHandleNatives_klass();
-        if (natives == NULL || instanceKlass::cast(natives)->is_not_initialized()) {
+        Klass* natives = SystemDictionary::MethodHandleNatives_klass();
+        if (natives == NULL || InstanceKlass::cast(natives)->is_not_initialized()) {
           SystemDictionary::resolve_or_fail(vmSymbols::java_lang_invoke_MethodHandleNatives(),
                                             Handle(),
                                             Handle(),
@@ -340,9 +340,9 @@
   }
 //  assert(extra_arg_result_or_null != NULL, "must be able to return extra argument");
 
-  if (!Reflection::verify_field_access(ref_klass->as_klassOop(),
-                                       resolved_klass->as_klassOop(),
-                                       sel_klass->as_klassOop(),
+  if (!Reflection::verify_field_access(ref_klass(),
+                                       resolved_klass(),
+                                       sel_klass(),
                                        flags,
                                        true)) {
     ResourceMark rm(THREAD);
@@ -364,7 +364,7 @@
 
   // resolve klass
   if (code == Bytecodes::_invokedynamic) {
-    resolved_klass = SystemDictionaryHandles::MethodHandle_klass();
+    resolved_klass = SystemDictionary::MethodHandle_klass();
     Symbol* method_name = vmSymbols::invoke_name();
     Symbol* method_signature = pool->signature_ref_at(index);
     KlassHandle  current_klass(THREAD, pool->pool_holder());
@@ -381,7 +381,7 @@
   if (pool->has_preresolution()
       || (resolved_klass() == SystemDictionary::MethodHandle_klass() &&
           MethodHandles::is_signature_polymorphic_name(resolved_klass(), method_name))) {
-    methodOop result_oop = constantPoolOopDesc::method_at_if_loaded(pool, index);
+    Method* result_oop = ConstantPool::method_at_if_loaded(pool, index);
     if (result_oop != NULL) {
       resolved_method = methodHandle(THREAD, result_oop);
       return;
@@ -430,7 +430,7 @@
       // 4. method lookup failed
       ResourceMark rm(THREAD);
       THROW_MSG_CAUSE(vmSymbols::java_lang_NoSuchMethodError(),
-                      methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+                      Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                               method_name,
                                                               method_signature),
                       nested_exception);
@@ -441,7 +441,7 @@
   if (resolved_method->is_abstract() && !resolved_klass->is_abstract()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                       method_name,
                                                       method_signature));
   }
@@ -458,8 +458,8 @@
                                CHECK);
 
     // check loader constraints
-    Handle loader (THREAD, instanceKlass::cast(current_klass())->class_loader());
-    Handle class_loader (THREAD, instanceKlass::cast(resolved_method->method_holder())->class_loader());
+    Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader());
+    Handle class_loader (THREAD, InstanceKlass::cast(resolved_method->method_holder())->class_loader());
     {
       ResourceMark rm(THREAD);
       char* failed_type_name =
@@ -470,11 +470,11 @@
           " \"%s\" the class loader (instance of %s) of the current class, %s,"
           " and the class loader (instance of %s) for resolved class, %s, have"
           " different Class objects for the type %s used in the signature";
-        char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature);
+        char* sig = Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature);
         const char* loader1 = SystemDictionary::loader_name(loader());
-        char* current = instanceKlass::cast(current_klass())->name()->as_C_string();
+        char* current = InstanceKlass::cast(current_klass())->name()->as_C_string();
         const char* loader2 = SystemDictionary::loader_name(class_loader());
-        char* resolved = instanceKlass::cast(resolved_klass())->name()->as_C_string();
+        char* resolved = InstanceKlass::cast(resolved_klass())->name()->as_C_string();
         size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) +
           strlen(current) + strlen(loader2) + strlen(resolved) +
           strlen(failed_type_name);
@@ -512,7 +512,7 @@
       // no method found
       ResourceMark rm(THREAD);
       THROW_MSG(vmSymbols::java_lang_NoSuchMethodError(),
-                methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+                Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                         method_name,
                                                         method_signature));
     }
@@ -520,8 +520,8 @@
 
   if (check_access) {
     HandleMark hm(THREAD);
-    Handle loader (THREAD, instanceKlass::cast(current_klass())->class_loader());
-    Handle class_loader (THREAD, instanceKlass::cast(resolved_method->method_holder())->class_loader());
+    Handle loader (THREAD, InstanceKlass::cast(current_klass())->class_loader());
+    Handle class_loader (THREAD, InstanceKlass::cast(resolved_method->method_holder())->class_loader());
     {
       ResourceMark rm(THREAD);
       char* failed_type_name =
@@ -533,11 +533,11 @@
           "current class, %s, and the class loader (instance of %s) for "
           "resolved class, %s, have different Class objects for the type %s "
           "used in the signature";
-        char* sig = methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature);
+        char* sig = Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),method_name,method_signature);
         const char* loader1 = SystemDictionary::loader_name(loader());
-        char* current = instanceKlass::cast(current_klass())->name()->as_C_string();
+        char* current = InstanceKlass::cast(current_klass())->name()->as_C_string();
         const char* loader2 = SystemDictionary::loader_name(class_loader());
-        char* resolved = instanceKlass::cast(resolved_klass())->name()->as_C_string();
+        char* resolved = InstanceKlass::cast(resolved_klass())->name()->as_C_string();
         size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) +
           strlen(current) + strlen(loader2) + strlen(resolved) +
           strlen(failed_type_name);
@@ -558,9 +558,9 @@
                                              KlassHandle sel_klass,
                                              fieldDescriptor& fd,
                                              TRAPS) {
-  if (!Reflection::verify_field_access(ref_klass->as_klassOop(),
-                                       resolved_klass->as_klassOop(),
-                                       sel_klass->as_klassOop(),
+  if (!Reflection::verify_field_access(ref_klass(),
+                                       resolved_klass(),
+                                       sel_klass(),
                                        fd.access_flags(),
                                        true)) {
     ResourceMark rm(THREAD);
@@ -605,7 +605,7 @@
 
   // Resolve instance field
   fieldDescriptor fd; // find_field initializes fd if found
-  KlassHandle sel_klass(THREAD, instanceKlass::cast(resolved_klass())->find_field(field, sig, &fd));
+  KlassHandle sel_klass(THREAD, InstanceKlass::cast(resolved_klass())->find_field(field, sig, &fd));
   // check if field exists; i.e., if a klass containing the field def has been selected
   if (sel_klass.is_null()){
     ResourceMark rm(THREAD);
@@ -641,8 +641,8 @@
 
   {
     HandleMark hm(THREAD);
-    Handle ref_loader (THREAD, instanceKlass::cast(ref_klass())->class_loader());
-    Handle sel_loader (THREAD, instanceKlass::cast(sel_klass())->class_loader());
+    Handle ref_loader (THREAD, InstanceKlass::cast(ref_klass())->class_loader());
+    Handle sel_loader (THREAD, InstanceKlass::cast(sel_klass())->class_loader());
     Symbol*  signature_ref  = pool->signature_ref_at(index);
     {
       ResourceMark rm(THREAD);
@@ -658,7 +658,7 @@
           "type, %s, have different Class objects for that type";
         char* field_name = field->as_C_string();
         const char* loader1 = SystemDictionary::loader_name(ref_loader());
-        char* sel = instanceKlass::cast(sel_klass())->name()->as_C_string();
+        char* sel = InstanceKlass::cast(sel_klass())->name()->as_C_string();
         const char* loader2 = SystemDictionary::loader_name(sel_loader());
         size_t buflen = strlen(msg) + strlen(field_name) + strlen(loader1) +
           strlen(sel) + strlen(loader2) + strlen(failed_type_name);
@@ -718,7 +718,7 @@
   if (!resolved_method->is_static()) {
     ResourceMark rm(THREAD);
     char buf[200];
-    jio_snprintf(buf, sizeof(buf), "Expected static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+    jio_snprintf(buf, sizeof(buf), "Expected static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                       resolved_method->name(),
                                                       resolved_method->signature()));
     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
@@ -761,7 +761,7 @@
     char buf[200];
     jio_snprintf(buf, sizeof(buf),
                  "Expecting non-static method %s",
-                 methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+                 Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                          resolved_method->name(),
                                                          resolved_method->signature()));
     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
@@ -795,7 +795,7 @@
       if (sel_method.is_null()) {
         ResourceMark rm(THREAD);
         THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-                  methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+                  Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                             resolved_method->name(),
                                             resolved_method->signature()));
       }
@@ -806,7 +806,7 @@
   if (sel_method->is_static()) {
     ResourceMark rm(THREAD);
     char buf[200];
-    jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+    jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                                                                              resolved_method->name(),
                                                                                                              resolved_method->signature()));
     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
@@ -816,7 +816,7 @@
   if (sel_method->is_abstract()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                       sel_method->name(),
                                                       sel_method->signature()));
   }
@@ -847,7 +847,7 @@
   if (resolved_method->is_static()) {
     ResourceMark rm(THREAD);
     char buf[200];
-    jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+    jio_snprintf(buf, sizeof(buf), "Expecting non-static method %s", Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                                                                              resolved_method->name(),
                                                                                                              resolved_method->signature()));
     THROW_MSG(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
@@ -864,7 +864,7 @@
                                                   TRAPS) {
 
   // setup default return values
-  int vtable_index = methodOopDesc::invalid_vtable_index;
+  int vtable_index = Method::invalid_vtable_index;
   methodHandle selected_method;
 
   assert(recv.is_null() || recv->is_oop(), "receiver is not an oop");
@@ -874,23 +874,23 @@
     THROW(vmSymbols::java_lang_NullPointerException());
   }
 
-  // Virtual methods cannot be resolved before its klass has been linked, for otherwise the methodOop's
+  // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s
   // has not been rewritten, and the vtable initialized.
-  assert(instanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked");
+  assert(InstanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked");
 
-  // Virtual methods cannot be resolved before its klass has been linked, for otherwise the methodOop's
+  // Virtual methods cannot be resolved before its klass has been linked, for otherwise the Method*'s
   // has not been rewritten, and the vtable initialized. Make sure to do this after the nullcheck, since
   // a missing receiver might result in a bogus lookup.
-  assert(instanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked");
+  assert(InstanceKlass::cast(resolved_method->method_holder())->is_linked(), "must be linked");
 
   // do lookup based on receiver klass using the vtable index
-  if (resolved_method->method_holder()->klass_part()->is_interface()) { // miranda method
+  if (resolved_method->method_holder()->is_interface()) { // miranda method
     vtable_index = vtable_index_of_miranda_method(resolved_klass,
                            resolved_method->name(),
                            resolved_method->signature(), CHECK);
     assert(vtable_index >= 0 , "we should have valid vtable index at this point");
 
-    instanceKlass* inst = instanceKlass::cast(recv_klass());
+    InstanceKlass* inst = InstanceKlass::cast(recv_klass());
     selected_method = methodHandle(THREAD, inst->method_at_vtable(vtable_index));
   } else {
     // at this point we are sure that resolved_method is virtual and not
@@ -901,13 +901,13 @@
     // unless they override an existing method.
     // If we do get a negative, it means the resolved method is the the selected
     // method, and it can never be changed by an override.
-    if (vtable_index == methodOopDesc::nonvirtual_vtable_index) {
+    if (vtable_index == Method::nonvirtual_vtable_index) {
       assert(resolved_method->can_be_statically_bound(), "cannot override this method");
       selected_method = resolved_method;
     } else {
       // recv_klass might be an arrayKlassOop but all vtables start at
       // the same place. The cast is to avoid virtual call and assertion.
-      instanceKlass* inst = (instanceKlass*)recv_klass()->klass_part();
+      InstanceKlass* inst = (InstanceKlass*)recv_klass();
       selected_method = methodHandle(THREAD, inst->method_at_vtable(vtable_index));
     }
   }
@@ -916,7 +916,7 @@
   if (selected_method.is_null()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                       resolved_method->name(),
                                                       resolved_method->signature()));
   }
@@ -925,7 +925,7 @@
   if (check_null_and_abstract && selected_method->is_abstract()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(resolved_klass()),
                                                       selected_method->name(),
                                                       selected_method->signature()));
   }
@@ -978,7 +978,7 @@
   if (sel_method.is_null()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(recv_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(recv_klass()),
                                                       resolved_method->name(),
                                                       resolved_method->signature()));
   }
@@ -986,7 +986,7 @@
   if (!sel_method->is_public()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_IllegalAccessError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(recv_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(recv_klass()),
                                                       sel_method->name(),
                                                       sel_method->signature()));
   }
@@ -994,7 +994,7 @@
   if (check_null_and_abstract && sel_method->is_abstract()) {
     ResourceMark rm(THREAD);
     THROW_MSG(vmSymbols::java_lang_AbstractMethodError(),
-              methodOopDesc::name_and_sig_as_C_string(Klass::cast(recv_klass()),
+              Method::name_and_sig_as_C_string(Klass::cast(recv_klass()),
                                                       sel_method->name(),
                                                       sel_method->signature()));
   }
@@ -1080,7 +1080,7 @@
   resolve_virtual_call(info, Handle(), receiver_klass, resolved_klass, name, signature, current_klass, true, false, THREAD);
   if (HAS_PENDING_EXCEPTION) {
     CLEAR_PENDING_EXCEPTION;
-    return methodOopDesc::invalid_vtable_index;
+    return Method::invalid_vtable_index;
   }
   return info.vtable_index();
 }
@@ -1170,7 +1170,7 @@
   Symbol* method_signature = NULL;
   KlassHandle  current_klass;
   resolve_pool(resolved_klass, method_name,  method_signature, current_klass, pool, index, CHECK);
-  KlassHandle recvrKlass (THREAD, recv.is_null() ? (klassOop)NULL : recv->klass());
+  KlassHandle recvrKlass (THREAD, recv.is_null() ? (Klass*)NULL : recv->klass());
   resolve_virtual_call(result, recv, recvrKlass, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
 }
 
@@ -1181,7 +1181,7 @@
   Symbol* method_signature = NULL;
   KlassHandle  current_klass;
   resolve_pool(resolved_klass, method_name,  method_signature, current_klass, pool, index, CHECK);
-  KlassHandle recvrKlass (THREAD, recv.is_null() ? (klassOop)NULL : recv->klass());
+  KlassHandle recvrKlass (THREAD, recv.is_null() ? (Klass*)NULL : recv->klass());
   resolve_interface_call(result, recv, recvrKlass, resolved_klass, method_name, method_signature, current_klass, true, true, CHECK);
 }
 
@@ -1227,24 +1227,24 @@
   // Resolve the bootstrap specifier (BSM + optional arguments).
   Handle bootstrap_specifier;
   // Check if CallSite has been bound already:
-  ConstantPoolCacheEntry* cpce = pool->cache()->secondary_entry_at(index);
+  ConstantPoolCacheEntry* cpce = pool->invokedynamic_cp_cache_entry_at(index);
   if (cpce->is_f1_null()) {
-    int pool_index = pool->cache()->main_entry_at(index)->constant_pool_index();
+    int pool_index = cpce->constant_pool_index();
     oop bsm_info = pool->resolve_bootstrap_specifier_at(pool_index, CHECK);
     assert(bsm_info != NULL, "");
     // FIXME: Cache this once per BootstrapMethods entry, not once per CONSTANT_InvokeDynamic.
     bootstrap_specifier = Handle(THREAD, bsm_info);
   }
   if (!cpce->is_f1_null()) {
-    methodHandle method(THREAD, cpce->f2_as_vfinal_method());
-    Handle appendix(THREAD, cpce->has_appendix() ? cpce->f1_appendix() : (oop)NULL);
+    methodHandle method(THREAD, cpce->f1_as_method());
+    Handle appendix(THREAD, cpce->appendix_if_resolved(pool));
     result.set_handle(method, appendix, CHECK);
     return;
   }
 
   if (TraceMethodHandles) {
     tty->print_cr("resolve_invokedynamic #%d %s %s",
-                  constantPoolCacheOopDesc::decode_secondary_index(index),
+                  ConstantPool::decode_invokedynamic_index(index),
                   method_name->as_C_string(), method_signature->as_C_string());
     tty->print("  BSM info: "); bootstrap_specifier->print();
   }
--- a/src/share/vm/interpreter/linkResolver.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/linkResolver.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,7 @@
 #ifndef SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
 #define SHARE_VM_INTERPRETER_LINKRESOLVER_HPP
 
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "utilities/top.hpp"
 
 // All the necessary definitions for run-time link resolution.
@@ -94,7 +94,7 @@
 
   BasicType    result_type() const               { return selected_method()->result_type(); }
   bool         has_vtable_index() const          { return _vtable_index >= 0; }
-  bool         is_statically_bound() const       { return _vtable_index == methodOopDesc::nonvirtual_vtable_index; }
+  bool         is_statically_bound() const       { return _vtable_index == Method::nonvirtual_vtable_index; }
   int          vtable_index() const {
     // Even for interface calls the vtable index could be non-negative.
     // See CallInfo::set_interface.
--- a/src/share/vm/interpreter/oopMapCache.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/oopMapCache.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -194,21 +194,6 @@
   for (int i = 0; i < N; i++) _bit_mask[i] = 0;
 }
 
-
-void InterpreterOopMap::oop_iterate(OopClosure *blk) {
-  if (method() != NULL) {
-    blk->do_oop((oop*) &_method);
-  }
-}
-
-void InterpreterOopMap::oop_iterate(OopClosure *blk, MemRegion mr) {
-  if (method() != NULL && mr.contains(&_method)) {
-    blk->do_oop((oop*) &_method);
-  }
-}
-
-
-
 void InterpreterOopMap::iterate_oop(OffsetClosure* oop_closure) {
   int n = number_of_entries();
   int word_index = 0;
@@ -226,13 +211,6 @@
   }
 }
 
-void InterpreterOopMap::verify() {
-  // If we are doing mark sweep _method may not have a valid header
-  // $$$ This used to happen only for m/s collections; we might want to
-  // think of an appropriate generalization of this distinction.
-  guarantee(Universe::heap()->is_gc_active() || _method->is_oop_or_null(),
-            "invalid oop in oopMapCache");
-}
 
 #ifdef ENABLE_ZAP_DEAD_LOCALS
 
@@ -387,9 +365,6 @@
     OopMapForCacheEntry gen(method, bci, this);
     gen.compute_map(CATCH);
   }
-  #ifdef ASSERT
-    verify();
-  #endif
 }
 
 
@@ -464,7 +439,6 @@
 void InterpreterOopMap::resource_copy(OopMapCacheEntry* from) {
   assert(_resource_allocate_bit_mask,
     "Should not resource allocate the _bit_mask");
-  assert(from->method()->is_oop(), "MethodOop is bad");
 
   set_method(from->method());
   set_bci(from->bci());
@@ -544,18 +518,6 @@
     }
 }
 
-void OopMapCache::oop_iterate(OopClosure *blk) {
-  for (int i = 0; i < _size; i++) _array[i].oop_iterate(blk);
-}
-
-void OopMapCache::oop_iterate(OopClosure *blk, MemRegion mr) {
-    for (int i = 0; i < _size; i++) _array[i].oop_iterate(blk, mr);
-}
-
-void OopMapCache::verify() {
-  for (int i = 0; i < _size; i++) _array[i].verify();
-}
-
 void OopMapCache::lookup(methodHandle method,
                          int bci,
                          InterpreterOopMap* entry_for) {
@@ -586,10 +548,10 @@
   // Compute entry and return it
 
   if (method->should_not_be_cached()) {
-    // It is either not safe or not a good idea to cache this methodOop
+    // It is either not safe or not a good idea to cache this Method*
     // at this time. We give the caller of lookup() a copy of the
     // interesting info via parameter entry_for, but we don't add it to
-    // the cache. See the gory details in methodOop.cpp.
+    // the cache. See the gory details in Method*.cpp.
     compute_one_oop_map(method, bci, entry_for);
     return;
   }
--- a/src/share/vm/interpreter/oopMapCache.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/oopMapCache.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -32,7 +32,7 @@
 // The memory management system uses the cache when locating object
 // references in an interpreted frame.
 //
-// OopMapCache's are allocated lazily per instanceKlass.
+// OopMapCache's are allocated lazily per InstanceKlass.
 
 // The oopMap (InterpreterOopMap) is stored as a bit mask. If the
 // bit_mask can fit into two words it is stored in
@@ -83,7 +83,7 @@
   };
 
  private:
-  methodOop      _method;         // the method for which the mask is valid
+  Method*        _method;         // the method for which the mask is valid
   unsigned short _bci;            // the bci    for which the mask is valid
   int            _mask_size;      // the mask size in bits
   int            _expression_stack_size; // the size of the expression stack in slots
@@ -100,8 +100,8 @@
 #endif
 
   // access methods
-  methodOop      method() const                  { return _method; }
-  void           set_method(methodOop v)         { _method = v; }
+  Method*        method() const                  { return _method; }
+  void           set_method(Method* v)         { _method = v; }
   int            bci() const                     { return _bci; }
   void           set_bci(int v)                  { _bci = v; }
   int            mask_size() const               { return _mask_size; }
@@ -142,9 +142,6 @@
   void resource_copy(OopMapCacheEntry* from);
 
   void iterate_oop(OffsetClosure* oop_closure);
-  void oop_iterate(OopClosure * blk);
-  void oop_iterate(OopClosure * blk, MemRegion mr);
-  void verify();
   void print();
 
   bool is_oop  (int offset)                      { return (entry_at(offset) & (1 << oop_bit_number )) != 0; }
@@ -185,12 +182,6 @@
   // Compute an oop map without updating the cache or grabbing any locks (for debugging)
   static void compute_one_oop_map(methodHandle method, int bci, InterpreterOopMap* entry);
 
-  // Helpers
-  // Iterate over the entries in the cached OopMapCacheEntry's
-  void oop_iterate(OopClosure *blk);
-  void oop_iterate(OopClosure *blk, MemRegion mr);
-  void verify();
-
   // Returns total no. of bytes allocated as part of OopMapCache's
   static long memory_usage()                     PRODUCT_RETURN0;
 };
--- a/src/share/vm/interpreter/rewriter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/rewriter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -27,6 +27,7 @@
 #include "interpreter/interpreter.hpp"
 #include "interpreter/rewriter.hpp"
 #include "memory/gcLocker.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/generateOopMap.hpp"
@@ -41,7 +42,7 @@
 // Marks entries in CP which require additional processing.
 void Rewriter::compute_index_maps() {
   const int length  = _pool->length();
-  init_cp_map(length);
+  init_maps(length);
   bool saw_mh_symbol = false;
   for (int i = 0; i < length; i++) {
     int tag = _pool->tag_at(i).value();
@@ -49,10 +50,13 @@
       case JVM_CONSTANT_InterfaceMethodref:
       case JVM_CONSTANT_Fieldref          : // fall through
       case JVM_CONSTANT_Methodref         : // fall through
+        add_cp_cache_entry(i);
+        break;
+      case JVM_CONSTANT_String:
+      case JVM_CONSTANT_Object:
       case JVM_CONSTANT_MethodHandle      : // fall through
       case JVM_CONSTANT_MethodType        : // fall through
-      case JVM_CONSTANT_InvokeDynamic     : // fall through
-        add_cp_cache_entry(i);
+        add_resolved_references_entry(i);
         break;
       case JVM_CONSTANT_Utf8:
         if (_pool->symbol_at(i) == vmSymbols::java_lang_invoke_MethodHandle())
@@ -61,6 +65,9 @@
     }
   }
 
+  // Record limits of resolved reference map for constant pool cache indices
+  record_map_limits();
+
   guarantee((int)_cp_cache_map.length()-1 <= (int)((u2)-1),
             "all cp cache indexes fit in a u2");
 
@@ -73,7 +80,7 @@
   int len = _methods->length();
 
   for (int i = len-1; i >= 0; i--) {
-    methodOop method = (methodOop)_methods->obj_at(i);
+    Method* method = _methods->at(i);
     scan_method(method, true);
   }
 }
@@ -81,10 +88,17 @@
 // Creates a constant pool cache given a CPC map
 void Rewriter::make_constant_pool_cache(TRAPS) {
   const int length = _cp_cache_map.length();
-  constantPoolCacheOop cache =
-      oopFactory::new_constantPoolCache(length, CHECK);
+  ClassLoaderData* loader_data = _pool->pool_holder()->class_loader_data();
+  ConstantPoolCache* cache =
+      ConstantPoolCache::allocate(loader_data, length, CHECK);
+
+  // initialize object cache in constant pool
+  _pool->initialize_resolved_references(loader_data, _resolved_references_map,
+                                        _resolved_reference_limit,
+                                        CHECK);
+
   No_Safepoint_Verifier nsv;
-  cache->initialize(_cp_cache_map);
+  cache->initialize(_cp_cache_map, _invokedynamic_references_map);
   _pool->set_cache(cache);
   cache->set_constant_pool(_pool());
 }
@@ -138,19 +152,19 @@
     int  cache_index = cp_entry_to_cp_cache(cp_index);
     Bytes::put_native_u2(p, cache_index);
     if (!_method_handle_invokers.is_empty())
-      maybe_rewrite_invokehandle(p - 1, cp_index, reverse);
+      maybe_rewrite_invokehandle(p - 1, cp_index, cache_index, reverse);
   } else {
     int cache_index = Bytes::get_native_u2(p);
     int pool_index = cp_cache_entry_pool_index(cache_index);
     Bytes::put_Java_u2(p, pool_index);
     if (!_method_handle_invokers.is_empty())
-      maybe_rewrite_invokehandle(p - 1, pool_index, reverse);
+      maybe_rewrite_invokehandle(p - 1, pool_index, cache_index, reverse);
   }
 }
 
 
 // Adjust the invocation bytecode for a signature-polymorphic method (MethodHandle.invoke, etc.)
-void Rewriter::maybe_rewrite_invokehandle(address opc, int cp_index, bool reverse) {
+void Rewriter::maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse) {
   if (!reverse) {
     if ((*opc) == (u1)Bytecodes::_invokevirtual ||
         // allow invokespecial as an alias, although it would be very odd:
@@ -163,10 +177,13 @@
       if (status == 0) {
         if (_pool->klass_ref_at_noresolve(cp_index) == vmSymbols::java_lang_invoke_MethodHandle() &&
             MethodHandles::is_signature_polymorphic_name(SystemDictionary::MethodHandle_klass(),
-                                                         _pool->name_ref_at(cp_index)))
+                                                         _pool->name_ref_at(cp_index))) {
+          // we may need a resolved_refs entry for the appendix
+          add_invokedynamic_resolved_references_entry(cp_index, cache_index);
           status = +1;
-        else
+        } else {
           status = -1;
+        }
         _method_handle_invokers[cp_index] = status;
       }
       // We use a special internal bytecode for such methods (if non-static).
@@ -193,9 +210,8 @@
   assert(p[-1] == Bytecodes::_invokedynamic, "not invokedynamic bytecode");
   if (!reverse) {
     int cp_index = Bytes::get_Java_u2(p);
-    int cpc  = maybe_add_cp_cache_entry(cp_index);  // add lazily
-    int cpc2 = add_secondary_cp_cache_entry(cpc);
-
+    int cache_index = add_invokedynamic_cp_cache_entry(cp_index);
+    add_invokedynamic_resolved_references_entry(cp_index, cache_index);
     // Replace the trailing four bytes with a CPC index for the dynamic
     // call site.  Unlike other CPC entries, there is one per bytecode,
     // not just one per distinct CP entry.  In other words, the
@@ -204,17 +220,17 @@
     // all these entries.  That is the main reason invokedynamic
     // must have a five-byte instruction format.  (Of course, other JVM
     // implementations can use the bytes for other purposes.)
-    Bytes::put_native_u4(p, constantPoolCacheOopDesc::encode_secondary_index(cpc2));
+    Bytes::put_native_u4(p, ConstantPool::encode_invokedynamic_index(cache_index));
     // Note: We use native_u4 format exclusively for 4-byte indexes.
   } else {
-    int cache_index = constantPoolCacheOopDesc::decode_secondary_index(
+    // callsite index
+    int cache_index = ConstantPool::decode_invokedynamic_index(
                         Bytes::get_native_u4(p));
-    int secondary_index = cp_cache_secondary_entry_main_index(cache_index);
-    int pool_index = cp_cache_entry_pool_index(secondary_index);
-    assert(_pool->tag_at(pool_index).is_invoke_dynamic(), "wrong index");
+    int cp_index = cp_cache_entry_pool_index(cache_index);
+    assert(_pool->tag_at(cp_index).is_invoke_dynamic(), "wrong index");
     // zero out 4 bytes
     Bytes::put_Java_u4(p, 0);
-    Bytes::put_Java_u2(p, pool_index);
+    Bytes::put_Java_u2(p, cp_index);
   }
 }
 
@@ -227,16 +243,16 @@
     address p = bcp + offset;
     int cp_index = is_wide ? Bytes::get_Java_u2(p) : (u1)(*p);
     constantTag tag = _pool->tag_at(cp_index).value();
-    if (tag.is_method_handle() || tag.is_method_type()) {
-      int cache_index = cp_entry_to_cp_cache(cp_index);
+    if (tag.is_method_handle() || tag.is_method_type() || tag.is_string() || tag.is_object()) {
+      int ref_index = cp_entry_to_resolved_references(cp_index);
       if (is_wide) {
         (*bcp) = Bytecodes::_fast_aldc_w;
-        assert(cache_index == (u2)cache_index, "index overflow");
-        Bytes::put_native_u2(p, cache_index);
+        assert(ref_index == (u2)ref_index, "index overflow");
+        Bytes::put_native_u2(p, ref_index);
       } else {
         (*bcp) = Bytecodes::_fast_aldc;
-        assert(cache_index == (u1)cache_index, "index overflow");
-        (*p) = (u1)cache_index;
+        assert(ref_index == (u1)ref_index, "index overflow");
+        (*p) = (u1)ref_index;
       }
     }
   } else {
@@ -244,8 +260,8 @@
               (is_wide ? Bytecodes::_fast_aldc_w : Bytecodes::_fast_aldc);
     if ((*bcp) == rewritten_bc) {
       address p = bcp + offset;
-      int cache_index = is_wide ? Bytes::get_native_u2(p) : (u1)(*p);
-      int pool_index = cp_cache_entry_pool_index(cache_index);
+      int ref_index = is_wide ? Bytes::get_native_u2(p) : (u1)(*p);
+      int pool_index = resolved_references_entry_to_pool_index(ref_index);
       if (is_wide) {
         (*bcp) = Bytecodes::_ldc_w;
         assert(pool_index == (u2)pool_index, "index overflow");
@@ -261,14 +277,14 @@
 
 
 // Rewrites a method given the index_map information
-void Rewriter::scan_method(methodOop method, bool reverse) {
+void Rewriter::scan_method(Method* method, bool reverse) {
 
   int nof_jsrs = 0;
   bool has_monitor_bytecodes = false;
 
   {
     // We cannot tolerate a GC in this block, because we've
-    // cached the bytecodes in 'code_base'. If the methodOop
+    // cached the bytecodes in 'code_base'. If the Method*
     // moves, the bytecodes will also move.
     No_Safepoint_Verifier nsv;
     Bytecodes::Code c;
@@ -371,16 +387,6 @@
   ResolveOopMapConflicts romc(method);
   methodHandle original_method = method;
   method = romc.do_potential_rewrite(CHECK_(methodHandle()));
-  if (method() != original_method()) {
-    // Insert invalid bytecode into original methodOop and set
-    // interpreter entrypoint, so that a executing this method
-    // will manifest itself in an easy recognizable form.
-    address bcp = original_method->bcp_from(0);
-    *bcp = (u1)Bytecodes::_shouldnotreachhere;
-    int kind = Interpreter::method_kind(original_method);
-    original_method->set_interpreter_kind(kind);
-  }
-
   // Update monitor matching info.
   if (romc.monitor_safe()) {
     method->set_guaranteed_monitor_matching();
@@ -396,28 +402,28 @@
 }
 
 
-void Rewriter::rewrite(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS) {
+void Rewriter::rewrite(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS) {
   ResourceMark rm(THREAD);
   Rewriter     rw(klass, cpool, methods, CHECK);
   // (That's all, folks.)
 }
 
 
-Rewriter::Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS)
+Rewriter::Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS)
   : _klass(klass),
     _pool(cpool),
     _methods(methods)
 {
   assert(_pool->cache() == NULL, "constant pool cache must not be set yet");
 
-  // determine index maps for methodOop rewriting
+  // determine index maps for Method* rewriting
   compute_index_maps();
 
   if (RegisterFinalizersAtInit && _klass->name() == vmSymbols::java_lang_Object()) {
     bool did_rewrite = false;
     int i = _methods->length();
     while (i-- > 0) {
-      methodOop method = (methodOop)_methods->obj_at(i);
+      Method* method = _methods->at(i);
       if (method->intrinsic_id() == vmIntrinsics::_Object_init) {
         // rewrite the return bytecodes of Object.<init> to register the
         // object for finalization if needed.
@@ -434,7 +440,7 @@
   int len = _methods->length();
 
   for (int i = len-1; i >= 0; i--) {
-    methodOop method = (methodOop)_methods->obj_at(i);
+    Method* method = _methods->at(i);
     scan_method(method);
   }
 
@@ -455,20 +461,19 @@
 // Link and check jvmti dependencies while we're iterating over the methods.
 // JSR292 code calls with a different set of methods, so two entry points.
 void Rewriter::relocate_and_link(instanceKlassHandle this_oop, TRAPS) {
-  objArrayHandle methods(THREAD, this_oop->methods());
-  relocate_and_link(this_oop, methods, THREAD);
+  relocate_and_link(this_oop, this_oop->methods(), THREAD);
 }
 
 void Rewriter::relocate_and_link(instanceKlassHandle this_oop,
-                                 objArrayHandle methods, TRAPS) {
+                                 Array<Method*>* methods, TRAPS) {
   int len = methods->length();
   for (int i = len-1; i >= 0; i--) {
-    methodHandle m(THREAD, (methodOop)methods->obj_at(i));
+    methodHandle m(THREAD, methods->at(i));
 
     if (m->has_jsrs()) {
       m = rewrite_jsrs(m, CHECK);
       // Method might have gotten rewritten.
-      methods->obj_at_put(i, m());
+      methods->at_put(i, m());
     }
 
     // Set up method entry points for compiler and interpreter    .
@@ -481,7 +486,7 @@
       for (int j = i; j >= 0 && j >= i-4; j--) {
         if ((++nmc % 1000) == 0)  tty->print_cr("Have run MethodComparator %d times...", nmc);
         bool z = MethodComparator::methods_EMCP(m(),
-                   (methodOop)methods->obj_at(j));
+                   methods->at(j));
         if (j == i && !z) {
           tty->print("MethodComparator FAIL: "); m->print(); m->print_codes();
           assert(z, "method must compare equal to itself");
--- a/src/share/vm/interpreter/rewriter.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/rewriter.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -36,59 +36,121 @@
  private:
   instanceKlassHandle _klass;
   constantPoolHandle  _pool;
-  objArrayHandle      _methods;
+  Array<Method*>*     _methods;
   intArray            _cp_map;
-  intStack            _cp_cache_map;
+  intStack            _cp_cache_map;        // for Methodref, Fieldref,
+                                            // InterfaceMethodref and InvokeDynamic
+  intArray            _reference_map;       // maps from cp index to resolved_refs index (or -1)
+  intStack            _resolved_references_map;    // for strings, methodHandle, methodType
+  intStack            _invokedynamic_references_map; // for invokedynamic resolved refs
   intArray            _method_handle_invokers;
+  int                 _resolved_reference_limit;
 
-  void init_cp_map(int length) {
+  void init_maps(int length) {
     _cp_map.initialize(length, -1);
     // Choose an initial value large enough that we don't get frequent
     // calls to grow().
     _cp_cache_map.initialize(length / 2);
+    // Also cache resolved objects, in another different cache.
+    _reference_map.initialize(length, -1);
+    _resolved_references_map.initialize(length / 2);
+    _invokedynamic_references_map.initialize(length / 2);
+    _resolved_reference_limit = -1;
+    DEBUG_ONLY(_cp_cache_index_limit = -1);
   }
+
+  int _cp_cache_index_limit;
+  void record_map_limits() {
+#ifdef ASSERT
+    // Record initial size of the two arrays generated for the CP cache:
+    _cp_cache_index_limit = _cp_cache_map.length();
+#endif //ASSERT
+    _resolved_reference_limit = _resolved_references_map.length();
+  }
+
   int  cp_entry_to_cp_cache(int i) { assert(has_cp_cache(i), "oob"); return _cp_map[i]; }
   bool has_cp_cache(int i) { return (uint)i < (uint)_cp_map.length() && _cp_map[i] >= 0; }
-  int maybe_add_cp_cache_entry(int i) { return has_cp_cache(i) ? _cp_map[i] : add_cp_cache_entry(i); }
+
   int add_cp_cache_entry(int cp_index) {
-    assert((cp_index & _secondary_entry_tag) == 0, "bad tag");
+    assert(_pool->tag_at(cp_index).value() != JVM_CONSTANT_InvokeDynamic, "use indy version");
     assert(_cp_map[cp_index] == -1, "not twice on same cp_index");
+    assert(_cp_cache_index_limit == -1, "do not add cache entries after first iteration");
     int cache_index = _cp_cache_map.append(cp_index);
     _cp_map.at_put(cp_index, cache_index);
     assert(cp_entry_to_cp_cache(cp_index) == cache_index, "");
+    assert(cp_cache_entry_pool_index(cache_index) == cp_index, "");
+    return cache_index;
+  }
+
+  // add a new CP cache entry beyond the normal cache (for invokedynamic only)
+  int add_invokedynamic_cp_cache_entry(int cp_index) {
+    assert(_pool->tag_at(cp_index).value() == JVM_CONSTANT_InvokeDynamic, "use non-indy version");
+    assert(_cp_map[cp_index] == -1, "do not map from cp_index");
+    assert(_cp_cache_index_limit >= 0, "add indy cache entries after first iteration");
+    int cache_index = _cp_cache_map.append(cp_index);
+    assert(cache_index >= _cp_cache_index_limit, "");
+    // do not update _cp_map, since the mapping is one-to-many
+    assert(cp_cache_entry_pool_index(cache_index) == cp_index, "");
     return cache_index;
   }
-  int add_secondary_cp_cache_entry(int main_cpc_entry) {
-    assert(main_cpc_entry < _cp_cache_map.length(), "must be earlier CP cache entry");
-    int cache_index = _cp_cache_map.append(main_cpc_entry | _secondary_entry_tag);
-    return cache_index;
+
+  // fix duplicated code later
+  int  cp_entry_to_resolved_references(int cp_index) const {
+    assert(has_entry_in_resolved_references(cp_index), "oob");
+    return _reference_map[cp_index];
+  }
+  bool has_entry_in_resolved_references(int cp_index) const {
+    return (uint)cp_index < (uint)_reference_map.length() && _reference_map[cp_index] >= 0;
+  }
+
+  // add a new entry to the resolved_references map
+  int add_resolved_references_entry(int cp_index) {
+    assert(_reference_map[cp_index] == -1, "not twice on same cp_index");
+    assert(_resolved_reference_limit == -1, "do not add CP refs after first iteration");
+    int ref_index = _resolved_references_map.append(cp_index);
+    _reference_map.at_put(cp_index, ref_index);
+    assert(cp_entry_to_resolved_references(cp_index) == ref_index, "");
+    return ref_index;
+  }
+
+  // add a new entry to the resolved_references map (for invokedynamic only)
+  int add_invokedynamic_resolved_references_entry(int cp_index, int cache_index) {
+    assert(_resolved_reference_limit >= 0, "must add indy refs after first iteration");
+    int ref_index = _resolved_references_map.append(cp_index);  // many-to-one
+    assert(ref_index >= _resolved_reference_limit, "");
+    _invokedynamic_references_map.at_put_grow(ref_index, cache_index, -1);
+    return ref_index;
+  }
+
+  int resolved_references_entry_to_pool_index(int ref_index) {
+    int cp_index = _resolved_references_map[ref_index];
+    return cp_index;
+  }
+
+  // invokedynamic support - append the cpCache entry (encoded) in object map.
+  // The resolved_references_map should still be in ascending order
+  // The resolved_references has the invokedynamic call site objects appended after
+  // the objects that are resolved in the constant pool.
+  int add_callsite_entry(int main_cpc_entry) {
+    int ref_index = _resolved_references_map.append(main_cpc_entry);
+    return ref_index;
   }
 
   // Access the contents of _cp_cache_map to determine CP cache layout.
   int cp_cache_entry_pool_index(int cache_index) {
     int cp_index = _cp_cache_map[cache_index];
-    if ((cp_index & _secondary_entry_tag) != 0)
-      return -1;
-    else
       return cp_index;
   }
-  int cp_cache_secondary_entry_main_index(int cache_index) {
-    int cp_index = _cp_cache_map[cache_index];
-    if ((cp_index & _secondary_entry_tag) == 0)
-      return -1;
-    else
-      return (cp_index - _secondary_entry_tag);
-  }
 
   // All the work goes in here:
-  Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS);
+  Rewriter(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS);
 
   void compute_index_maps();
   void make_constant_pool_cache(TRAPS);
-  void scan_method(methodOop m, bool reverse = false);
+  void scan_method(Method* m, bool reverse = false);
   void rewrite_Object_init(methodHandle m, TRAPS);
   void rewrite_member_reference(address bcp, int offset, bool reverse = false);
-  void maybe_rewrite_invokehandle(address opc, int cp_index, bool reverse = false);
+  void maybe_rewrite_invokehandle(address opc, int cp_index, int cache_index, bool reverse = false);
   void rewrite_invokedynamic(address bcp, int offset, bool reverse = false);
   void maybe_rewrite_ldc(address bcp, int offset, bool is_wide, bool reverse = false);
   // Revert bytecodes in case of an exception.
@@ -98,17 +160,13 @@
  public:
   // Driver routine:
   static void rewrite(instanceKlassHandle klass, TRAPS);
-  static void rewrite(instanceKlassHandle klass, constantPoolHandle cpool, objArrayHandle methods, TRAPS);
-
-  enum {
-    _secondary_entry_tag = nth_bit(30)
-  };
+  static void rewrite(instanceKlassHandle klass, constantPoolHandle cpool, Array<Method*>* methods, TRAPS);
 
   // Second pass, not gated by is_rewritten flag
   static void relocate_and_link(instanceKlassHandle klass, TRAPS);
   // JSR292 version to call with it's own methods.
   static void relocate_and_link(instanceKlassHandle klass,
-                                objArrayHandle methods, TRAPS);
+                                Array<Method*>* methods, TRAPS);
 
 };
 
--- a/src/share/vm/interpreter/templateInterpreter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/templateInterpreter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -510,7 +510,7 @@
     assert(step > 0, "just checkin'");
     // setup stuff for dispatching next bytecode
     if (ProfileInterpreter && VerifyDataPointer
-        && methodDataOopDesc::bytecode_has_profile(t->bytecode())) {
+        && MethodData::bytecode_has_profile(t->bytecode())) {
       __ verify_method_data_pointer();
     }
     __ dispatch_prolog(tos_out, step);
@@ -588,7 +588,7 @@
 // Deoptimization support
 
 // If deoptimization happens, this function returns the point of next bytecode to continue execution
-address TemplateInterpreter::deopt_continue_after_entry(methodOop method, address bcp, int callee_parameters, bool is_top_frame) {
+address TemplateInterpreter::deopt_continue_after_entry(Method* method, address bcp, int callee_parameters, bool is_top_frame) {
   return AbstractInterpreter::deopt_continue_after_entry(method, bcp, callee_parameters, is_top_frame);
 }
 
@@ -596,7 +596,7 @@
 // the bytecode.
 // Note: Bytecodes::_athrow (C1 only) and Bytecodes::_return are the special cases
 //       that do not return "Interpreter::deopt_entry(vtos, 0)"
-address TemplateInterpreter::deopt_reexecute_entry(methodOop method, address bcp) {
+address TemplateInterpreter::deopt_reexecute_entry(Method* method, address bcp) {
   assert(method->contains(bcp), "just checkin'");
   Bytecodes::Code code   = Bytecodes::java_code_at(method, bcp);
   if (code == Bytecodes::_return) {
--- a/src/share/vm/interpreter/templateInterpreter.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/templateInterpreter.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -174,14 +174,14 @@
 
   // Deoptimization support
   // Compute the entry address for continuation after
-  static address deopt_continue_after_entry(methodOop method,
+  static address deopt_continue_after_entry(Method* method,
                                             address bcp,
                                             int callee_parameters,
                                             bool is_top_frame);
   // Deoptimization should reexecute this bytecode
   static bool    bytecode_should_reexecute(Bytecodes::Code code);
   // Compute the address for reexecution
-  static address deopt_reexecute_entry(methodOop method, address bcp);
+  static address deopt_reexecute_entry(Method* method, address bcp);
 
 #ifdef TARGET_ARCH_x86
 # include "templateInterpreter_x86.hpp"
--- a/src/share/vm/interpreter/templateTable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/templateTable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -444,7 +444,7 @@
   def(Bytecodes::_invokespecial       , ubcp|disp|clvm|____, vtos, vtos, invokespecial       , f1_byte      );
   def(Bytecodes::_invokestatic        , ubcp|disp|clvm|____, vtos, vtos, invokestatic        , f1_byte      );
   def(Bytecodes::_invokeinterface     , ubcp|disp|clvm|____, vtos, vtos, invokeinterface     , f1_byte      );
-  def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       , f12_oop      );
+  def(Bytecodes::_invokedynamic       , ubcp|disp|clvm|____, vtos, vtos, invokedynamic       , f1_byte      );
   def(Bytecodes::_new                 , ubcp|____|clvm|____, vtos, atos, _new                ,  _           );
   def(Bytecodes::_newarray            , ubcp|____|clvm|____, itos, atos, newarray            ,  _           );
   def(Bytecodes::_anewarray           , ubcp|____|clvm|____, itos, atos, anewarray           ,  _           );
@@ -514,7 +514,7 @@
 
   def(Bytecodes::_return_register_finalizer , ____|disp|clvm|____, vtos, vtos, _return       ,  vtos        );
 
-  def(Bytecodes::_invokehandle        , ubcp|disp|clvm|____, vtos, vtos, invokehandle        , f12_oop      );
+  def(Bytecodes::_invokehandle        , ubcp|disp|clvm|____, vtos, vtos, invokehandle        , f1_byte      );
 
   def(Bytecodes::_shouldnotreachhere   , ____|____|____|____, vtos, vtos, shouldnotreachhere ,  _           );
   // platform specific bytecodes
--- a/src/share/vm/interpreter/templateTable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/interpreter/templateTable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -98,7 +98,7 @@
  public:
   enum Operation { add, sub, mul, div, rem, _and, _or, _xor, shl, shr, ushr };
   enum Condition { equal, not_equal, less, less_equal, greater, greater_equal };
-  enum CacheByte { f1_byte = 1, f2_byte = 2, f12_oop = 0x12 };  // byte_no codes
+  enum CacheByte { f1_byte = 1, f2_byte = 2 };  // byte_no codes
 
  private:
   static bool            _is_initialized;        // true if TemplateTable has been initialized
@@ -272,7 +272,6 @@
   static void _return(TosState state);
 
   static void resolve_cache_and_index(int byte_no,       // one of 1,2,11
-                                      Register result ,  // either noreg or output for f1/f2
                                       Register cache,    // output for CP cache
                                       Register index,    // output for CP index
                                       size_t index_size); // one of 1,2,4
--- a/src/share/vm/memory/allocation.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/allocation.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,10 @@
 #include "precompiled.hpp"
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
+#include "memory/genCollectedHeap.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/resourceArea.hpp"
+#include "memory/universe.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/os.hpp"
 #include "runtime/task.hpp"
@@ -51,6 +54,27 @@
 void* _ValueObj::operator new(size_t size)  { ShouldNotCallThis(); return 0; };
 void  _ValueObj::operator delete(void* p)   { ShouldNotCallThis(); };
 
+void* MetaspaceObj::operator new(size_t size, ClassLoaderData* loader_data,
+                                size_t word_size, bool read_only, TRAPS) {
+  // Klass has it's own operator new
+  return Metaspace::allocate(loader_data, word_size, read_only,
+                             Metaspace::NonClassType, CHECK_NULL);
+}
+
+bool MetaspaceObj::is_shared() const {
+  return MetaspaceShared::is_in_shared_space(this);
+}
+
+bool MetaspaceObj::is_metadata() const {
+  // ClassLoaderDataGraph::contains((address)this); has lock inversion problems
+  return !Universe::heap()->is_in_reserved(this);
+}
+
+void MetaspaceObj::print_address_on(outputStream* st) const {
+  st->print(" {"INTPTR_FORMAT"}", this);
+}
+
+
 void* ResourceObj::operator new(size_t size, allocation_type type, MEMFLAGS flags) {
   address res;
   switch (type) {
--- a/src/share/vm/memory/allocation.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/allocation.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -70,6 +70,9 @@
 // For classes used as name spaces.
 // - AllStatic
 //
+// For classes in Metaspace (class data)
+// - MetaspaceObj
+//
 // The printable subclasses are used for debugging and define virtual
 // member functions for printing. Classes that avoid allocating the
 // vtbl entries in the objects should therefore not be the printable
@@ -211,6 +214,29 @@
   void operator delete(void* p);
 };
 
+
+// Base class for objects stored in Metaspace.
+// Calling delete will result in fatal error.
+//
+// Do not inherit from something with a vptr because this class does
+// not introduce one.  This class is used to allocate both shared read-only
+// and shared read-write classes.
+//
+
+class ClassLoaderData;
+
+class MetaspaceObj {
+ public:
+  bool is_metadata() const;
+  bool is_shared() const;
+  void print_address_on(outputStream* st) const;  // nonvirtual address printing
+
+  void* operator new(size_t size, ClassLoaderData* loader_data,
+                     size_t word_size, bool read_only, Thread* thread);
+                     // can't use TRAPS from this header file.
+  void operator delete(void* p) { ShouldNotCallThis(); }
+};
+
 // Base class for classes that constitute name spaces.
 
 class AllStatic {
@@ -252,6 +278,7 @@
   void chop();                  // Chop this chunk
   void next_chop();             // Chop next chunk
   static size_t aligned_overhead_size(void) { return ARENA_ALIGN(sizeof(Chunk)); }
+  static size_t aligned_overhead_size(size_t byte_size) { return ARENA_ALIGN(byte_size); }
 
   size_t length() const         { return _len;  }
   Chunk* next() const           { return _next;  }
--- a/src/share/vm/memory/barrierSet.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/barrierSet.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -70,7 +70,6 @@
   // kinds requires a barrier.
   virtual bool read_ref_needs_barrier(void* field) = 0;
   virtual bool read_prim_needs_barrier(HeapWord* field, size_t bytes) = 0;
-  virtual bool write_ref_needs_barrier(void* field, oop new_val) = 0;
   virtual bool write_prim_needs_barrier(HeapWord* field, size_t bytes,
                                         juint val1, juint val2) = 0;
 
--- a/src/share/vm/memory/binaryTreeDictionary.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/binaryTreeDictionary.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -164,10 +164,10 @@
 class BinaryTreeDictionary: public FreeBlockDictionary<Chunk> {
   friend class VMStructs;
   bool       _splay;
+  bool       _adaptive_freelists;
   size_t     _total_size;
   size_t     _total_free_blocks;
   TreeList<Chunk>* _root;
-  bool       _adaptive_freelists;
 
   // private accessors
   bool splay() const { return _splay; }
--- a/src/share/vm/memory/blockOffsetTable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/blockOffsetTable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -98,16 +98,6 @@
 }
 
 
-void BlockOffsetSharedArray::serialize(SerializeOopClosure* soc,
-                                       HeapWord* start, HeapWord* end) {
-  assert(_offset_array[0] == 0, "objects can't cross covered areas");
-  assert(start <= end, "bad address range");
-  size_t start_index = index_for(start);
-  size_t end_index = index_for(end-1)+1;
-  soc->do_region(&_offset_array[start_index],
-                 (end_index - start_index) * sizeof(_offset_array[0]));
-}
-
 //////////////////////////////////////////////////////////////////////
 // BlockOffsetArray
 //////////////////////////////////////////////////////////////////////
@@ -801,17 +791,6 @@
   _array->set_offset_array(bottom_index, 0);
 }
 
-
-void BlockOffsetArrayContigSpace::serialize(SerializeOopClosure* soc) {
-  if (soc->reading()) {
-    // Null these values so that the serializer won't object to updating them.
-    _next_offset_threshold = NULL;
-    _next_offset_index = 0;
-  }
-  soc->do_ptr(&_next_offset_threshold);
-  soc->do_size_t(&_next_offset_index);
-}
-
 size_t BlockOffsetArrayContigSpace::last_active_index() const {
   size_t result = _next_offset_index - 1;
   return result >= 0 ? result : 0;
--- a/src/share/vm/memory/blockOffsetTable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/blockOffsetTable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -42,7 +42,6 @@
 //
 
 class ContiguousSpace;
-class SerializeOopClosure;
 
 //////////////////////////////////////////////////////////////////////////
 // The BlockOffsetTable "interface"
@@ -258,9 +257,6 @@
   // returned to the start of a region.  It is a simple
   // primitive.
   HeapWord* inc_by_region_size(HeapWord* p) const { return p + N_words; }
-
-  // Shared space support
-  void serialize(SerializeOopClosure* soc, HeapWord* start, HeapWord* end);
 };
 
 //////////////////////////////////////////////////////////////////////////
@@ -563,8 +559,6 @@
 
   HeapWord* block_start_unsafe(const void* addr) const;
 
-  void serialize(SerializeOopClosure* soc);
-
   // Debugging support
   virtual size_t last_active_index() const;
 };
--- a/src/share/vm/memory/blockOffsetTable.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/blockOffsetTable.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -28,9 +28,6 @@
 #include "memory/blockOffsetTable.hpp"
 #include "memory/space.hpp"
 #include "runtime/safepoint.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
-#endif
 
 //////////////////////////////////////////////////////////////////////////
 // BlockOffsetTable inlines
--- a/src/share/vm/memory/cardTableModRefBS.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/cardTableModRefBS.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -285,12 +285,6 @@
 
   bool has_write_ref_pre_barrier() { return false; }
 
-  inline bool write_ref_needs_barrier(void* field, oop new_val) {
-    // Note that this assumes the perm gen is the highest generation
-    // in the address space
-    return new_val != NULL && !new_val->is_perm();
-  }
-
   // Record a reference update. Note that these versions are precise!
   // The scanning code has to handle the fact that the write barrier may be
   // either precise or imprecise. We make non-virtual inline variants of
--- a/src/share/vm/memory/cardTableRS.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/cardTableRS.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -298,13 +298,12 @@
   _ct_bs->non_clean_card_iterate_possibly_parallel(sp, urasm, cl, this);
 }
 
-void CardTableRS::clear_into_younger(Generation* gen, bool clear_perm) {
+void CardTableRS::clear_into_younger(Generation* gen) {
   GenCollectedHeap* gch = GenCollectedHeap::heap();
   // Generations younger than gen have been evacuated. We can clear
   // card table entries for gen (we know that it has no pointers
   // to younger gens) and for those below. The card tables for
-  // the youngest gen need never be cleared, and those for perm gen
-  // will be cleared based on the parameter clear_perm.
+  // the youngest gen need never be cleared.
   // There's a bit of subtlety in the clear() and invalidate()
   // methods that we exploit here and in invalidate_or_clear()
   // below to avoid missing cards at the fringes. If clear() or
@@ -317,17 +316,11 @@
     MemRegion to_be_cleared_mr = g->prev_used_region();
     clear(to_be_cleared_mr);
   }
-  // Clear perm gen cards if asked to do so.
-  if (clear_perm) {
-    MemRegion to_be_cleared_mr = gch->perm_gen()->prev_used_region();
-    clear(to_be_cleared_mr);
-  }
 }
 
-void CardTableRS::invalidate_or_clear(Generation* gen, bool younger,
-                                      bool perm) {
+void CardTableRS::invalidate_or_clear(Generation* gen, bool younger) {
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  // For each generation gen (and younger and/or perm)
+  // For each generation gen (and younger)
   // invalidate the cards for the currently occupied part
   // of that generation and clear the cards for the
   // unoccupied part of the generation (if any, making use
@@ -345,16 +338,6 @@
     invalidate(used_mr);
     if (!younger) break;
   }
-  // Clear perm gen cards if asked to do so.
-  if (perm) {
-    g = gch->perm_gen();
-    MemRegion used_mr = g->used_region();
-    MemRegion to_be_cleared_mr = g->prev_used_region().minus(used_mr);
-    if (!to_be_cleared_mr.is_empty()) {
-      clear(to_be_cleared_mr);
-    }
-    invalidate(used_mr);
-  }
 }
 
 
@@ -456,7 +439,7 @@
         VerifyCleanCardClosure verify_blk(gen_boundary, begin, end);
         for (HeapWord* cur = start_block; cur < end; cur += s->block_size(cur)) {
           if (s->block_is_obj(cur) && s->obj_is_alive(cur)) {
-            oop(cur)->oop_iterate(&verify_blk, mr);
+            oop(cur)->oop_iterate_no_header(&verify_blk, mr);
           }
         }
       }
@@ -624,25 +607,12 @@
   // generational heaps.
   VerifyCTGenClosure blk(this);
   CollectedHeap* ch = Universe::heap();
-  // We will do the perm-gen portion of the card table, too.
-  Generation* pg = SharedHeap::heap()->perm_gen();
-  HeapWord* pg_boundary = pg->reserved().start();
 
   if (ch->kind() == CollectedHeap::GenCollectedHeap) {
     GenCollectedHeap::heap()->generation_iterate(&blk, false);
     _ct_bs->verify();
-
-    // If the old gen collections also collect perm, then we are only
-    // interested in perm-to-young pointers, not perm-to-old pointers.
-    GenCollectedHeap* gch = GenCollectedHeap::heap();
-    CollectorPolicy* cp = gch->collector_policy();
-    if (cp->is_mark_sweep_policy() || cp->is_concurrent_mark_sweep_policy()) {
-      pg_boundary = gch->get_gen(1)->reserved().start();
     }
   }
-  VerifyCTSpaceClosure perm_space_blk(this, pg_boundary);
-  SharedHeap::heap()->perm_gen()->space_iterate(&perm_space_blk, true);
-}
 
 
 void CardTableRS::verify_aligned_region_empty(MemRegion mr) {
--- a/src/share/vm/memory/cardTableRS.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/cardTableRS.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -141,12 +141,12 @@
   void verify_aligned_region_empty(MemRegion mr);
 
   void clear(MemRegion mr) { _ct_bs->clear(mr); }
-  void clear_into_younger(Generation* gen, bool clear_perm);
+  void clear_into_younger(Generation* gen);
 
   void invalidate(MemRegion mr, bool whole_heap = false) {
     _ct_bs->invalidate(mr, whole_heap);
   }
-  void invalidate_or_clear(Generation* gen, bool younger, bool perm);
+  void invalidate_or_clear(Generation* gen, bool younger);
 
   static uintx ct_max_alignment_constraint() {
     return CardTableModRefBS::ct_max_alignment_constraint();
--- a/src/share/vm/memory/classify.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "memory/classify.hpp"
-
-
-const char* ClassifyObjectClosure::object_type_name[number_object_types] = {
-  "unknown",
-  "instance",
-  "instanceRef",
-  "objArray",
-  "symbol",
-  "klass",
-  "instanceKlass",
-  "method",
-  "constMethod",
-  "methodData",
-  "constantPool",
-  "constantPoolCache",
-  "typeArray",
-  "compiledICHolder"
-};
-
-
-object_type ClassifyObjectClosure::classify_object(oop obj, bool count) {
-  object_type type = unknown_type;
-
-  Klass* k = obj->blueprint();
-
-  if (k->as_klassOop() == SystemDictionary::Object_klass()) {
-    tty->print_cr("Found the class!");
-  }
-
-  if (count) {
-    k->set_alloc_count(k->alloc_count() + 1);
-  }
-
-  if (obj->is_instance()) {
-    if (k->oop_is_instanceRef()) {
-      type = instanceRef_type;
-    } else {
-      type = instance_type;
-    }
-  } else if (obj->is_typeArray()) {
-    type = typeArray_type;
-  } else if (obj->is_objArray()) {
-    type = objArray_type;
-  } else if (obj->is_klass()) {
-    Klass* k = ((klassOop)obj)->klass_part();
-    if (k->oop_is_instance()) {
-      type = instanceKlass_type;
-    } else {
-      type = klass_type;
-    }
-  } else if (obj->is_method()) {
-    type = method_type;
-  } else if (obj->is_constMethod()) {
-    type = constMethod_type;
-  } else if (obj->is_methodData()) {
-    ShouldNotReachHere();
-  } else if (obj->is_constantPool()) {
-    type = constantPool_type;
-  } else if (obj->is_constantPoolCache()) {
-    type = constantPoolCache_type;
-  } else if (obj->is_compiledICHolder()) {
-    type = compiledICHolder_type;
-  } else {
-    ShouldNotReachHere();
-  }
-
-  assert(type != unknown_type, "found object of unknown type.");
-  return type;
-}
-
-
-void ClassifyObjectClosure::reset() {
-  for (int i = 0; i < number_object_types; ++i) {
-    object_count[i] = 0;
-    object_size[i] = 0;
-  }
-  total_object_count = 0;
-  total_object_size = 0;
-}
-
-
-void ClassifyObjectClosure::do_object(oop obj) {
-  int i = classify_object(obj, true);
-  ++object_count[i];
-  ++total_object_count;
-  size_t size = obj->size() * HeapWordSize;
-  object_size[i] += size;
-  total_object_size += size;
-}
-
-
-size_t ClassifyObjectClosure::print() {
-  int num_objects = 0;
-  size_t size_objects = 0;
-  for (int i = 0; i < number_object_types; ++i) {
-    if (object_count[i] != 0) {
-      tty->print_cr("%8d  %-22s  (%8d bytes, %5.2f bytes/object)",
-                    object_count[i], object_type_name[i], object_size[i],
-                    (float)object_size[i]/(float)object_count[i]);
-    }
-    num_objects += object_count[i];
-    size_objects += object_size[i];
-  }
-  assert(num_objects == total_object_count, "Object count mismatch!");
-  assert(size_objects == total_object_size, "Object size mismatch!");
-
-  tty->print_cr(" Total:  %d objects, %d bytes", total_object_count,
-                total_object_size);
-  return total_object_size;
-}
-
-
-void ClassifyInstanceKlassClosure::do_object(oop obj) {
-  int type = classify_object(obj, false);
-  if (type == instanceKlass_type || type == klass_type) {
-    Klass* k = ((klassOop)obj)->klass_part();
-    if (k->alloc_count() > 0) {
-      ResourceMark rm;
-      const char *name;
-      if (k->name() == NULL) {
-
-        if (obj == Universe::klassKlassObj()) {
-          name = "_klassKlassObj";
-        } else if (obj == Universe::arrayKlassKlassObj()) {
-          name = "_arrayKlassKlassObj";
-        } else if (obj == Universe::objArrayKlassKlassObj()) {
-          name = "_objArrayKlassKlassObj";
-        } else if (obj == Universe::typeArrayKlassKlassObj()) {
-          name = "_typeArrayKlassKlassObj";
-        } else if (obj == Universe::instanceKlassKlassObj()) {
-          name = "_instanceKlassKlassObj";
-        } else if (obj == Universe::methodKlassObj()) {
-          name = "_methodKlassObj";
-        } else if (obj == Universe::constMethodKlassObj()) {
-          name = "_constMethodKlassObj";
-        } else if (obj == Universe::constantPoolKlassObj()) {
-          name = "_constantPoolKlassObj";
-        } else if (obj == Universe::constantPoolCacheKlassObj()) {
-          name = "_constantPoolCacheKlassObj";
-        } else if (obj == Universe::compiledICHolderKlassObj()) {
-          name = "_compiledICHolderKlassObj";
-        } else if (obj == Universe::systemObjArrayKlassObj()) {
-          name = "_systemObjArrayKlassObj";
-        } else {
-          name = "[unnamed]";
-        }
-      } else {
-        name = k->external_name();
-      }
-      tty->print_cr("% 8d  instances of %s", k->alloc_count(), name);
-    }
-    total_instances += k->alloc_count();
-  }
-}
-
-
-void ClassifyInstanceKlassClosure::print() {
-  tty->print_cr(" Total instances:  %d.", total_instances);
-}
-
-
-void ClassifyInstanceKlassClosure::reset() {
-  total_instances = 0;
-}
--- a/src/share/vm/memory/classify.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2003, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_MEMORY_CLASSIFY_HPP
-#define SHARE_VM_MEMORY_CLASSIFY_HPP
-
-#include "oops/oop.inline.hpp"
-
-typedef enum oop_type {
-  unknown_type,
-  instance_type,
-  instanceRef_type,
-  objArray_type,
-  symbol_type,
-  klass_type,
-  instanceKlass_type,
-  method_type,
-  constMethod_type,
-  methodData_type,
-  constantPool_type,
-  constantPoolCache_type,
-  typeArray_type,
-  compiledICHolder_type,
-  number_object_types
-} object_type;
-
-
-// Classify objects by type and keep counts.
-// Print the count and space taken for each type.
-
-
-class ClassifyObjectClosure : public ObjectClosure {
-private:
-
-  static const char* object_type_name[number_object_types];
-
-  int total_object_count;
-  size_t total_object_size;
-  int object_count[number_object_types];
-  size_t object_size[number_object_types];
-
-public:
-  ClassifyObjectClosure() { reset(); }
-  void reset();
-  void do_object(oop obj);
-  static object_type classify_object(oop obj, bool count);
-  size_t print();
-};
-
-
-// Count objects using the alloc_count field in the object's klass
-// object.
-
-class ClassifyInstanceKlassClosure : public ClassifyObjectClosure {
-private:
-  int total_instances;
-public:
-  ClassifyInstanceKlassClosure() { reset(); }
-  void reset();
-  void print();
-  void do_object(oop obj);
-};
-
-
-// Clear the alloc_count fields in all classes so that the count can be
-// restarted.
-
-class ClearAllocCountClosure : public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    if (obj->is_klass()) {
-      Klass* k = Klass::cast((klassOop)obj);
-      k->set_alloc_count(0);
-    }
-  }
-};
-
-#endif // SHARE_VM_MEMORY_CLASSIFY_HPP
--- a/src/share/vm/memory/collectorPolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/collectorPolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -58,32 +58,25 @@
 // CollectorPolicy methods.
 
 void CollectorPolicy::initialize_flags() {
-  if (PermSize > MaxPermSize) {
-    MaxPermSize = PermSize;
+  if (MetaspaceSize > MaxMetaspaceSize) {
+    MaxMetaspaceSize = MetaspaceSize;
   }
-  PermSize = MAX2(min_alignment(), align_size_down_(PermSize, min_alignment()));
-  // Don't increase Perm size limit above specified.
-  MaxPermSize = align_size_down(MaxPermSize, max_alignment());
-  if (PermSize > MaxPermSize) {
-    PermSize = MaxPermSize;
+  MetaspaceSize = MAX2(min_alignment(), align_size_down_(MetaspaceSize, min_alignment()));
+  // Don't increase Metaspace size limit above specified.
+  MaxMetaspaceSize = align_size_down(MaxMetaspaceSize, max_alignment());
+  if (MetaspaceSize > MaxMetaspaceSize) {
+    MetaspaceSize = MaxMetaspaceSize;
   }
 
-  MinPermHeapExpansion = MAX2(min_alignment(), align_size_down_(MinPermHeapExpansion, min_alignment()));
-  MaxPermHeapExpansion = MAX2(min_alignment(), align_size_down_(MaxPermHeapExpansion, min_alignment()));
+  MinMetaspaceExpansion = MAX2(min_alignment(), align_size_down_(MinMetaspaceExpansion, min_alignment()));
+  MaxMetaspaceExpansion = MAX2(min_alignment(), align_size_down_(MaxMetaspaceExpansion, min_alignment()));
 
   MinHeapDeltaBytes = align_size_up(MinHeapDeltaBytes, min_alignment());
 
-  SharedReadOnlySize = align_size_up(SharedReadOnlySize, max_alignment());
-  SharedReadWriteSize = align_size_up(SharedReadWriteSize, max_alignment());
-  SharedMiscDataSize = align_size_up(SharedMiscDataSize, max_alignment());
-
-  assert(PermSize    % min_alignment() == 0, "permanent space alignment");
-  assert(MaxPermSize % max_alignment() == 0, "maximum permanent space alignment");
-  assert(SharedReadOnlySize % max_alignment() == 0, "read-only space alignment");
-  assert(SharedReadWriteSize % max_alignment() == 0, "read-write space alignment");
-  assert(SharedMiscDataSize % max_alignment() == 0, "misc-data space alignment");
-  if (PermSize < M) {
-    vm_exit_during_initialization("Too small initial permanent heap");
+  assert(MetaspaceSize    % min_alignment() == 0, "metapace alignment");
+  assert(MaxMetaspaceSize % max_alignment() == 0, "maximum metaspace alignment");
+  if (MetaspaceSize < 256*K) {
+    vm_exit_during_initialization("Too small initial Metaspace size");
   }
 }
 
@@ -134,18 +127,6 @@
   }
 }
 
-void CollectorPolicy::initialize_perm_generation(PermGen::Name pgnm) {
-  _permanent_generation =
-    new PermanentGenerationSpec(pgnm, PermSize, MaxPermSize,
-                                SharedReadOnlySize,
-                                SharedReadWriteSize,
-                                SharedMiscDataSize,
-                                SharedMiscCodeSize);
-  if (_permanent_generation == NULL) {
-    vm_exit_during_initialization("Unable to allocate gen spec");
-  }
-}
-
 bool CollectorPolicy::use_should_clear_all_soft_refs(bool v) {
   bool result = _should_clear_all_soft_refs;
   set_should_clear_all_soft_refs(false);
@@ -753,6 +734,41 @@
   return NULL;
 }
 
+MetaWord* CollectorPolicy::satisfy_failed_metadata_allocation(
+                                                 ClassLoaderData* loader_data,
+                                                 size_t word_size,
+                                                 Metaspace::MetadataType mdtype) {
+  uint loop_count = 0;
+  uint gc_count = 0;
+  uint full_gc_count = 0;
+
+  do {
+    {  // Need lock to get self consistent gc_count's
+      MutexLocker ml(Heap_lock);
+      gc_count      = Universe::heap()->total_collections();
+      full_gc_count = Universe::heap()->total_full_collections();
+    }
+
+    // Generate a VM operation
+    VM_CollectForMetadataAllocation op(loader_data,
+                                       word_size,
+                                       mdtype,
+                                       gc_count,
+                                       full_gc_count,
+                                       GCCause::_metadata_GC_threshold);
+    VMThread::execute(&op);
+    if (op.prologue_succeeded()) {
+      return op.result();
+    }
+    loop_count++;
+    if ((QueuedAllocationWarningCount > 0) &&
+        (loop_count % QueuedAllocationWarningCount == 0)) {
+      warning("satisfy_failed_metadata_allocation() retries %d times \n\t"
+              " size=%d", loop_count, word_size);
+    }
+  } while (true);  // Until a GC is done
+}
+
 // Return true if any of the following is true:
 // . the allocation won't fit into the current young gen heap
 // . gc locker is occupied (jni critical section)
@@ -778,7 +794,6 @@
 }
 
 void MarkSweepPolicy::initialize_generations() {
-  initialize_perm_generation(PermGen::MarkSweepCompact);
   _generations = new GenerationSpecPtr[number_of_generations()];
   if (_generations == NULL)
     vm_exit_during_initialization("Unable to allocate gen spec");
--- a/src/share/vm/memory/collectorPolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/collectorPolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -25,9 +25,10 @@
 #ifndef SHARE_VM_MEMORY_COLLECTORPOLICY_HPP
 #define SHARE_VM_MEMORY_COLLECTORPOLICY_HPP
 
+#include "memory/allocation.hpp"
 #include "memory/barrierSet.hpp"
+#include "memory/generationSpec.hpp"
 #include "memory/genRemSet.hpp"
-#include "memory/permGen.hpp"
 
 // This class (or more correctly, subtypes of this class)
 // are used to define global garbage collector attributes.
@@ -53,21 +54,16 @@
 #endif // SERIALGC
 
 class GCPolicyCounters;
-class PermanentGenerationSpec;
 class MarkSweepPolicy;
 
 class CollectorPolicy : public CHeapObj<mtGC> {
  protected:
-  PermanentGenerationSpec *_permanent_generation;
   GCPolicyCounters* _gc_policy_counters;
 
   // Requires that the concrete subclass sets the alignment constraints
   // before calling.
   virtual void initialize_flags();
   virtual void initialize_size_info();
-  // Initialize "_permanent_generation" to a spec for the given kind of
-  // Perm Gen.
-  void initialize_perm_generation(PermGen::Name pgnm);
 
   size_t _initial_heap_byte_size;
   size_t _max_heap_byte_size;
@@ -155,11 +151,6 @@
 #endif // SERIALGC
 
 
-  virtual PermanentGenerationSpec *permanent_generation() {
-    assert(_permanent_generation != NULL, "Sanity check");
-    return _permanent_generation;
-  }
-
   virtual BarrierSet::Name barrier_set_name() = 0;
   virtual GenRemSet::Name  rem_set_name() = 0;
 
@@ -181,6 +172,12 @@
   // This method controls how a collector handles one or more
   // of its generations being fully allocated.
   virtual HeapWord *satisfy_failed_allocation(size_t size, bool is_tlab) = 0;
+  // This method controls how a collector handles a metadata allocation
+  // failure.
+  virtual MetaWord* satisfy_failed_metadata_allocation(ClassLoaderData* loader_data,
+                                                       size_t size,
+                                                       Metaspace::MetadataType mdtype);
+
   // Performace Counter support
   GCPolicyCounters* counters()     { return _gc_policy_counters; }
 
--- a/src/share/vm/memory/compactPermGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2000, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
-#define SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
-
-#include "memory/generation.hpp"
-#include "memory/permGen.hpp"
-
-class ContigPermSpace;
-class CardTableModRefBS;
-class CompactingPermGenGen;
-class PermanentGenerationSpec;
-
-// A PermGen implemented with a contiguous space.
-class CompactingPermGen:  public PermGen {
-  friend class VMStructs;
-protected:
-  // The "generation" view.
-  OneContigSpaceCardGeneration* _gen;
-
-public:
-  CompactingPermGen(ReservedSpace rs, ReservedSpace shared_rs,
-                    size_t initial_byte_size, GenRemSet* remset,
-                    PermanentGenerationSpec* perm_spec);
-
-  HeapWord* mem_allocate(size_t size);
-
-  void compute_new_size();
-
-  Generation* as_gen() const { return _gen; }
-
-};
-
-#endif // SHARE_VM_MEMORY_COMPACTPERMGEN_HPP
--- a/src/share/vm/memory/compactingPermGenGen.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,481 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/filemap.hpp"
-#include "memory/genOopClosures.inline.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/generationSpec.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/java.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp"
-#endif
-
-
-// An ObjectClosure helper: Recursively adjust all pointers in an object
-// and all objects by referenced it. Clear marks on objects in order to
-// prevent visiting any object twice. This helper is used when the
-// RedefineClasses() API has been called.
-
-class AdjustSharedObjectClosure : public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    if (obj->is_shared_readwrite()) {
-      if (obj->mark()->is_marked()) {
-        obj->init_mark();         // Don't revisit this object.
-        obj->adjust_pointers();   // Adjust this object's references.
-      }
-    }
-  }
-};
-
-
-// An OopClosure helper: Recursively adjust all pointers in an object
-// and all objects by referenced it. Clear marks on objects in order
-// to prevent visiting any object twice.
-
-class RecursiveAdjustSharedObjectClosure : public OopClosure {
- protected:
-  template <class T> inline void do_oop_work(T* p) {
-    oop obj = oopDesc::load_decode_heap_oop_not_null(p);
-    if (obj->is_shared_readwrite()) {
-      if (obj->mark()->is_marked()) {
-        obj->init_mark();         // Don't revisit this object.
-        obj->oop_iterate(this);   // Recurse - adjust objects referenced.
-        obj->adjust_pointers();   // Adjust this object's references.
-
-        // Special case: if a class has a read-only constant pool,
-        // then the read-write objects referenced by the pool must
-        // have their marks reset.
-
-        if (obj->klass() == Universe::instanceKlassKlassObj()) {
-          instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-          constantPoolOop cp = ik->constants();
-          if (cp->is_shared_readonly()) {
-            cp->oop_iterate(this);
-          }
-        }
-      }
-    }
-  }
- public:
-  virtual void do_oop(oop* p)       { RecursiveAdjustSharedObjectClosure::do_oop_work(p); }
-  virtual void do_oop(narrowOop* p) { RecursiveAdjustSharedObjectClosure::do_oop_work(p); }
-};
-
-
-// We need to go through all placeholders in the system dictionary and
-// try to resolve them into shared classes. Other threads might be in
-// the process of loading a shared class and have strong roots on
-// their stack to the class without having added the class to the
-// dictionary yet. This means the class will be marked during phase 1
-// but will not be unmarked during the application of the
-// RecursiveAdjustSharedObjectClosure to the SystemDictionary.
-class TraversePlaceholdersClosure {
- public:
-  static void placeholders_do(Symbol* sym, oop loader) {
-    if (CompactingPermGenGen::is_shared(sym)) {
-      oop k = SystemDictionary::find_shared_class(sym);
-      if (k != NULL) {
-        RecursiveAdjustSharedObjectClosure clo;
-        clo.do_oop(&k);
-      }
-    }
-  }
-};
-
-void CompactingPermGenGen::initialize_performance_counters() {
-
-  const char* gen_name = "perm";
-
-  // Generation Counters - generation 2, 1 subspace
-  _gen_counters = new GenerationCounters(gen_name, 2, 1, &_virtual_space);
-
-  _space_counters = new CSpaceCounters(gen_name, 0,
-                                       _virtual_space.reserved_size(),
-                                      _the_space, _gen_counters);
-}
-
-void CompactingPermGenGen::update_counters() {
-  if (UsePerfData) {
-    _space_counters->update_all();
-    _gen_counters->update_all();
-  }
-}
-
-
-CompactingPermGenGen::CompactingPermGenGen(ReservedSpace rs,
-                                           ReservedSpace shared_rs,
-                                           size_t initial_byte_size,
-                                           int level, GenRemSet* remset,
-                                           ContiguousSpace* space,
-                                           PermanentGenerationSpec* spec_) :
-  OneContigSpaceCardGeneration(rs, initial_byte_size, MinPermHeapExpansion,
-                               level, remset, space) {
-
-  set_spec(spec_);
-  if (!UseSharedSpaces && !DumpSharedSpaces) {
-    spec()->disable_sharing();
-  }
-
-  // Break virtual space into address ranges for all spaces.
-
-  if (spec()->enable_shared_spaces()) {
-    shared_end = (HeapWord*)(shared_rs.base() + shared_rs.size());
-      misccode_end = shared_end;
-      misccode_bottom = misccode_end - heap_word_size(spec()->misc_code_size());
-      miscdata_end = misccode_bottom;
-      miscdata_bottom = miscdata_end - heap_word_size(spec()->misc_data_size());
-      readwrite_end = miscdata_bottom;
-      readwrite_bottom =
-        readwrite_end - heap_word_size(spec()->read_write_size());
-      readonly_end = readwrite_bottom;
-      readonly_bottom =
-        readonly_end - heap_word_size(spec()->read_only_size());
-    shared_bottom = readonly_bottom;
-    unshared_end = shared_bottom;
-    assert((char*)shared_bottom == shared_rs.base(), "shared space mismatch");
-  } else {
-    shared_end = (HeapWord*)(rs.base() + rs.size());
-      misccode_end = shared_end;
-      misccode_bottom = shared_end;
-      miscdata_end = shared_end;
-      miscdata_bottom = shared_end;
-      readwrite_end = shared_end;
-      readwrite_bottom = shared_end;
-      readonly_end = shared_end;
-      readonly_bottom = shared_end;
-    shared_bottom = shared_end;
-    unshared_end = shared_bottom;
-  }
-  unshared_bottom = (HeapWord*) rs.base();
-
-  // Verify shared and unshared spaces adjacent.
-  assert((char*)shared_bottom == rs.base()+rs.size(), "shared space mismatch");
-  assert(unshared_end > unshared_bottom, "shared space mismatch");
-
-  // Split reserved memory into pieces.
-
-  ReservedSpace ro_rs   = shared_rs.first_part(spec()->read_only_size(),
-                                              UseSharedSpaces);
-  ReservedSpace tmp_rs1 = shared_rs.last_part(spec()->read_only_size());
-  ReservedSpace rw_rs   = tmp_rs1.first_part(spec()->read_write_size(),
-                                             UseSharedSpaces);
-  ReservedSpace tmp_rs2 = tmp_rs1.last_part(spec()->read_write_size());
-  ReservedSpace md_rs   = tmp_rs2.first_part(spec()->misc_data_size(),
-                                             UseSharedSpaces);
-  ReservedSpace mc_rs   = tmp_rs2.last_part(spec()->misc_data_size());
-
-  _shared_space_size = spec()->read_only_size()
-                     + spec()->read_write_size()
-                     + spec()->misc_data_size()
-                     + spec()->misc_code_size();
-
-  // Allocate the unshared (default) space.
-  _the_space = new ContigPermSpace(_bts,
-               MemRegion(unshared_bottom, heap_word_size(initial_byte_size)));
-  if (_the_space == NULL)
-    vm_exit_during_initialization("Could not allocate an unshared"
-                                  " CompactingPermGen Space");
-
-  // Allocate shared spaces
-  if (spec()->enable_shared_spaces()) {
-
-    // If mapping a shared file, the space is not committed, don't
-    // mangle.
-    NOT_PRODUCT(bool old_ZapUnusedHeapArea = ZapUnusedHeapArea;)
-    NOT_PRODUCT(if (UseSharedSpaces) ZapUnusedHeapArea = false;)
-
-    // Commit the memory behind the shared spaces if dumping (not
-    // mapping).
-    if (DumpSharedSpaces) {
-      _ro_vs.initialize(ro_rs, spec()->read_only_size());
-      _rw_vs.initialize(rw_rs, spec()->read_write_size());
-      _md_vs.initialize(md_rs, spec()->misc_data_size());
-      _mc_vs.initialize(mc_rs, spec()->misc_code_size());
-    }
-
-    // Allocate the shared spaces.
-    _ro_bts = new BlockOffsetSharedArray(
-                  MemRegion(readonly_bottom,
-                            heap_word_size(spec()->read_only_size())),
-                  heap_word_size(spec()->read_only_size()));
-    _ro_space = new OffsetTableContigSpace(_ro_bts,
-                  MemRegion(readonly_bottom, readonly_end));
-    _rw_bts = new BlockOffsetSharedArray(
-                  MemRegion(readwrite_bottom,
-                            heap_word_size(spec()->read_write_size())),
-                  heap_word_size(spec()->read_write_size()));
-    _rw_space = new OffsetTableContigSpace(_rw_bts,
-                  MemRegion(readwrite_bottom, readwrite_end));
-
-    // Restore mangling flag.
-    NOT_PRODUCT(ZapUnusedHeapArea = old_ZapUnusedHeapArea;)
-
-    if (_ro_space == NULL || _rw_space == NULL)
-      vm_exit_during_initialization("Could not allocate a shared space");
-
-    if (UseSharedSpaces) {
-
-      // Map in the regions in the shared file.
-      FileMapInfo* mapinfo = FileMapInfo::current_info();
-      size_t image_alignment = mapinfo->alignment();
-      CollectedHeap* ch = Universe::heap();
-      if ((!mapinfo->map_space(ro, ro_rs, _ro_space)) ||
-          (!mapinfo->map_space(rw, rw_rs, _rw_space)) ||
-          (!mapinfo->map_space(md, md_rs, NULL))      ||
-          (!mapinfo->map_space(mc, mc_rs, NULL))      ||
-          // check the alignment constraints
-          (ch == NULL || ch->kind() != CollectedHeap::GenCollectedHeap ||
-           image_alignment !=
-           ((GenCollectedHeap*)ch)->gen_policy()->max_alignment())) {
-        // Base addresses didn't match; skip sharing, but continue
-        shared_rs.release();
-        spec()->disable_sharing();
-        // If -Xshare:on is specified, print out the error message and exit VM,
-        // otherwise, set UseSharedSpaces to false and continue.
-        if (RequireSharedSpaces) {
-          vm_exit_during_initialization("Unable to use shared archive.", NULL);
-        } else {
-          FLAG_SET_DEFAULT(UseSharedSpaces, false);
-        }
-
-        // Note: freeing the block offset array objects does not
-        // currently free up the underlying storage.
-        delete _ro_bts;
-        _ro_bts = NULL;
-        delete _ro_space;
-        _ro_space = NULL;
-        delete _rw_bts;
-        _rw_bts = NULL;
-        delete _rw_space;
-        _rw_space = NULL;
-        shared_end = (HeapWord*)(rs.base() + rs.size());
-      }
-    }
-
-    if (spec()->enable_shared_spaces()) {
-      // Cover both shared spaces entirely with cards.
-      _rs->resize_covered_region(MemRegion(readonly_bottom, readwrite_end));
-    }
-
-    // Reserved region includes shared spaces for oop.is_in_reserved().
-    _reserved.set_end(shared_end);
-
-  } else {
-    _ro_space = NULL;
-    _rw_space = NULL;
-  }
-}
-
-
-// Do a complete scan of the shared read write space to catch all
-// objects which contain references to any younger generation.  Forward
-// the pointers.  Avoid space_iterate, as actually visiting all the
-// objects in the space will page in more objects than we need.
-// Instead, use the system dictionary as strong roots into the read
-// write space.
-//
-// If a RedefineClasses() call has been made, then we have to iterate
-// over the entire shared read-write space in order to find all the
-// objects that need to be forwarded. For example, it is possible for
-// an nmethod to be found and marked in GC phase-1 only for the nmethod
-// to be freed by the time we reach GC phase-3. The underlying method
-// is still marked, but we can't (easily) find it in GC phase-3 so we
-// blow up in GC phase-4. With RedefineClasses() we want replaced code
-// (EMCP or obsolete) to go away (i.e., be collectible) once it is no
-// longer being executed by any thread so we keep minimal attachments
-// to the replaced code. However, we can't guarantee when those EMCP
-// or obsolete methods will be collected so they may still be out there
-// even after we've severed our minimal attachments.
-
-void CompactingPermGenGen::pre_adjust_pointers() {
-  if (spec()->enable_shared_spaces()) {
-    if (JvmtiExport::has_redefined_a_class()) {
-      // RedefineClasses() requires a brute force approach
-      AdjustSharedObjectClosure blk;
-      rw_space()->object_iterate(&blk);
-    } else {
-      RecursiveAdjustSharedObjectClosure blk;
-      Universe::oops_do(&blk);
-      StringTable::oops_do(&blk);
-      SystemDictionary::always_strong_classes_do(&blk);
-      SystemDictionary::placeholders_do(TraversePlaceholdersClosure::placeholders_do);
-    }
-  }
-}
-
-
-#ifdef ASSERT
-class VerifyMarksClearedClosure : public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    assert(SharedSkipVerify || !obj->mark()->is_marked(),
-           "Shared oop still marked?");
-  }
-};
-#endif
-
-
-void CompactingPermGenGen::post_compact() {
-#ifdef ASSERT
-  if (!SharedSkipVerify && spec()->enable_shared_spaces()) {
-    VerifyMarksClearedClosure blk;
-    rw_space()->object_iterate(&blk);
-  }
-#endif
-}
-
-
-// Do not use in time-critical operations due to the possibility of paging
-// in otherwise untouched or previously unread portions of the perm gen,
-// for instance, the shared spaces. NOTE: Because CompactingPermGenGen
-// derives from OneContigSpaceCardGeneration which is supposed to have a
-// single space, and does not override its object_iterate() method,
-// object iteration via that interface does not look at the objects in
-// the shared spaces when using CDS. This should be fixed; see CR 6897798.
-void CompactingPermGenGen::space_iterate(SpaceClosure* blk, bool usedOnly) {
-  OneContigSpaceCardGeneration::space_iterate(blk, usedOnly);
-  if (spec()->enable_shared_spaces()) {
-    // Making the rw_space walkable will page in the entire space, and
-    // is to be avoided in the case of time-critical operations.
-    // However, this is required for Verify and heap dump operations.
-    blk->do_space(ro_space());
-    blk->do_space(rw_space());
-  }
-}
-
-
-void CompactingPermGenGen::print_on(outputStream* st) const {
-  OneContigSpaceCardGeneration::print_on(st);
-  if (spec()->enable_shared_spaces()) {
-    st->print("    ro");
-    ro_space()->print_on(st);
-    st->print("    rw");
-    rw_space()->print_on(st);
-  } else {
-    st->print_cr("No shared spaces configured.");
-  }
-}
-
-
-// References from the perm gen to the younger generation objects may
-// occur in static fields in Java classes or in constant pool references
-// to String objects.
-
-void CompactingPermGenGen::younger_refs_iterate(OopsInGenClosure* blk) {
-  OneContigSpaceCardGeneration::younger_refs_iterate(blk);
-  if (spec()->enable_shared_spaces()) {
-    blk->set_generation(this);
-    // ro_space has no younger gen refs.
-    _rs->younger_refs_in_space_iterate(rw_space(), blk);
-    blk->reset_generation();
-  }
-}
-
-
-// Shared spaces are addressed in pre_adjust_pointers.
-void CompactingPermGenGen::adjust_pointers() {
-  the_space()->adjust_pointers();
-}
-
-
-void CompactingPermGenGen::compact() {
-  the_space()->compact();
-}
-
-
-size_t CompactingPermGenGen::contiguous_available() const {
-  // Don't include shared spaces.
-  return OneContigSpaceCardGeneration::contiguous_available()
-         - _shared_space_size;
-}
-
-size_t CompactingPermGenGen::max_capacity() const {
-  // Don't include shared spaces.
-  assert(UseSharedSpaces || (_shared_space_size == 0),
-    "If not used, the size of shared spaces should be 0");
-  return OneContigSpaceCardGeneration::max_capacity()
-          - _shared_space_size;
-}
-
-
-// No young generation references, clear this generation's main space's
-// card table entries.  Do NOT clear the card table entries for the
-// read-only space (always clear) or the read-write space (valuable
-// information).
-
-void CompactingPermGenGen::clear_remembered_set() {
-  _rs->clear(MemRegion(the_space()->bottom(), the_space()->end()));
-}
-
-
-// Objects in this generation's main space may have moved, invalidate
-// that space's cards.  Do NOT invalidate the card table entries for the
-// read-only or read-write spaces, as those objects never move.
-
-void CompactingPermGenGen::invalidate_remembered_set() {
-  _rs->invalidate(used_region());
-}
-
-
-void CompactingPermGenGen::verify() {
-  the_space()->verify();
-  if (!SharedSkipVerify && spec()->enable_shared_spaces()) {
-    ro_space()->verify();
-    rw_space()->verify();
-  }
-}
-
-
-HeapWord* CompactingPermGenGen::unshared_bottom;
-HeapWord* CompactingPermGenGen::unshared_end;
-HeapWord* CompactingPermGenGen::shared_bottom;
-HeapWord* CompactingPermGenGen::shared_end;
-HeapWord* CompactingPermGenGen::readonly_bottom;
-HeapWord* CompactingPermGenGen::readonly_end;
-HeapWord* CompactingPermGenGen::readwrite_bottom;
-HeapWord* CompactingPermGenGen::readwrite_end;
-HeapWord* CompactingPermGenGen::miscdata_bottom;
-HeapWord* CompactingPermGenGen::miscdata_end;
-HeapWord* CompactingPermGenGen::misccode_bottom;
-HeapWord* CompactingPermGenGen::misccode_end;
-
-// JVM/TI RedefineClasses() support:
-bool CompactingPermGenGen::remap_shared_readonly_as_readwrite() {
-  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
-
-  if (UseSharedSpaces) {
-    // remap the shared readonly space to shared readwrite, private
-    FileMapInfo* mapinfo = FileMapInfo::current_info();
-    if (!mapinfo->remap_shared_readonly_as_readwrite()) {
-      return false;
-    }
-  }
-  return true;
-}
--- a/src/share/vm/memory/compactingPermGenGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
-#define SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
-
-#include "gc_implementation/shared/generationCounters.hpp"
-#include "memory/space.hpp"
-
-// All heaps contains a "permanent generation," containing permanent
-// (reflective) objects.  This is like a regular generation in some ways,
-// but unlike one in others, and so is split apart.
-
-class PermanentGenerationSpec;
-
-// This is the "generation" view of a CompactingPermGen.
-// NOTE: the shared spaces used for CDS are here handled in
-// a somewhat awkward and potentially buggy fashion, see CR 6801625.
-// This infelicity should be fixed, see CR 6897789.
-class CompactingPermGenGen: public OneContigSpaceCardGeneration {
-  friend class VMStructs;
-  // Abstractly, this is a subtype that gets access to protected fields.
-  friend class CompactingPermGen;
-
-private:
-  // Shared spaces
-  PermanentGenerationSpec* _spec;
-  size_t _shared_space_size;
-  VirtualSpace _ro_vs;
-  VirtualSpace _rw_vs;
-  VirtualSpace _md_vs;
-  VirtualSpace _mc_vs;
-  BlockOffsetSharedArray* _ro_bts;
-  BlockOffsetSharedArray* _rw_bts;
-  OffsetTableContigSpace* _ro_space;
-  OffsetTableContigSpace* _rw_space;
-
-  // With shared spaces there is a dichotomy in the use of the
-  // _virtual_space of the generation.  There is a portion of the
-  // _virtual_space that is used for the unshared part of the
-  // permanent generation and a portion that is reserved for the shared part.
-  // The _reserved field in the generation represents both the
-  // unshared and shared parts of the generation.  The _reserved
-  // variable is initialized for only the unshared part but is
-  // later extended to include the shared part during initialization
-  // if shared spaces are being used.
-  // The reserved size for the _virtual_space for CompactingPermGenGen
-  // is the size of the space for the permanent generation including the
-  // the shared spaces.  This can be seen by the use of MaxPermSize
-  // in the allocation of PermanentGenerationSpec.  The space for the
-  // shared spaces is committed separately (???).
-  // In general at initialization only a part of the
-  // space for the unshared part of the permanent generation is
-  // committed and more is committed as the permanent generation is
-  // grown.  In growing the permanent generation the capacity() and
-  // max_capacity() of the generation are used.  For the permanent
-  // generation (implemented with a CompactingPermGenGen) the capacity()
-  // is taken from the capacity of the space (_the_space variable used for the
-  // unshared part of the generation) and the max_capacity() is based
-  // on the size of the _reserved variable (which includes the size of the
-  // shared spaces) minus the size of the shared spaces.
-
-  // These values are redundant, but are called out separately to avoid
-  // going through heap/space/gen pointers for performance.
-  static HeapWord* unshared_bottom;
-  static HeapWord* unshared_end;
-  static HeapWord* shared_bottom;
-  static HeapWord* readonly_bottom;
-  static HeapWord* readonly_end;
-  static HeapWord* readwrite_bottom;
-  static HeapWord* readwrite_end;
-  static HeapWord* miscdata_bottom;
-  static HeapWord* miscdata_end;
-  static HeapWord* misccode_bottom;
-  static HeapWord* misccode_end;
-  static HeapWord* shared_end;
-
-  // Performance Counters
-  GenerationCounters*  _gen_counters;
-  CSpaceCounters*      _space_counters;
-
-  void initialize_performance_counters();
-
-public:
-
-  enum {
-    vtbl_list_size = 17, // number of entries in the shared space vtable list.
-    num_virtuals = 200   // number of virtual methods in Klass (or
-                         // subclass) objects, or greater.
-  };
-
-  enum {
-    ro = 0,  // read-only shared space in the heap
-    rw = 1,  // read-write shared space in the heap
-    md = 2,  // miscellaneous data for initializing tables, etc.
-    mc = 3,  // miscellaneous code - vtable replacement.
-    n_regions = 4
-  };
-
-  CompactingPermGenGen(ReservedSpace rs, ReservedSpace shared_rs,
-                       size_t initial_byte_size, int level, GenRemSet* remset,
-                       ContiguousSpace* space,
-                       PermanentGenerationSpec* perm_spec);
-
-  const char* name() const {
-    return "compacting perm gen";
-  }
-
-  const char* short_name() const {
-    return "Perm";
-  }
-
-  // Return the maximum capacity for the object space.  This
-  // explicitly does not include the shared spaces.
-  size_t max_capacity() const;
-
-  void update_counters();
-
-  void compute_new_size() {
-    assert(false, "Should not call this -- handled at PermGen level.");
-  }
-
-  bool must_be_youngest() const { return false; }
-  bool must_be_oldest() const { return false; }
-
-  OffsetTableContigSpace* ro_space() const { return _ro_space; }
-  OffsetTableContigSpace* rw_space() const { return _rw_space; }
-  VirtualSpace*           md_space()       { return &_md_vs; }
-  VirtualSpace*           mc_space()       { return &_mc_vs; }
-  ContiguousSpace* unshared_space() const { return _the_space; }
-
-  static bool inline is_shared(const void* p) {
-    return p >= shared_bottom && p < shared_end;
-  }
-  // RedefineClasses note: this tester is used to check residence of
-  // the specified oop in the shared readonly space and not whether
-  // the oop is readonly.
-  static bool inline is_shared_readonly(const void* p) {
-    return p >= readonly_bottom && p < readonly_end;
-  }
-  // RedefineClasses note: this tester is used to check residence of
-  // the specified oop in the shared readwrite space and not whether
-  // the oop is readwrite.
-  static bool inline is_shared_readwrite(const void* p) {
-    return p >= readwrite_bottom && p < readwrite_end;
-  }
-
-  // Checks if the pointer is either in unshared space or in shared space
-  inline bool is_in(const void* p) const {
-    return OneContigSpaceCardGeneration::is_in(p) || is_shared(p);
-  }
-
-  inline PermanentGenerationSpec* spec() const { return _spec; }
-  inline void set_spec(PermanentGenerationSpec* spec) { _spec = spec; }
-
-  void pre_adjust_pointers();
-  void adjust_pointers();
-  void space_iterate(SpaceClosure* blk, bool usedOnly = false);
-  void print_on(outputStream* st) const;
-  void younger_refs_iterate(OopsInGenClosure* blk);
-  void compact();
-  void post_compact();
-  size_t contiguous_available() const;
-
-  void clear_remembered_set();
-  void invalidate_remembered_set();
-
-  inline bool block_is_obj(const HeapWord* addr) const {
-    if      (addr < the_space()->top()) return true;
-    else if (addr < the_space()->end()) return false;
-    else if (addr < ro_space()->top())  return true;
-    else if (addr < ro_space()->end())  return false;
-    else if (addr < rw_space()->top())  return true;
-    else                                return false;
-  }
-
-
-  inline size_t block_size(const HeapWord* addr) const {
-    if (addr < the_space()->top()) {
-      return oop(addr)->size();
-    }
-    else if (addr < the_space()->end()) {
-      assert(addr == the_space()->top(), "non-block head arg to block_size");
-      return the_space()->end() - the_space()->top();
-    }
-
-    else if (addr < ro_space()->top()) {
-      return oop(addr)->size();
-    }
-    else if (addr < ro_space()->end()) {
-      assert(addr == ro_space()->top(), "non-block head arg to block_size");
-      return ro_space()->end() - ro_space()->top();
-    }
-
-    else if (addr < rw_space()->top()) {
-      return oop(addr)->size();
-    }
-    else {
-      assert(addr == rw_space()->top(), "non-block head arg to block_size");
-      return rw_space()->end() - rw_space()->top();
-    }
-  }
-
-  static void generate_vtable_methods(void** vtbl_list,
-                                      void** vtable,
-                                      char** md_top, char* md_end,
-                                      char** mc_top, char* mc_end);
-  static void* find_matching_vtbl_ptr(void** vtbl_list,
-                                      void* new_vtable_start,
-                                      void* obj);
-
-  void verify();
-
-  // Serialization
-  static void initialize_oops() KERNEL_RETURN;
-  static void serialize_oops(SerializeOopClosure* soc);
-  void serialize_bts(SerializeOopClosure* soc);
-
-  // Initiate dumping of shared file.
-  static jint dump_shared(GrowableArray<oop>* class_promote_order, TRAPS);
-
-  // JVM/TI RedefineClasses() support:
-  // Remap the shared readonly space to shared readwrite, private if
-  // sharing is enabled. Simply returns true if sharing is not enabled
-  // or if the remapping has already been done by a prior call.
-  static bool remap_shared_readonly_as_readwrite();
-};
-
-#endif // SHARE_VM_MEMORY_COMPACTINGPERMGENGEN_HPP
--- a/src/share/vm/memory/defNewGeneration.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/defNewGeneration.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,6 +30,7 @@
 #include "memory/gcLocker.inline.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/genOopClosures.inline.hpp"
+#include "memory/genRemSet.hpp"
 #include "memory/generationSpec.hpp"
 #include "memory/iterator.hpp"
 #include "memory/referencePolicy.hpp"
@@ -118,7 +119,7 @@
 }
 
 ScanClosure::ScanClosure(DefNewGeneration* g, bool gc_barrier) :
-  OopsInGenClosure(g), _g(g), _gc_barrier(gc_barrier)
+    OopsInKlassOrGenClosure(g), _g(g), _gc_barrier(gc_barrier)
 {
   assert(_g->level() == 0, "Optimized for youngest generation");
   _boundary = _g->reserved().end();
@@ -128,7 +129,7 @@
 void ScanClosure::do_oop(narrowOop* p) { ScanClosure::do_oop_work(p); }
 
 FastScanClosure::FastScanClosure(DefNewGeneration* g, bool gc_barrier) :
-  OopsInGenClosure(g), _g(g), _gc_barrier(gc_barrier)
+    OopsInKlassOrGenClosure(g), _g(g), _gc_barrier(gc_barrier)
 {
   assert(_g->level() == 0, "Optimized for youngest generation");
   _boundary = _g->reserved().end();
@@ -137,8 +138,39 @@
 void FastScanClosure::do_oop(oop* p)       { FastScanClosure::do_oop_work(p); }
 void FastScanClosure::do_oop(narrowOop* p) { FastScanClosure::do_oop_work(p); }
 
+void KlassScanClosure::do_klass(Klass* klass) {
+#ifndef PRODUCT
+  if (TraceScavenge) {
+    ResourceMark rm;
+    gclog_or_tty->print_cr("KlassScanClosure::do_klass %p, %s, dirty: %s",
+                           klass,
+                           klass->external_name(),
+                           klass->has_modified_oops() ? "true" : "false");
+  }
+#endif
+
+  // If the klass has not been dirtied we know that there's
+  // no references into  the young gen and we can skip it.
+  if (klass->has_modified_oops()) {
+    if (_accumulate_modified_oops) {
+      klass->accumulate_modified_oops();
+    }
+
+    // Clear this state since we're going to scavenge all the metadata.
+    klass->clear_modified_oops();
+
+    // Tell the closure which Klass is being scanned so that it can be dirtied
+    // if oops are left pointing into the young gen.
+    _scavenge_closure->set_scanned_klass(klass);
+
+    klass->oops_do(_scavenge_closure);
+
+    _scavenge_closure->set_scanned_klass(NULL);
+  }
+}
+
 ScanWeakRefClosure::ScanWeakRefClosure(DefNewGeneration* g) :
-  OopClosure(g->ref_processor()), _g(g)
+  _g(g)
 {
   assert(_g->level() == 0, "Optimized for youngest generation");
   _boundary = _g->reserved().end();
@@ -150,6 +182,12 @@
 void FilteringClosure::do_oop(oop* p)       { FilteringClosure::do_oop_work(p); }
 void FilteringClosure::do_oop(narrowOop* p) { FilteringClosure::do_oop_work(p); }
 
+KlassScanClosure::KlassScanClosure(OopsInKlassOrGenClosure* scavenge_closure,
+                                   KlassRemSet* klass_rem_set)
+    : _scavenge_closure(scavenge_closure),
+      _accumulate_modified_oops(klass_rem_set->accumulate_modified_oops()) {}
+
+
 DefNewGeneration::DefNewGeneration(ReservedSpace rs,
                                    size_t initial_size,
                                    int level,
@@ -572,6 +610,9 @@
   FastScanClosure fsc_with_no_gc_barrier(this, false);
   FastScanClosure fsc_with_gc_barrier(this, true);
 
+  KlassScanClosure klass_scan_closure(&fsc_with_no_gc_barrier,
+                                      gch->rem_set()->klass_rem_set());
+
   set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier);
   FastEvacuateFollowersClosure evacuate_followers(gch, _level, this,
                                                   &fsc_with_no_gc_barrier,
@@ -580,15 +621,18 @@
   assert(gch->no_allocs_since_save_marks(0),
          "save marks have not been newly set.");
 
+  int so = SharedHeap::SO_AllClasses | SharedHeap::SO_Strings | SharedHeap::SO_CodeCache;
+
   gch->gen_process_strong_roots(_level,
                                 true,  // Process younger gens, if any,
                                        // as strong roots.
                                 true,  // activate StrongRootsScope
-                                false, // not collecting perm generation.
-                                SharedHeap::SO_AllClasses,
+                                true,  // is scavenging
+                                SharedHeap::ScanningOption(so),
                                 &fsc_with_no_gc_barrier,
                                 true,   // walk *all* scavengable nmethods
-                                &fsc_with_gc_barrier);
+                                &fsc_with_gc_barrier,
+                                &klass_scan_closure);
 
   // "evacuate followers".
   evacuate_followers.do_void();
--- a/src/share/vm/memory/defNewGeneration.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/defNewGeneration.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -93,8 +93,8 @@
   Stack<markOop, mtGC> _preserved_marks_of_objs;
 
   // Promotion failure handling
-  OopClosure *_promo_failure_scan_stack_closure;
-  void set_promo_failure_scan_stack_closure(OopClosure *scan_stack_closure) {
+  ExtendedOopClosure *_promo_failure_scan_stack_closure;
+  void set_promo_failure_scan_stack_closure(ExtendedOopClosure *scan_stack_closure) {
     _promo_failure_scan_stack_closure = scan_stack_closure;
   }
 
--- a/src/share/vm/memory/dump.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1592 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "classfile/loaderConstraints.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "gc_implementation/shared/spaceDecorator.hpp"
-#include "memory/classify.hpp"
-#include "memory/filemap.hpp"
-#include "memory/oopFactory.hpp"
-#include "memory/resourceArea.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/javaCalls.hpp"
-#include "runtime/signature.hpp"
-#include "runtime/vmThread.hpp"
-#include "runtime/vm_operations.hpp"
-#include "utilities/copy.hpp"
-
-
-// Closure to set up the fingerprint field for all methods.
-
-class FingerprintMethodsClosure: public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    if (obj->is_method()) {
-      methodOop mobj = (methodOop)obj;
-      ResourceMark rm;
-      (new Fingerprinter(mobj))->fingerprint();
-    }
-  }
-};
-
-
-
-// Closure to set the hash value (String.hash field) in all of the
-// String objects in the heap.  Setting the hash value is not required.
-// However, setting the value in advance prevents the value from being
-// written later, increasing the likelihood that the shared page contain
-// the hash can be shared.
-//
-// NOTE THAT we have to call java_lang_String::to_hash() to match the
-// algorithm in java.lang.String.toHash().
-
-class StringHashCodeClosure: public OopClosure {
-private:
-  Thread* THREAD;
-  int hash_offset;
-public:
-  StringHashCodeClosure(Thread* t) {
-    THREAD = t;
-    hash_offset = java_lang_String::hash_offset_in_bytes();
-  }
-
-  void do_oop(oop* p) {
-    if (p != NULL) {
-      oop obj = *p;
-      if (obj->klass() == SystemDictionary::String_klass() &&
-          java_lang_String::has_hash_field()) {
-        int hash = java_lang_String::to_hash(obj);
-        obj->int_field_put(hash_offset, hash);
-      }
-    }
-  }
-  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-};
-
-
-// Remove data from objects which should not appear in the shared file
-// (as it pertains only to the current JVM).
-
-class RemoveUnshareableInfoClosure : public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    // Zap data from the objects which is pertains only to this JVM.  We
-    // want that data recreated in new JVMs when the shared file is used.
-    if (obj->is_method()) {
-      ((methodOop)obj)->remove_unshareable_info();
-    }
-    else if (obj->is_klass()) {
-      Klass::cast((klassOop)obj)->remove_unshareable_info();
-    }
-
-    // Don't save compiler related special oops (shouldn't be any yet).
-    if (obj->is_methodData() || obj->is_compiledICHolder()) {
-      ShouldNotReachHere();
-    }
-  }
-};
-
-
-static bool mark_object(oop obj) {
-  if (obj != NULL &&
-      !obj->is_shared() &&
-      !obj->is_forwarded() &&
-      !obj->is_gc_marked()) {
-    obj->set_mark(markOopDesc::prototype()->set_marked());
-    return true;
-  }
-
-  return false;
-}
-
-
-class MoveSymbols : public SymbolClosure {
-private:
-  char* _start;
-  char* _end;
-  char* _top;
-  int _count;
-
-  bool in_shared_space(Symbol* sym) const {
-    return (char*)sym >= _start && (char*)sym < _end;
-  }
-
-  Symbol* get_shared_copy(Symbol* sym) {
-    return sym->refcount() > 0 ? NULL : (Symbol*)(_start - sym->refcount());
-  }
-
-  Symbol* make_shared_copy(Symbol* sym) {
-    Symbol* new_sym = (Symbol*)_top;
-    int size = sym->object_size();
-    _top += size * HeapWordSize;
-    if (_top <= _end) {
-      Copy::disjoint_words((HeapWord*)sym, (HeapWord*)new_sym, size);
-      // Encode a reference to the copy as a negative distance from _start
-      // When a symbol is being copied to a shared space
-      // during CDS archive creation, the original symbol is marked
-      // as relocated by putting a negative value to its _refcount field,
-      // This value is also used to find where exactly the shared copy is
-      // (see MoveSymbols::get_shared_copy), so that the other references
-      // to this symbol could be changed to point to the shared copy.
-      sym->_refcount = (int)(_start - (char*)new_sym);
-      // Mark the symbol in the shared archive as immortal so it is read only
-      // and not refcounted.
-      new_sym->_refcount = -1;
-      _count++;
-    } else {
-      report_out_of_shared_space(SharedMiscData);
-    }
-    return new_sym;
-  }
-
-public:
-  MoveSymbols(char* top, char* end) :
-    _start(top), _end(end), _top(top), _count(0) { }
-
-  char* get_top() const { return _top; }
-  int count()     const { return _count; }
-
-  void do_symbol(Symbol** p) {
-    Symbol* sym = load_symbol(p);
-    if (sym != NULL && !in_shared_space(sym)) {
-      Symbol* new_sym = get_shared_copy(sym);
-      if (new_sym == NULL) {
-        // The symbol has not been relocated yet; copy it to _top address
-        assert(sym->refcount() > 0, "should have positive reference count");
-        new_sym = make_shared_copy(sym);
-      }
-      // Make the reference point to the shared copy of the symbol
-      store_symbol(p, new_sym);
-    }
-  }
-};
-
-
-// Closure:  mark objects closure.
-
-class MarkObjectsOopClosure : public OopClosure {
-public:
-  void do_oop(oop* p)       { mark_object(*p); }
-  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-};
-
-
-class MarkObjectsSkippingKlassesOopClosure : public OopClosure {
-public:
-  void do_oop(oop* pobj) {
-    oop obj = *pobj;
-    if (obj != NULL &&
-        !obj->is_klass()) {
-      mark_object(obj);
-    }
-  }
-  void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
-};
-
-
-static void mark_object_recursive_skipping_klasses(oop obj) {
-  mark_object(obj);
-  if (obj != NULL) {
-    MarkObjectsSkippingKlassesOopClosure mark_all;
-    obj->oop_iterate(&mark_all);
-  }
-}
-
-
-// Closure:  mark common read-only objects
-
-class MarkCommonReadOnly : public ObjectClosure {
-private:
-  MarkObjectsOopClosure mark_all;
-public:
-  void do_object(oop obj) {
-
-    // Mark all constMethod objects.
-
-    if (obj->is_constMethod()) {
-      mark_object(obj);
-      mark_object(constMethodOop(obj)->stackmap_data());
-    }
-
-    // Mark objects referenced by klass objects which are read-only.
-
-    else if (obj->is_klass()) {
-      Klass* k = Klass::cast((klassOop)obj);
-      mark_object(k->secondary_supers());
-
-      // The METHODS() OBJARRAYS CANNOT BE MADE READ-ONLY, even though
-      // it is never modified. Otherwise, they will be pre-marked; the
-      // GC marking phase will skip them; and by skipping them will fail
-      // to mark the methods objects referenced by the array.
-
-      if (obj->blueprint()->oop_is_instanceKlass()) {
-        instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-        mark_object(ik->method_ordering());
-        mark_object(ik->local_interfaces());
-        mark_object(ik->transitive_interfaces());
-        mark_object(ik->fields());
-
-        mark_object(ik->class_annotations());
-
-        mark_object_recursive_skipping_klasses(ik->fields_annotations());
-        mark_object_recursive_skipping_klasses(ik->methods_annotations());
-        mark_object_recursive_skipping_klasses(ik->methods_parameter_annotations());
-        mark_object_recursive_skipping_klasses(ik->methods_default_annotations());
-
-        typeArrayOop inner_classes = ik->inner_classes();
-        if (inner_classes != NULL) {
-          mark_object(inner_classes);
-        }
-      }
-    }
-  }
-};
-
-
-// Closure:  find symbol references in Java Heap objects
-
-class CommonSymbolsClosure : public ObjectClosure {
-private:
-  SymbolClosure* _closure;
-public:
-  CommonSymbolsClosure(SymbolClosure* closure) : _closure(closure) { }
-
-  void do_object(oop obj) {
-
-    // Traverse symbols referenced by method objects.
-
-    if (obj->is_method()) {
-      methodOop m = methodOop(obj);
-      constantPoolOop constants = m->constants();
-      _closure->do_symbol(constants->symbol_at_addr(m->name_index()));
-      _closure->do_symbol(constants->symbol_at_addr(m->signature_index()));
-    }
-
-    // Traverse symbols referenced by klass objects which are read-only.
-
-    else if (obj->is_klass()) {
-      Klass* k = Klass::cast((klassOop)obj);
-      k->shared_symbols_iterate(_closure);
-
-      if (obj->blueprint()->oop_is_instanceKlass()) {
-        instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-        instanceKlassHandle ik_h((klassOop)obj);
-        InnerClassesIterator iter(ik_h);
-        constantPoolOop constants = ik->constants();
-        for (; !iter.done(); iter.next()) {
-          int index = iter.inner_name_index();
-
-          if (index != 0) {
-            _closure->do_symbol(constants->symbol_at_addr(index));
-          }
-        }
-      }
-    }
-
-    // Traverse symbols referenced by other constantpool entries.
-
-    else if (obj->is_constantPool()) {
-      constantPoolOop(obj)->shared_symbols_iterate(_closure);
-    }
-  }
-};
-
-
-// Closure:  mark char arrays used by strings
-
-class MarkStringValues : public ObjectClosure {
-private:
-  MarkObjectsOopClosure mark_all;
-public:
-  void do_object(oop obj) {
-
-    // Character arrays referenced by String objects are read-only.
-
-    if (java_lang_String::is_instance(obj)) {
-      mark_object(java_lang_String::value(obj));
-    }
-  }
-};
-
-
-#ifdef DEBUG
-// Closure:  Check for objects left in the heap which have not been moved.
-
-class CheckRemainingObjects : public ObjectClosure {
-private:
-  int count;
-
-public:
-  CheckRemainingObjects() {
-    count = 0;
-  }
-
-  void do_object(oop obj) {
-    if (!obj->is_shared() &&
-        !obj->is_forwarded()) {
-      ++count;
-      if (Verbose) {
-        tty->print("Unreferenced object: ");
-        obj->print_on(tty);
-      }
-    }
-  }
-
-  void status() {
-    tty->print_cr("%d objects no longer referenced, not shared.", count);
-  }
-};
-#endif
-
-
-// Closure:  Mark remaining objects read-write, except Strings.
-
-class MarkReadWriteObjects : public ObjectClosure {
-private:
-  MarkObjectsOopClosure mark_objects;
-public:
-  void do_object(oop obj) {
-
-      // The METHODS() OBJARRAYS CANNOT BE MADE READ-ONLY, even though
-      // it is never modified. Otherwise, they will be pre-marked; the
-      // GC marking phase will skip them; and by skipping them will fail
-      // to mark the methods objects referenced by the array.
-
-    if (obj->is_klass()) {
-      mark_object(obj);
-      Klass* k = klassOop(obj)->klass_part();
-      mark_object(k->java_mirror());
-      if (obj->blueprint()->oop_is_instanceKlass()) {
-        instanceKlass* ik = (instanceKlass*)k;
-        mark_object(ik->methods());
-        mark_object(ik->constants());
-      }
-      if (obj->blueprint()->oop_is_javaArray()) {
-        arrayKlass* ak = (arrayKlass*)k;
-        mark_object(ak->component_mirror());
-      }
-      return;
-    }
-
-    // Mark constantPool tags and the constantPoolCache.
-
-    else if (obj->is_constantPool()) {
-      constantPoolOop pool = constantPoolOop(obj);
-      mark_object(pool->cache());
-      pool->shared_tags_iterate(&mark_objects);
-      return;
-    }
-
-    // Mark all method objects.
-
-    if (obj->is_method()) {
-      mark_object(obj);
-    }
-  }
-};
-
-
-// Closure:  Mark String objects read-write.
-
-class MarkStringObjects : public ObjectClosure {
-private:
-  MarkObjectsOopClosure mark_objects;
-public:
-  void do_object(oop obj) {
-
-    // Mark String objects referenced by constant pool entries.
-
-    if (obj->is_constantPool()) {
-      constantPoolOop pool = constantPoolOop(obj);
-      pool->shared_strings_iterate(&mark_objects);
-      return;
-    }
-  }
-};
-
-
-// Move objects matching specified type (ie. lock_bits) to the specified
-// space.
-
-class MoveMarkedObjects : public ObjectClosure {
-private:
-  OffsetTableContigSpace* _space;
-  bool _read_only;
-
-public:
-  MoveMarkedObjects(OffsetTableContigSpace* space, bool read_only) {
-    _space = space;
-    _read_only = read_only;
-  }
-
-  void do_object(oop obj) {
-    if (obj->is_shared()) {
-      return;
-    }
-    if (obj->is_gc_marked() && obj->forwardee() == NULL) {
-      int s = obj->size();
-      oop sh_obj = (oop)_space->allocate(s);
-      if (sh_obj == NULL) {
-        report_out_of_shared_space(_read_only ? SharedReadOnly : SharedReadWrite);
-      }
-      if (PrintSharedSpaces && Verbose && WizardMode) {
-        tty->print_cr("\nMoveMarkedObjects: " PTR_FORMAT " -> " PTR_FORMAT " %s", obj, sh_obj,
-                      (_read_only ? "ro" : "rw"));
-      }
-      Copy::aligned_disjoint_words((HeapWord*)obj, (HeapWord*)sh_obj, s);
-      obj->forward_to(sh_obj);
-      if (_read_only) {
-        // Readonly objects: set hash value to self pointer and make gc_marked.
-        sh_obj->forward_to(sh_obj);
-      } else {
-        sh_obj->init_mark();
-      }
-    }
-  }
-};
-
-static void mark_and_move(oop obj, MoveMarkedObjects* move) {
-  if (mark_object(obj)) move->do_object(obj);
-}
-
-enum order_policy {
-  OP_favor_startup = 0,
-  OP_balanced = 1,
-  OP_favor_runtime = 2
-};
-
-static void mark_and_move_for_policy(order_policy policy, oop obj, MoveMarkedObjects* move) {
-  if (SharedOptimizeColdStartPolicy >= policy) mark_and_move(obj, move);
-}
-
-class MarkAndMoveOrderedReadOnly : public ObjectClosure {
-private:
-  MoveMarkedObjects *_move_ro;
-
-public:
-  MarkAndMoveOrderedReadOnly(MoveMarkedObjects *move_ro) : _move_ro(move_ro) {}
-
-  void do_object(oop obj) {
-    if (obj->is_klass() && obj->blueprint()->oop_is_instanceKlass()) {
-      instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-      int i;
-
-      if (ik->super() != NULL) {
-        do_object(ik->super());
-      }
-
-      objArrayOop interfaces = ik->local_interfaces();
-      mark_and_move_for_policy(OP_favor_startup, interfaces, _move_ro);
-      for(i = 0; i < interfaces->length(); i++) {
-        klassOop k = klassOop(interfaces->obj_at(i));
-        do_object(k);
-      }
-
-      objArrayOop methods = ik->methods();
-      for(i = 0; i < methods->length(); i++) {
-        methodOop m = methodOop(methods->obj_at(i));
-        mark_and_move_for_policy(OP_favor_startup, m->constMethod(), _move_ro);
-        mark_and_move_for_policy(OP_favor_runtime, m->constMethod()->stackmap_data(), _move_ro);
-      }
-
-      mark_and_move_for_policy(OP_favor_startup, ik->transitive_interfaces(), _move_ro);
-      mark_and_move_for_policy(OP_favor_startup, ik->fields(), _move_ro);
-
-      mark_and_move_for_policy(OP_favor_runtime, ik->secondary_supers(),  _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->method_ordering(),   _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->class_annotations(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->fields_annotations(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->methods_annotations(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->methods_parameter_annotations(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->methods_default_annotations(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->inner_classes(), _move_ro);
-      mark_and_move_for_policy(OP_favor_runtime, ik->secondary_supers(), _move_ro);
-    }
-  }
-};
-
-class MarkAndMoveOrderedReadWrite: public ObjectClosure {
-private:
-  MoveMarkedObjects *_move_rw;
-
-public:
-  MarkAndMoveOrderedReadWrite(MoveMarkedObjects *move_rw) : _move_rw(move_rw) {}
-
-  void do_object(oop obj) {
-    if (obj->is_klass() && obj->blueprint()->oop_is_instanceKlass()) {
-      instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-      int i;
-
-      mark_and_move_for_policy(OP_favor_startup, ik->as_klassOop(), _move_rw);
-
-      if (ik->super() != NULL) {
-        do_object(ik->super());
-      }
-
-      objArrayOop interfaces = ik->local_interfaces();
-      for(i = 0; i < interfaces->length(); i++) {
-        klassOop k = klassOop(interfaces->obj_at(i));
-        mark_and_move_for_policy(OP_favor_startup, k, _move_rw);
-        do_object(k);
-      }
-
-      objArrayOop methods = ik->methods();
-      mark_and_move_for_policy(OP_favor_startup, methods, _move_rw);
-      for(i = 0; i < methods->length(); i++) {
-        methodOop m = methodOop(methods->obj_at(i));
-        mark_and_move_for_policy(OP_favor_startup, m, _move_rw);
-        mark_and_move_for_policy(OP_favor_startup, ik->constants(), _move_rw);          // idempotent
-        mark_and_move_for_policy(OP_balanced, ik->constants()->cache(), _move_rw); // idempotent
-        mark_and_move_for_policy(OP_balanced, ik->constants()->tags(), _move_rw);  // idempotent
-      }
-
-      mark_and_move_for_policy(OP_favor_startup, ik->as_klassOop()->klass(), _move_rw);
-      mark_and_move_for_policy(OP_favor_startup, ik->constants()->klass(), _move_rw);
-
-      // Although Java mirrors are marked in MarkReadWriteObjects,
-      // apparently they were never moved into shared spaces since
-      // MoveMarkedObjects skips marked instance oops.  This may
-      // be a bug in the original implementation or simply the vestige
-      // of an abandoned experiment.  Nevertheless we leave a hint
-      // here in case this capability is ever correctly implemented.
-      //
-      // mark_and_move_for_policy(OP_favor_runtime, ik->java_mirror(), _move_rw);
-    }
-  }
-
-};
-
-// Adjust references in oops to refer to shared spaces.
-
-class ResolveForwardingClosure: public OopClosure {
-public:
-  void do_oop(oop* p) {
-    oop obj = *p;
-    if (!obj->is_shared()) {
-      if (obj != NULL) {
-        oop f = obj->forwardee();
-        guarantee(f->is_shared(), "Oop doesn't refer to shared space.");
-        *p = f;
-      }
-    }
-  }
-  void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
-};
-
-
-// The methods array must be reordered by Symbol* address.
-// (See classFileParser.cpp where methods in a class are originally
-// sorted). The addresses of symbols have been changed as a result
-// of moving to the shared space.
-
-class SortMethodsClosure: public ObjectClosure {
-public:
-  void do_object(oop obj) {
-    if (obj->blueprint()->oop_is_instanceKlass()) {
-      instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-      methodOopDesc::sort_methods(ik->methods(),
-                                  ik->methods_annotations(),
-                                  ik->methods_parameter_annotations(),
-                                  ik->methods_default_annotations(),
-                                  true /* idempotent, slow */);
-    }
-  }
-};
-
-// Vtable and Itable indices are calculated based on methods array
-// order (see klassItable::compute_itable_index()).  Must reinitialize
-// after ALL methods of ALL classes have been reordered.
-// We assume that since checkconstraints is false, this method
-// cannot throw an exception.  An exception here would be
-// problematic since this is the VMThread, not a JavaThread.
-
-class ReinitializeTables: public ObjectClosure {
-private:
-  Thread* _thread;
-
-public:
-  ReinitializeTables(Thread* thread) : _thread(thread) {}
-
-  // Initialize super vtable first, check if already initialized to avoid
-  // quadradic behavior.  The vtable is cleared in remove_unshareable_info.
-  void reinitialize_vtables(klassOop k) {
-    if (k->blueprint()->oop_is_instanceKlass()) {
-      instanceKlass* ik = instanceKlass::cast(k);
-      if (ik->vtable()->is_initialized()) return;
-      if (ik->super() != NULL) {
-        reinitialize_vtables(ik->super());
-      }
-      ik->vtable()->initialize_vtable(false, _thread);
-    }
-  }
-
-  void do_object(oop obj) {
-    if (obj->blueprint()->oop_is_instanceKlass()) {
-      instanceKlass* ik = instanceKlass::cast((klassOop)obj);
-      ResourceMark rm(_thread);
-      ik->itable()->initialize_itable(false, _thread);
-      reinitialize_vtables((klassOop)obj);
-#ifdef ASSERT
-      ik->vtable()->verify(tty, true);
-#endif // ASSERT
-    } else if (obj->blueprint()->oop_is_arrayKlass()) {
-      // The vtable for array klasses are that of its super class,
-      // ie. java.lang.Object.
-      arrayKlass* ak = arrayKlass::cast((klassOop)obj);
-      if (ak->vtable()->is_initialized()) return;
-      ak->vtable()->initialize_vtable(false, _thread);
-    }
-  }
-};
-
-
-// Adjust references in oops to refer to shared spaces.
-
-class PatchOopsClosure: public ObjectClosure {
-private:
-  Thread* _thread;
-  ResolveForwardingClosure resolve;
-
-public:
-  PatchOopsClosure(Thread* thread) : _thread(thread) {}
-
-  void do_object(oop obj) {
-    obj->oop_iterate_header(&resolve);
-    obj->oop_iterate(&resolve);
-
-    assert(obj->klass()->is_shared(), "Klass not pointing into shared space.");
-
-    // If the object is a Java object or class which might (in the
-    // future) contain a reference to a young gen object, add it to the
-    // list.
-
-    if (obj->is_klass() || obj->is_instance()) {
-      if (obj->is_klass() ||
-          obj->is_a(SystemDictionary::Class_klass()) ||
-          obj->is_a(SystemDictionary::Throwable_klass())) {
-        // Do nothing
-      }
-      else if (obj->is_a(SystemDictionary::String_klass())) {
-        // immutable objects.
-      } else {
-        // someone added an object we hadn't accounted for.
-        ShouldNotReachHere();
-      }
-    }
-  }
-};
-
-
-// Empty the young and old generations.
-
-class ClearSpaceClosure : public SpaceClosure {
-public:
-  void do_space(Space* s) {
-    s->clear(SpaceDecorator::Mangle);
-  }
-};
-
-
-// Closure for serializing initialization data out to a data area to be
-// written to the shared file.
-
-class WriteClosure : public SerializeOopClosure {
-private:
-  oop* top;
-  char* end;
-
-  inline void check_space() {
-    if ((char*)top + sizeof(oop) > end) {
-      report_out_of_shared_space(SharedMiscData);
-    }
-  }
-
-
-public:
-  WriteClosure(char* md_top, char* md_end) {
-    top = (oop*)md_top;
-    end = md_end;
-  }
-
-  char* get_top() { return (char*)top; }
-
-  void do_oop(oop* p) {
-    check_space();
-    oop obj = *p;
-    assert(obj->is_oop_or_null(), "invalid oop");
-    assert(obj == NULL || obj->is_shared(),
-           "Oop in shared space not pointing into shared space.");
-    *top = obj;
-    ++top;
-  }
-
-  void do_oop(narrowOop* pobj) { ShouldNotReachHere(); }
-
-  void do_int(int* p) {
-    check_space();
-    *top = (oop)(intptr_t)*p;
-    ++top;
-  }
-
-  void do_size_t(size_t* p) {
-    check_space();
-    *top = (oop)(intptr_t)*p;
-    ++top;
-  }
-
-  void do_ptr(void** p) {
-    check_space();
-    *top = (oop)*p;
-    ++top;
-  }
-
-  void do_ptr(HeapWord** p) { do_ptr((void **) p); }
-
-  void do_tag(int tag) {
-    check_space();
-    *top = (oop)(intptr_t)tag;
-    ++top;
-  }
-
-  void do_region(u_char* start, size_t size) {
-    if ((char*)top + size > end) {
-      report_out_of_shared_space(SharedMiscData);
-    }
-    assert((intptr_t)start % sizeof(oop) == 0, "bad alignment");
-    assert(size % sizeof(oop) == 0, "bad size");
-    do_tag((int)size);
-    while (size > 0) {
-      *top = *(oop*)start;
-      ++top;
-      start += sizeof(oop);
-      size -= sizeof(oop);
-    }
-  }
-
-  bool reading() const { return false; }
-};
-
-
-class ResolveConstantPoolsClosure : public ObjectClosure {
-private:
-  TRAPS;
-public:
-  ResolveConstantPoolsClosure(Thread *t) {
-    __the_thread__ = t;
-  }
-  void do_object(oop obj) {
-    if (obj->is_constantPool()) {
-      constantPoolOop cpool = (constantPoolOop)obj;
-      int unresolved = cpool->pre_resolve_shared_klasses(THREAD);
-    }
-  }
-};
-
-
-// Print a summary of the contents of the read/write spaces to help
-// identify objects which might be able to be made read-only.  At this
-// point, the objects have been written, and we can trash them as
-// needed.
-
-static void print_contents() {
-  if (PrintSharedSpaces) {
-    GenCollectedHeap* gch = GenCollectedHeap::heap();
-    CompactingPermGenGen* gen = (CompactingPermGenGen*)gch->perm_gen();
-
-    // High level summary of the read-only space:
-
-    ClassifyObjectClosure coc;
-    tty->cr(); tty->print_cr("ReadOnly space:");
-    gen->ro_space()->object_iterate(&coc);
-    coc.print();
-
-    // High level summary of the read-write space:
-
-    coc.reset();
-    tty->cr(); tty->print_cr("ReadWrite space:");
-    gen->rw_space()->object_iterate(&coc);
-    coc.print();
-
-    // Reset counters
-
-    ClearAllocCountClosure cacc;
-    gen->ro_space()->object_iterate(&cacc);
-    gen->rw_space()->object_iterate(&cacc);
-    coc.reset();
-
-    // Lower level summary of the read-only space:
-
-    gen->ro_space()->object_iterate(&coc);
-    tty->cr(); tty->print_cr("ReadOnly space:");
-    ClassifyInstanceKlassClosure cikc;
-    gen->rw_space()->object_iterate(&cikc);
-    cikc.print();
-
-    // Reset counters
-
-    gen->ro_space()->object_iterate(&cacc);
-    gen->rw_space()->object_iterate(&cacc);
-    coc.reset();
-
-    // Lower level summary of the read-write space:
-
-    gen->rw_space()->object_iterate(&coc);
-    cikc.reset();
-    tty->cr();  tty->print_cr("ReadWrite space:");
-    gen->rw_space()->object_iterate(&cikc);
-    cikc.print();
-  }
-}
-
-
-// Patch C++ vtable pointer in klass oops.
-
-// Klass objects contain references to c++ vtables in the JVM library.
-// Fix them to point to our constructed vtables.  However, don't iterate
-// across the space while doing this, as that causes the vtables to be
-// patched, undoing our useful work.  Instead, iterate to make a list,
-// then use the list to do the fixing.
-//
-// Our constructed vtables:
-// Dump time:
-//  1. init_self_patching_vtbl_list: table of pointers to current virtual method addrs
-//  2. generate_vtable_methods: create jump table, appended to above vtbl_list
-//  3. PatchKlassVtables: for Klass list, patch the vtable entry to point to jump table
-//     rather than to current vtbl
-// Table layout: NOTE FIXED SIZE
-//   1. vtbl pointers
-//   2. #Klass X #virtual methods per Klass
-//   1 entry for each, in the order:
-//   Klass1:method1 entry, Klass1:method2 entry, ... Klass1:method<num_virtuals> entry
-//   Klass2:method1 entry, Klass2:method2 entry, ... Klass2:method<num_virtuals> entry
-//   ...
-//   Klass<vtbl_list_size>:method1 entry, Klass<vtbl_list_size>:method2 entry,
-//       ... Klass<vtbl_list_size>:method<num_virtuals> entry
-//  Sample entry: (Sparc):
-//   save(sp, -256, sp)
-//   ba,pt common_code
-//   mov XXX, %L0       %L0 gets: Klass index <<8 + method index (note: max method index 255)
-//
-// Restore time:
-//   1. initialize_oops: reserve space for table
-//   2. init_self_patching_vtbl_list: update pointers to NEW virtual method addrs in text
-//
-// Execution time:
-//   First virtual method call for any object of these Klass types:
-//   1. object->klass->klass_part
-//   2. vtable entry for that klass_part points to the jump table entries
-//   3. branches to common_code with %O0/klass_part, %L0: Klass index <<8 + method index
-//   4. common_code:
-//      Get address of new vtbl pointer for this Klass from updated table
-//      Update new vtbl pointer in the Klass: future virtual calls go direct
-//      Jump to method, using new vtbl pointer and method index
-
-class PatchKlassVtables: public ObjectClosure {
-private:
-  GrowableArray<klassOop>* _klass_objects;
-
-public:
-  PatchKlassVtables() {
-    _klass_objects = new GrowableArray<klassOop>();
-  }
-
-  void do_object(oop obj) {
-    if (obj->is_klass()) {
-      _klass_objects->append(klassOop(obj));
-    }
-  }
-
-  void patch(void** vtbl_list, void* new_vtable_start) {
-    int n = _klass_objects->length();
-    for (int i = 0; i < n; i++) {
-      klassOop obj = (klassOop)_klass_objects->at(i);
-      Klass* k = obj->klass_part();
-      *(void**)k = CompactingPermGenGen::find_matching_vtbl_ptr(
-                     vtbl_list, new_vtable_start, k);
-    }
-  }
-};
-
-// Walk through all symbols and patch their vtable pointers.
-// Note that symbols have vtable pointers only in non-product builds
-// (see allocation.hpp).
-
-#ifndef PRODUCT
-class PatchSymbolVtables: public SymbolClosure {
-private:
-  void* _new_vtbl_ptr;
-
-public:
-  PatchSymbolVtables(void** vtbl_list, void* new_vtable_start) {
-    Symbol s;
-    _new_vtbl_ptr = CompactingPermGenGen::find_matching_vtbl_ptr(
-                      vtbl_list, new_vtable_start, &s);
-  }
-
-  void do_symbol(Symbol** p) {
-    Symbol* sym = load_symbol(p);
-    *(void**)sym = _new_vtbl_ptr;
-  }
-};
-#endif
-
-
-// Populate the shared space.
-
-class VM_PopulateDumpSharedSpace: public VM_Operation {
-private:
-  GrowableArray<oop> *_class_promote_order;
-  OffsetTableContigSpace* _ro_space;
-  OffsetTableContigSpace* _rw_space;
-  VirtualSpace* _md_vs;
-  VirtualSpace* _mc_vs;
-
-public:
-  VM_PopulateDumpSharedSpace(GrowableArray<oop> *class_promote_order,
-                             OffsetTableContigSpace* ro_space,
-                             OffsetTableContigSpace* rw_space,
-                             VirtualSpace* md_vs, VirtualSpace* mc_vs) {
-    _class_promote_order = class_promote_order;
-    _ro_space = ro_space;
-    _rw_space = rw_space;
-    _md_vs = md_vs;
-    _mc_vs = mc_vs;
-  }
-
-  VMOp_Type type() const { return VMOp_PopulateDumpSharedSpace; }
-  void doit() {
-    Thread* THREAD = VMThread::vm_thread();
-    NOT_PRODUCT(SystemDictionary::verify();)
-    // The following guarantee is meant to ensure that no loader constraints
-    // exist yet, since the constraints table is not shared.  This becomes
-    // more important now that we don't re-initialize vtables/itables for
-    // shared classes at runtime, where constraints were previously created.
-    guarantee(SystemDictionary::constraints()->number_of_entries() == 0,
-              "loader constraints are not saved");
-    // Revisit and implement this if we prelink method handle call sites:
-    guarantee(SystemDictionary::invoke_method_table() == NULL ||
-              SystemDictionary::invoke_method_table()->number_of_entries() == 0,
-              "invoke method table is not saved");
-    GenCollectedHeap* gch = GenCollectedHeap::heap();
-
-    // At this point, many classes have been loaded.
-
-    // Update all the fingerprints in the shared methods.
-
-    tty->print("Calculating fingerprints ... ");
-    FingerprintMethodsClosure fpmc;
-    gch->object_iterate(&fpmc);
-    tty->print_cr("done. ");
-
-    // Remove all references outside the heap.
-
-    tty->print("Removing unshareable information ... ");
-    RemoveUnshareableInfoClosure ruic;
-    gch->object_iterate(&ruic);
-    tty->print_cr("done. ");
-
-    // Move the objects in three passes.
-
-    MarkObjectsOopClosure mark_all;
-    MarkCommonReadOnly mark_common_ro;
-    MarkStringValues mark_string_values;
-    MarkReadWriteObjects mark_rw;
-    MarkStringObjects mark_strings;
-    MoveMarkedObjects move_ro(_ro_space, true);
-    MoveMarkedObjects move_rw(_rw_space, false);
-
-    // The SharedOptimizeColdStart VM option governs the new layout
-    // algorithm for promoting classes into the shared archive.
-    // The general idea is to minimize cold start time by laying
-    // out the objects in the order they are accessed at startup time.
-    // By doing this we are trying to eliminate out-of-order accesses
-    // in the shared archive.  This benefits cold startup time by making
-    // disk reads as sequential as possible during class loading and
-    // bootstrapping activities.  There may also be a small secondary
-    // effect of better "packing" of more commonly used data on a smaller
-    // number of pages, although no direct benefit has been measured from
-    // this effect.
-    //
-    // At the class level of granularity, the promotion order is dictated
-    // by the classlist file whose generation is discussed elsewhere.
-    //
-    // At smaller granularity, optimal ordering was determined by an
-    // offline analysis of object access order in the shared archive.
-    // The dbx watchpoint facility, combined with SA post-processing,
-    // was used to observe common access patterns primarily during
-    // classloading.  This information was used to craft the promotion
-    // order seen in the following closures.
-    //
-    // The observed access order is mostly governed by what happens
-    // in SystemDictionary::load_shared_class().  NOTE WELL - care
-    // should be taken when making changes to this method, because it
-    // may invalidate assumptions made about access order!
-    //
-    // (Ideally, there would be a better way to manage changes to
-    //  the access order.  Unfortunately a generic in-VM solution for
-    //  dynamically observing access order and optimizing shared
-    //  archive layout is pretty difficult.  We go with the static
-    //  analysis because the code is fairly mature at this point
-    //  and we're betting that the access order won't change much.)
-
-    MarkAndMoveOrderedReadOnly  mark_and_move_ordered_ro(&move_ro);
-    MarkAndMoveOrderedReadWrite mark_and_move_ordered_rw(&move_rw);
-
-    // Set up the share data and shared code segments.
-
-    char* md_top = _md_vs->low();
-    char* md_end = _md_vs->high();
-    char* mc_top = _mc_vs->low();
-    char* mc_end = _mc_vs->high();
-
-    // Reserve space for the list of klassOops whose vtables are used
-    // for patching others as needed.
-
-    void** vtbl_list = (void**)md_top;
-    int vtbl_list_size = CompactingPermGenGen::vtbl_list_size;
-    Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size);
-
-    md_top += vtbl_list_size * sizeof(void*);
-    void* vtable = md_top;
-
-    // Reserve space for a new dummy vtable for klass objects in the
-    // heap.  Generate self-patching vtable entries.
-
-    CompactingPermGenGen::generate_vtable_methods(vtbl_list,
-                                                  &vtable,
-                                                  &md_top, md_end,
-                                                  &mc_top, mc_end);
-
-    // Reserve space for the total size and the number of stored symbols.
-
-    md_top += sizeof(intptr_t) * 2;
-
-    MoveSymbols move_symbols(md_top, md_end);
-    CommonSymbolsClosure traverse_common_symbols(&move_symbols);
-
-    // Phase 1a: remove symbols with _refcount == 0
-
-    SymbolTable::unlink();
-
-    // Phase 1b: move commonly used symbols referenced by oop fields.
-
-    tty->print("Moving common symbols to metadata section at " PTR_FORMAT " ... ",
-               move_symbols.get_top());
-    gch->object_iterate(&traverse_common_symbols);
-    tty->print_cr("done. ");
-
-    // Phase 1c: move known names and signatures.
-
-    tty->print("Moving vmSymbols to metadata section at " PTR_FORMAT " ... ",
-               move_symbols.get_top());
-    vmSymbols::symbols_do(&move_symbols);
-    tty->print_cr("done. ");
-
-    // Phase 1d: move the remaining symbols by scanning the whole SymbolTable.
-
-    void* extra_symbols = move_symbols.get_top();
-    tty->print("Moving the remaining symbols to metadata section at " PTR_FORMAT " ... ",
-               move_symbols.get_top());
-    SymbolTable::symbols_do(&move_symbols);
-    tty->print_cr("done. ");
-
-    // Record the total length of all symbols at the beginning of the block.
-    ((intptr_t*)md_top)[-2] = move_symbols.get_top() - md_top;
-    ((intptr_t*)md_top)[-1] = move_symbols.count();
-    tty->print_cr("Moved %d symbols, %d bytes.",
-                  move_symbols.count(), move_symbols.get_top() - md_top);
-    // Advance the pointer to the end of symbol store.
-    md_top = move_symbols.get_top();
-
-
-    // Phase 2: move commonly used read-only objects to the read-only space.
-
-    if (SharedOptimizeColdStart) {
-      tty->print("Moving pre-ordered read-only objects to shared space at " PTR_FORMAT " ... ",
-                 _ro_space->top());
-      for (int i = 0; i < _class_promote_order->length(); i++) {
-        oop obj = _class_promote_order->at(i);
-        mark_and_move_ordered_ro.do_object(obj);
-      }
-      tty->print_cr("done. ");
-    }
-
-    tty->print("Moving read-only objects to shared space at " PTR_FORMAT " ... ",
-               _ro_space->top());
-    gch->object_iterate(&mark_common_ro);
-    gch->object_iterate(&move_ro);
-    tty->print_cr("done. ");
-
-    // Phase 3: move String character arrays to the read-only space.
-
-    tty->print("Moving string char arrays to shared space at " PTR_FORMAT " ... ",
-               _ro_space->top());
-    gch->object_iterate(&mark_string_values);
-    gch->object_iterate(&move_ro);
-    tty->print_cr("done. ");
-
-    // Phase 4: move read-write objects to the read-write space, except
-    // Strings.
-
-    if (SharedOptimizeColdStart) {
-      tty->print("Moving pre-ordered read-write objects to shared space at " PTR_FORMAT " ... ",
-                 _rw_space->top());
-      for (int i = 0; i < _class_promote_order->length(); i++) {
-        oop obj = _class_promote_order->at(i);
-        mark_and_move_ordered_rw.do_object(obj);
-      }
-      tty->print_cr("done. ");
-    }
-    tty->print("Moving read-write objects to shared space at " PTR_FORMAT " ... ",
-               _rw_space->top());
-    Universe::oops_do(&mark_all, true);
-    SystemDictionary::oops_do(&mark_all);
-    oop tmp = Universe::arithmetic_exception_instance();
-    mark_object(java_lang_Throwable::message(tmp));
-    gch->object_iterate(&mark_rw);
-    gch->object_iterate(&move_rw);
-    tty->print_cr("done. ");
-
-    // Phase 5: move String objects to the read-write space.
-
-    tty->print("Moving String objects to shared space at " PTR_FORMAT " ... ",
-               _rw_space->top());
-    StringTable::oops_do(&mark_all);
-    gch->object_iterate(&mark_strings);
-    gch->object_iterate(&move_rw);
-    tty->print_cr("done. ");
-    tty->print_cr("Read-write space ends at " PTR_FORMAT ", %d bytes.",
-                  _rw_space->top(), _rw_space->used());
-
-#ifdef DEBUG
-    // Check: scan for objects which were not moved.
-
-    CheckRemainingObjects check_objects;
-    gch->object_iterate(&check_objects);
-    check_objects.status();
-#endif
-
-    // Resolve forwarding in objects and saved C++ structures
-    tty->print("Updating references to shared objects ... ");
-    ResolveForwardingClosure resolve;
-    Universe::oops_do(&resolve);
-    SystemDictionary::oops_do(&resolve);
-    StringTable::oops_do(&resolve);
-
-    // Fix (forward) all of the references in these shared objects (which
-    // are required to point ONLY to objects in the shared spaces).
-    // Also, create a list of all objects which might later contain a
-    // reference to a younger generation object.
-
-    CompactingPermGenGen* gen = (CompactingPermGenGen*)gch->perm_gen();
-    PatchOopsClosure patch(THREAD);
-    gen->ro_space()->object_iterate(&patch);
-    gen->rw_space()->object_iterate(&patch);
-
-    // Previously method sorting was done concurrently with forwarding
-    // pointer resolution in the shared spaces.  This imposed an ordering
-    // restriction in that methods were required to be promoted/patched
-    // before their holder classes.  (Because constant pool pointers in
-    // methodKlasses are required to be resolved before their holder class
-    // is visited for sorting, otherwise methods are sorted by incorrect,
-    // pre-forwarding addresses.)
-    //
-    // Now, we reorder methods as a separate step after ALL forwarding
-    // pointer resolution, so that methods can be promoted in any order
-    // with respect to their holder classes.
-
-    SortMethodsClosure sort;
-    gen->ro_space()->object_iterate(&sort);
-    gen->rw_space()->object_iterate(&sort);
-
-    ReinitializeTables reinit_tables(THREAD);
-    gen->ro_space()->object_iterate(&reinit_tables);
-    gen->rw_space()->object_iterate(&reinit_tables);
-    tty->print_cr("done. ");
-    tty->cr();
-
-    // Reorder the system dictionary.  (Moving the symbols opps affects
-    // how the hash table indices are calculated.)
-
-    SystemDictionary::reorder_dictionary();
-
-    // Empty the non-shared heap (because most of the objects were
-    // copied out, and the remainder cannot be considered valid oops).
-
-    ClearSpaceClosure csc;
-    for (int i = 0; i < gch->n_gens(); ++i) {
-      gch->get_gen(i)->space_iterate(&csc);
-    }
-    csc.do_space(gen->the_space());
-    NOT_PRODUCT(SystemDictionary::verify();)
-
-    // Copy the String table, the symbol table, and the system
-    // dictionary to the shared space in usable form.  Copy the hastable
-    // buckets first [read-write], then copy the linked lists of entries
-    // [read-only].
-
-    SymbolTable::reverse(extra_symbols);
-    NOT_PRODUCT(SymbolTable::verify());
-    SymbolTable::copy_buckets(&md_top, md_end);
-
-    StringTable::reverse();
-    NOT_PRODUCT(StringTable::verify());
-    StringTable::copy_buckets(&md_top, md_end);
-
-    SystemDictionary::reverse();
-    SystemDictionary::copy_buckets(&md_top, md_end);
-
-    ClassLoader::verify();
-    ClassLoader::copy_package_info_buckets(&md_top, md_end);
-    ClassLoader::verify();
-
-    SymbolTable::copy_table(&md_top, md_end);
-    StringTable::copy_table(&md_top, md_end);
-    SystemDictionary::copy_table(&md_top, md_end);
-    ClassLoader::verify();
-    ClassLoader::copy_package_info_table(&md_top, md_end);
-    ClassLoader::verify();
-
-    // Print debug data.
-
-    if (PrintSharedSpaces) {
-      const char* fmt = "%s space: " PTR_FORMAT " out of " PTR_FORMAT " bytes allocated at " PTR_FORMAT ".";
-      tty->print_cr(fmt, "ro", _ro_space->used(), _ro_space->capacity(),
-                    _ro_space->bottom());
-      tty->print_cr(fmt, "rw", _rw_space->used(), _rw_space->capacity(),
-                    _rw_space->bottom());
-    }
-
-    // Write the oop data to the output array.
-
-    WriteClosure wc(md_top, md_end);
-    CompactingPermGenGen::serialize_oops(&wc);
-    md_top = wc.get_top();
-
-    // Update the vtable pointers in all of the Klass objects in the
-    // heap. They should point to newly generated vtable.
-
-    PatchKlassVtables pkvt;
-    _rw_space->object_iterate(&pkvt);
-    pkvt.patch(vtbl_list, vtable);
-
-#ifndef PRODUCT
-    // Update the vtable pointers in all symbols,
-    // but only in non-product builds where symbols DO have virtual methods.
-    PatchSymbolVtables psvt(vtbl_list, vtable);
-    SymbolTable::symbols_do(&psvt);
-#endif
-
-    char* saved_vtbl = (char*)malloc(vtbl_list_size * sizeof(void*));
-    memmove(saved_vtbl, vtbl_list, vtbl_list_size * sizeof(void*));
-    memset(vtbl_list, 0, vtbl_list_size * sizeof(void*));
-
-    // Create and write the archive file that maps the shared spaces.
-
-    FileMapInfo* mapinfo = new FileMapInfo();
-    mapinfo->populate_header(gch->gen_policy()->max_alignment());
-
-    // Pass 1 - update file offsets in header.
-    mapinfo->write_header();
-    mapinfo->write_space(CompactingPermGenGen::ro, _ro_space, true);
-    _ro_space->set_saved_mark();
-    mapinfo->write_space(CompactingPermGenGen::rw, _rw_space, false);
-    _rw_space->set_saved_mark();
-    mapinfo->write_region(CompactingPermGenGen::md, _md_vs->low(),
-                          pointer_delta(md_top, _md_vs->low(), sizeof(char)),
-                          SharedMiscDataSize,
-                          false, false);
-    mapinfo->write_region(CompactingPermGenGen::mc, _mc_vs->low(),
-                          pointer_delta(mc_top, _mc_vs->low(), sizeof(char)),
-                          SharedMiscCodeSize,
-                          true, true);
-
-    // Pass 2 - write data.
-    mapinfo->open_for_write();
-    mapinfo->write_header();
-    mapinfo->write_space(CompactingPermGenGen::ro, _ro_space, true);
-    mapinfo->write_space(CompactingPermGenGen::rw, _rw_space, false);
-    mapinfo->write_region(CompactingPermGenGen::md, _md_vs->low(),
-                          pointer_delta(md_top, _md_vs->low(), sizeof(char)),
-                          SharedMiscDataSize,
-                          false, false);
-    mapinfo->write_region(CompactingPermGenGen::mc, _mc_vs->low(),
-                          pointer_delta(mc_top, _mc_vs->low(), sizeof(char)),
-                          SharedMiscCodeSize,
-                          true, true);
-    mapinfo->close();
-
-    // Summarize heap.
-    memmove(vtbl_list, saved_vtbl, vtbl_list_size * sizeof(void*));
-    print_contents();
-  }
-}; // class VM_PopulateDumpSharedSpace
-
-
-// Populate the shared spaces and dump to a file.
-
-jint CompactingPermGenGen::dump_shared(GrowableArray<oop>* class_promote_order, TRAPS) {
-  GenCollectedHeap* gch = GenCollectedHeap::heap();
-
-  // Calculate hash values for all of the (interned) strings to avoid
-  // writes to shared pages in the future.
-
-  tty->print("Calculating hash values for String objects .. ");
-  StringHashCodeClosure shcc(THREAD);
-  StringTable::oops_do(&shcc);
-  tty->print_cr("done. ");
-
-  CompactingPermGenGen* gen = (CompactingPermGenGen*)gch->perm_gen();
-  VM_PopulateDumpSharedSpace op(class_promote_order,
-                                gen->ro_space(), gen->rw_space(),
-                                gen->md_space(), gen->mc_space());
-  VMThread::execute(&op);
-  return JNI_OK;
-}
-
-void* CompactingPermGenGen::find_matching_vtbl_ptr(void** vtbl_list,
-                                                   void* new_vtable_start,
-                                                   void* obj) {
-  void* old_vtbl_ptr = *(void**)obj;
-  for (int i = 0; i < vtbl_list_size; i++) {
-    if (vtbl_list[i] == old_vtbl_ptr) {
-      return (void**)new_vtable_start + i * num_virtuals;
-    }
-  }
-  ShouldNotReachHere();
-  return NULL;
-}
-
-
-class LinkClassesClosure : public ObjectClosure {
- private:
-  Thread* THREAD;
-
- public:
-  LinkClassesClosure(Thread* thread) : THREAD(thread) {}
-
-  void do_object(oop obj) {
-    if (obj->is_klass()) {
-      Klass* k = Klass::cast((klassOop) obj);
-      if (k->oop_is_instance()) {
-        instanceKlass* ik = (instanceKlass*) k;
-        // Link the class to cause the bytecodes to be rewritten and the
-        // cpcache to be created.
-        if (ik->init_state() < instanceKlass::linked) {
-          ik->link_class(THREAD);
-          guarantee(!HAS_PENDING_EXCEPTION, "exception in class rewriting");
-        }
-
-        // Create String objects from string initializer symbols.
-        ik->constants()->resolve_string_constants(THREAD);
-        guarantee(!HAS_PENDING_EXCEPTION, "exception resolving string constants");
-      }
-    }
-  }
-};
-
-
-// Support for a simple checksum of the contents of the class list
-// file to prevent trivial tampering. The algorithm matches that in
-// the MakeClassList program used by the J2SE build process.
-#define JSUM_SEED ((jlong)CONST64(0xcafebabebabecafe))
-static jlong
-jsum(jlong start, const char *buf, const int len)
-{
-    jlong h = start;
-    char *p = (char *)buf, *e = p + len;
-    while (p < e) {
-        char c = *p++;
-        if (c <= ' ') {
-            /* Skip spaces and control characters */
-            continue;
-        }
-        h = 31 * h + c;
-    }
-    return h;
-}
-
-
-
-
-
-// Preload classes from a list, populate the shared spaces and dump to a
-// file.
-
-void GenCollectedHeap::preload_and_dump(TRAPS) {
-  TraceTime timer("Dump Shared Spaces", TraceStartupTime);
-  ResourceMark rm;
-
-  // Preload classes to be shared.
-  // Should use some os:: method rather than fopen() here. aB.
-  // Construct the path to the class list (in jre/lib)
-  // Walk up two directories from the location of the VM and
-  // optionally tack on "lib" (depending on platform)
-  char class_list_path[JVM_MAXPATHLEN];
-  os::jvm_path(class_list_path, sizeof(class_list_path));
-  for (int i = 0; i < 3; i++) {
-    char *end = strrchr(class_list_path, *os::file_separator());
-    if (end != NULL) *end = '\0';
-  }
-  int class_list_path_len = (int)strlen(class_list_path);
-  if (class_list_path_len >= 3) {
-    if (strcmp(class_list_path + class_list_path_len - 3, "lib") != 0) {
-      strcat(class_list_path, os::file_separator());
-      strcat(class_list_path, "lib");
-    }
-  }
-  strcat(class_list_path, os::file_separator());
-  strcat(class_list_path, "classlist");
-
-  FILE* file = fopen(class_list_path, "r");
-  if (file != NULL) {
-    jlong computed_jsum  = JSUM_SEED;
-    jlong file_jsum      = 0;
-
-    char class_name[256];
-    int class_count = 0;
-    GenCollectedHeap* gch = GenCollectedHeap::heap();
-    gch->_preloading_shared_classes = true;
-    GrowableArray<oop>* class_promote_order = new GrowableArray<oop>();
-
-    // Preload (and intern) strings which will be used later.
-
-    StringTable::intern("main", THREAD);
-    StringTable::intern("([Ljava/lang/String;)V", THREAD);
-    StringTable::intern("Ljava/lang/Class;", THREAD);
-
-    StringTable::intern("I", THREAD);   // Needed for StringBuffer persistence?
-    StringTable::intern("Z", THREAD);   // Needed for StringBuffer persistence?
-
-    // sun.io.Converters
-    static const char obj_array_sig[] = "[[Ljava/lang/Object;";
-    (void)SymbolTable::new_permanent_symbol(obj_array_sig, THREAD);
-
-    // java.util.HashMap
-    static const char map_entry_array_sig[] = "[Ljava/util/Map$Entry;";
-    (void)SymbolTable::new_permanent_symbol(map_entry_array_sig, THREAD);
-
-    tty->print("Loading classes to share ... ");
-    while ((fgets(class_name, sizeof class_name, file)) != NULL) {
-      if (*class_name == '#') {
-        jint fsh, fsl;
-        if (sscanf(class_name, "# %8x%8x\n", &fsh, &fsl) == 2) {
-          file_jsum = ((jlong)(fsh) << 32) | (fsl & 0xffffffff);
-        }
-
-        continue;
-      }
-      // Remove trailing newline
-      size_t name_len = strlen(class_name);
-      class_name[name_len-1] = '\0';
-
-      computed_jsum = jsum(computed_jsum, class_name, (const int)name_len - 1);
-
-      // Got a class name - load it.
-      Symbol* class_name_symbol = SymbolTable::new_permanent_symbol(class_name, THREAD);
-      guarantee(!HAS_PENDING_EXCEPTION, "Exception creating a symbol.");
-      klassOop klass = SystemDictionary::resolve_or_null(class_name_symbol,
-                                                         THREAD);
-      guarantee(!HAS_PENDING_EXCEPTION, "Exception resolving a class.");
-      if (klass != NULL) {
-        if (PrintSharedSpaces) {
-          tty->print_cr("Shared spaces preloaded: %s", class_name);
-        }
-
-
-        instanceKlass* ik = instanceKlass::cast(klass);
-
-        // Should be class load order as per -XX:+TraceClassLoadingPreorder
-        class_promote_order->append(ik->as_klassOop());
-
-        // Link the class to cause the bytecodes to be rewritten and the
-        // cpcache to be created. The linking is done as soon as classes
-        // are loaded in order that the related data structures (klass,
-        // cpCache, Sting constants) are located together.
-
-        if (ik->init_state() < instanceKlass::linked) {
-          ik->link_class(THREAD);
-          guarantee(!(HAS_PENDING_EXCEPTION), "exception in class rewriting");
-        }
-
-        // Create String objects from string initializer symbols.
-
-        ik->constants()->resolve_string_constants(THREAD);
-
-        class_count++;
-      } else {
-        if (PrintSharedSpaces) {
-          tty->cr();
-          tty->print_cr(" Preload failed: %s", class_name);
-        }
-      }
-      file_jsum = 0; // Checksum must be on last line of file
-    }
-    if (computed_jsum != file_jsum) {
-      tty->cr();
-      tty->print_cr("Preload failed: checksum of class list was incorrect.");
-      exit(1);
-    }
-
-    tty->print_cr("done. ");
-
-    if (PrintSharedSpaces) {
-      tty->print_cr("Shared spaces: preloaded %d classes", class_count);
-    }
-
-    // Rewrite and unlink classes.
-    tty->print("Rewriting and unlinking classes ... ");
-    // Make heap parsable
-    ensure_parsability(false); // arg is actually don't care
-
-    // Link any classes which got missed.  (It's not quite clear why
-    // they got missed.)  This iteration would be unsafe if we weren't
-    // single-threaded at this point; however we can't do it on the VM
-    // thread because it requires object allocation.
-    LinkClassesClosure lcc(Thread::current());
-    object_iterate(&lcc);
-    ensure_parsability(false); // arg is actually don't care
-    tty->print_cr("done. ");
-
-    // Create and dump the shared spaces.
-    jint err = CompactingPermGenGen::dump_shared(class_promote_order, THREAD);
-    if (err != JNI_OK) {
-      fatal("Dumping shared spaces failed.");
-    }
-
-  } else {
-    char errmsg[JVM_MAXPATHLEN];
-    os::lasterror(errmsg, JVM_MAXPATHLEN);
-    tty->print_cr("Loading classlist failed: %s", errmsg);
-    exit(1);
-  }
-
-  // Since various initialization steps have been undone by this process,
-  // it is not reasonable to continue running a java process.
-  exit(0);
-}
--- a/src/share/vm/memory/filemap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/filemap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -205,11 +205,12 @@
 
 // Dump shared spaces to file.
 
-void FileMapInfo::write_space(int i, CompactibleSpace* space, bool read_only) {
+void FileMapInfo::write_space(int i, Metaspace* space, bool read_only) {
   align_file_position();
+  size_t used = space->used_words(Metaspace::NonClassType) * BytesPerWord;
+  size_t capacity = space->capacity_words(Metaspace::NonClassType) * BytesPerWord;
   struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[i];
-  write_region(i, (char*)space->bottom(), space->used(),
-               space->capacity(), read_only, false);
+  write_region(i, (char*)space->bottom(), used, capacity, read_only, false);
 }
 
 
@@ -223,8 +224,8 @@
   if (_file_open) {
     guarantee(si->_file_offset == _file_offset, "file offset mismatch.");
     if (PrintSharedSpaces) {
-      tty->print_cr("Shared file region %d: 0x%x bytes, addr 0x%x,"
-                    " file offset 0x%x", region, size, base, _file_offset);
+      tty->print_cr("Shared file region %d: 0x%6x bytes, addr " INTPTR_FORMAT
+                    " file offset 0x%6x", region, size, base, _file_offset);
     }
   } else {
     si->_file_offset = _file_offset;
@@ -297,26 +298,6 @@
 }
 
 
-// Memory map a shared space from the archive file.
-
-bool FileMapInfo::map_space(int i, ReservedSpace rs, ContiguousSpace* space) {
-  struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[i];
-  if (space != NULL) {
-    if (si->_base != (char*)space->bottom() ||
-        si->_capacity != space->capacity()) {
-      fail_continue("Shared space base address does not match.");
-      return false;
-    }
-  }
-  bool result = (map_region(i, rs) != NULL);
-  if (space != NULL && result) {
-    space->set_top((HeapWord*)(si->_base + si->_used));
-    space->set_saved_mark();
-  }
-  return result;
-}
-
-
 // JVM/TI RedefineClasses() support:
 // Remap the shared readonly space to shared readwrite, private.
 bool FileMapInfo::remap_shared_readonly_as_readwrite() {
@@ -346,6 +327,25 @@
   return true;
 }
 
+// Map the whole region at once, assumed to be allocated contiguously.
+ReservedSpace FileMapInfo::reserve_shared_memory() {
+  struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[0];
+  char* requested_addr = si->_base;
+  size_t alignment = os::vm_allocation_granularity();
+
+  size_t size = align_size_up(SharedReadOnlySize + SharedReadWriteSize +
+                              SharedMiscDataSize + SharedMiscCodeSize,
+                              alignment);
+
+  // Reserve the space first, then map otherwise map will go right over some
+  // other reserved memory (like the code cache).
+  ReservedSpace rs(size, alignment, false, requested_addr);
+  if (!rs.is_reserved()) {
+    fail_continue(err_msg("Unable to reserved shared space at required address " INTPTR_FORMAT, requested_addr));
+    return rs;
+  }
+  return rs;
+}
 
 // Memory map a region in the address space.
 
@@ -358,35 +358,28 @@
   ReservedSpace unmapped_rs = rs.last_part(size);
   mapped_rs.release();
 
-  return map_region(i, true);
+  return map_region(i);
 }
 
 
 // Memory map a region in the address space.
+static const char* shared_region_name[] = { "ReadOnly", "ReadWrite", "MiscData", "MiscCode"};
 
-char* FileMapInfo::map_region(int i, bool address_must_match) {
+char* FileMapInfo::map_region(int i) {
   struct FileMapInfo::FileMapHeader::space_info* si = &_header._space[i];
   size_t used = si->_used;
-  size_t size = align_size_up(used, os::vm_allocation_granularity());
-  char *requested_addr = 0;
-  if (address_must_match) {
-    requested_addr = si->_base;
-  }
+  size_t alignment = os::vm_allocation_granularity();
+  size_t size = align_size_up(used, alignment);
+  char *requested_addr = si->_base;
+
+  // map the contents of the CDS archive in this memory
   char *base = os::map_memory(_fd, _full_path, si->_file_offset,
                               requested_addr, size, si->_read_only,
                               si->_allow_exec);
-  if (base == NULL) {
-    fail_continue("Unable to map shared space.");
+  if (base == NULL || base != si->_base) {
+    fail_continue(err_msg("Unable to map %s shared space at required address.", shared_region_name[i]));
     return NULL;
   }
-  if (address_must_match) {
-    if (base != si->_base) {
-      fail_continue("Unable to map shared space at required address.");
-      return NULL;
-    }
-  } else {
-    si->_base = base;          // save mapped address for unmapping.
-  }
   return base;
 }
 
@@ -417,8 +410,6 @@
 // information (version, boot classpath, etc.).  If initialization
 // fails, shared spaces are disabled and the file is closed. [See
 // fail_continue.]
-
-
 bool FileMapInfo::initialize() {
   assert(UseSharedSpaces, "UseSharedSpaces expected.");
 
@@ -518,7 +509,7 @@
 // Return:
 // True if the p is within the mapped shared space, otherwise, false.
 bool FileMapInfo::is_in_shared_space(const void* p) {
-  for (int i = 0; i < CompactingPermGenGen::n_regions; i++) {
+  for (int i = 0; i < MetaspaceShared::n_regions; i++) {
     if (p >= _header._space[i]._base &&
         p < _header._space[i]._base + _header._space[i]._used) {
       return true;
--- a/src/share/vm/memory/filemap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/filemap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -25,8 +25,7 @@
 #ifndef SHARE_VM_MEMORY_FILEMAP_HPP
 #define SHARE_VM_MEMORY_FILEMAP_HPP
 
-#include "memory/compactingPermGenGen.hpp"
-#include "memory/space.hpp"
+#include "memory/metaspaceShared.hpp"
 
 // Layout of the file:
 //  header: dump of archive instance plus versioning info, datestamp, etc.
@@ -43,6 +42,7 @@
 static const int JVM_ARCH_MAX = 12;
 
 
+class Metaspace;
 
 class FileMapInfo : public CHeapObj<mtInternal> {
 private:
@@ -71,7 +71,7 @@
       size_t _used;          // for setting space top on read
       bool   _read_only;     // read only space?
       bool   _allow_exec;    // executable code in space?
-    } _space[CompactingPermGenGen::n_regions];
+    } _space[MetaspaceShared::n_regions];
 
     // The following fields are all sanity checks for whether this archive
     // will function correctly with this JVM and the bootclasspath it's
@@ -120,17 +120,17 @@
   bool  open_for_read();
   void  open_for_write();
   void  write_header();
-  void  write_space(int i, CompactibleSpace* space, bool read_only);
+  void  write_space(int i, Metaspace* space, bool read_only);
   void  write_region(int region, char* base, size_t size,
                      size_t capacity, bool read_only, bool allow_exec);
   void  write_bytes(const void* buffer, int count);
   void  write_bytes_aligned(const void* buffer, int count);
-  bool  map_space(int i, ReservedSpace rs, ContiguousSpace *space);
   char* map_region(int i, ReservedSpace rs);
-  char* map_region(int i, bool address_must_match);
+  char* map_region(int i);
   void  unmap_region(int i);
   void  close();
   bool  is_open() { return _file_open; }
+  ReservedSpace reserve_shared_memory();
 
   // JVM/TI RedefineClasses() support:
   // Remap the shared readonly space to shared readwrite, private.
--- a/src/share/vm/memory/freeBlockDictionary.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/freeBlockDictionary.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -48,6 +48,10 @@
   };
 
  private:
+  // This field is added and can be set to point to the
+  // the Mutex used to synchronize access to the
+  // dictionary so that assertion checking can be done.
+  // For example it is set to point to _parDictionaryAllocLock.
   NOT_PRODUCT(Mutex* _lock;)
 
  public:
--- a/src/share/vm/memory/genCollectedHeap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genCollectedHeap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,14 +30,12 @@
 #include "gc_implementation/shared/collectorCounters.hpp"
 #include "gc_implementation/shared/vmGCOperations.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/compactPermGen.hpp"
 #include "memory/filemap.hpp"
 #include "memory/gcLocker.inline.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/genOopClosures.inline.hpp"
 #include "memory/generation.inline.hpp"
 #include "memory/generationSpec.hpp"
-#include "memory/permGen.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/sharedHeap.hpp"
 #include "memory/space.hpp"
@@ -80,7 +78,6 @@
     vm_exit_during_initialization("Failed necessary allocation.");
   }
   assert(policy != NULL, "Sanity check");
-  _preloading_shared_classes = false;
 }
 
 jint GenCollectedHeap::initialize() {
@@ -100,28 +97,11 @@
   size_t alignment = Generation::GenGrain;
 
   _gen_specs = gen_policy()->generations();
-  PermanentGenerationSpec *perm_gen_spec =
-                                collector_policy()->permanent_generation();
 
   // Make sure the sizes are all aligned.
   for (i = 0; i < _n_gens; i++) {
     _gen_specs[i]->align(alignment);
   }
-  perm_gen_spec->align(alignment);
-
-  // If we are dumping the heap, then allocate a wasted block of address
-  // space in order to push the heap to a lower address.  This extra
-  // address range allows for other (or larger) libraries to be loaded
-  // without them occupying the space required for the shared spaces.
-
-  if (DumpSharedSpaces) {
-    uintx reserved = 0;
-    uintx block_size = 64*1024*1024;
-    while (reserved < SharedDummyBlockSize) {
-      char* dummy = os::reserve_memory(block_size);
-      reserved += block_size;
-    }
-  }
 
   // Allocate space for the heap.
 
@@ -130,21 +110,9 @@
   int n_covered_regions = 0;
   ReservedSpace heap_rs(0);
 
-  heap_address = allocate(alignment, perm_gen_spec, &total_reserved,
+  heap_address = allocate(alignment, &total_reserved,
                           &n_covered_regions, &heap_rs);
 
-  if (UseSharedSpaces) {
-    if (!heap_rs.is_reserved() || heap_address != heap_rs.base()) {
-      if (heap_rs.is_reserved()) {
-        heap_rs.release();
-      }
-      FileMapInfo* mapinfo = FileMapInfo::current_info();
-      mapinfo->fail_continue("Unable to reserve shared region.");
-      allocate(alignment, perm_gen_spec, &total_reserved, &n_covered_regions,
-               &heap_rs);
-    }
-  }
-
   if (!heap_rs.is_reserved()) {
     vm_shutdown_during_initialization(
       "Could not reserve enough space for object heap");
@@ -158,8 +126,7 @@
   // temporarily think somethings in the heap.  (Seen this happen in asserts.)
   _reserved.set_word_size(0);
   _reserved.set_start((HeapWord*)heap_rs.base());
-  size_t actual_heap_size = heap_rs.size() - perm_gen_spec->misc_data_size()
-                                           - perm_gen_spec->misc_code_size();
+  size_t actual_heap_size = heap_rs.size();
   _reserved.set_end((HeapWord*)(heap_rs.base() + actual_heap_size));
 
   _rem_set = collector_policy()->create_rem_set(_reserved, n_covered_regions);
@@ -168,13 +135,10 @@
   _gch = this;
 
   for (i = 0; i < _n_gens; i++) {
-    ReservedSpace this_rs = heap_rs.first_part(_gen_specs[i]->max_size(),
-                                              UseSharedSpaces, UseSharedSpaces);
+    ReservedSpace this_rs = heap_rs.first_part(_gen_specs[i]->max_size(), false, false);
     _gens[i] = _gen_specs[i]->init(this_rs, i, rem_set());
     heap_rs = heap_rs.last_part(_gen_specs[i]->max_size());
   }
-  _perm_gen = perm_gen_spec->init(heap_rs, PermSize, rem_set());
-
   clear_incremental_collection_failed();
 
 #ifndef SERIALGC
@@ -191,7 +155,6 @@
 
 
 char* GenCollectedHeap::allocate(size_t alignment,
-                                 PermanentGenerationSpec* perm_gen_spec,
                                  size_t* _total_reserved,
                                  int* _n_covered_regions,
                                  ReservedSpace* heap_rs){
@@ -214,25 +177,10 @@
   assert(total_reserved % pageSize == 0,
          err_msg("Gen size; total_reserved=" SIZE_FORMAT ", pageSize="
                  SIZE_FORMAT, total_reserved, pageSize));
-  total_reserved += perm_gen_spec->max_size();
-  assert(total_reserved % pageSize == 0,
-         err_msg("Perm size; total_reserved=" SIZE_FORMAT ", pageSize="
-                 SIZE_FORMAT ", perm gen max=" SIZE_FORMAT, total_reserved,
-                 pageSize, perm_gen_spec->max_size()));
 
-  if (total_reserved < perm_gen_spec->max_size()) {
-    vm_exit_during_initialization(overflow_msg);
-  }
-  n_covered_regions += perm_gen_spec->n_covered_regions();
-
-  // Add the size of the data area which shares the same reserved area
-  // as the heap, but which is not actually part of the heap.
-  size_t s = perm_gen_spec->misc_data_size() + perm_gen_spec->misc_code_size();
-
-  total_reserved += s;
-  if (total_reserved < s) {
-    vm_exit_during_initialization(overflow_msg);
-  }
+  // Needed until the cardtable is fixed to have the right number
+  // of covered regions.
+  n_covered_regions += 2;
 
   if (UseLargePages) {
     assert(total_reserved != 0, "total_reserved cannot be 0");
@@ -242,55 +190,10 @@
     }
   }
 
-  // Calculate the address at which the heap must reside in order for
-  // the shared data to be at the required address.
-
-  char* heap_address;
-  if (UseSharedSpaces) {
-
-    // Calculate the address of the first word beyond the heap.
-    FileMapInfo* mapinfo = FileMapInfo::current_info();
-    int lr = CompactingPermGenGen::n_regions - 1;
-    size_t capacity = align_size_up(mapinfo->space_capacity(lr), alignment);
-    heap_address = mapinfo->region_base(lr) + capacity;
-
-    // Calculate the address of the first word of the heap.
-    heap_address -= total_reserved;
-  } else {
-    heap_address = NULL;  // any address will do.
-    if (UseCompressedOops) {
-      heap_address = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
       *_total_reserved = total_reserved;
       *_n_covered_regions = n_covered_regions;
-      *heap_rs = ReservedHeapSpace(total_reserved, alignment,
-                                   UseLargePages, heap_address);
-
-      if (heap_address != NULL && !heap_rs->is_reserved()) {
-        // Failed to reserve at specified address - the requested memory
-        // region is taken already, for example, by 'java' launcher.
-        // Try again to reserver heap higher.
-        heap_address = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
-        *heap_rs = ReservedHeapSpace(total_reserved, alignment,
-                                     UseLargePages, heap_address);
-
-        if (heap_address != NULL && !heap_rs->is_reserved()) {
-          // Failed to reserve at specified address again - give up.
-          heap_address = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
-          assert(heap_address == NULL, "");
-          *heap_rs = ReservedHeapSpace(total_reserved, alignment,
-                                       UseLargePages, heap_address);
-        }
-      }
-      return heap_address;
-    }
-  }
-
-  *_total_reserved = total_reserved;
-  *_n_covered_regions = n_covered_regions;
-  *heap_rs = ReservedHeapSpace(total_reserved, alignment,
-                               UseLargePages, heap_address);
-
-  return heap_address;
+  *heap_rs = Universe::reserve_heap(total_reserved, alignment);
+  return heap_rs->base();
 }
 
 
@@ -340,16 +243,12 @@
   return res;
 }
 
-// Save the "used_region" for generations level and lower,
-// and, if perm is true, for perm gen.
-void GenCollectedHeap::save_used_regions(int level, bool perm) {
+// Save the "used_region" for generations level and lower.
+void GenCollectedHeap::save_used_regions(int level) {
   assert(level < _n_gens, "Illegal level parameter");
   for (int i = level; i >= 0; i--) {
     _gens[i]->save_used_region();
   }
-  if (perm) {
-    perm_gen()->save_used_region();
-  }
 }
 
 size_t GenCollectedHeap::max_capacity() const {
@@ -477,7 +376,7 @@
 
   ClearedAllSoftRefs casr(do_clear_all_soft_refs, collector_policy());
 
-  const size_t perm_prev_used = perm_gen()->used();
+  const size_t metadata_prev_used = MetaspaceAux::used_in_bytes();
 
   print_heap_before_gc();
 
@@ -642,9 +541,9 @@
     if (PrintGCDetails) {
       print_heap_change(gch_prev_used);
 
-      // Print perm gen info for full GC with PrintGCDetails flag.
+      // Print metaspace info for full GC with PrintGCDetails flag.
       if (complete) {
-        print_perm_heap_change(perm_prev_used);
+        MetaspaceAux::print_metaspace_change(metadata_prev_used);
       }
     }
 
@@ -654,8 +553,8 @@
     }
 
     if (complete) {
-      // Ask the permanent generation to adjust size for full collections
-      perm()->compute_new_size();
+      // Resize the metaspace capacity after full collections
+      MetaspaceGC::compute_new_size();
       update_full_collections_completed();
     }
 
@@ -664,6 +563,11 @@
 
     gc_epilogue(complete);
 
+    // Delete metaspaces for unloaded class loaders and clean up loader_data graph
+    if (complete) {
+      ClassLoaderDataGraph::purge();
+    }
+
     if (must_restore_marks_for_biased_locking) {
       BiasedLocking::restore_marks();
     }
@@ -692,21 +596,22 @@
 gen_process_strong_roots(int level,
                          bool younger_gens_as_roots,
                          bool activate_scope,
-                         bool collecting_perm_gen,
+                         bool is_scavenging,
                          SharedHeap::ScanningOption so,
                          OopsInGenClosure* not_older_gens,
                          bool do_code_roots,
-                         OopsInGenClosure* older_gens) {
+                         OopsInGenClosure* older_gens,
+                         KlassClosure* klass_closure) {
   // General strong roots.
 
   if (!do_code_roots) {
-    SharedHeap::process_strong_roots(activate_scope, collecting_perm_gen, so,
-                                     not_older_gens, NULL, older_gens);
+    SharedHeap::process_strong_roots(activate_scope, is_scavenging, so,
+                                     not_older_gens, NULL, klass_closure);
   } else {
     bool do_code_marking = (activate_scope || nmethod::oops_do_marking_is_active());
     CodeBlobToOopClosure code_roots(not_older_gens, /*do_marking=*/ do_code_marking);
-    SharedHeap::process_strong_roots(activate_scope, collecting_perm_gen, so,
-                                     not_older_gens, &code_roots, older_gens);
+    SharedHeap::process_strong_roots(activate_scope, is_scavenging, so,
+                                     not_older_gens, &code_roots, klass_closure);
   }
 
   if (younger_gens_as_roots) {
@@ -748,7 +653,6 @@
   for (int i = level+1; i < n_gens(); i++) {                            \
     _gens[i]->oop_since_save_marks_iterate##nv_suffix(older);           \
   }                                                                     \
-  perm_gen()->oop_since_save_marks_iterate##nv_suffix(older);           \
 }
 
 ALL_SINCE_SAVE_MARKS_CLOSURES(GCH_SINCE_SAVE_MARKS_ITERATE_DEFN)
@@ -759,7 +663,7 @@
   for (int i = level; i < _n_gens; i++) {
     if (!_gens[i]->no_allocs_since_save_marks()) return false;
   }
-  return perm_gen()->no_allocs_since_save_marks();
+  return true;
 }
 
 bool GenCollectedHeap::supports_inline_contig_alloc() const {
@@ -811,27 +715,6 @@
   collect_locked(cause, max_level);
 }
 
-// This interface assumes that it's being called by the
-// vm thread. It collects the heap assuming that the
-// heap lock is already held and that we are executing in
-// the context of the vm thread.
-void GenCollectedHeap::collect_as_vm_thread(GCCause::Cause cause) {
-  assert(Thread::current()->is_VM_thread(), "Precondition#1");
-  assert(Heap_lock->is_locked(), "Precondition#2");
-  GCCauseSetter gcs(this, cause);
-  switch (cause) {
-    case GCCause::_heap_inspection:
-    case GCCause::_heap_dump: {
-      HandleMark hm;
-      do_full_collection(false,         // don't clear all soft refs
-                         n_gens() - 1);
-      break;
-    }
-    default: // XXX FIX ME
-      ShouldNotReachHere(); // Unexpected use of this function
-  }
-}
-
 void GenCollectedHeap::collect_locked(GCCause::Cause cause) {
   // The caller has the Heap_lock
   assert(Heap_lock->owned_by_self(), "this thread should own the Heap_lock");
@@ -842,9 +725,6 @@
 // The Heap_lock is expected to be held on entry.
 
 void GenCollectedHeap::collect_locked(GCCause::Cause cause, int max_level) {
-  if (_preloading_shared_classes) {
-    report_out_of_shared_space(SharedPermGen);
-  }
   // Read the GC count while holding the Heap_lock
   unsigned int gc_count_before      = total_collections();
   unsigned int full_gc_count_before = total_full_collections();
@@ -860,14 +740,12 @@
 bool GenCollectedHeap::create_cms_collector() {
 
   assert(((_gens[1]->kind() == Generation::ConcurrentMarkSweep) ||
-         (_gens[1]->kind() == Generation::ASConcurrentMarkSweep)) &&
-         _perm_gen->as_gen()->kind() == Generation::ConcurrentMarkSweep,
+         (_gens[1]->kind() == Generation::ASConcurrentMarkSweep)),
          "Unexpected generation kinds");
   // Skip two header words in the block content verification
   NOT_PRODUCT(_skip_header_HeapWords = CMSCollector::skip_header_HeapWords();)
   CMSCollector* collector = new CMSCollector(
     (ConcurrentMarkSweepGeneration*)_gens[1],
-    (ConcurrentMarkSweepGeneration*)_perm_gen->as_gen(),
     _rem_set->as_CardTableRS(),
     (ConcurrentMarkSweepPolicy*) collector_policy());
 
@@ -896,6 +774,9 @@
 }
 #endif // SERIALGC
 
+void GenCollectedHeap::do_full_collection(bool clear_all_soft_refs) {
+   do_full_collection(clear_all_soft_refs, _n_gens - 1);
+}
 
 void GenCollectedHeap::do_full_collection(bool clear_all_soft_refs,
                                           int max_level) {
@@ -954,7 +835,6 @@
   for (int i = 0; i < _n_gens; i++) {
     if (_gens[i]->is_in(p)) return true;
   }
-  if (_perm_gen->as_gen()->is_in(p)) return true;
   // Otherwise...
   return false;
 }
@@ -965,18 +845,17 @@
 bool GenCollectedHeap::is_in_partial_collection(const void* p) {
   assert(is_in_reserved(p) || p == NULL,
     "Does not work if address is non-null and outside of the heap");
-  // The order of the generations is young (low addr), old, perm (high addr)
   return p < _gens[_n_gens - 2]->reserved().end() && p != NULL;
 }
 #endif
 
-void GenCollectedHeap::oop_iterate(OopClosure* cl) {
+void GenCollectedHeap::oop_iterate(ExtendedOopClosure* cl) {
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->oop_iterate(cl);
   }
 }
 
-void GenCollectedHeap::oop_iterate(MemRegion mr, OopClosure* cl) {
+void GenCollectedHeap::oop_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->oop_iterate(mr, cl);
   }
@@ -986,14 +865,12 @@
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->object_iterate(cl);
   }
-  perm_gen()->object_iterate(cl);
 }
 
 void GenCollectedHeap::safe_object_iterate(ObjectClosure* cl) {
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->safe_object_iterate(cl);
   }
-  perm_gen()->safe_object_iterate(cl);
 }
 
 void GenCollectedHeap::object_iterate_since_last_GC(ObjectClosure* cl) {
@@ -1007,8 +884,6 @@
     Space* res = _gens[i]->space_containing(addr);
     if (res != NULL) return res;
   }
-  Space* res = perm_gen()->space_containing(addr);
-  if (res != NULL) return res;
   // Otherwise...
   assert(false, "Could not find containing space");
   return NULL;
@@ -1024,11 +899,6 @@
       return _gens[i]->block_start(addr);
     }
   }
-  if (perm_gen()->is_in_reserved(addr)) {
-    assert(perm_gen()->is_in(addr),
-           "addr should be in allocated part of perm gen");
-    return perm_gen()->block_start(addr);
-  }
   assert(false, "Some generation should contain the address");
   return NULL;
 }
@@ -1042,11 +912,6 @@
       return _gens[i]->block_size(addr);
     }
   }
-  if (perm_gen()->is_in_reserved(addr)) {
-    assert(perm_gen()->is_in(addr),
-           "addr should be in allocated part of perm gen");
-    return perm_gen()->block_size(addr);
-  }
   assert(false, "Some generation should contain the address");
   return 0;
 }
@@ -1059,9 +924,6 @@
       return _gens[i]->block_is_obj(addr);
     }
   }
-  if (perm_gen()->is_in_reserved(addr)) {
-    return perm_gen()->block_is_obj(addr);
-  }
   assert(false, "Some generation should contain the address");
   return false;
 }
@@ -1164,7 +1026,6 @@
   ensure_parsability(false);        // no need to retire TLABs
   GenPrepareForVerifyClosure blk;
   generation_iterate(&blk, false);
-  perm_gen()->prepare_for_verify();
 }
 
 
@@ -1185,11 +1046,10 @@
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->space_iterate(cl, true);
   }
-  perm_gen()->space_iterate(cl, true);
 }
 
 bool GenCollectedHeap::is_maximal_no_gc() const {
-  for (int i = 0; i < _n_gens; i++) {  // skip perm gen
+  for (int i = 0; i < _n_gens; i++) {
     if (!_gens[i]->is_maximal_no_gc()) {
       return false;
     }
@@ -1201,7 +1061,6 @@
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->save_marks();
   }
-  perm_gen()->save_marks();
 }
 
 void GenCollectedHeap::compute_new_generation_sizes(int collectedGen) {
@@ -1232,10 +1091,6 @@
 }
 
 void GenCollectedHeap::verify(bool silent, VerifyOption option /* ignored */) {
-  if (!silent) {
-    gclog_or_tty->print("permgen ");
-  }
-  perm_gen()->verify();
   for (int i = _n_gens-1; i >= 0; i--) {
     Generation* g = _gens[i];
     if (!silent) {
@@ -1254,7 +1109,7 @@
   for (int i = 0; i < _n_gens; i++) {
     _gens[i]->print_on(st);
   }
-  perm_gen()->print_on(st);
+  MetaspaceAux::print_on(st);
 }
 
 void GenCollectedHeap::gc_threads_do(ThreadClosure* tc) const {
@@ -1302,13 +1157,6 @@
   }
 }
 
-//New method to print perm gen info with PrintGCDetails flag
-void GenCollectedHeap::print_perm_heap_change(size_t perm_prev_used) const {
-  gclog_or_tty->print(", [%s :", perm_gen()->short_name());
-  perm_gen()->print_heap_change(perm_prev_used);
-  gclog_or_tty->print("]");
-}
-
 class GenGCPrologueClosure: public GenCollectedHeap::GenClosure {
  private:
   bool _full;
@@ -1332,7 +1180,6 @@
   // Walk generations
   GenGCPrologueClosure blk(full);
   generation_iterate(&blk, false);  // not old-to-young.
-  perm_gen()->gc_prologue(full);
 };
 
 class GenGCEpilogueClosure: public GenCollectedHeap::GenClosure {
@@ -1356,12 +1203,13 @@
 
   GenGCEpilogueClosure blk(full);
   generation_iterate(&blk, false);  // not old-to-young.
-  perm_gen()->gc_epilogue(full);
 
   if (!CleanChunkPoolAsync) {
     Chunk::clean_chunk_pool();
   }
 
+  MetaspaceCounters::update_performance_counters();
+
   always_do_update_barrier = UseConcMarkSweepGC;
 };
 
@@ -1378,7 +1226,6 @@
   if (ZapUnusedHeapArea) {
     GenGCSaveTopsBeforeGCClosure blk;
     generation_iterate(&blk, false);  // not old-to-young.
-    perm_gen()->record_spaces_top();
   }
 }
 #endif  // not PRODUCT
@@ -1394,7 +1241,6 @@
   CollectedHeap::ensure_parsability(retire_tlabs);
   GenEnsureParsabilityClosure ep_cl;
   generation_iterate(&ep_cl, false);
-  perm_gen()->ensure_parsability();
 }
 
 oop GenCollectedHeap::handle_failed_promotion(Generation* gen,
@@ -1447,7 +1293,6 @@
   // iterate over generations getting the oldest
   // time that a generation was collected
   generation_iterate(&tolgc_cl, false);
-  tolgc_cl.do_generation(perm_gen());
 
   // javaTimeNanos() is guaranteed to be monotonically non-decreasing
   // provided the underlying platform provides such a time source
--- a/src/share/vm/memory/genCollectedHeap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genCollectedHeap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -43,7 +43,6 @@
   friend class CMSCollector;
   friend class GenMarkSweep;
   friend class VM_GenCollectForAllocation;
-  friend class VM_GenCollectForPermanentAllocation;
   friend class VM_GenCollectFull;
   friend class VM_GenCollectFullConcurrent;
   friend class VM_GC_HeapInspection;
@@ -86,10 +85,6 @@
   // In block contents verification, the number of header words to skip
   NOT_PRODUCT(static size_t _skip_header_HeapWords;)
 
-  // GC is not allowed during the dump of the shared classes.  Keep track
-  // of this in order to provide an reasonable error message when terminating.
-  bool _preloading_shared_classes;
-
 protected:
   // Directs each generation up to and including "collectedGen" to recompute
   // its desired size.
@@ -116,6 +111,7 @@
 
   // Callback from VM_GenCollectFull operation.
   // Perform a full collection of the first max_level+1 generations.
+  virtual void do_full_collection(bool clear_all_soft_refs);
   void do_full_collection(bool clear_all_soft_refs, int max_level);
 
   // Does the "cause" of GC indicate that
@@ -129,7 +125,7 @@
 
   // Returns JNI_OK on success
   virtual jint initialize();
-  char* allocate(size_t alignment, PermanentGenerationSpec* perm_gen_spec,
+  char* allocate(size_t alignment,
                  size_t* _total_reserved, int* _n_covered_regions,
                  ReservedSpace* heap_rs);
 
@@ -145,6 +141,7 @@
 
   // The generational collector policy.
   GenCollectorPolicy* gen_policy() const { return _gen_policy; }
+  virtual CollectorPolicy* collector_policy() const { return (CollectorPolicy*) gen_policy(); }
 
   // Adaptive size policy
   virtual AdaptiveSizePolicy* size_policy() {
@@ -154,9 +151,8 @@
   size_t capacity() const;
   size_t used() const;
 
-  // Save the "used_region" for generations level and lower,
-  // and, if perm is true, for perm gen.
-  void save_used_regions(int level, bool perm);
+  // Save the "used_region" for generations level and lower.
+  void save_used_regions(int level);
 
   size_t max_capacity() const;
 
@@ -185,12 +181,6 @@
   // supports. Caller does not hold the Heap_lock on entry.
   void collect(GCCause::Cause cause);
 
-  // This interface assumes that it's being called by the
-  // vm thread. It collects the heap assuming that the
-  // heap lock is already held and that we are executing in
-  // the context of the vm thread.
-  void collect_as_vm_thread(GCCause::Cause cause);
-
   // The same as above but assume that the caller holds the Heap_lock.
   void collect_locked(GCCause::Cause cause);
 
@@ -228,8 +218,8 @@
   }
 
   // Iteration functions.
-  void oop_iterate(OopClosure* cl);
-  void oop_iterate(MemRegion mr, OopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
+  void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
   void object_iterate(ObjectClosure* cl);
   void safe_object_iterate(ObjectClosure* cl);
   void object_iterate_since_last_GC(ObjectClosure* cl);
@@ -294,14 +284,6 @@
     return is_in_young(new_obj);
   }
 
-  // Can a compiler elide a store barrier when it writes
-  // a permanent oop into the heap?  Applies when the compiler
-  // is storing x to the heap, where x->is_perm() is true.
-  virtual bool can_elide_permanent_oop_store_barriers() const {
-    // CMS needs to see all, even intra-generational, ref updates.
-    return !UseConcMarkSweepGC;
-  }
-
   // The "requestor" generation is performing some garbage collection
   // action for which it would be useful to have scratch space.  The
   // requestor promises to allocate no more than "max_alloc_words" in any
@@ -338,7 +320,6 @@
     for (int i = 0; i < _n_gens; i++) {
       _gens[i]->update_time_of_last_gc(now);
     }
-    perm_gen()->update_time_of_last_gc(now);
   }
 
   // Update the gc statistics for each generation.
@@ -347,7 +328,6 @@
     for (int i = 0; i < _n_gens; i++) {
       _gens[i]->update_gc_stats(current_level, full);
     }
-    perm_gen()->update_gc_stats(current_level, full);
   }
 
   // Override.
@@ -367,7 +347,6 @@
 
   // PrintGC, PrintGCDetails support
   void print_heap_change(size_t prev_used) const;
-  void print_perm_heap_change(size_t perm_prev_used) const;
 
   // The functions below are helper functions that a subclass of
   // "CollectedHeap" can use in the implementation of its virtual
@@ -378,13 +357,13 @@
     virtual void do_generation(Generation* gen) = 0;
   };
 
-  // Apply "cl.do_generation" to all generations in the heap (not including
-  // the permanent generation).  If "old_to_young" determines the order.
+  // Apply "cl.do_generation" to all generations in the heap
+  // If "old_to_young" determines the order.
   void generation_iterate(GenClosure* cl, bool old_to_young);
 
   void space_iterate(SpaceClosure* cl);
 
-  // Return "true" if all generations (but perm) have reached the
+  // Return "true" if all generations have reached the
   // maximal committed limit that they can reach, without a garbage
   // collection.
   virtual bool is_maximal_no_gc() const;
@@ -429,10 +408,8 @@
   // not scanned as roots; in this case, the caller must be arranging to
   // scan the younger generations itself.  (For example, a generation might
   // explicitly mark reachable objects in younger generations, to avoid
-  // excess storage retention.)  If "collecting_perm_gen" is false, then
-  // roots that may only contain references to permGen objects are not
-  // scanned; instead, the older_gens closure is applied to all outgoing
-  // references in the perm gen.  The "so" argument determines which of the roots
+  // excess storage retention.)
+  // The "so" argument determines which of the roots
   // the closure is applied to:
   // "SO_None" does none;
   // "SO_AllClasses" applies the closure to all entries in the SystemDictionary;
@@ -443,11 +420,12 @@
                                 // The remaining arguments are in an order
                                 // consistent with SharedHeap::process_strong_roots:
                                 bool activate_scope,
-                                bool collecting_perm_gen,
+                                bool is_scavenging,
                                 SharedHeap::ScanningOption so,
                                 OopsInGenClosure* not_older_gens,
                                 bool do_code_roots,
-                                OopsInGenClosure* older_gens);
+                                OopsInGenClosure* older_gens,
+                                KlassClosure* klass_closure);
 
   // Apply "blk" to all the weak roots of the system.  These include
   // JNI weak roots, the code cache, system dictionary, symbol table,
@@ -463,9 +441,9 @@
 
   // Apply "cur->do_oop" or "older->do_oop" to all the oops in objects
   // allocated since the last call to save_marks in generations at or above
-  // "level" (including the permanent generation.)  The "cur" closure is
+  // "level".  The "cur" closure is
   // applied to references in the generation at "level", and the "older"
-  // closure to older (and permanent) generations.
+  // closure to older generations.
 #define GCH_SINCE_SAVE_MARKS_ITERATE_DECL(OopClosureType, nv_suffix)    \
   void oop_since_save_marks_iterate(int level,                          \
                                     OopClosureType* cur,                \
@@ -476,7 +454,7 @@
 #undef GCH_SINCE_SAVE_MARKS_ITERATE_DECL
 
   // Returns "true" iff no allocations have occurred in any generation at
-  // "level" or above (including the permanent generation) since the last
+  // "level" or above since the last
   // call to "save_marks".
   bool no_allocs_since_save_marks(int level);
 
@@ -506,7 +484,7 @@
     _incremental_collection_failed = false;
   }
 
-  // Promotion of obj into gen failed.  Try to promote obj to higher non-perm
+  // Promotion of obj into gen failed.  Try to promote obj to higher
   // gens in ascending order; return the new location of obj if successful.
   // Otherwise, try expand-and-allocate for obj in each generation starting at
   // gen; return the new location of obj if successful.  Otherwise, return NULL.
@@ -547,9 +525,6 @@
 protected:
   virtual void gc_prologue(bool full);
   virtual void gc_epilogue(bool full);
-
-public:
-  virtual void preload_and_dump(TRAPS) KERNEL_RETURN;
 };
 
 #endif // SHARE_VM_MEMORY_GENCOLLECTEDHEAP_HPP
--- a/src/share/vm/memory/genMarkSweep.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genMarkSweep.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -78,14 +78,13 @@
 
   TraceTime t1(GCCauseString("Full GC", gch->gc_cause()), PrintGC && !PrintGCDetails, true, gclog_or_tty);
 
-  // When collecting the permanent generation methodOops may be moving,
+  // When collecting the permanent generation Method*s may be moving,
   // so we either have to flush all bcp data or convert it into bci.
   CodeCache::gc_prologue();
   Threads::gc_prologue();
 
-  // Increment the invocation count for the permanent generation, since it is
-  // implicitly collected whenever we do a full mark sweep collection.
-  gch->perm_gen()->stat_record()->invocations++;
+  // Increment the invocation count
+  _total_invocations++;
 
   // Capture heap size before collection for printing.
   size_t gch_prev_used = gch->used();
@@ -98,7 +97,7 @@
   // Capture used regions for each generation that will be
   // subject to collection, so that card table adjustments can
   // be made intelligently (see clear / invalidate further below).
-  gch->save_used_regions(level, true /* perm */);
+  gch->save_used_regions(level);
 
   allocate_stacks();
 
@@ -149,14 +148,13 @@
   if (all_empty) {
     // We've evacuated all generations below us.
     Generation* g = gch->get_gen(level);
-    rs->clear_into_younger(g, true /* perm */);
+    rs->clear_into_younger(g);
   } else {
     // Invalidate the cards corresponding to the currently used
     // region and clear those corresponding to the evacuated region
     // of all generations just collected (i.e. level and younger).
     rs->invalidate_or_clear(gch->get_gen(level),
-                            true /* younger */,
-                            true /* perm */);
+                            true /* younger */);
   }
 
   Threads::gc_epilogue();
@@ -238,8 +236,6 @@
   _preserved_oop_stack.clear(true);
   _marking_stack.clear();
   _objarray_stack.clear(true);
-  _revisit_klass_stack.clear(true);
-  _revisit_mdo_stack.clear(true);
 
 #ifdef VALIDATE_MARK_SWEEP
   if (ValidateMarkSweep) {
@@ -261,7 +257,7 @@
   TraceTime tm("phase 1", PrintGC && Verbose, true, gclog_or_tty);
   trace(" 1");
 
-  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
+  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking());
 
   GenCollectedHeap* gch = GenCollectedHeap::heap();
 
@@ -271,14 +267,18 @@
   // are run.
   follow_root_closure.set_orig_generation(gch->get_gen(level));
 
+  // Need new claim bits before marking starts.
+  ClassLoaderDataGraph::clear_claimed_marks();
+
   gch->gen_process_strong_roots(level,
                                 false, // Younger gens are not roots.
                                 true,  // activate StrongRootsScope
-                                true,  // Collecting permanent generation.
+                                false, // not scavenging
                                 SharedHeap::SO_SystemClasses,
                                 &follow_root_closure,
                                 true,   // walk code active on stacks
-                                &follow_root_closure);
+                                &follow_root_closure,
+                                &follow_klass_closure);
 
   // Process reference objects found during marking
   {
@@ -295,11 +295,7 @@
   follow_stack(); // Flush marking stack
 
   // Update subklass/sibling/implementor links of live klasses
-  follow_weak_klass_links();
-  assert(_marking_stack.is_empty(), "just drained");
-
-  // Visit memoized MDO's and clear any unmarked weak refs
-  follow_mdo_weak_refs();
+  Klass::clean_weak_klass_links(&is_alive);
   assert(_marking_stack.is_empty(), "just drained");
 
   // Visit interned string tables and delete unmarked oops
@@ -316,28 +312,23 @@
 
   // It is imperative that we traverse perm_gen LAST. If dead space is
   // allowed a range of dead object may get overwritten by a dead int
-  // array. If perm_gen is not traversed last a klassOop may get
+  // array. If perm_gen is not traversed last a Klass* may get
   // overwritten. This is fine since it is dead, but if the class has dead
   // instances we have to skip them, and in order to find their size we
-  // need the klassOop!
+  // need the Klass*!
   //
   // It is not required that we traverse spaces in the same order in
   // phase2, phase3 and phase4, but the ValidateMarkSweep live oops
   // tracking expects us to do so. See comment under phase4.
 
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  Generation* pg = gch->perm_gen();
 
   TraceTime tm("phase 2", PrintGC && Verbose, true, gclog_or_tty);
   trace("2");
 
-  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
+  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking());
 
   gch->prepare_for_compaction();
-
-  VALIDATE_MARK_SWEEP_ONLY(_live_oops_index_at_perm = _live_oops_index);
-  CompactPoint perm_cp(pg, NULL, NULL);
-  pg->prepare_for_compaction(&perm_cp);
 }
 
 class GenAdjustPointersClosure: public GenCollectedHeap::GenClosure {
@@ -349,16 +340,15 @@
 
 void GenMarkSweep::mark_sweep_phase3(int level) {
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  Generation* pg = gch->perm_gen();
 
   // Adjust the pointers to reflect the new locations
   TraceTime tm("phase 3", PrintGC && Verbose, true, gclog_or_tty);
   trace("3");
 
-  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
+  // Need new claim bits for the pointer adjustment tracing.
+  ClassLoaderDataGraph::clear_claimed_marks();
 
-  // Needs to be done before the system dictionary is adjusted.
-  pg->pre_adjust_pointers();
+  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking());
 
   // Because the two closures below are created statically, cannot
   // use OopsInGenClosure constructor which takes a generation,
@@ -370,11 +360,12 @@
   gch->gen_process_strong_roots(level,
                                 false, // Younger gens are not roots.
                                 true,  // activate StrongRootsScope
-                                true,  // Collecting permanent generation.
+                                false, // not scavenging
                                 SharedHeap::SO_AllClasses,
                                 &adjust_root_pointer_closure,
                                 false, // do not walk code
-                                &adjust_root_pointer_closure);
+                                &adjust_root_pointer_closure,
+                                &adjust_klass_closure);
 
   // Now adjust pointers in remaining weak roots.  (All of which should
   // have been cleared if they pointed to non-surviving objects.)
@@ -387,7 +378,6 @@
   adjust_marks();
   GenAdjustPointersClosure blk;
   gch->generation_iterate(&blk, true);
-  pg->adjust_pointers();
 }
 
 class GenCompactClosure: public GenCollectedHeap::GenClosure {
@@ -402,7 +392,7 @@
 
   // It is imperative that we traverse perm_gen first in phase4. All
   // classes must be allocated earlier than their instances, and traversing
-  // perm_gen first makes sure that all klassOops have moved to their new
+  // perm_gen first makes sure that all Klass*s have moved to their new
   // location before any instance does a dispatch through it's klass!
 
   // The ValidateMarkSweep live oops tracking expects us to traverse spaces
@@ -410,21 +400,14 @@
   // here (perm_gen first rather than last), so we tell the validate code
   // to use a higher index (saved from phase2) when verifying perm_gen.
   GenCollectedHeap* gch = GenCollectedHeap::heap();
-  Generation* pg = gch->perm_gen();
 
   TraceTime tm("phase 4", PrintGC && Verbose, true, gclog_or_tty);
   trace("4");
 
-  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(true));
-
-  pg->compact();
-
-  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
+  VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking());
 
   GenCompactClosure blk;
   gch->generation_iterate(&blk, true);
 
   VALIDATE_MARK_SWEEP_ONLY(compaction_complete());
-
-  pg->post_compact(); // Shared spaces verification.
 }
--- a/src/share/vm/memory/genOopClosures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genOopClosures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -33,6 +33,7 @@
 class CardTableRS;
 class CardTableModRefBS;
 class DefNewGeneration;
+class KlassRemSet;
 
 template<class E, MEMFLAGS F, unsigned int N> class GenericTaskQueue;
 typedef GenericTaskQueue<oop, mtGC, TASKQUEUE_SIZE> OopTaskQueue;
@@ -44,7 +45,7 @@
 // method at the end of their own do_oop method!
 // Note: no do_oop defined, this is an abstract class.
 
-class OopsInGenClosure : public OopClosure {
+class OopsInGenClosure : public ExtendedOopClosure {
  private:
   Generation*  _orig_gen;     // generation originally set in ctor
   Generation*  _gen;          // generation being scanned
@@ -66,7 +67,7 @@
   template <class T> void par_do_barrier(T* p);
 
  public:
-  OopsInGenClosure() : OopClosure(NULL),
+  OopsInGenClosure() : ExtendedOopClosure(NULL),
     _orig_gen(NULL), _gen(NULL), _gen_boundary(NULL), _rs(NULL) {};
 
   OopsInGenClosure(Generation* gen);
@@ -82,13 +83,27 @@
   }
 
   HeapWord* gen_boundary() { return _gen_boundary; }
+
+};
+
+// Super class for scan closures. It contains code to dirty scanned Klasses.
+class OopsInKlassOrGenClosure: public OopsInGenClosure {
+  Klass* _scanned_klass;
+ public:
+  OopsInKlassOrGenClosure(Generation* g) : OopsInGenClosure(g), _scanned_klass(NULL) {}
+  void set_scanned_klass(Klass* k) {
+    assert(k == NULL || _scanned_klass == NULL, "Must be");
+    _scanned_klass = k;
+  }
+  bool is_scanning_a_klass() { return _scanned_klass != NULL; }
+  void do_klass_barrier();
 };
 
 // Closure for scanning DefNewGeneration.
 //
 // This closure will perform barrier store calls for ALL
 // pointers in scanned oops.
-class ScanClosure: public OopsInGenClosure {
+class ScanClosure: public OopsInKlassOrGenClosure {
  protected:
   DefNewGeneration* _g;
   HeapWord*         _boundary;
@@ -100,7 +115,6 @@
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p);
   inline void do_oop_nv(narrowOop* p);
-  bool do_header() { return false; }
   Prefetch::style prefetch_style() {
     return Prefetch::do_write;
   }
@@ -111,7 +125,7 @@
 // This closure only performs barrier store calls on
 // pointers into the DefNewGeneration. This is less
 // precise, but faster, than a ScanClosure
-class FastScanClosure: public OopsInGenClosure {
+class FastScanClosure: public OopsInKlassOrGenClosure {
  protected:
   DefNewGeneration* _g;
   HeapWord*         _boundary;
@@ -123,16 +137,25 @@
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p);
   inline void do_oop_nv(narrowOop* p);
-  bool do_header() { return false; }
   Prefetch::style prefetch_style() {
     return Prefetch::do_write;
   }
 };
 
-class FilteringClosure: public OopClosure {
+class KlassScanClosure: public KlassClosure {
+  OopsInKlassOrGenClosure* _scavenge_closure;
+  // true if the the modified oops state should be saved.
+  bool                     _accumulate_modified_oops;
+ public:
+  KlassScanClosure(OopsInKlassOrGenClosure* scavenge_closure,
+                   KlassRemSet* klass_rem_set_policy);
+  void do_klass(Klass* k);
+};
+
+class FilteringClosure: public ExtendedOopClosure {
  private:
   HeapWord*   _boundary;
-  OopClosure* _cl;
+  ExtendedOopClosure* _cl;
  protected:
   template <class T> inline void do_oop_work(T* p) {
     T heap_oop = oopDesc::load_heap_oop(p);
@@ -144,14 +167,15 @@
     }
   }
  public:
-  FilteringClosure(HeapWord* boundary, OopClosure* cl) :
-    OopClosure(cl->_ref_processor), _boundary(boundary),
+  FilteringClosure(HeapWord* boundary, ExtendedOopClosure* cl) :
+    ExtendedOopClosure(cl->_ref_processor), _boundary(boundary),
     _cl(cl) {}
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
   inline void do_oop_nv(oop* p)       { FilteringClosure::do_oop_work(p); }
   inline void do_oop_nv(narrowOop* p) { FilteringClosure::do_oop_work(p); }
-  bool do_header() { return false; }
+  virtual bool do_metadata()          { return do_metadata_nv(); }
+  inline bool do_metadata_nv()        { assert(!_cl->do_metadata(), "assumption broken, must change to 'return _cl->do_metadata()'"); return false; }
 };
 
 // Closure for scanning DefNewGeneration's weak references.
--- a/src/share/vm/memory/genOopClosures.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genOopClosures.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -35,7 +35,7 @@
 #include "memory/space.hpp"
 
 inline OopsInGenClosure::OopsInGenClosure(Generation* gen) :
-  OopClosure(gen->ref_processor()), _orig_gen(gen), _rs(NULL) {
+  ExtendedOopClosure(gen->ref_processor()), _orig_gen(gen), _rs(NULL) {
   set_generation(gen);
 }
 
@@ -72,6 +72,11 @@
   }
 }
 
+inline void OopsInKlassOrGenClosure::do_klass_barrier() {
+  assert(_scanned_klass != NULL, "Must be");
+  _scanned_klass->record_modified_oops();
+}
+
 // NOTE! Any changes made here should also be made
 // in FastScanClosure::do_oop_work()
 template <class T> inline void ScanClosure::do_oop_work(T* p) {
@@ -85,7 +90,10 @@
                                         : _g->copy_to_survivor_space(obj);
       oopDesc::encode_store_heap_oop_not_null(p, new_obj);
     }
-    if (_gc_barrier) {
+
+    if (is_scanning_a_klass()) {
+      do_klass_barrier();
+    } else if (_gc_barrier) {
       // Now call parent closure
       do_barrier(p);
     }
@@ -107,7 +115,9 @@
       oop new_obj = obj->is_forwarded() ? obj->forwardee()
                                         : _g->copy_to_survivor_space(obj);
       oopDesc::encode_store_heap_oop_not_null(p, new_obj);
-      if (_gc_barrier) {
+      if (is_scanning_a_klass()) {
+        do_klass_barrier();
+      } else if (_gc_barrier) {
         // Now call parent closure
         do_barrier(p);
       }
--- a/src/share/vm/memory/genRemSet.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genRemSet.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/classLoaderData.hpp"
 #include "memory/cardTableRS.hpp"
 #include "memory/genRemSet.hpp"
 
@@ -39,3 +40,43 @@
     return (0); // Make Windows compiler happy
   }
 }
+
+class HasAccumulatedModifiedOopsClosure : public KlassClosure {
+  bool _found;
+ public:
+  HasAccumulatedModifiedOopsClosure() : _found(false) {}
+  void do_klass(Klass* klass) {
+    if (_found) {
+      return;
+    }
+
+    if (klass->has_accumulated_modified_oops()) {
+      _found = true;
+    }
+  }
+  bool found() {
+    return _found;
+  }
+};
+
+bool KlassRemSet::mod_union_is_clear() {
+  HasAccumulatedModifiedOopsClosure closure;
+  ClassLoaderDataGraph::classes_do(&closure);
+
+  return !closure.found();
+}
+
+
+class ClearKlassModUnionClosure : public KlassClosure {
+ public:
+  void do_klass(Klass* klass) {
+    if (klass->has_accumulated_modified_oops()) {
+      klass->clear_accumulated_modified_oops();
+    }
+  }
+};
+
+void KlassRemSet::clear_mod_union() {
+  ClearKlassModUnionClosure closure;
+  ClassLoaderDataGraph::classes_do(&closure);
+}
--- a/src/share/vm/memory/genRemSet.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/genRemSet.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -35,10 +35,22 @@
 class OopsInGenClosure;
 class CardTableRS;
 
+// Helper to remember modified oops in all klasses.
+class KlassRemSet {
+  bool _accumulate_modified_oops;
+ public:
+  KlassRemSet() : _accumulate_modified_oops(false) {}
+  void set_accumulate_modified_oops(bool value) { _accumulate_modified_oops = value; }
+  bool accumulate_modified_oops() { return _accumulate_modified_oops; }
+  bool mod_union_is_clear();
+  void clear_mod_union();
+};
+
 class GenRemSet: public CHeapObj<mtGC> {
   friend class Generation;
 
   BarrierSet* _bs;
+  KlassRemSet _klass_rem_set;
 
 public:
   enum Name {
@@ -62,6 +74,8 @@
   // Set the barrier set.
   void set_bs(BarrierSet* bs) { _bs = bs; }
 
+  KlassRemSet* klass_rem_set() { return &_klass_rem_set; }
+
   // Do any (sequential) processing necessary to prepare for (possibly
   // "parallel", if that arg is true) calls to younger_refs_iterate.
   virtual void prepare_for_younger_refs_iterate(bool parallel) = 0;
@@ -121,7 +135,7 @@
   // younger than gen from generations gen and older.
   // The parameter clear_perm indicates if the perm_gen's
   // remembered set should also be processed/cleared.
-  virtual void clear_into_younger(Generation* gen, bool clear_perm) = 0;
+  virtual void clear_into_younger(Generation* gen) = 0;
 
   // Informs the RS that refs in the given "mr" may have changed
   // arbitrarily, and therefore may contain old-to-young pointers.
@@ -136,7 +150,7 @@
   // younger indicates if the same should be done for younger generations
   // as well. The parameter perm indicates if the same should be done for
   // perm gen as well.
-  virtual void invalidate_or_clear(Generation* gen, bool younger, bool perm) = 0;
+  virtual void invalidate_or_clear(Generation* gen, bool younger) = 0;
 };
 
 #endif // SHARE_VM_MEMORY_GENREMSET_HPP
--- a/src/share/vm/memory/generation.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/generation.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -293,21 +293,21 @@
 
 class GenerationOopIterateClosure : public SpaceClosure {
  public:
-  OopClosure* cl;
+  ExtendedOopClosure* cl;
   MemRegion mr;
   virtual void do_space(Space* s) {
     s->oop_iterate(mr, cl);
   }
-  GenerationOopIterateClosure(OopClosure* _cl, MemRegion _mr) :
+  GenerationOopIterateClosure(ExtendedOopClosure* _cl, MemRegion _mr) :
     cl(_cl), mr(_mr) {}
 };
 
-void Generation::oop_iterate(OopClosure* cl) {
+void Generation::oop_iterate(ExtendedOopClosure* cl) {
   GenerationOopIterateClosure blk(cl, _reserved);
   space_iterate(&blk);
 }
 
-void Generation::oop_iterate(MemRegion mr, OopClosure* cl) {
+void Generation::oop_iterate(MemRegion mr, ExtendedOopClosure* cl) {
   GenerationOopIterateClosure blk(cl, mr);
   space_iterate(&blk);
 }
@@ -435,7 +435,7 @@
     success = grow_to_reserved();
   }
   if (PrintGC && Verbose) {
-    if (success && GC_locker::is_active()) {
+    if (success && GC_locker::is_active_and_needs_gc()) {
       gclog_or_tty->print_cr("Garbage collection disabled, expanded heap instead");
     }
   }
--- a/src/share/vm/memory/generation.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/generation.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -48,18 +48,17 @@
 //   - OneContigSpaceCardGeneration - abstract class holding a single
 //                                    contiguous space with card marking
 //     - TenuredGeneration         - tenured (old object) space (markSweepCompact)
-//     - CompactingPermGenGen      - reflective object area (klasses, methods, symbols, ...)
 //   - ConcurrentMarkSweepGeneration - Mostly Concurrent Mark Sweep Generation
 //                                       (Detlefs-Printezis refinement of
 //                                       Boehm-Demers-Schenker)
 //
 // The system configurations currently allowed are:
 //
-//   DefNewGeneration + TenuredGeneration + PermGeneration
-//   DefNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen
+//   DefNewGeneration + TenuredGeneration
+//   DefNewGeneration + ConcurrentMarkSweepGeneration
 //
-//   ParNewGeneration + TenuredGeneration + PermGeneration
-//   ParNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen
+//   ParNewGeneration + TenuredGeneration
+//   ParNewGeneration + ConcurrentMarkSweepGeneration
 //
 
 class DefNewGeneration;
@@ -442,7 +441,6 @@
   // Mark sweep support phase2
   virtual void prepare_for_compaction(CompactPoint* cp);
   // Mark sweep support phase3
-  virtual void pre_adjust_pointers() {ShouldNotReachHere();}
   virtual void adjust_pointers();
   // Mark sweep support phase4
   virtual void compact();
@@ -538,11 +536,11 @@
 
   // Iterate over all the ref-containing fields of all objects in the
   // generation, calling "cl.do_oop" on each.
-  virtual void oop_iterate(OopClosure* cl);
+  virtual void oop_iterate(ExtendedOopClosure* cl);
 
   // Same as above, restricted to the intersection of a memory region and
   // the generation.
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl);
+  virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
 
   // Iterate over all objects in the generation, calling "cl.do_object" on
   // each.
@@ -666,7 +664,6 @@
 class OneContigSpaceCardGeneration: public CardGeneration {
   friend class VMStructs;
   // Abstractly, this is a subtype that gets access to protected fields.
-  friend class CompactingPermGen;
   friend class VM_PopulateDumpSharedSpace;
 
  protected:
--- a/src/share/vm/memory/generationSpec.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/generationSpec.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -23,7 +23,7 @@
  */
 
 #include "precompiled.hpp"
-#include "memory/compactPermGen.hpp"
+#include "memory/binaryTreeDictionary.hpp"
 #include "memory/defNewGeneration.hpp"
 #include "memory/filemap.hpp"
 #include "memory/genRemSet.hpp"
@@ -31,8 +31,8 @@
 #include "memory/tenuredGeneration.hpp"
 #include "runtime/java.hpp"
 #ifndef SERIALGC
-#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
 #include "gc_implementation/parNew/asParNewGeneration.hpp"
+#include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
 #include "gc_implementation/parNew/parNewGeneration.hpp"
 #endif
 
@@ -101,99 +101,3 @@
       return NULL;
   }
 }
-
-
-PermanentGenerationSpec::PermanentGenerationSpec(PermGen::Name name,
-                      size_t init_size, size_t max_size,
-                      size_t read_only_size, size_t read_write_size,
-                      size_t misc_data_size, size_t misc_code_size) {
-  _name = name;
-  _init_size = init_size;
-
-  if (UseSharedSpaces || DumpSharedSpaces) {
-    _enable_shared_spaces = true;
-    if (UseSharedSpaces) {
-      // Override shared space sizes from those in the file.
-      FileMapInfo* mapinfo = FileMapInfo::current_info();
-      _read_only_size = mapinfo->space_capacity(CompactingPermGenGen::ro);
-      _read_write_size = mapinfo->space_capacity(CompactingPermGenGen::rw);
-      _misc_data_size = mapinfo->space_capacity(CompactingPermGenGen::md);
-      _misc_code_size = mapinfo->space_capacity(CompactingPermGenGen::mc);
-    } else {
-      _read_only_size = read_only_size;
-      _read_write_size = read_write_size;
-      _misc_data_size = misc_data_size;
-      _misc_code_size = misc_code_size;
-    }
-  } else {
-    _enable_shared_spaces = false;
-    _read_only_size = 0;
-    _read_write_size = 0;
-    _misc_data_size = 0;
-    _misc_code_size = 0;
-  }
-
-  _max_size = max_size;
-}
-
-
-PermGen* PermanentGenerationSpec::init(ReservedSpace rs,
-                                       size_t init_size,
-                                       GenRemSet *remset) {
-
-  // Break the reserved spaces into pieces for the permanent space
-  // and the shared spaces.
-  ReservedSpace perm_rs = rs.first_part(_max_size, UseSharedSpaces,
-                                        UseSharedSpaces);
-  ReservedSpace shared_rs = rs.last_part(_max_size);
-
-  if (enable_shared_spaces()) {
-    if (!perm_rs.is_reserved() ||
-        perm_rs.base() + perm_rs.size() != shared_rs.base()) {
-      FileMapInfo* mapinfo = FileMapInfo::current_info();
-      mapinfo->fail_continue("Sharing disabled - unable to "
-                                 "reserve address space.");
-      shared_rs.release();
-      disable_sharing();
-    }
-  }
-
-  switch (name()) {
-    case PermGen::MarkSweepCompact:
-      return new CompactingPermGen(perm_rs, shared_rs, init_size, remset, this);
-
-#ifndef SERIALGC
-    case PermGen::MarkSweep:
-      guarantee(false, "NYI");
-      return NULL;
-
-    case PermGen::ConcurrentMarkSweep: {
-      assert(UseConcMarkSweepGC, "UseConcMarkSweepGC should be set");
-      CardTableRS* ctrs = remset->as_CardTableRS();
-      if (ctrs == NULL) {
-        vm_exit_during_initialization("RemSet/generation incompatibility.");
-      }
-      // XXXPERM
-      return new CMSPermGen(perm_rs, init_size, ctrs,
-                   (FreeBlockDictionary<FreeChunk>::DictionaryChoice)CMSDictionaryChoice);
-    }
-#endif // SERIALGC
-    default:
-      guarantee(false, "unrecognized GenerationName");
-      return NULL;
-  }
-}
-
-
-// Alignment
-void PermanentGenerationSpec::align(size_t alignment) {
-  _init_size       = align_size_up(_init_size,       alignment);
-  _max_size        = align_size_up(_max_size,        alignment);
-  _read_only_size  = align_size_up(_read_only_size,  alignment);
-  _read_write_size = align_size_up(_read_write_size, alignment);
-  _misc_data_size  = align_size_up(_misc_data_size,  alignment);
-  _misc_code_size  = align_size_up(_misc_code_size,  alignment);
-
-  assert(enable_shared_spaces() || (_read_only_size + _read_write_size == 0),
-         "Shared space when disabled?");
-}
--- a/src/share/vm/memory/generationSpec.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/generationSpec.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -26,7 +26,6 @@
 #define SHARE_VM_MEMORY_GENERATIONSPEC_HPP
 
 #include "memory/generation.hpp"
-#include "memory/permGen.hpp"
 
 // The specification of a generation.  This class also encapsulates
 // some generation-specific behavior.  This is done here rather than as a
@@ -68,63 +67,4 @@
 
 typedef GenerationSpec* GenerationSpecPtr;
 
-// The specification of a permanent generation. This class is very
-// similar to GenerationSpec in use. Due to PermGen's not being a
-// true Generation, we cannot combine the spec classes either.
-class PermanentGenerationSpec : public CHeapObj<mtGC> {
-  friend class VMStructs;
-private:
-  PermGen::Name    _name;
-  size_t           _init_size;
-  size_t           _max_size;
-  size_t           _read_only_size;
-  size_t           _read_write_size;
-  size_t           _misc_data_size;
-  size_t           _misc_code_size;
-  bool             _enable_shared_spaces;
-
-  enum {
-    _n_spaces = 2
-  };
-
-public:
-  PermanentGenerationSpec(PermGen::Name name, size_t init_size,
-                          size_t max_size, size_t read_only_size,
-                          size_t read_write_size, size_t misc_data_size,
-                          size_t misc_code_size);
-
-  PermGen* init(ReservedSpace rs, size_t init_size, GenRemSet* remset);
-
-  void disable_sharing() {
-    _enable_shared_spaces = false;
-    _read_only_size = 0;
-    _read_write_size = 0;
-    _misc_data_size = 0;
-    _misc_code_size = 0;
-  }
-
-  // Accessors
-  PermGen::Name name()           const { return _name; }
-  size_t init_size()             const { return _init_size; }
-  void set_init_size(size_t size)      { _init_size = size; }
-
-  // Max size for user DOES NOT include shared spaces.
-  // Max size for space allocation DOES include shared spaces.
-  size_t max_size() const {
-    return _max_size + _read_only_size + _read_write_size;
-  }
-
-  // Need one covered region for the main space, and one for the shared
-  // spaces (together).
-  int n_covered_regions() const { return 2; }
-
-  void align(size_t alignment);
-
-  size_t read_only_size() const { return _read_only_size; }
-  size_t read_write_size() const { return _read_write_size; }
-  size_t misc_data_size() const { return _misc_data_size; }
-  size_t misc_code_size() const { return _misc_code_size; }
-  bool enable_shared_spaces()    const { return _enable_shared_spaces; }
-};
-
 #endif // SHARE_VM_MEMORY_GENERATIONSPEC_HPP
--- a/src/share/vm/memory/heapInspection.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/heapInspection.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -27,7 +27,6 @@
 #include "memory/genCollectedHeap.hpp"
 #include "memory/heapInspection.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/klassOop.hpp"
 #include "runtime/os.hpp"
 #include "utilities/globalDefinitions.hpp"
 #ifndef SERIALGC
@@ -48,14 +47,9 @@
 void KlassInfoEntry::print_on(outputStream* st) const {
   ResourceMark rm;
   const char* name;;
-  if (_klass->klass_part()->name() != NULL) {
-    name = _klass->klass_part()->external_name();
+  if (_klass->name() != NULL) {
+    name = _klass->external_name();
   } else {
-    if (_klass == Universe::klassKlassObj())             name = "<klassKlass>";             else
-    if (_klass == Universe::arrayKlassKlassObj())        name = "<arrayKlassKlass>";        else
-    if (_klass == Universe::objArrayKlassKlassObj())     name = "<objArrayKlassKlass>";     else
-    if (_klass == Universe::instanceKlassKlassObj())     name = "<instanceKlassKlass>";     else
-    if (_klass == Universe::typeArrayKlassKlassObj())    name = "<typeArrayKlassKlass>";    else
     if (_klass == Universe::boolArrayKlassObj())         name = "<boolArrayKlass>";         else
     if (_klass == Universe::charArrayKlassObj())         name = "<charArrayKlass>";         else
     if (_klass == Universe::singleArrayKlassObj())       name = "<singleArrayKlass>";       else
@@ -64,12 +58,6 @@
     if (_klass == Universe::shortArrayKlassObj())        name = "<shortArrayKlass>";        else
     if (_klass == Universe::intArrayKlassObj())          name = "<intArrayKlass>";          else
     if (_klass == Universe::longArrayKlassObj())         name = "<longArrayKlass>";         else
-    if (_klass == Universe::methodKlassObj())            name = "<methodKlass>";            else
-    if (_klass == Universe::constMethodKlassObj())       name = "<constMethodKlass>";       else
-    if (_klass == Universe::methodDataKlassObj())        name = "<methodDataKlass>";        else
-    if (_klass == Universe::constantPoolKlassObj())      name = "<constantPoolKlass>";      else
-    if (_klass == Universe::constantPoolCacheKlassObj()) name = "<constantPoolCacheKlass>"; else
-    if (_klass == Universe::compiledICHolderKlassObj())  name = "<compiledICHolderKlass>";  else
       name = "<no name>";
   }
   // simplify the formatting (ILP32 vs LP64) - always cast the numbers to 64-bit
@@ -79,7 +67,7 @@
                name);
 }
 
-KlassInfoEntry* KlassInfoBucket::lookup(const klassOop k) {
+KlassInfoEntry* KlassInfoBucket::lookup(Klass* const k) {
   KlassInfoEntry* elt = _list;
   while (elt != NULL) {
     if (elt->is_equal(k)) {
@@ -135,12 +123,12 @@
   }
 }
 
-uint KlassInfoTable::hash(klassOop p) {
-  assert(Universe::heap()->is_in_permanent((HeapWord*)p), "all klasses in permgen");
+uint KlassInfoTable::hash(Klass* p) {
+  assert(p->is_metadata(), "all klasses are metadata");
   return (uint)(((uintptr_t)p - (uintptr_t)_ref) >> 2);
 }
 
-KlassInfoEntry* KlassInfoTable::lookup(const klassOop k) {
+KlassInfoEntry* KlassInfoTable::lookup(Klass* const k) {
   uint         idx = hash(k) % _size;
   assert(_buckets != NULL, "Allocation failure should have been caught");
   KlassInfoEntry*  e   = _buckets[idx].lookup(k);
@@ -153,7 +141,7 @@
 // Return false if the entry could not be recorded on account
 // of running out of space required to create a new entry.
 bool KlassInfoTable::record_instance(const oop obj) {
-  klassOop      k = obj->klass();
+  Klass*        k = obj->klass();
   KlassInfoEntry* elt = lookup(k);
   // elt may be NULL if it's a new klass for which we
   // could not allocate space for a new entry in the hashtable.
@@ -243,39 +231,16 @@
 
 void HeapInspection::heap_inspection(outputStream* st, bool need_prologue) {
   ResourceMark rm;
-  HeapWord* ref;
-
+  // Get some random number for ref (the hash key)
+  HeapWord* ref = (HeapWord*) Universe::boolArrayKlassObj();
   CollectedHeap* heap = Universe::heap();
   bool is_shared_heap = false;
-  switch (heap->kind()) {
-    case CollectedHeap::G1CollectedHeap:
-    case CollectedHeap::GenCollectedHeap: {
-      is_shared_heap = true;
-      SharedHeap* sh = (SharedHeap*)heap;
-      if (need_prologue) {
-        sh->gc_prologue(false /* !full */); // get any necessary locks, etc.
-      }
-      ref = sh->perm_gen()->used_region().start();
-      break;
-    }
-#ifndef SERIALGC
-    case CollectedHeap::ParallelScavengeHeap: {
-      ParallelScavengeHeap* psh = (ParallelScavengeHeap*)heap;
-      ref = psh->perm_gen()->object_space()->used_region().start();
-      break;
-    }
-#endif // SERIALGC
-    default:
-      ShouldNotReachHere(); // Unexpected heap kind for this op
-  }
+
   // Collect klass instance info
   KlassInfoTable cit(KlassInfoTable::cit_size, ref);
   if (!cit.allocation_failed()) {
     // Iterate over objects in the heap
     RecordInstanceClosure ric(&cit);
-    // If this operation encounters a bad object when using CMS,
-    // consider using safe_object_iterate() which avoids perm gen
-    // objects that may contain bad references.
     Universe::heap()->object_iterate(&ric);
 
     // Report if certain classes are not counted because of
@@ -308,11 +273,11 @@
 
 class FindInstanceClosure : public ObjectClosure {
  private:
-  klassOop _klass;
+  Klass* _klass;
   GrowableArray<oop>* _result;
 
  public:
-  FindInstanceClosure(klassOop k, GrowableArray<oop>* result) : _klass(k), _result(result) {};
+  FindInstanceClosure(Klass* k, GrowableArray<oop>* result) : _klass(k), _result(result) {};
 
   void do_object(oop obj) {
     if (obj->is_a(_klass)) {
@@ -321,7 +286,7 @@
   }
 };
 
-void HeapInspection::find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result) {
+void HeapInspection::find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) {
   assert(SafepointSynchronize::is_at_safepoint(), "all threads are stopped");
   assert(Heap_lock->is_locked(), "should have the Heap_lock");
 
@@ -331,7 +296,7 @@
   // Iterate over objects in the heap
   FindInstanceClosure fic(k, result);
   // If this operation encounters a bad object when using CMS,
-  // consider using safe_object_iterate() which avoids perm gen
+  // consider using safe_object_iterate() which avoids metadata
   // objects that may contain bad references.
   Universe::heap()->object_iterate(&fic);
 }
--- a/src/share/vm/memory/heapInspection.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/heapInspection.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -34,7 +34,7 @@
 // HeapInspection
 
 // KlassInfoTable is a bucket hash table that
-// maps klassOops to extra information:
+// maps Klass*s to extra information:
 //    instance count and instance word size.
 //
 // A KlassInfoBucket is the head of a link list
@@ -47,17 +47,17 @@
 class KlassInfoEntry: public CHeapObj<mtInternal> {
  private:
   KlassInfoEntry* _next;
-  klassOop        _klass;
+  Klass*          _klass;
   long            _instance_count;
   size_t          _instance_words;
 
  public:
-  KlassInfoEntry(klassOop k, KlassInfoEntry* next) :
+  KlassInfoEntry(Klass* k, KlassInfoEntry* next) :
     _klass(k), _instance_count(0), _instance_words(0), _next(next)
   {}
   KlassInfoEntry* next()     { return _next; }
-  bool is_equal(klassOop k)  { return k == _klass; }
-  klassOop klass()           { return _klass; }
+  bool is_equal(Klass* k)  { return k == _klass; }
+  Klass* klass()           { return _klass; }
   long count()               { return _instance_count; }
   void set_count(long ct)    { _instance_count = ct; }
   size_t words()             { return _instance_words; }
@@ -78,7 +78,7 @@
   KlassInfoEntry* list()           { return _list; }
   void set_list(KlassInfoEntry* l) { _list = l; }
  public:
-  KlassInfoEntry* lookup(const klassOop k);
+  KlassInfoEntry* lookup(Klass* const k);
   void initialize() { _list = NULL; }
   void empty();
   void iterate(KlassInfoClosure* cic);
@@ -94,8 +94,8 @@
   HeapWord* _ref;
 
   KlassInfoBucket* _buckets;
-  uint hash(klassOop p);
-  KlassInfoEntry* lookup(const klassOop k);
+  uint hash(Klass* p);
+  KlassInfoEntry* lookup(Klass* const k);
 
  public:
   // Table size
@@ -134,7 +134,7 @@
 class HeapInspection : public AllStatic {
  public:
   static void heap_inspection(outputStream* st, bool need_prologue) KERNEL_RETURN;
-  static void find_instances_at_safepoint(klassOop k, GrowableArray<oop>* result) KERNEL_RETURN;
+  static void find_instances_at_safepoint(Klass* k, GrowableArray<oop>* result) KERNEL_RETURN;
 };
 
 #endif // SHARE_VM_MEMORY_HEAPINSPECTION_HPP
--- a/src/share/vm/memory/iterator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/iterator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -26,9 +26,9 @@
 #include "memory/iterator.hpp"
 #include "oops/oop.inline.hpp"
 
-#ifdef ASSERT
-bool OopClosure::_must_remember_klasses = false;
-#endif
+void KlassToOopClosure::do_klass(Klass* k) {
+  k->oops_do(_oop_closure);
+}
 
 void ObjectToOopClosure::do_object(oop obj) {
   obj->oop_iterate(_cl);
@@ -38,16 +38,6 @@
   ShouldNotCallThis();
 }
 
-#ifdef ASSERT
-bool OopClosure::must_remember_klasses() {
-  return _must_remember_klasses;
-}
-void OopClosure::set_must_remember_klasses(bool v) {
-  _must_remember_klasses = v;
-}
-#endif
-
-
 MarkingCodeBlobClosure::MarkScope::MarkScope(bool activate)
   : _active(activate)
 {
--- a/src/share/vm/memory/iterator.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/iterator.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -36,6 +36,8 @@
 class nmethod;
 class ReferenceProcessor;
 class DataLayout;
+class KlassClosure;
+class ClassLoaderData;
 
 // Closure provides abortability.
 
@@ -51,39 +53,50 @@
   void clear_abort() { _abort = false; }
 };
 
-// OopClosure is used for iterating through roots (oop*)
+// OopClosure is used for iterating through references to Java objects.
 
 class OopClosure : public Closure {
  public:
-  ReferenceProcessor* _ref_processor;
-  OopClosure(ReferenceProcessor* rp) : _ref_processor(rp) { }
-  OopClosure() : _ref_processor(NULL) { }
   virtual void do_oop(oop* o) = 0;
   virtual void do_oop_v(oop* o) { do_oop(o); }
   virtual void do_oop(narrowOop* o) = 0;
   virtual void do_oop_v(narrowOop* o) { do_oop(o); }
-
-  // In support of post-processing of weak links of KlassKlass objects;
-  // see KlassKlass::oop_oop_iterate().
+};
 
-  virtual const bool should_remember_klasses() const {
-    assert(!must_remember_klasses(), "Should have overriden this method.");
-    return false;
-  }
-
-  virtual void remember_klass(Klass* k) { /* do nothing */ }
+// ExtendedOopClosure adds extra code to be run during oop iterations.
+// This is needed by the GC and is extracted to a separate type to not
+// pollute the OopClosure interface.
+class ExtendedOopClosure : public OopClosure {
+ public:
+  ReferenceProcessor* _ref_processor;
+  ExtendedOopClosure(ReferenceProcessor* rp) : _ref_processor(rp) { }
+  ExtendedOopClosure() : OopClosure(), _ref_processor(NULL) { }
 
-  // In support of post-processing of weak references in
-  // ProfileData (MethodDataOop) objects; see, for example,
-  // VirtualCallData::oop_iterate().
-  virtual const bool should_remember_mdo() const { return false; }
-  virtual void remember_mdo(DataLayout* v) { /* do nothing */ }
+  // If the do_metadata functions return "true",
+  // we invoke the following when running oop_iterate():
+  //
+  // 1) do_klass on the header klass pointer.
+  // 2) do_klass on the klass pointer in the mirrors.
+  // 3) do_class_loader_data on the class loader data in class loaders.
+  //
+  // The virtual (without suffix) and the non-virtual (with _nv suffix) need
+  // to be updated together, or else the devirtualization will break.
+  //
+  // Providing default implementations of the _nv functions unfortunately
+  // removes the compile-time safeness, but reduces the clutter for the
+  // ExtendedOopClosures that don't need to walk the metadata. Currently,
+  // only CMS needs these.
 
-  // The methods below control how object iterations invoking this closure
-  // should be performed:
+  virtual bool do_metadata() { return do_metadata_nv(); }
+  bool do_metadata_v()       { return do_metadata(); }
+  bool do_metadata_nv()      { return false; }
 
-  // If "true", invoke on header klass field.
-  bool do_header() { return true; } // Note that this is non-virtual.
+  virtual void do_klass(Klass* k)   { do_klass_nv(k); }
+  void do_klass_v(Klass* k)         { do_klass(k); }
+  void do_klass_nv(Klass* k)        { ShouldNotReachHere(); }
+
+  virtual void do_class_loader_data(ClassLoaderData* cld) { ShouldNotReachHere(); }
+
   // Controls how prefetching is done for invocations of this closure.
   Prefetch::style prefetch_style() { // Note that this is non-virtual.
     return Prefetch::do_none;
@@ -93,12 +106,33 @@
   // location without an intervening "major reset" (like the end of a GC).
   virtual bool idempotent() { return false; }
   virtual bool apply_to_weak_ref_discovered_field() { return false; }
+};
 
-#ifdef ASSERT
-  static bool _must_remember_klasses;
-  static bool must_remember_klasses();
-  static void set_must_remember_klasses(bool v);
-#endif
+// Wrapper closure only used to implement oop_iterate_no_header().
+class NoHeaderExtendedOopClosure : public ExtendedOopClosure {
+  OopClosure* _wrapped_closure;
+ public:
+  NoHeaderExtendedOopClosure(OopClosure* cl) : _wrapped_closure(cl) {}
+  // Warning: this calls the virtual version do_oop in the the wrapped closure.
+  void do_oop_nv(oop* p)       { _wrapped_closure->do_oop(p); }
+  void do_oop_nv(narrowOop* p) { _wrapped_closure->do_oop(p); }
+
+  void do_oop(oop* p)          { assert(false, "Only the _nv versions should be used");
+                                 _wrapped_closure->do_oop(p); }
+  void do_oop(narrowOop* p)    { assert(false, "Only the _nv versions should be used");
+                                 _wrapped_closure->do_oop(p);}
+};
+
+class KlassClosure : public Closure {
+ public:
+  virtual void do_klass(Klass* k) = 0;
+};
+
+class KlassToOopClosure : public KlassClosure {
+  OopClosure* _oop_closure;
+ public:
+  KlassToOopClosure(OopClosure* oop_closure) : _oop_closure(oop_closure) {}
+  virtual void do_klass(Klass* k);
 };
 
 // ObjectClosure is used for iterating through an object space
@@ -118,10 +152,10 @@
 // Applies an oop closure to all ref fields in objects iterated over in an
 // object iteration.
 class ObjectToOopClosure: public ObjectClosure {
-  OopClosure* _cl;
+  ExtendedOopClosure* _cl;
 public:
   void do_object(oop obj);
-  ObjectToOopClosure(OopClosure* cl) : _cl(cl) {}
+  ObjectToOopClosure(ExtendedOopClosure* cl) : _cl(cl) {}
 };
 
 // A version of ObjectClosure with "memory" (see _previous_address below)
@@ -263,23 +297,14 @@
 
 // Abstract closure for serializing data (read or write).
 
-class SerializeOopClosure : public OopClosure {
+class SerializeClosure : public Closure {
 public:
   // Return bool indicating whether closure implements read or write.
   virtual bool reading() const = 0;
 
-  // Read/write the int pointed to by i.
-  virtual void do_int(int* i) = 0;
-
-  // Read/write the size_t pointed to by i.
-  virtual void do_size_t(size_t* i) = 0;
-
   // Read/write the void pointer pointed to by p.
   virtual void do_ptr(void** p) = 0;
 
-  // Read/write the HeapWord pointer pointed to be p.
-  virtual void do_ptr(HeapWord** p) = 0;
-
   // Read/write the region specified.
   virtual void do_region(u_char* start, size_t size) = 0;
 
@@ -306,48 +331,4 @@
   }
 };
 
-#ifdef ASSERT
-// This class is used to flag phases of a collection that
-// can unload classes and which should override the
-// should_remember_klasses() and remember_klass() of OopClosure.
-// The _must_remember_klasses is set in the contructor and restored
-// in the destructor.  _must_remember_klasses is checked in assertions
-// in the OopClosure implementations of should_remember_klasses() and
-// remember_klass() and the expectation is that the OopClosure
-// implementation should not be in use if _must_remember_klasses is set.
-// Instances of RememberKlassesChecker can be place in
-// marking phases of collections which can do class unloading.
-// RememberKlassesChecker can be passed "false" to turn off checking.
-// It is used by CMS when CMS yields to a different collector.
-class RememberKlassesChecker: StackObj {
- bool _saved_state;
- bool _do_check;
- public:
-  RememberKlassesChecker(bool checking_on) : _saved_state(false),
-    _do_check(true) {
-    // The ClassUnloading unloading flag affects the collectors except
-    // for CMS.
-    // CMS unloads classes if CMSClassUnloadingEnabled is true or
-    // if ExplicitGCInvokesConcurrentAndUnloadsClasses is true and
-    // the current collection is an explicit collection.  Turning
-    // on the checking in general for
-    // ExplicitGCInvokesConcurrentAndUnloadsClasses and
-    // UseConcMarkSweepGC should not lead to false positives.
-    _do_check =
-      ClassUnloading && !UseConcMarkSweepGC ||
-      CMSClassUnloadingEnabled && UseConcMarkSweepGC ||
-      ExplicitGCInvokesConcurrentAndUnloadsClasses && UseConcMarkSweepGC;
-    if (_do_check) {
-      _saved_state = OopClosure::must_remember_klasses();
-      OopClosure::set_must_remember_klasses(checking_on);
-    }
-  }
-  ~RememberKlassesChecker() {
-    if (_do_check) {
-      OopClosure::set_must_remember_klasses(_saved_state);
-    }
-  }
-};
-#endif  // ASSERT
-
 #endif // SHARE_VM_MEMORY_ITERATOR_HPP
--- a/src/share/vm/memory/memRegion.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/memRegion.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -36,6 +36,8 @@
 // The intent is that they remain very small and contain no
 // objects.
 
+class MetaWord;
+
 class MemRegion VALUE_OBJ_CLASS_SPEC {
   friend class VMStructs;
 private:
@@ -50,6 +52,10 @@
     _start(start), _word_size(pointer_delta(end, start)) {
     assert(end >= start, "incorrect constructor arguments");
   }
+  MemRegion(MetaWord* start, MetaWord* end) :
+    _start((HeapWord*)start), _word_size(pointer_delta(end, start)) {
+    assert(end >= start, "incorrect constructor arguments");
+  }
 
   MemRegion(const MemRegion& mr): _start(mr._start), _word_size(mr._word_size) {}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metadataFactory.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 2010, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_MEMORY_METADATAFACTORY_HPP
+#define SHARE_VM_MEMORY_METADATAFACTORY_HPP
+
+#include "utilities/array.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
+
+class MetadataFactory : AllStatic {
+ public:
+  template <typename T>
+  static Array<T>* new_array(ClassLoaderData* loader_data, int length, TRAPS) {
+    // The "true" argument is because all metadata arrays are read only when
+    // dumped to the shared archive
+    return new (loader_data, length, /*read_only*/true, THREAD) Array<T>(length);
+  }
+
+  template <typename T>
+  static Array<T>* new_array(ClassLoaderData* loader_data, int length, T value, TRAPS) {
+    Array<T>* array = new_array<T>(loader_data, length, CHECK_NULL);
+    for (int i = 0; i < length; i++) {
+      array->at_put(i, value);
+    }
+    return array;
+  }
+
+  template <typename T>
+  static Array<T>* new_writeable_array(ClassLoaderData* loader_data, int length, TRAPS) {
+    return new (loader_data, length, /*read_only*/false, THREAD) Array<T>(length);
+  }
+
+  template <typename T>
+  static Array<T>* new_writeable_array(ClassLoaderData* loader_data, int length, T value, TRAPS) {
+    Array<T>* array = new_writeable_array<T>(loader_data, length, CHECK_NULL);
+    for (int i = 0; i < length; i++) {
+      array->at_put(i, value);
+    }
+    return array;
+  }
+
+  template <typename T>
+  static void free_array(ClassLoaderData* loader_data, Array<T>* data) {
+    if (data != NULL) {
+      assert(loader_data != NULL, "shouldn't pass null");
+      int size = data->size();
+      loader_data->metaspace_non_null()->deallocate((MetaWord*)data, size, false);
+    }
+  }
+
+  // Deallocation method for metadata
+  template <class T>
+  static void free_metadata(ClassLoaderData* loader_data, T md) {
+    if (md != NULL) {
+      assert(loader_data != NULL, "shouldn't pass null");
+      int size = md->size();
+      // Call metadata's deallocate function which will call deallocate fields
+      assert(!md->on_stack(), "can't deallocate things on stack");
+      md->deallocate_contents(loader_data);
+      loader_data->metaspace_non_null()->deallocate((MetaWord*)md, size, md->is_klass());
+    }
+  }
+};
+
+#endif // SHARE_VM_MEMORY_METADATAFACTORY_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,2990 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+#include "precompiled.hpp"
+#include "gc_interface/collectedHeap.hpp"
+#include "memory/binaryTreeDictionary.hpp"
+#include "memory/collectorPolicy.hpp"
+#include "memory/filemap.hpp"
+#include "memory/freeList.hpp"
+#include "memory/metaspace.hpp"
+#include "memory/metaspaceShared.hpp"
+#include "memory/resourceArea.hpp"
+#include "memory/universe.hpp"
+#include "runtime/globals.hpp"
+#include "runtime/mutex.hpp"
+#include "services/memTracker.hpp"
+#include "utilities/copy.hpp"
+#include "utilities/debug.hpp"
+
+// Define this macro to deallocate Metablock.  If not defined,
+// blocks are not yet deallocated and are only mangled.
+#undef DEALLOCATE_BLOCKS
+
+// Easily recognizable patterns
+// These patterns can be the same in 32bit or 64bit since
+// they only have to be easily recognizable.
+const void* metaspace_allocation_leader = (void*) 0X11111111;
+const void* metaspace_allocation_trailer = (void*) 0X77777777;
+
+// Parameters for stress mode testing
+const uint metadata_deallocate_a_lot_block = 10;
+const uint metadata_deallocate_a_lock_chunk = 3;
+size_t const allocation_from_dictionary_limit = 64 * K;
+const size_t metadata_chunk_initialize = 0xf7f7f7f7;
+const size_t metadata_deallocate = 0xf5f5f5f5;
+const size_t metadata_space_manager_allocate = 0xf3f3f3f3;
+
+MetaWord* last_allocated = 0;
+
+// Used in declarations in SpaceManager and ChunkManager
+enum ChunkIndex {
+  SmallIndex = 0,
+  MediumIndex = 1,
+  HumongousIndex = 2,
+  NumberOfFreeLists = 3
+};
+
+static ChunkIndex next_chunk_index(ChunkIndex i) {
+  assert(i < NumberOfFreeLists, "Out of bound");
+  return (ChunkIndex) (i+1);
+}
+
+// Originally _capacity_until_GC was set to MetaspaceSize here but
+// the default MetaspaceSize before argument processing was being
+// used which was not the desired value.  See the code
+// in should_expand() to see how the initialization is handled
+// now.
+size_t MetaspaceGC::_capacity_until_GC = 0;
+bool MetaspaceGC::_expand_after_GC = false;
+uint MetaspaceGC::_shrink_factor = 0;
+bool MetaspaceGC::_should_concurrent_collect = false;
+
+// Blocks of space for metadata are allocated out of Metachunks.
+//
+// Metachunk are allocated out of MetadataVirtualspaces and once
+// allocated there is no explicit link between a Metachunk and
+// the MetadataVirtualspaces from which it was allocated.
+//
+// Each SpaceManager maintains a
+// list of the chunks it is using and the current chunk.  The current
+// chunk is the chunk from which allocations are done.  Space freed in
+// a chunk is placed on the free list of blocks (BlockFreelist) and
+// reused from there.
+//
+// Future modification
+//
+// The Metachunk can conceivable be replaced by the Chunk in
+// allocation.hpp.  Note that the latter Chunk is the space for
+// allocation (allocations from the chunk are out of the space in
+// the Chunk after the header for the Chunk) where as Metachunks
+// point to space in a VirtualSpace.  To replace Metachunks with
+// Chunks, change Chunks so that they can be allocated out of a VirtualSpace.
+//
+
+// Metablock are the unit of allocation from a Chunk.  It contains
+// the size of the requested allocation in a debug build.
+// Also in a debug build it has a marker before and after the
+// body of the block. The address of the body is the address returned
+// by the allocation.
+//
+// Layout in a debug build.  In a product build only the body is present.
+//
+//     +-----------+-----------+------------+     +-----------+
+//     | word size | leader    | body       | ... | trailer   |
+//     +-----------+-----------+------------+     +-----------+
+//
+// A Metablock may be reused by its SpaceManager but are never moved between
+// SpaceManagers.  There is no explicit link to the Metachunk
+// from which it was allocated.  Metablock are not deallocated, rather
+// the Metachunk it is a part of will be deallocated when it's
+// associated class loader is collected.
+//
+// When the word size of a block is passed in to the deallocation
+// call the word size no longer needs to be part of a Metablock.
+
+class Metablock {
+  friend class VMStructs;
+ private:
+  // Used to align the allocation (see below) and for debugging.
+#ifdef ASSERT
+  struct {
+    size_t _word_size;
+    void*  _leader;
+  } _header;
+  void* _data[1];
+#endif
+  static size_t _overhead;
+
+#ifdef ASSERT
+  void set_word_size(size_t v) { _header._word_size = v; }
+  void* leader() { return _header._leader; }
+  void* trailer() {
+    jlong index = (jlong) _header._word_size - sizeof(_header)/BytesPerWord - 1;
+    assert(index > 0, err_msg("Bad indexling of trailer %d", index));
+    void** ptr = &_data[index];
+    return *ptr;
+  }
+  void set_leader(void* v) { _header._leader = v; }
+  void set_trailer(void* v) {
+    void** ptr = &_data[_header._word_size - sizeof(_header)/BytesPerWord - 1];
+    *ptr = v;
+  }
+ public:
+  size_t word_size() { return _header._word_size; }
+#endif
+ public:
+
+  static Metablock* initialize(MetaWord* p, size_t word_size);
+
+  // This places the body of the block at a 2 word boundary
+  // because every block starts on a 2 word boundary.  Work out
+  // how to make the body on a 2 word boundary if the block
+  // starts on a arbitrary boundary.  JJJ
+
+#ifdef ASSERT
+  MetaWord* data() { return (MetaWord*) &_data[0]; }
+#else
+  MetaWord* data() { return (MetaWord*) this; }
+#endif
+  static Metablock* metablock_from_data(MetaWord* p) {
+#ifdef ASSERT
+    size_t word_offset = offset_of(Metablock, _data)/BytesPerWord;
+    Metablock* result = (Metablock*) (p - word_offset);
+    return result;
+#else
+    return (Metablock*) p;
+#endif
+  }
+
+  static size_t overhead() { return _overhead; }
+  void verify();
+};
+
+//  Metachunk - Quantum of allocation from a Virtualspace
+//    Metachunks are reused (when freed are put on a global freelist) and
+//    have no permanent association to a SpaceManager.
+
+//            +--------------+ <- end
+//            |              |          --+       ---+
+//            |              |            | free     |
+//            |              |            |          |
+//            |              |            |          | capacity
+//            |              |            |          |
+//            |              | <- top   --+          |
+//            |              |           ---+        |
+//            |              |              | used   |
+//            |              |              |        |
+//            |              |              |        |
+//            +--------------+ <- bottom ---+     ---+
+
+class Metachunk VALUE_OBJ_CLASS_SPEC {
+  // link to support lists of chunks
+  Metachunk* _next;
+
+  MetaWord* _bottom;
+  MetaWord* _end;
+  MetaWord* _top;
+  size_t _word_size;
+
+  // Metachunks are allocated out of a MetadataVirtualSpace and
+  // and use some of its space to describe itself (plus alignment
+  // considerations).  Metadata is allocated in the rest of the chunk.
+  // This size is the overhead of maintaining the Metachunk within
+  // the space.
+  static size_t _overhead;
+
+  void set_bottom(MetaWord* v) { _bottom = v; }
+  void set_end(MetaWord* v) { _end = v; }
+  void set_top(MetaWord* v) { _top = v; }
+  void set_word_size(size_t v) { _word_size = v; }
+ public:
+
+  // Used to add a Metachunk to a list of Metachunks
+  void set_next(Metachunk* v) { _next = v; assert(v != this, "Boom");}
+
+  Metablock* allocate(size_t word_size);
+  static Metachunk* initialize(MetaWord* ptr, size_t word_size);
+
+  // Accessors
+  Metachunk* next() const { return _next; }
+  MetaWord* bottom() const { return _bottom; }
+  MetaWord* end() const { return _end; }
+  MetaWord* top() const { return _top; }
+  size_t word_size() const { return _word_size; }
+  static size_t overhead() { return _overhead; }
+
+  // Reset top to bottom so chunk can be reused.
+  void reset_empty() { _top = (_bottom + _overhead); }
+  bool is_empty() { return _top == (_bottom + _overhead); }
+
+  // used (has been allocated)
+  // free (available for future allocations)
+  // capacity (total size of chunk)
+  size_t used_word_size();
+  size_t free_word_size();
+  size_t capacity_word_size();
+
+#ifdef ASSERT
+  void mangle() {
+    // Mangle the payload of the chunk and not the links that
+    // maintain list of chunks.
+    HeapWord* start = (HeapWord*)(bottom() + overhead());
+    size_t word_size = capacity_word_size() - overhead();
+    Copy::fill_to_words(start, word_size, metadata_chunk_initialize);
+  }
+#endif // ASSERT
+
+  void print_on(outputStream* st) const;
+  void verify();
+};
+
+
+// Pointer to list of Metachunks.
+class ChunkList VALUE_OBJ_CLASS_SPEC {
+  // List of free chunks
+  Metachunk* _head;
+
+ public:
+  // Constructor
+  ChunkList() : _head(NULL) {}
+
+  // Accessors
+  Metachunk* head() { return _head; }
+  void set_head(Metachunk* v) { _head = v; }
+
+  // Link at head of the list
+  void add_at_head(Metachunk* head, Metachunk* tail);
+  void add_at_head(Metachunk* head);
+
+  size_t sum_list_size();
+  size_t sum_list_count();
+  size_t sum_list_capacity();
+};
+
+// Manages the global free lists of chunks.
+// Has three lists of free chunks, and a total size and
+// count that includes all three
+
+class ChunkManager VALUE_OBJ_CLASS_SPEC {
+
+  // Free list of chunks of different sizes.
+  //   SmallChunk
+  //   MediumChunk
+  //   HumongousChunk
+  ChunkList _free_chunks[3];
+
+  // ChunkManager in all lists of this type
+  size_t _free_chunks_total;
+  size_t _free_chunks_count;
+
+  void dec_free_chunks_total(size_t v) {
+    assert(_free_chunks_count > 0 &&
+             _free_chunks_total > 0,
+             "About to go negative");
+    Atomic::add_ptr(-1, &_free_chunks_count);
+    jlong minus_v = (jlong) - (jlong) v;
+    Atomic::add_ptr(minus_v, &_free_chunks_total);
+  }
+
+  // Debug support
+
+  size_t sum_free_chunks();
+  size_t sum_free_chunks_count();
+
+  void locked_verify_free_chunks_total();
+  void locked_verify_free_chunks_count();
+  void verify_free_chunks_count();
+
+ public:
+
+  ChunkManager() : _free_chunks_total(0), _free_chunks_count(0) {}
+
+  // add or delete (return) a chunk to the global freelist.
+  Metachunk* chunk_freelist_allocate(size_t word_size);
+  void chunk_freelist_deallocate(Metachunk* chunk);
+
+  // Total of the space in the free chunks list
+  size_t free_chunks_total();
+  size_t free_chunks_total_in_bytes();
+
+  // Number of chunks in the free chunks list
+  size_t free_chunks_count();
+
+  void inc_free_chunks_total(size_t v, size_t count = 1) {
+    Atomic::add_ptr(count, &_free_chunks_count);
+    Atomic::add_ptr(v, &_free_chunks_total);
+  }
+  ChunkList* free_medium_chunks() { return &_free_chunks[1]; }
+  ChunkList* free_small_chunks() { return &_free_chunks[0]; }
+  ChunkList* free_humongous_chunks() { return &_free_chunks[2]; }
+
+  ChunkList* free_chunks(ChunkIndex index);
+
+  // Returns the list for the given chunk word size.
+  ChunkList* find_free_chunks_list(size_t word_size);
+
+  // Add and remove from a list by size.  Selects
+  // list based on size of chunk.
+  void free_chunks_put(Metachunk* chuck);
+  Metachunk* free_chunks_get(size_t chunk_word_size);
+
+  // Debug support
+  void verify();
+  void locked_verify();
+  void verify_free_chunks_total();
+
+  void locked_print_free_chunks(outputStream* st);
+  void locked_print_sum_free_chunks(outputStream* st);
+};
+
+
+// Used to manage the free list of Metablocks (a block corresponds
+// to the allocation of a quantum of metadata).
+class BlockFreelist VALUE_OBJ_CLASS_SPEC {
+#ifdef DEALLOCATE_BLOCKS
+  BinaryTreeDictionary<Metablock>* _dictionary;
+#endif
+  static Metablock* initialize_free_chunk(Metablock* block, size_t word_size);
+
+#ifdef DEALLOCATE_BLOCKS
+  // Accessors
+  BinaryTreeDictionary<Metablock>* dictionary() const { return _dictionary; }
+#endif
+
+ public:
+  BlockFreelist();
+  ~BlockFreelist();
+
+  // Get and return a block to the free list
+  Metablock* get_block(size_t word_size);
+  void return_block(Metablock* block, size_t word_size);
+
+  size_t totalSize() {
+#ifdef DEALLOCATE_BLOCKS
+    if (dictionary() == NULL) {
+      return 0;
+    } else {
+      return dictionary()->totalSize();
+    }
+#else
+    return 0;
+#endif
+  }
+
+  void print_on(outputStream* st) const;
+};
+
+class VirtualSpaceNode : public CHeapObj<mtClass> {
+  friend class VirtualSpaceList;
+
+  // Link to next VirtualSpaceNode
+  VirtualSpaceNode* _next;
+
+  // total in the VirtualSpace
+  MemRegion _reserved;
+  ReservedSpace _rs;
+  VirtualSpace _virtual_space;
+  MetaWord* _top;
+
+  // Convenience functions for logical bottom and end
+  MetaWord* bottom() const { return (MetaWord*) _virtual_space.low(); }
+  MetaWord* end() const { return (MetaWord*) _virtual_space.high(); }
+
+  // Convenience functions to access the _virtual_space
+  char* low()  const { return virtual_space()->low(); }
+  char* high() const { return virtual_space()->high(); }
+
+ public:
+
+  VirtualSpaceNode(size_t byte_size);
+  VirtualSpaceNode(ReservedSpace rs) : _top(NULL), _next(NULL), _rs(rs) {}
+  ~VirtualSpaceNode();
+
+  // address of next available space in _virtual_space;
+  // Accessors
+  VirtualSpaceNode* next() { return _next; }
+  void set_next(VirtualSpaceNode* v) { _next = v; }
+
+  void set_reserved(MemRegion const v) { _reserved = v; }
+  void set_top(MetaWord* v) { _top = v; }
+
+  // Accessors
+  MemRegion* reserved() { return &_reserved; }
+  VirtualSpace* virtual_space() const { return (VirtualSpace*) &_virtual_space; }
+
+  // Returns true if "word_size" is available in the virtual space
+  bool is_available(size_t word_size) { return _top + word_size <= end(); }
+
+  MetaWord* top() const { return _top; }
+  void inc_top(size_t word_size) { _top += word_size; }
+
+  // used and capacity in this single entry in the list
+  size_t used_words_in_vs() const;
+  size_t capacity_words_in_vs() const;
+
+  bool initialize();
+
+  // get space from the virtual space
+  Metachunk* take_from_committed(size_t chunk_word_size);
+
+  // Allocate a chunk from the virtual space and return it.
+  Metachunk* get_chunk_vs(size_t chunk_word_size);
+  Metachunk* get_chunk_vs_with_expand(size_t chunk_word_size);
+
+  // Expands/shrinks the committed space in a virtual space.  Delegates
+  // to Virtualspace
+  bool expand_by(size_t words, bool pre_touch = false);
+  bool shrink_by(size_t words);
+
+  // Debug support
+  static void verify_virtual_space_total();
+  static void verify_virtual_space_count();
+  void mangle();
+
+  void print_on(outputStream* st) const;
+};
+
+  // byte_size is the size of the associated virtualspace.
+VirtualSpaceNode::VirtualSpaceNode(size_t byte_size) : _top(NULL), _next(NULL), _rs(0) {
+  // This allocates memory with mmap.  For DumpSharedspaces, allocate the
+  // space at low memory so that other shared images don't conflict.
+  // This is the same address as memory needed for UseCompressedOops but
+  // compressed oops don't work with CDS (offsets in metadata are wrong), so
+  // borrow the same address.
+  if (DumpSharedSpaces) {
+    char* shared_base = (char*)HeapBaseMinAddress;
+    _rs = ReservedSpace(byte_size, 0, false, shared_base, 0);
+    if (_rs.is_reserved()) {
+      assert(_rs.base() == shared_base, "should match");
+    } else {
+      // If we are dumping the heap, then allocate a wasted block of address
+      // space in order to push the heap to a lower address.  This extra
+      // address range allows for other (or larger) libraries to be loaded
+      // without them occupying the space required for the shared spaces.
+      uintx reserved = 0;
+      uintx block_size = 64*1024*1024;
+      while (reserved < SharedDummyBlockSize) {
+        char* dummy = os::reserve_memory(block_size);
+        reserved += block_size;
+      }
+      _rs = ReservedSpace(byte_size);
+    }
+    MetaspaceShared::set_shared_rs(&_rs);
+  } else {
+    _rs = ReservedSpace(byte_size);
+  }
+
+  MemTracker::record_virtual_memory_type((address)_rs.base(), mtClass);
+}
+
+// List of VirtualSpaces for metadata allocation.
+// It has a  _next link for singly linked list and a MemRegion
+// for total space in the VirtualSpace.
+class VirtualSpaceList : public CHeapObj<mtClass> {
+  friend class VirtualSpaceNode;
+
+  enum VirtualSpaceSizes {
+    VirtualSpaceSize = 256 * K
+  };
+
+  // Global list of virtual spaces
+  // Head of the list
+  VirtualSpaceNode* _virtual_space_list;
+  // virtual space currently being used for allocations
+  VirtualSpaceNode* _current_virtual_space;
+  // Free chunk list for all other metadata
+  ChunkManager      _chunk_manager;
+
+  // Can this virtual list allocate >1 spaces?  Also, used to determine
+  // whether to allocate unlimited small chunks in this virtual space
+  bool _is_class;
+  bool can_grow() const { return !is_class() || !UseCompressedKlassPointers; }
+
+  // Sum of space in all virtual spaces and number of virtual spaces
+  size_t _virtual_space_total;
+  size_t _virtual_space_count;
+
+  ~VirtualSpaceList();
+
+  VirtualSpaceNode* virtual_space_list() const { return _virtual_space_list; }
+
+  void set_virtual_space_list(VirtualSpaceNode* v) {
+    _virtual_space_list = v;
+  }
+  void set_current_virtual_space(VirtualSpaceNode* v) {
+    _current_virtual_space = v;
+  }
+
+  void link_vs(VirtualSpaceNode* new_entry, size_t vs_word_size);
+
+  // Get another virtual space and add it to the list.  This
+  // is typically prompted by a failed attempt to allocate a chunk
+  // and is typically followed by the allocation of a chunk.
+  bool grow_vs(size_t vs_word_size);
+
+ public:
+  VirtualSpaceList(size_t word_size);
+  VirtualSpaceList(ReservedSpace rs);
+
+  Metachunk* get_new_chunk(size_t word_size, size_t grow_chunks_by_words);
+
+  VirtualSpaceNode* current_virtual_space() {
+    return _current_virtual_space;
+  }
+
+  ChunkManager* chunk_manager() { return &_chunk_manager; }
+  bool is_class() const { return _is_class; }
+
+  // Allocate the first virtualspace.
+  void initialize(size_t word_size);
+
+  size_t virtual_space_total() { return _virtual_space_total; }
+  void inc_virtual_space_total(size_t v) {
+    Atomic::add_ptr(v, &_virtual_space_total);
+  }
+
+  size_t virtual_space_count() { return _virtual_space_count; }
+  void inc_virtual_space_count() {
+    Atomic::inc_ptr(&_virtual_space_count);
+  }
+
+  // Used and capacity in the entire list of virtual spaces.
+  // These are global values shared by all Metaspaces
+  size_t capacity_words_sum();
+  size_t capacity_bytes_sum() { return capacity_words_sum() * BytesPerWord; }
+  size_t used_words_sum();
+  size_t used_bytes_sum() { return used_words_sum() * BytesPerWord; }
+
+  bool contains(const void *ptr);
+
+  void print_on(outputStream* st) const;
+
+  class VirtualSpaceListIterator : public StackObj {
+    VirtualSpaceNode* _virtual_spaces;
+   public:
+    VirtualSpaceListIterator(VirtualSpaceNode* virtual_spaces) :
+      _virtual_spaces(virtual_spaces) {}
+
+    bool repeat() {
+      return _virtual_spaces != NULL;
+    }
+
+    VirtualSpaceNode* get_next() {
+      VirtualSpaceNode* result = _virtual_spaces;
+      if (_virtual_spaces != NULL) {
+        _virtual_spaces = _virtual_spaces->next();
+      }
+      return result;
+    }
+  };
+};
+
+
+class Metadebug : AllStatic {
+  // Debugging support for Metaspaces
+  static int _deallocate_block_a_lot_count;
+  static int _deallocate_chunk_a_lot_count;
+  static int _allocation_fail_alot_count;
+
+ public:
+  static int deallocate_block_a_lot_count() {
+    return _deallocate_block_a_lot_count;
+  }
+  static void set_deallocate_block_a_lot_count(int v) {
+    _deallocate_block_a_lot_count = v;
+  }
+  static void inc_deallocate_block_a_lot_count() {
+    _deallocate_block_a_lot_count++;
+  }
+  static int deallocate_chunk_a_lot_count() {
+    return _deallocate_chunk_a_lot_count;
+  }
+  static void reset_deallocate_chunk_a_lot_count() {
+    _deallocate_chunk_a_lot_count = 1;
+  }
+  static void inc_deallocate_chunk_a_lot_count() {
+    _deallocate_chunk_a_lot_count++;
+  }
+
+  static void init_allocation_fail_alot_count();
+#ifdef ASSERT
+  static bool test_metadata_failure();
+#endif
+
+  static void deallocate_chunk_a_lot(SpaceManager* sm,
+                                     size_t chunk_word_size);
+  static void deallocate_block_a_lot(SpaceManager* sm,
+                                     size_t chunk_word_size);
+
+};
+
+int Metadebug::_deallocate_block_a_lot_count = 0;
+int Metadebug::_deallocate_chunk_a_lot_count = 0;
+int Metadebug::_allocation_fail_alot_count = 0;
+
+//  SpaceManager - used by Metaspace to handle allocations
+class SpaceManager : public CHeapObj<mtClass> {
+  friend class Metaspace;
+  friend class Metadebug;
+
+ private:
+  // protects allocations and contains.
+  Mutex* const _lock;
+
+  // List of chunks in use by this SpaceManager.  Allocations
+  // are done from the current chunk.  The list is used for deallocating
+  // chunks when the SpaceManager is freed.
+  Metachunk* _chunks_in_use[NumberOfFreeLists];
+  Metachunk* _current_chunk;
+
+  // Virtual space where allocation comes from.
+  VirtualSpaceList* _vs_list;
+
+  // Number of small chunks to allocate to a manager
+  // If class space manager, small chunks are unlimited
+  static uint const _small_chunk_limit;
+  bool has_small_chunk_limit() { return !vs_list()->is_class(); }
+
+  // Sum of all space in allocated chunks
+  size_t _allocation_total;
+
+  // Free lists of blocks are per SpaceManager since they
+  // are assumed to be in chunks in use by the SpaceManager
+  // and all chunks in use by a SpaceManager are freed when
+  // the class loader using the SpaceManager is collected.
+  BlockFreelist _block_freelists;
+
+  // protects virtualspace and chunk expansions
+  static const char*  _expand_lock_name;
+  static const int    _expand_lock_rank;
+  static Mutex* const _expand_lock;
+
+  // Accessors
+  Metachunk* chunks_in_use(ChunkIndex index) const { return _chunks_in_use[index]; }
+  void set_chunks_in_use(ChunkIndex index, Metachunk* v) { _chunks_in_use[index] = v; }
+
+  BlockFreelist* block_freelists() const {
+    return (BlockFreelist*) &_block_freelists;
+  }
+
+  VirtualSpaceList* vs_list() const    { return _vs_list; }
+
+  Metachunk* current_chunk() const { return _current_chunk; }
+  void set_current_chunk(Metachunk* v) {
+    _current_chunk = v;
+  }
+
+  Metachunk* find_current_chunk(size_t word_size);
+
+  // Add chunk to the list of chunks in use
+  void add_chunk(Metachunk* v, bool make_current);
+
+  // Debugging support
+  void verify_chunks_in_use_index(ChunkIndex index, Metachunk* v) {
+    switch (index) {
+    case 0:
+      assert(v->word_size() == SmallChunk, "Not a SmallChunk");
+      break;
+    case 1:
+      assert(v->word_size() == MediumChunk, "Not a MediumChunk");
+      break;
+    case 2:
+      assert(v->word_size() > MediumChunk, "Not a HumongousChunk");
+      break;
+    default:
+      assert(false, "Wrong list.");
+    }
+  }
+
+ protected:
+  Mutex* lock() const { return _lock; }
+
+ public:
+  SpaceManager(Mutex* lock, VirtualSpaceList* vs_list);
+  ~SpaceManager();
+
+  enum ChunkSizes {    // in words.
+    SmallChunk = 512,
+    MediumChunk = 8 * K,
+    MediumChunkBunch = 4 * MediumChunk
+  };
+
+  // Accessors
+  size_t allocation_total() const { return _allocation_total; }
+  void inc_allocation_total(size_t v) { Atomic::add_ptr(v, &_allocation_total); }
+  static bool is_humongous(size_t word_size) { return word_size > MediumChunk; }
+
+  static Mutex* expand_lock() { return _expand_lock; }
+
+  size_t sum_capacity_in_chunks_in_use() const;
+  size_t sum_used_in_chunks_in_use() const;
+  size_t sum_free_in_chunks_in_use() const;
+  size_t sum_waste_in_chunks_in_use() const;
+  size_t sum_waste_in_chunks_in_use(ChunkIndex index ) const;
+
+  size_t sum_count_in_chunks_in_use();
+  size_t sum_count_in_chunks_in_use(ChunkIndex i);
+
+  // Block allocation and deallocation.
+  // Allocates a block from the current chunk
+  MetaWord* allocate(size_t word_size);
+
+  // Helper for allocations
+  Metablock* allocate_work(size_t word_size);
+
+  // Returns a block to the per manager freelist
+  void deallocate(MetaWord* p);
+
+  // Based on the allocation size and a minimum chunk size,
+  // returned chunk size (for expanding space for chunk allocation).
+  size_t calc_chunk_size(size_t allocation_word_size);
+
+  // Called when an allocation from the current chunk fails.
+  // Gets a new chunk (may require getting a new virtual space),
+  // and allocates from that chunk.
+  Metablock* grow_and_allocate(size_t word_size);
+
+  // debugging support.
+
+  void dump(outputStream* const out) const;
+  void print_on(outputStream* st) const;
+  void locked_print_chunks_in_use_on(outputStream* st) const;
+
+  void verify();
+#ifdef ASSERT
+  void mangle_freed_chunks();
+  void verify_allocation_total();
+#endif
+};
+
+uint const SpaceManager::_small_chunk_limit = 4;
+
+const char* SpaceManager::_expand_lock_name =
+  "SpaceManager chunk allocation lock";
+const int SpaceManager::_expand_lock_rank = Monitor::leaf - 1;
+Mutex* const SpaceManager::_expand_lock =
+  new Mutex(SpaceManager::_expand_lock_rank,
+            SpaceManager::_expand_lock_name,
+            Mutex::_allow_vm_block_flag);
+
+#ifdef ASSERT
+size_t Metablock::_overhead =
+  Chunk::aligned_overhead_size(sizeof(Metablock)) / BytesPerWord;
+#else
+size_t Metablock::_overhead = 0;
+#endif
+size_t Metachunk::_overhead =
+  Chunk::aligned_overhead_size(sizeof(Metachunk)) / BytesPerWord;
+
+// New blocks returned by the Metaspace are zero initialized.
+// We should fix the constructors to not assume this instead.
+Metablock* Metablock::initialize(MetaWord* p, size_t word_size) {
+  Metablock* result = (Metablock*) p;
+
+  // Clear the memory
+  Copy::fill_to_aligned_words((HeapWord*)result, word_size);
+#ifdef ASSERT
+  result->set_word_size(word_size);
+  // Check after work size is set.
+  result->set_leader((void*) metaspace_allocation_leader);
+  result->set_trailer((void*) metaspace_allocation_trailer);
+#endif
+  return result;
+}
+
+void Metablock::verify() {
+#ifdef ASSERT
+  assert(leader() == metaspace_allocation_leader &&
+         trailer() == metaspace_allocation_trailer,
+         "block has been corrupted");
+#endif
+}
+
+// Metachunk methods
+
+Metachunk* Metachunk::initialize(MetaWord* ptr, size_t word_size) {
+  // Set bottom, top, and end.  Allow space for the Metachunk itself
+  Metachunk* chunk = (Metachunk*) ptr;
+
+  MetaWord* chunk_bottom = ptr + _overhead;
+  chunk->set_bottom(ptr);
+  chunk->set_top(chunk_bottom);
+  MetaWord* chunk_end = ptr + word_size;
+  assert(chunk_end > chunk_bottom, "Chunk must be too small");
+  chunk->set_end(chunk_end);
+  chunk->set_next(NULL);
+  chunk->set_word_size(word_size);
+#ifdef ASSERT
+  size_t data_word_size = pointer_delta(chunk_end, chunk_bottom, sizeof(MetaWord));
+  Copy::fill_to_words((HeapWord*) chunk_bottom, data_word_size, metadata_chunk_initialize);
+#endif
+  return chunk;
+}
+
+
+Metablock* Metachunk::allocate(size_t word_size) {
+  Metablock* result = NULL;
+  // If available, bump the pointer to allocate.
+  if (free_word_size() >= word_size) {
+    result = Metablock::initialize(_top, word_size);
+    _top = _top + word_size;
+  }
+#ifdef ASSERT
+  assert(result == NULL ||
+         result->word_size() == word_size,
+         "Block size is not set correctly");
+#endif
+  return result;
+}
+
+// _bottom points to the start of the chunk including the overhead.
+size_t Metachunk::used_word_size() {
+  return pointer_delta(_top, _bottom, sizeof(MetaWord));
+}
+
+size_t Metachunk::free_word_size() {
+  return pointer_delta(_end, _top, sizeof(MetaWord));
+}
+
+size_t Metachunk::capacity_word_size() {
+  return pointer_delta(_end, _bottom, sizeof(MetaWord));
+}
+
+void Metachunk::print_on(outputStream* st) const {
+  st->print_cr("Metachunk:"
+               " bottom " PTR_FORMAT " top " PTR_FORMAT
+               " end " PTR_FORMAT " size " SIZE_FORMAT,
+               bottom(), top(), end(), word_size());
+}
+
+
+void Metachunk::verify() {
+#ifdef ASSERT
+  // Cannot walk through the blocks unless the blocks have
+  // headers with sizes.
+  MetaWord* curr = bottom() + overhead();
+  while (curr < top()) {
+    Metablock* block = (Metablock*) curr;
+    size_t word_size = block->word_size();
+    block->verify();
+    curr = curr + word_size;
+  }
+#endif
+  return;
+}
+
+// BlockFreelist methods
+
+#ifdef DEALLOCATE_BLOCKS
+BlockFreelist::BlockFreelist() : _dictionary(NULL) {}
+#else
+BlockFreelist::BlockFreelist() {}
+#endif
+
+BlockFreelist::~BlockFreelist() {
+#ifdef DEALLOCATE_BLOCKS
+  if (_dictionary != NULL) {
+    if (Verbose && TraceMetadataChunkAllocation) {
+      _dictionary->print_free_lists(gclog_or_tty);
+    }
+    delete _dictionary;
+  }
+#endif
+}
+
+Metablock* BlockFreelist::initialize_free_chunk(Metablock* block, size_t word_size) {
+#ifdef DEALLOCATE_BLOCKS
+#ifdef ASSERT
+  assert(word_size = block->word_size(), "Wrong chunk size");
+#endif
+  Metablock* result = block;
+  result->setSize(word_size);
+  result->linkPrev(NULL);
+  result->linkNext(NULL);
+
+  return result;
+#else
+  ShouldNotReachHere();
+  return block;
+#endif
+}
+
+void BlockFreelist::return_block(Metablock* block, size_t word_size) {
+#ifdef ASSERT
+  assert(word_size = block->word_size(), "Block size is wrong");;
+#endif
+  Metablock* free_chunk = initialize_free_chunk(block, word_size);
+#ifdef DEALLOCATE_BLOCKS
+  if (dictionary() == NULL) {
+   _dictionary = new BinaryTreeDictionary<Metablock>(false /* adaptive_freelists */);
+  }
+  dictionary()->returnChunk(free_chunk);
+#endif
+}
+
+Metablock* BlockFreelist::get_block(size_t word_size) {
+#ifdef DEALLOCATE_BLOCKS
+  if (dictionary() == NULL) {
+    return NULL;
+  }
+
+  Metablock* free_chunk =
+    dictionary()->getChunk(word_size, FreeBlockDictionary<Metablock>::exactly);
+#else
+  Metablock* free_chunk = NULL;
+#endif
+  if (free_chunk == NULL) {
+    return NULL;
+  }
+  assert(free_chunk->word_size() == word_size, "Size of chunk is incorrect");
+  Metablock* block = Metablock::initialize((MetaWord*) free_chunk, word_size);
+#ifdef ASSERT
+  assert(block->word_size() == word_size, "Block size is not set correctly");
+#endif
+
+  return block;
+}
+
+void BlockFreelist::print_on(outputStream* st) const {
+#ifdef DEALLOCATE_BLOCKS
+  if (dictionary() == NULL) {
+    return;
+  }
+  dictionary()->print_free_lists(st);
+#else
+  return;
+#endif
+}
+
+// VirtualSpaceNode methods
+
+VirtualSpaceNode::~VirtualSpaceNode() {
+  _rs.release();
+}
+
+size_t VirtualSpaceNode::used_words_in_vs() const {
+  return pointer_delta(top(), bottom(), sizeof(MetaWord));
+}
+
+// Space committed in the VirtualSpace
+size_t VirtualSpaceNode::capacity_words_in_vs() const {
+  return pointer_delta(end(), bottom(), sizeof(MetaWord));
+}
+
+
+// Allocates the chunk from the virtual space only.
+// This interface is also used internally for debugging.  Not all
+// chunks removed here are necessarily used for allocation.
+Metachunk* VirtualSpaceNode::take_from_committed(size_t chunk_word_size) {
+  // Bottom of the new chunk
+  MetaWord* chunk_limit = top();
+  assert(chunk_limit != NULL, "Not safe to call this method");
+
+  if (!is_available(chunk_word_size)) {
+    if (TraceMetadataChunkAllocation) {
+      tty->print("VirtualSpaceNode::take_from_committed() not available %d words ", chunk_word_size);
+      // Dump some information about the virtual space that is nearly full
+      print_on(tty);
+    }
+    return NULL;
+  }
+
+  // Take the space  (bump top on the current virtual space).
+  inc_top(chunk_word_size);
+
+  // Point the chunk at the space
+  Metachunk* result = Metachunk::initialize(chunk_limit, chunk_word_size);
+  return result;
+}
+
+
+// Expand the virtual space (commit more of the reserved space)
+bool VirtualSpaceNode::expand_by(size_t words, bool pre_touch) {
+  size_t bytes = words * BytesPerWord;
+  bool result =  virtual_space()->expand_by(bytes, pre_touch);
+  if (TraceMetavirtualspaceAllocation && !result) {
+    gclog_or_tty->print_cr("VirtualSpaceNode::expand_by() failed "
+                           "for byte size " SIZE_FORMAT, bytes);
+    virtual_space()->print();
+  }
+  return result;
+}
+
+// Shrink the virtual space (commit more of the reserved space)
+bool VirtualSpaceNode::shrink_by(size_t words) {
+  size_t bytes = words * BytesPerWord;
+  virtual_space()->shrink_by(bytes);
+  return true;
+}
+
+// Add another chunk to the chunk list.
+
+Metachunk* VirtualSpaceNode::get_chunk_vs(size_t chunk_word_size) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  Metachunk* result = NULL;
+
+  return take_from_committed(chunk_word_size);
+}
+
+Metachunk* VirtualSpaceNode::get_chunk_vs_with_expand(size_t chunk_word_size) {
+  assert_lock_strong(SpaceManager::expand_lock());
+
+  Metachunk* new_chunk = get_chunk_vs(chunk_word_size);
+
+  if (new_chunk == NULL) {
+    // Only a small part of the virtualspace is committed when first
+    // allocated so committing more here can be expected.
+    size_t page_size_words = os::vm_page_size() / BytesPerWord;
+    size_t aligned_expand_vs_by_words = align_size_up(chunk_word_size,
+                                                    page_size_words);
+    expand_by(aligned_expand_vs_by_words, false);
+    new_chunk = get_chunk_vs(chunk_word_size);
+  }
+  return new_chunk;
+}
+
+bool VirtualSpaceNode::initialize() {
+
+  if (!_rs.is_reserved()) {
+    return false;
+  }
+
+  // Commit only 1 page instead of the whole reserved space _rs.size()
+  size_t committed_byte_size = os::vm_page_size();
+  bool result = virtual_space()->initialize(_rs, committed_byte_size);
+  if (result) {
+    set_top((MetaWord*)virtual_space()->low());
+    set_reserved(MemRegion((HeapWord*)_rs.base(),
+                 (HeapWord*)(_rs.base() + _rs.size())));
+
+    assert(reserved()->start() == (HeapWord*) _rs.base(),
+      err_msg("Reserved start was not set properly " PTR_FORMAT
+        " != " PTR_FORMAT, reserved()->start(), _rs.base()));
+    assert(reserved()->word_size() == _rs.size() / BytesPerWord,
+      err_msg("Reserved size was not set properly " SIZE_FORMAT
+        " != " SIZE_FORMAT, reserved()->word_size(),
+        _rs.size() / BytesPerWord));
+  }
+
+  return result;
+}
+
+void VirtualSpaceNode::print_on(outputStream* st) const {
+  size_t used = used_words_in_vs();
+  size_t capacity = capacity_words_in_vs();
+  VirtualSpace* vs = virtual_space();
+  st->print_cr("   space @ " PTR_FORMAT " " SIZE_FORMAT "K, %3d%% used "
+           "[" PTR_FORMAT ", " PTR_FORMAT ", "
+           PTR_FORMAT ", " PTR_FORMAT ")",
+           vs, capacity / K, used * 100 / capacity,
+           bottom(), top(), end(),
+           vs->high_boundary());
+}
+
+void VirtualSpaceNode::mangle() {
+  size_t word_size = capacity_words_in_vs();
+  Copy::fill_to_words((HeapWord*) low(), word_size, 0xf1f1f1f1);
+}
+
+// VirtualSpaceList methods
+// Space allocated from the VirtualSpace
+
+VirtualSpaceList::~VirtualSpaceList() {
+  VirtualSpaceListIterator iter(virtual_space_list());
+  while (iter.repeat()) {
+    VirtualSpaceNode* vsl = iter.get_next();
+    delete vsl;
+  }
+}
+
+size_t VirtualSpaceList::used_words_sum() {
+  size_t allocated_by_vs = 0;
+  VirtualSpaceListIterator iter(virtual_space_list());
+  while (iter.repeat()) {
+    VirtualSpaceNode* vsl = iter.get_next();
+    // Sum used region [bottom, top) in each virtualspace
+    allocated_by_vs += vsl->used_words_in_vs();
+  }
+  assert(allocated_by_vs >= chunk_manager()->free_chunks_total(),
+    err_msg("Total in free chunks " SIZE_FORMAT
+            " greater than total from virtual_spaces " SIZE_FORMAT,
+            allocated_by_vs, chunk_manager()->free_chunks_total()));
+  size_t used =
+    allocated_by_vs - chunk_manager()->free_chunks_total();
+  return used;
+}
+
+// Space available in all MetadataVirtualspaces allocated
+// for metadata.  This is the upper limit on the capacity
+// of chunks allocated out of all the MetadataVirtualspaces.
+size_t VirtualSpaceList::capacity_words_sum() {
+  size_t capacity = 0;
+  VirtualSpaceListIterator iter(virtual_space_list());
+  while (iter.repeat()) {
+    VirtualSpaceNode* vsl = iter.get_next();
+    capacity += vsl->capacity_words_in_vs();
+  }
+  return capacity;
+}
+
+VirtualSpaceList::VirtualSpaceList(size_t word_size ) :
+                                   _is_class(false),
+                                   _virtual_space_list(NULL),
+                                   _current_virtual_space(NULL),
+                                   _virtual_space_total(0),
+                                   _virtual_space_count(0) {
+  MutexLockerEx cl(SpaceManager::expand_lock(),
+                   Mutex::_no_safepoint_check_flag);
+  bool initialization_succeeded = grow_vs(word_size);
+
+  assert(initialization_succeeded,
+    " VirtualSpaceList initialization should not fail");
+}
+
+VirtualSpaceList::VirtualSpaceList(ReservedSpace rs) :
+                                   _is_class(true),
+                                   _virtual_space_list(NULL),
+                                   _current_virtual_space(NULL),
+                                   _virtual_space_total(0),
+                                   _virtual_space_count(0) {
+  MutexLockerEx cl(SpaceManager::expand_lock(),
+                   Mutex::_no_safepoint_check_flag);
+  VirtualSpaceNode* class_entry = new VirtualSpaceNode(rs);
+  bool succeeded = class_entry->initialize();
+  assert(succeeded, " VirtualSpaceList initialization should not fail");
+  link_vs(class_entry, rs.size()/BytesPerWord);
+}
+
+// Allocate another meta virtual space and add it to the list.
+bool VirtualSpaceList::grow_vs(size_t vs_word_size) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  if (vs_word_size == 0) {
+    return false;
+  }
+  // Reserve the space
+  size_t vs_byte_size = vs_word_size * BytesPerWord;
+  assert(vs_byte_size % os::vm_page_size() == 0, "Not aligned");
+
+  // Allocate the meta virtual space and initialize it.
+  VirtualSpaceNode* new_entry = new VirtualSpaceNode(vs_byte_size);
+  if (!new_entry->initialize()) {
+    delete new_entry;
+    return false;
+  } else {
+    link_vs(new_entry, vs_word_size);
+    return true;
+  }
+}
+
+void VirtualSpaceList::link_vs(VirtualSpaceNode* new_entry, size_t vs_word_size) {
+  if (virtual_space_list() == NULL) {
+      set_virtual_space_list(new_entry);
+  } else {
+    current_virtual_space()->set_next(new_entry);
+  }
+  set_current_virtual_space(new_entry);
+  inc_virtual_space_total(vs_word_size);
+  inc_virtual_space_count();
+#ifdef ASSERT
+  new_entry->mangle();
+#endif
+  if (TraceMetavirtualspaceAllocation && Verbose) {
+    VirtualSpaceNode* vsl = current_virtual_space();
+    vsl->print_on(tty);
+  }
+}
+
+Metachunk* VirtualSpaceList::get_new_chunk(size_t word_size,
+                                           size_t grow_chunks_by_words) {
+
+  // Get a chunk from the chunk freelist
+  Metachunk* next = chunk_manager()->chunk_freelist_allocate(grow_chunks_by_words);
+
+  // Allocate a chunk out of the current virtual space.
+  if (next == NULL) {
+    next = current_virtual_space()->get_chunk_vs(grow_chunks_by_words);
+  }
+
+  if (next == NULL) {
+    // Not enough room in current virtual space.  Try to commit
+    // more space.
+    size_t expand_vs_by_words = MAX2((size_t)SpaceManager::MediumChunkBunch,
+                                       grow_chunks_by_words);
+    size_t page_size_words = os::vm_page_size() / BytesPerWord;
+    size_t aligned_expand_vs_by_words = align_size_up(expand_vs_by_words,
+                                                        page_size_words);
+    bool vs_expanded =
+      current_virtual_space()->expand_by(aligned_expand_vs_by_words, false);
+    if (!vs_expanded) {
+      // Should the capacity of the metaspaces be expanded for
+      // this allocation?  If it's the virtual space for classes and is
+      // being used for CompressedHeaders, don't allocate a new virtualspace.
+      if (can_grow() && MetaspaceGC::should_expand(this, word_size)) {
+        // Get another virtual space.
+          size_t grow_vs_words =
+            MAX2((size_t)VirtualSpaceSize, aligned_expand_vs_by_words);
+        if (grow_vs(grow_vs_words)) {
+          // Got it.  It's on the list now.  Get a chunk from it.
+          next = current_virtual_space()->get_chunk_vs_with_expand(grow_chunks_by_words);
+        }
+        if (TraceMetadataHumongousAllocation && SpaceManager::is_humongous(word_size)) {
+          gclog_or_tty->print_cr("  aligned_expand_vs_by_words " PTR_FORMAT,
+                                 aligned_expand_vs_by_words);
+          gclog_or_tty->print_cr("  grow_vs_words " PTR_FORMAT,
+                                 grow_vs_words);
+        }
+      } else {
+        // Allocation will fail and induce a GC
+        if (TraceMetadataChunkAllocation && Verbose) {
+          gclog_or_tty->print_cr("VirtualSpaceList::get_new_chunk():"
+            " Fail instead of expand the metaspace");
+        }
+      }
+    } else {
+      // The virtual space expanded, get a new chunk
+      next = current_virtual_space()->get_chunk_vs(grow_chunks_by_words);
+      assert(next != NULL, "Just expanded, should succeed");
+    }
+  }
+
+  return next;
+}
+
+void VirtualSpaceList::print_on(outputStream* st) const {
+  if (TraceMetadataChunkAllocation && Verbose) {
+    VirtualSpaceListIterator iter(virtual_space_list());
+    while (iter.repeat()) {
+      VirtualSpaceNode* node = iter.get_next();
+      node->print_on(st);
+    }
+  }
+}
+
+#ifndef PRODUCT
+bool VirtualSpaceList::contains(const void *ptr) {
+  VirtualSpaceNode* list = virtual_space_list();
+  VirtualSpaceListIterator iter(list);
+  while (iter.repeat()) {
+    VirtualSpaceNode* node = iter.get_next();
+    if (node->reserved()->contains(ptr)) {
+      return true;
+    }
+  }
+  return false;
+}
+#endif // PRODUCT
+
+
+// MetaspaceGC methods
+
+// VM_CollectForMetadataAllocation is the vm operation used to GC.
+// Within the VM operation after the GC the attempt to allocate the metadata
+// should succeed.  If the GC did not free enough space for the metaspace
+// allocation, the HWM is increased so that another virtualspace will be
+// allocated for the metadata.  With perm gen the increase in the perm
+// gen had bounds, MinMetaspaceExpansion and MaxMetaspaceExpansion.  The
+// metaspace policy uses those as the small and large steps for the HWM.
+//
+// After the GC the compute_new_size() for MetaspaceGC is called to
+// resize the capacity of the metaspaces.  The current implementation
+// is based on the flags MinHeapFreeRatio and MaxHeapFreeRatio used
+// to resize the Java heap by some GC's.  New flags can be implemented
+// if really needed.  MinHeapFreeRatio is used to calculate how much
+// free space is desirable in the metaspace capacity to decide how much
+// to increase the HWM.  MaxHeapFreeRatio is used to decide how much
+// free space is desirable in the metaspace capacity before decreasing
+// the HWM.
+
+// Calculate the amount to increase the high water mark (HWM).
+// Increase by a minimum amount (MinMetaspaceExpansion) so that
+// another expansion is not requested too soon.  If that is not
+// enough to satisfy the allocation (i.e. big enough for a word_size
+// allocation), increase by MaxMetaspaceExpansion.  If that is still
+// not enough, expand by the size of the allocation (word_size) plus
+// some.
+size_t MetaspaceGC::delta_capacity_until_GC(size_t word_size) {
+  size_t before_inc = MetaspaceGC::capacity_until_GC();
+  size_t min_delta_words = MinMetaspaceExpansion / BytesPerWord;
+  size_t max_delta_words = MaxMetaspaceExpansion / BytesPerWord;
+  size_t page_size_words = os::vm_page_size() / BytesPerWord;
+  size_t size_delta_words = align_size_up(word_size, page_size_words);
+  size_t delta_words = MAX2(size_delta_words, min_delta_words);
+  if (delta_words > min_delta_words) {
+    // Don't want to hit the high water mark on the next
+    // allocation so make the delta greater than just enough
+    // for this allocation.
+    delta_words = MAX2(delta_words, max_delta_words);
+    if (delta_words > max_delta_words) {
+      // This allocation is large but the next ones are probably not
+      // so increase by the minimum.
+      delta_words = delta_words + min_delta_words;
+    }
+  }
+  return delta_words;
+}
+
+bool MetaspaceGC::should_expand(VirtualSpaceList* vsl, size_t word_size) {
+
+  // Class virtual space should always be expanded.  Call GC for the other
+  // metadata virtual space.
+  if (vsl == Metaspace::class_space_list()) return true;
+
+  // If the user wants a limit, impose one.
+  size_t max_metaspace_size_words = MaxMetaspaceSize / BytesPerWord;
+  size_t metaspace_size_words = MetaspaceSize / BytesPerWord;
+  if (!FLAG_IS_DEFAULT(MaxMetaspaceSize) &&
+      vsl->capacity_words_sum() >= max_metaspace_size_words) {
+    return false;
+  }
+
+  // If this is part of an allocation after a GC, expand
+  // unconditionally.
+  if(MetaspaceGC::expand_after_GC()) {
+    return true;
+  }
+
+  // If the capacity is below the minimum capacity, allow the
+  // expansion.  Also set the high-water-mark (capacity_until_GC)
+  // to that minimum capacity so that a GC will not be induced
+  // until that minimum capacity is exceeded.
+  if (vsl->capacity_words_sum() < metaspace_size_words ||
+      capacity_until_GC() == 0) {
+    set_capacity_until_GC(metaspace_size_words);
+    return true;
+  } else {
+    if (vsl->capacity_words_sum() < capacity_until_GC()) {
+      return true;
+    } else {
+      if (TraceMetadataChunkAllocation && Verbose) {
+        gclog_or_tty->print_cr("  allocation request size " SIZE_FORMAT
+                        "  capacity_until_GC " SIZE_FORMAT
+                        "  capacity_words_sum " SIZE_FORMAT
+                        "  used_words_sum " SIZE_FORMAT
+                        "  free chunks " SIZE_FORMAT
+                        "  free chunks count %d",
+                        word_size,
+                        capacity_until_GC(),
+                        vsl->capacity_words_sum(),
+                        vsl->used_words_sum(),
+                        vsl->chunk_manager()->free_chunks_total(),
+                        vsl->chunk_manager()->free_chunks_count());
+      }
+      return false;
+    }
+  }
+}
+
+// Variables are in bytes
+
+void MetaspaceGC::compute_new_size() {
+  assert(_shrink_factor <= 100, "invalid shrink factor");
+  uint current_shrink_factor = _shrink_factor;
+  _shrink_factor = 0;
+
+  VirtualSpaceList *vsl = Metaspace::space_list();
+
+  size_t capacity_after_gc = vsl->capacity_bytes_sum();
+  // Check to see if these two can be calculated without walking the CLDG
+  size_t used_after_gc = vsl->used_bytes_sum();
+  size_t capacity_until_GC = vsl->capacity_bytes_sum();
+  size_t free_after_gc = capacity_until_GC - used_after_gc;
+
+  const double minimum_free_percentage = MinHeapFreeRatio / 100.0;
+  const double maximum_used_percentage = 1.0 - minimum_free_percentage;
+
+  const double min_tmp = used_after_gc / maximum_used_percentage;
+  size_t minimum_desired_capacity =
+    (size_t)MIN2(min_tmp, double(max_uintx));
+  // Don't shrink less than the initial generation size
+  minimum_desired_capacity = MAX2(minimum_desired_capacity,
+                                  MetaspaceSize);
+
+  if (PrintGCDetails && Verbose) {
+    const double free_percentage = ((double)free_after_gc) / capacity_until_GC;
+    gclog_or_tty->print_cr("\nMetaspaceGC::compute_new_size: ");
+    gclog_or_tty->print_cr("  "
+                  "  minimum_free_percentage: %6.2f"
+                  "  maximum_used_percentage: %6.2f",
+                  minimum_free_percentage,
+                  maximum_used_percentage);
+    double d_free_after_gc = free_after_gc / (double) K;
+    gclog_or_tty->print_cr("  "
+                  "   free_after_gc       : %6.1fK"
+                  "   used_after_gc       : %6.1fK"
+                  "   capacity_after_gc   : %6.1fK"
+                  "   metaspace HWM     : %6.1fK",
+                  free_after_gc / (double) K,
+                  used_after_gc / (double) K,
+                  capacity_after_gc / (double) K,
+                  capacity_until_GC / (double) K);
+    gclog_or_tty->print_cr("  "
+                  "   free_percentage: %6.2f",
+                  free_percentage);
+  }
+
+
+  if (capacity_until_GC < minimum_desired_capacity) {
+    // If we have less capacity below the metaspace HWM, then
+    // increment the HWM.
+    size_t expand_bytes = minimum_desired_capacity - capacity_until_GC;
+    // Don't expand unless it's significant
+    if (expand_bytes >= MinMetaspaceExpansion) {
+      size_t expand_words = expand_bytes / BytesPerWord;
+      MetaspaceGC::inc_capacity_until_GC(expand_words);
+    }
+    if (PrintGCDetails && Verbose) {
+      size_t new_capacity_until_GC = MetaspaceGC::capacity_until_GC_in_bytes();
+      gclog_or_tty->print_cr("    expanding:"
+                    "  minimum_desired_capacity: %6.1fK"
+                    "  expand_words: %6.1fK"
+                    "  MinMetaspaceExpansion: %6.1fK"
+                    "  new metaspace HWM:  %6.1fK",
+                    minimum_desired_capacity / (double) K,
+                    expand_bytes / (double) K,
+                    MinMetaspaceExpansion / (double) K,
+                    new_capacity_until_GC / (double) K);
+    }
+    return;
+  }
+
+  // No expansion, now see if we want to shrink
+  size_t shrink_words = 0;
+  // We would never want to shrink more than this
+  size_t max_shrink_words = capacity_until_GC - minimum_desired_capacity;
+  assert(max_shrink_words >= 0, err_msg("max_shrink_words " SIZE_FORMAT,
+    max_shrink_words));
+
+  // Should shrinking be considered?
+  if (MaxHeapFreeRatio < 100) {
+    const double maximum_free_percentage = MaxHeapFreeRatio / 100.0;
+    const double minimum_used_percentage = 1.0 - maximum_free_percentage;
+    const double max_tmp = used_after_gc / minimum_used_percentage;
+    size_t maximum_desired_capacity = (size_t)MIN2(max_tmp, double(max_uintx));
+    maximum_desired_capacity = MAX2(maximum_desired_capacity,
+                                    MetaspaceSize);
+    if (PrintGC && Verbose) {
+      gclog_or_tty->print_cr("  "
+                             "  maximum_free_percentage: %6.2f"
+                             "  minimum_used_percentage: %6.2f",
+                             maximum_free_percentage,
+                             minimum_used_percentage);
+      gclog_or_tty->print_cr("  "
+                             "  capacity_until_GC: %6.1fK"
+                             "  minimum_desired_capacity: %6.1fK"
+                             "  maximum_desired_capacity: %6.1fK",
+                             capacity_until_GC / (double) K,
+                             minimum_desired_capacity / (double) K,
+                             maximum_desired_capacity / (double) K);
+    }
+
+    assert(minimum_desired_capacity <= maximum_desired_capacity,
+           "sanity check");
+
+    if (capacity_until_GC > maximum_desired_capacity) {
+      // Capacity too large, compute shrinking size
+      shrink_words = capacity_until_GC - maximum_desired_capacity;
+      // We don't want shrink all the way back to initSize if people call
+      // System.gc(), because some programs do that between "phases" and then
+      // we'd just have to grow the heap up again for the next phase.  So we
+      // damp the shrinking: 0% on the first call, 10% on the second call, 40%
+      // on the third call, and 100% by the fourth call.  But if we recompute
+      // size without shrinking, it goes back to 0%.
+      shrink_words = shrink_words / 100 * current_shrink_factor;
+      assert(shrink_words <= max_shrink_words,
+        err_msg("invalid shrink size " SIZE_FORMAT " not <= " SIZE_FORMAT,
+          shrink_words, max_shrink_words));
+      if (current_shrink_factor == 0) {
+        _shrink_factor = 10;
+      } else {
+        _shrink_factor = MIN2(current_shrink_factor * 4, (uint) 100);
+      }
+      if (PrintGCDetails && Verbose) {
+        gclog_or_tty->print_cr("  "
+                      "  shrinking:"
+                      "  initSize: %.1fK"
+                      "  maximum_desired_capacity: %.1fK",
+                      MetaspaceSize / (double) K,
+                      maximum_desired_capacity / (double) K);
+        gclog_or_tty->print_cr("  "
+                      "  shrink_words: %.1fK"
+                      "  current_shrink_factor: %d"
+                      "  new shrink factor: %d"
+                      "  MinMetaspaceExpansion: %.1fK",
+                      shrink_words / (double) K,
+                      current_shrink_factor,
+                      _shrink_factor,
+                      MinMetaspaceExpansion / (double) K);
+      }
+    }
+  }
+
+
+  // Don't shrink unless it's significant
+  if (shrink_words >= MinMetaspaceExpansion) {
+    VirtualSpaceNode* csp = vsl->current_virtual_space();
+    size_t available_to_shrink = csp->capacity_words_in_vs() -
+      csp->used_words_in_vs();
+    shrink_words = MIN2(shrink_words, available_to_shrink);
+    csp->shrink_by(shrink_words);
+    MetaspaceGC::dec_capacity_until_GC(shrink_words);
+    if (PrintGCDetails && Verbose) {
+      size_t new_capacity_until_GC = MetaspaceGC::capacity_until_GC_in_bytes();
+      gclog_or_tty->print_cr("  metaspace HWM: %.1fK", new_capacity_until_GC / (double) K);
+    }
+  }
+  assert(vsl->used_bytes_sum() == used_after_gc &&
+         used_after_gc <= vsl->capacity_bytes_sum(),
+         "sanity check");
+
+}
+
+// Metadebug methods
+
+void Metadebug::deallocate_chunk_a_lot(SpaceManager* sm,
+                                       size_t chunk_word_size){
+#ifdef ASSERT
+  VirtualSpaceList* vsl = sm->vs_list();
+  if (MetaDataDeallocateALot &&
+      Metadebug::deallocate_chunk_a_lot_count() % MetaDataDeallocateALotInterval == 0 ) {
+    Metadebug::reset_deallocate_chunk_a_lot_count();
+    for (uint i = 0; i < metadata_deallocate_a_lock_chunk; i++) {
+      Metachunk* dummy_chunk = vsl->current_virtual_space()->take_from_committed(chunk_word_size);
+      if (dummy_chunk == NULL) {
+        break;
+      }
+      vsl->chunk_manager()->chunk_freelist_deallocate(dummy_chunk);
+
+      if (TraceMetadataChunkAllocation && Verbose) {
+        gclog_or_tty->print("Metadebug::deallocate_chunk_a_lot: %d) ",
+                               sm->sum_count_in_chunks_in_use());
+        dummy_chunk->print_on(gclog_or_tty);
+        gclog_or_tty->print_cr("  Free chunks total %d  count %d",
+                               vsl->chunk_manager()->free_chunks_total(),
+                               vsl->chunk_manager()->free_chunks_count());
+      }
+    }
+  } else {
+    Metadebug::inc_deallocate_chunk_a_lot_count();
+  }
+#endif
+}
+
+void Metadebug::deallocate_block_a_lot(SpaceManager* sm,
+                                       size_t raw_word_size){
+#ifdef ASSERT
+  if (MetaDataDeallocateALot &&
+        Metadebug::deallocate_block_a_lot_count() % MetaDataDeallocateALotInterval == 0 ) {
+    Metadebug::set_deallocate_block_a_lot_count(0);
+    for (uint i = 0; i < metadata_deallocate_a_lot_block; i++) {
+      Metablock* dummy_block = sm->allocate_work(raw_word_size);
+      if (dummy_block == 0) {
+        break;
+      }
+#ifdef ASSERT
+      assert(dummy_block->word_size() == raw_word_size, "Block size is not set correctly");
+#endif
+      sm->deallocate(dummy_block->data());
+    }
+  } else {
+    Metadebug::inc_deallocate_block_a_lot_count();
+  }
+#endif
+}
+
+void Metadebug::init_allocation_fail_alot_count() {
+  if (MetadataAllocationFailALot) {
+    _allocation_fail_alot_count =
+      1+(long)((double)MetadataAllocationFailALotInterval*os::random()/(max_jint+1.0));
+  }
+}
+
+#ifdef ASSERT
+bool Metadebug::test_metadata_failure() {
+  if (MetadataAllocationFailALot &&
+      Threads::is_vm_complete()) {
+    if (_allocation_fail_alot_count > 0) {
+      _allocation_fail_alot_count--;
+    } else {
+      if (TraceMetadataChunkAllocation && Verbose) {
+        gclog_or_tty->print_cr("Metadata allocation failing for "
+                               "MetadataAllocationFailALot");
+      }
+      init_allocation_fail_alot_count();
+      return true;
+    }
+  }
+  return false;
+}
+#endif
+
+// ChunkList methods
+
+size_t ChunkList::sum_list_size() {
+  size_t result = 0;
+  Metachunk* cur = head();
+  while (cur != NULL) {
+    result += cur->word_size();
+    cur = cur->next();
+  }
+  return result;
+}
+
+size_t ChunkList::sum_list_count() {
+  size_t result = 0;
+  Metachunk* cur = head();
+  while (cur != NULL) {
+    result++;
+    cur = cur->next();
+  }
+  return result;
+}
+
+size_t ChunkList::sum_list_capacity() {
+  size_t result = 0;
+  Metachunk* cur = head();
+  while (cur != NULL) {
+    result += cur->capacity_word_size();
+    cur = cur->next();
+  }
+  return result;
+}
+
+void ChunkList::add_at_head(Metachunk* head, Metachunk* tail) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  assert(tail->next() == NULL, "Not the tail");
+
+  if (TraceMetadataChunkAllocation && Verbose) {
+    tty->print("ChunkList::add_at_head: ");
+    Metachunk* cur = head;
+    while (cur != NULL) {
+    tty->print(PTR_FORMAT " (" SIZE_FORMAT ") ", cur, cur->word_size());
+      cur = cur->next();
+    }
+    tty->print_cr("");
+  }
+
+  if (tail != NULL) {
+    tail->set_next(_head);
+  }
+  set_head(head);
+}
+
+void ChunkList::add_at_head(Metachunk* list) {
+  if (list == NULL) {
+    // Nothing to add
+    return;
+  }
+  assert_lock_strong(SpaceManager::expand_lock());
+  Metachunk* head = list;
+  Metachunk* tail = list;
+  Metachunk* cur = head->next();
+  // Search for the tail since it is not passed.
+  while (cur != NULL) {
+    tail = cur;
+    cur = cur->next();
+  }
+  add_at_head(head, tail);
+}
+
+// ChunkManager methods
+
+// Verification of _free_chunks_total and _free_chunks_count does not
+// work with the CMS collector because its use of additional locks
+// complicate the mutex deadlock detection but it can still be useful
+// for detecting errors in the chunk accounting with other collectors.
+
+size_t ChunkManager::free_chunks_total() {
+#ifdef ASSERT
+  if (!UseConcMarkSweepGC && !SpaceManager::expand_lock()->is_locked()) {
+    MutexLockerEx cl(SpaceManager::expand_lock(),
+                     Mutex::_no_safepoint_check_flag);
+    locked_verify_free_chunks_total();
+  }
+#endif
+  return _free_chunks_total;
+}
+
+size_t ChunkManager::free_chunks_total_in_bytes() {
+  return free_chunks_total() * BytesPerWord;
+}
+
+size_t ChunkManager::free_chunks_count() {
+#ifdef ASSERT
+  if (!UseConcMarkSweepGC && !SpaceManager::expand_lock()->is_locked()) {
+    MutexLockerEx cl(SpaceManager::expand_lock(),
+                     Mutex::_no_safepoint_check_flag);
+    // This lock is only needed in debug because the verification
+    // of the _free_chunks_totals walks the list of free chunks
+    locked_verify_free_chunks_count();
+  }
+#endif
+    return _free_chunks_count;
+}
+
+void ChunkManager::locked_verify_free_chunks_total() {
+  assert_lock_strong(SpaceManager::expand_lock());
+  assert(sum_free_chunks() == _free_chunks_total,
+    err_msg("_free_chunks_total " SIZE_FORMAT " is not the"
+           " same as sum " SIZE_FORMAT, _free_chunks_total,
+           sum_free_chunks()));
+}
+
+void ChunkManager::verify_free_chunks_total() {
+  MutexLockerEx cl(SpaceManager::expand_lock(),
+                     Mutex::_no_safepoint_check_flag);
+  locked_verify_free_chunks_total();
+}
+
+void ChunkManager::locked_verify_free_chunks_count() {
+  assert_lock_strong(SpaceManager::expand_lock());
+  assert(sum_free_chunks_count() == _free_chunks_count,
+    err_msg("_free_chunks_count " SIZE_FORMAT " is not the"
+           " same as sum " SIZE_FORMAT, _free_chunks_count,
+           sum_free_chunks_count()));
+}
+
+void ChunkManager::verify_free_chunks_count() {
+#ifdef ASSERT
+  MutexLockerEx cl(SpaceManager::expand_lock(),
+                     Mutex::_no_safepoint_check_flag);
+  locked_verify_free_chunks_count();
+#endif
+}
+
+void ChunkManager::verify() {
+#ifdef ASSERT
+  if (!UseConcMarkSweepGC) {
+    MutexLockerEx cl(SpaceManager::expand_lock(),
+                       Mutex::_no_safepoint_check_flag);
+    locked_verify_free_chunks_total();
+    locked_verify_free_chunks_count();
+  }
+#endif
+}
+
+void ChunkManager::locked_verify() {
+  locked_verify_free_chunks_total();
+  locked_verify_free_chunks_count();
+}
+
+void ChunkManager::locked_print_free_chunks(outputStream* st) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  st->print_cr("Free chunk total 0x%x  count 0x%x",
+                _free_chunks_total, _free_chunks_count);
+}
+
+void ChunkManager::locked_print_sum_free_chunks(outputStream* st) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  st->print_cr("Sum free chunk total 0x%x  count 0x%x",
+                sum_free_chunks(), sum_free_chunks_count());
+}
+ChunkList* ChunkManager::free_chunks(ChunkIndex index) {
+  return &_free_chunks[index];
+}
+
+
+// These methods that sum the free chunk lists are used in printing
+// methods that are used in product builds.
+size_t ChunkManager::sum_free_chunks() {
+  assert_lock_strong(SpaceManager::expand_lock());
+  size_t result = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    ChunkList* list = free_chunks(i);
+
+    if (list == NULL) {
+      continue;
+    }
+
+    result = result + list->sum_list_capacity();
+  }
+  return result;
+}
+
+size_t ChunkManager::sum_free_chunks_count() {
+  assert_lock_strong(SpaceManager::expand_lock());
+  size_t count = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    ChunkList* list = free_chunks(i);
+    if (list == NULL) {
+      continue;
+    }
+    count = count + list->sum_list_count();
+  }
+  return count;
+}
+
+ChunkList* ChunkManager::find_free_chunks_list(size_t word_size) {
+  switch (word_size) {
+  case SpaceManager::SmallChunk :
+      return &_free_chunks[0];
+  case SpaceManager::MediumChunk :
+      return &_free_chunks[1];
+  default:
+    assert(word_size > SpaceManager::MediumChunk, "List inconsistency");
+    return &_free_chunks[2];
+  }
+}
+
+void ChunkManager::free_chunks_put(Metachunk* chunk) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  ChunkList* free_list = find_free_chunks_list(chunk->word_size());
+  chunk->set_next(free_list->head());
+  free_list->set_head(chunk);
+  // chunk is being returned to the chunk free list
+  inc_free_chunks_total(chunk->capacity_word_size());
+  locked_verify();
+}
+
+void ChunkManager::chunk_freelist_deallocate(Metachunk* chunk) {
+  // The deallocation of a chunk originates in the freelist
+  // manangement code for a Metaspace and does not hold the
+  // lock.
+  assert(chunk != NULL, "Deallocating NULL");
+  // MutexLockerEx fcl(SpaceManager::expand_lock(), Mutex::_no_safepoint_check_flag);
+  locked_verify();
+  if (TraceMetadataChunkAllocation) {
+    tty->print_cr("ChunkManager::chunk_freelist_deallocate: chunk "
+                  PTR_FORMAT "  size " SIZE_FORMAT,
+                  chunk, chunk->word_size());
+  }
+  free_chunks_put(chunk);
+}
+
+Metachunk* ChunkManager::free_chunks_get(size_t word_size) {
+  assert_lock_strong(SpaceManager::expand_lock());
+
+  locked_verify();
+  ChunkList* free_list = find_free_chunks_list(word_size);
+  assert(free_list != NULL, "Sanity check");
+
+  Metachunk* chunk = free_list->head();
+  debug_only(Metachunk* debug_head = chunk;)
+
+  if (chunk == NULL) {
+    return NULL;
+  }
+
+  Metachunk* prev_chunk = chunk;
+  if (chunk->word_size() == word_size) {
+    // Chunk is being removed from the chunks free list.
+    dec_free_chunks_total(chunk->capacity_word_size());
+    // Remove the chunk as the head of the list.
+    free_list->set_head(chunk->next());
+    chunk->set_next(NULL);
+
+    if (TraceMetadataChunkAllocation && Verbose) {
+      tty->print_cr("ChunkManager::free_chunks_get: free_list "
+                    PTR_FORMAT " head " PTR_FORMAT " size " SIZE_FORMAT,
+                    free_list, chunk, chunk->word_size());
+    }
+  } else {
+    assert(SpaceManager::is_humongous(word_size),
+      "Should only need to check humongous");
+    // This code to find the best fit is just for purposes of
+    // investigating the loss due to fragmentation on a humongous
+    // chunk.  It will be replace by a binaryTreeDictionary for
+    // the humongous chunks.
+    uint count = 0;
+    Metachunk* best_fit = NULL;
+    Metachunk* best_fit_prev = NULL;
+    while (chunk != NULL) {
+      count++;
+      if (chunk->word_size() < word_size) {
+        prev_chunk = chunk;
+        chunk = chunk->next();
+      } else if (chunk->word_size() == word_size) {
+        break;
+      } else {
+        if (best_fit == NULL ||
+            best_fit->word_size() > chunk->word_size()) {
+          best_fit_prev = prev_chunk;
+          best_fit = chunk;
+        }
+        prev_chunk = chunk;
+        chunk = chunk->next();
+      }
+    }
+      if (chunk == NULL) {
+        prev_chunk = best_fit_prev;
+        chunk = best_fit;
+      }
+      if (chunk != NULL) {
+        if (TraceMetadataHumongousAllocation) {
+          size_t waste = chunk->word_size() - word_size;
+          tty->print_cr("Free list allocate humongous chunk size " SIZE_FORMAT
+                        " for requested size " SIZE_FORMAT
+                        " waste " SIZE_FORMAT
+                        " found at " SIZE_FORMAT " of " SIZE_FORMAT,
+                        chunk->word_size(), word_size, waste,
+                        count, free_list->sum_list_count());
+        }
+        // Chunk is being removed from the chunks free list.
+        dec_free_chunks_total(chunk->capacity_word_size());
+        // Remove the chunk if it is at the head of the list.
+        if (chunk == free_list->head()) {
+          free_list->set_head(chunk->next());
+
+          if (TraceMetadataHumongousAllocation) {
+            tty->print_cr("ChunkManager::free_chunks_get: humongous free_list "
+                          PTR_FORMAT " chunk " PTR_FORMAT " size " SIZE_FORMAT
+                          " new head " PTR_FORMAT,
+                          free_list, chunk, chunk->word_size(),
+                          free_list->head());
+          }
+        } else {
+          // Remove a chunk in the interior of the list
+          prev_chunk->set_next(chunk->next());
+
+          if (TraceMetadataHumongousAllocation) {
+            tty->print_cr("ChunkManager::free_chunks_get: humongous free_list "
+                          PTR_FORMAT " chunk " PTR_FORMAT " size " SIZE_FORMAT
+                          PTR_FORMAT "  prev " PTR_FORMAT " next " PTR_FORMAT,
+                          free_list, chunk, chunk->word_size(),
+                          prev_chunk, chunk->next());
+          }
+        }
+        chunk->set_next(NULL);
+      } else {
+        if (TraceMetadataHumongousAllocation) {
+          tty->print_cr("ChunkManager::free_chunks_get: New humongous chunk of size "
+                        SIZE_FORMAT,
+                        word_size);
+        }
+      }
+  }
+  locked_verify();
+  return chunk;
+}
+
+Metachunk* ChunkManager::chunk_freelist_allocate(size_t word_size) {
+  assert_lock_strong(SpaceManager::expand_lock());
+  locked_verify();
+
+  // Take from the beginning of the list
+  Metachunk* chunk = free_chunks_get(word_size);
+  if (chunk == NULL) {
+    return NULL;
+  }
+
+  assert(word_size <= chunk->word_size() ||
+           SpaceManager::is_humongous(chunk->word_size()),
+           "Non-humongous variable sized chunk");
+  if (TraceMetadataChunkAllocation) {
+    tty->print("ChunkManager::chunk_freelist_allocate: chunk "
+               PTR_FORMAT "  size " SIZE_FORMAT " ",
+               chunk, chunk->word_size());
+    locked_print_free_chunks(tty);
+  }
+
+  return chunk;
+}
+
+// SpaceManager methods
+
+size_t SpaceManager::sum_free_in_chunks_in_use() const {
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+  size_t free = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    Metachunk* chunk = chunks_in_use(i);
+    while (chunk != NULL) {
+      free += chunk->free_word_size();
+      chunk = chunk->next();
+    }
+  }
+  return free;
+}
+
+size_t SpaceManager::sum_waste_in_chunks_in_use() const {
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+  size_t result = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+   // Count the free space in all the chunk but not the
+   // current chunk from which allocations are still being done.
+   result += sum_waste_in_chunks_in_use(i);
+  }
+  return result;
+}
+
+size_t SpaceManager::sum_waste_in_chunks_in_use(ChunkIndex index) const {
+  size_t result = 0;
+  size_t count = 0;
+  Metachunk* chunk = chunks_in_use(index);
+  // Count the free space in all the chunk but not the
+  // current chunk from which allocations are still being done.
+  if (chunk != NULL) {
+    while (chunk != NULL) {
+      if (chunk != current_chunk()) {
+        result += chunk->free_word_size();
+      }
+      chunk = chunk->next();
+      count++;
+    }
+  }
+  return result;
+}
+
+size_t SpaceManager::sum_capacity_in_chunks_in_use() const {
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+  size_t sum = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    Metachunk* chunk = chunks_in_use(i);
+    while (chunk != NULL) {
+      // Just changed this sum += chunk->capacity_word_size();
+      // sum += chunk->word_size() - Metachunk::overhead();
+      sum += chunk->capacity_word_size();
+      chunk = chunk->next();
+    }
+  }
+  return sum;
+}
+
+size_t SpaceManager::sum_count_in_chunks_in_use() {
+  size_t count = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    count = count + sum_count_in_chunks_in_use(i);
+  }
+  return count;
+}
+
+size_t SpaceManager::sum_count_in_chunks_in_use(ChunkIndex i) {
+  size_t count = 0;
+  Metachunk* chunk = chunks_in_use(i);
+  while (chunk != NULL) {
+    count++;
+    chunk = chunk->next();
+  }
+  return count;
+}
+
+
+size_t SpaceManager::sum_used_in_chunks_in_use() const {
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+  size_t used = 0;
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    Metachunk* chunk = chunks_in_use(i);
+    while (chunk != NULL) {
+      used += chunk->used_word_size();
+      chunk = chunk->next();
+    }
+  }
+  return used;
+}
+
+void SpaceManager::locked_print_chunks_in_use_on(outputStream* st) const {
+
+  Metachunk* small_chunk = chunks_in_use(SmallIndex);
+  st->print_cr("SpaceManager: small chunk " PTR_FORMAT
+               " free " SIZE_FORMAT,
+               small_chunk,
+               small_chunk->free_word_size());
+
+  Metachunk* medium_chunk = chunks_in_use(MediumIndex);
+  st->print("medium chunk " PTR_FORMAT, medium_chunk);
+  Metachunk* tail = current_chunk();
+  st->print_cr(" current chunk " PTR_FORMAT, tail);
+
+  Metachunk* head = chunks_in_use(HumongousIndex);
+  st->print_cr("humongous chunk " PTR_FORMAT, head);
+
+  vs_list()->chunk_manager()->locked_print_free_chunks(st);
+  vs_list()->chunk_manager()->locked_print_sum_free_chunks(st);
+}
+
+size_t SpaceManager::calc_chunk_size(size_t word_size) {
+
+  // Decide between a small chunk and a medium chunk.  Up to
+  // _small_chunk_limit small chunks can be allocated but
+  // once a medium chunk has been allocated, no more small
+  // chunks will be allocated.
+  size_t chunk_word_size;
+  if (chunks_in_use(MediumIndex) == NULL &&
+      (!has_small_chunk_limit() ||
+       sum_count_in_chunks_in_use(SmallIndex) < _small_chunk_limit)) {
+    chunk_word_size = (size_t) SpaceManager::SmallChunk;
+    if (word_size + Metachunk::overhead() > SpaceManager::SmallChunk) {
+      chunk_word_size = MediumChunk;
+    }
+  } else {
+    chunk_word_size = MediumChunk;
+  }
+
+  // Might still need a humongous chunk
+  chunk_word_size =
+    MAX2((size_t) chunk_word_size, word_size + Metachunk::overhead());
+
+  if (TraceMetadataHumongousAllocation &&
+      SpaceManager::is_humongous(word_size)) {
+    gclog_or_tty->print_cr("Metadata humongous allocation:");
+    gclog_or_tty->print_cr("  word_size " PTR_FORMAT, word_size);
+    gclog_or_tty->print_cr("  chunk_word_size " PTR_FORMAT,
+                           chunk_word_size);
+    gclog_or_tty->print_cr("    block overhead " PTR_FORMAT
+                           " chunk overhead " PTR_FORMAT,
+                           Metablock::overhead(),
+                           Metachunk::overhead());
+  }
+  return chunk_word_size;
+}
+
+Metablock* SpaceManager::grow_and_allocate(size_t word_size) {
+  assert(vs_list()->current_virtual_space() != NULL,
+         "Should have been set");
+  assert(current_chunk() == NULL ||
+         current_chunk()->allocate(word_size) == NULL,
+         "Don't need to expand");
+  MutexLockerEx cl(SpaceManager::expand_lock(), Mutex::_no_safepoint_check_flag);
+
+  if (TraceMetadataChunkAllocation && Verbose) {
+    gclog_or_tty->print_cr("SpaceManager::grow_and_allocate for " SIZE_FORMAT
+                           " words " SIZE_FORMAT " space left",
+                            word_size, current_chunk() != NULL ?
+                              current_chunk()->free_word_size() : 0);
+  }
+
+  // Get another chunk out of the virtual space
+  size_t grow_chunks_by_words = calc_chunk_size(word_size);
+  Metachunk* next = vs_list()->get_new_chunk(word_size, grow_chunks_by_words);
+
+  // If a chunk was available, add it to the in-use chunk list
+  // and do an allocation from it.
+  if (next != NULL) {
+    Metadebug::deallocate_chunk_a_lot(this, grow_chunks_by_words);
+    // Add to this manager's list of chunks in use.
+    add_chunk(next, false);
+    return next->allocate(word_size);
+  }
+  return NULL;
+}
+
+void SpaceManager::print_on(outputStream* st) const {
+
+  for (ChunkIndex i = SmallIndex;
+       i < NumberOfFreeLists ;
+       i = next_chunk_index(i) ) {
+    st->print_cr("  chunks_in_use " PTR_FORMAT " chunk size " PTR_FORMAT,
+                 chunks_in_use(i),
+                 chunks_in_use(i) == NULL ? 0 : chunks_in_use(i)->word_size());
+  }
+  st->print_cr("    waste:  Small " SIZE_FORMAT " Medium " SIZE_FORMAT
+               " Humongous " SIZE_FORMAT,
+               sum_waste_in_chunks_in_use(SmallIndex),
+               sum_waste_in_chunks_in_use(MediumIndex),
+               sum_waste_in_chunks_in_use(HumongousIndex));
+  // Nothing in them yet
+  // block_freelists()->print_on(st);
+}
+
+SpaceManager::SpaceManager(Mutex* lock, VirtualSpaceList* vs_list) :
+  _vs_list(vs_list),
+  _allocation_total(0),
+  _lock(lock) {
+  Metadebug::init_allocation_fail_alot_count();
+  for (ChunkIndex i = SmallIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+    _chunks_in_use[i] = NULL;
+  }
+  _current_chunk = NULL;
+  if (TraceMetadataChunkAllocation && Verbose) {
+    gclog_or_tty->print_cr("SpaceManager(): " PTR_FORMAT, this);
+  }
+}
+
+SpaceManager::~SpaceManager() {
+  MutexLockerEx fcl(SpaceManager::expand_lock(),
+                    Mutex::_no_safepoint_check_flag);
+
+  ChunkManager* chunk_manager = vs_list()->chunk_manager();
+
+  chunk_manager->locked_verify();
+
+  if (TraceMetadataChunkAllocation && Verbose) {
+    gclog_or_tty->print_cr("~SpaceManager(): " PTR_FORMAT, this);
+    locked_print_chunks_in_use_on(gclog_or_tty);
+  }
+
+  // Have to update before the chunks_in_use lists are emptied
+  // below.
+  chunk_manager->inc_free_chunks_total(sum_capacity_in_chunks_in_use(),
+                                       sum_count_in_chunks_in_use());
+
+#ifdef ASSERT
+  // Mangle freed memory.
+  mangle_freed_chunks();
+#endif // ASSERT
+
+  // Add all the chunks in use by this space manager
+  // to the global list of free chunks.
+
+  // Small chunks.  There is one _current_chunk for each
+  // Metaspace.  It could point to a small or medium chunk.
+  // Rather than determine which it is, follow the list of
+  // small chunks to add them to the free list
+  Metachunk* small_chunk = chunks_in_use(SmallIndex);
+  chunk_manager->free_small_chunks()->add_at_head(small_chunk);
+  set_chunks_in_use(SmallIndex, NULL);
+
+  // After the small chunk are the medium chunks
+  Metachunk* medium_chunk = chunks_in_use(MediumIndex);
+  assert(medium_chunk == NULL ||
+         medium_chunk->word_size() == MediumChunk,
+         "Chunk is on the wrong list");
+
+  if (medium_chunk != NULL) {
+    Metachunk* head = medium_chunk;
+    // If there is a medium chunk then the _current_chunk can only
+    // point to the last medium chunk.
+    Metachunk* tail = current_chunk();
+    chunk_manager->free_medium_chunks()->add_at_head(head, tail);
+    set_chunks_in_use(MediumIndex, NULL);
+  }
+
+  // Humongous chunks
+  // Humongous chunks are never the current chunk.
+  Metachunk* humongous_chunks = chunks_in_use(HumongousIndex);
+
+  if (humongous_chunks != NULL) {
+    chunk_manager->free_humongous_chunks()->add_at_head(humongous_chunks);
+    set_chunks_in_use(HumongousIndex, NULL);
+  }
+  chunk_manager->locked_verify();
+}
+
+void SpaceManager::deallocate(MetaWord* p) {
+  assert_lock_strong(_lock);
+  ShouldNotReachHere();  // Where is this needed.
+#ifdef DEALLOCATE_BLOCKS
+  Metablock* block = Metablock::metablock_from_data(p);
+  // This is expense but kept it until integration JJJ
+  assert(contains((address)block), "Block does not belong to this metaspace");
+  block_freelists()->return_block(block, word_size);
+#endif
+}
+
+// Adds a chunk to the list of chunks in use.
+void SpaceManager::add_chunk(Metachunk* new_chunk, bool make_current) {
+
+  assert(new_chunk != NULL, "Should not be NULL");
+  assert(new_chunk->next() == NULL, "Should not be on a list");
+
+  new_chunk->reset_empty();
+
+  // Find the correct list and and set the current
+  // chunk for that list.
+  switch (new_chunk->word_size()) {
+  case SpaceManager::SmallChunk :
+    if (chunks_in_use(SmallIndex) == NULL) {
+      // First chunk to add to the list
+      set_chunks_in_use(SmallIndex, new_chunk);
+    } else {
+      assert(current_chunk()->word_size() == SpaceManager::SmallChunk,
+        err_msg( "Incorrect mix of sizes in chunk list "
+        SIZE_FORMAT " new chunk " SIZE_FORMAT,
+        current_chunk()->word_size(), new_chunk->word_size()));
+      current_chunk()->set_next(new_chunk);
+    }
+    // Make current chunk
+    set_current_chunk(new_chunk);
+    break;
+  case SpaceManager::MediumChunk :
+    if (chunks_in_use(MediumIndex) == NULL) {
+      // About to add the first medium chunk so teminate the
+      // small chunk list.  In general once medium chunks are
+      // being added, we're past the need for small chunks.
+      if (current_chunk() != NULL) {
+        // Only a small chunk or the initial chunk could be
+        // the current chunk if this is the first medium chunk.
+        assert(current_chunk()->word_size() == SpaceManager::SmallChunk ||
+          chunks_in_use(SmallIndex) == NULL,
+          err_msg("Should be a small chunk or initial chunk, current chunk "
+          SIZE_FORMAT " new chunk " SIZE_FORMAT,
+          current_chunk()->word_size(), new_chunk->word_size()));
+        current_chunk()->set_next(NULL);
+      }
+      // First chunk to add to the list
+      set_chunks_in_use(MediumIndex, new_chunk);
+
+    } else {
+      // As a minimum the first medium chunk added would
+      // have become the _current_chunk
+      // so the _current_chunk has to be non-NULL here
+      // (although not necessarily still the first medium chunk).
+      assert(current_chunk()->word_size() == SpaceManager::MediumChunk,
+             "A medium chunk should the current chunk");
+      current_chunk()->set_next(new_chunk);
+    }
+    // Make current chunk
+    set_current_chunk(new_chunk);
+    break;
+  default: {
+    // For null class loader data and DumpSharedSpaces, the first chunk isn't
+    // small, so small will be null.  Link this first chunk as the current
+    // chunk.
+    if (make_current) {
+      // Set as the current chunk but otherwise treat as a humongous chunk.
+      set_current_chunk(new_chunk);
+    }
+    // Link at head.  The _current_chunk only points to a humongous chunk for
+    // the null class loader metaspace (class and data virtual space managers)
+    // any humongous chunks so will not point to the tail
+    // of the humongous chunks list.
+    new_chunk->set_next(chunks_in_use(HumongousIndex));
+    set_chunks_in_use(HumongousIndex, new_chunk);
+
+    assert(new_chunk->word_size() > MediumChunk, "List inconsistency");
+  }
+  }
+
+  assert(new_chunk->is_empty(), "Not ready for reuse");
+  if (TraceMetadataChunkAllocation && Verbose) {
+    gclog_or_tty->print("SpaceManager::add_chunk: %d) ",
+                        sum_count_in_chunks_in_use());
+    new_chunk->print_on(gclog_or_tty);
+    vs_list()->chunk_manager()->locked_print_free_chunks(tty);
+  }
+}
+
+MetaWord* SpaceManager::allocate(size_t word_size) {
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+
+  size_t block_overhead = Metablock::overhead();
+  // If only the dictionary is going to be used (i.e., no
+  // indexed free list), then there is a minimum size requirement.
+  // MinChunkSize is a placeholder for the real minimum size JJJ
+  size_t byte_size_with_overhead = (word_size + block_overhead) * BytesPerWord;
+#ifdef DEALLOCATE_BLOCKS
+  size_t raw_bytes_size = MAX2(ARENA_ALIGN(byte_size_with_overhead),
+                               MinChunkSize * BytesPerWord);
+#else
+  size_t raw_bytes_size = ARENA_ALIGN(byte_size_with_overhead);
+#endif
+  size_t raw_word_size = raw_bytes_size / BytesPerWord;
+  assert(raw_word_size * BytesPerWord == raw_bytes_size, "Size problem");
+
+  BlockFreelist* fl =  block_freelists();
+  Metablock* block = NULL;
+  // Allocation from the dictionary is expensive in the sense that
+  // the dictionary has to be searched for a size.  Don't allocate
+  // from the dictionary until it starts to get fat.  Is this
+  // a reasonable policy?  Maybe an skinny dictionary is fast enough
+  // for allocations.  Do some profiling.  JJJ
+  if (fl->totalSize() > allocation_from_dictionary_limit) {
+    block = fl->get_block(raw_word_size);
+  }
+  if (block == NULL) {
+    block = allocate_work(raw_word_size);
+    if (block == NULL) {
+      return NULL;
+    }
+  }
+  Metadebug::deallocate_block_a_lot(this, raw_word_size);
+
+  // Push the allocation past the word containing the size and leader.
+#ifdef ASSERT
+  MetaWord* result =  block->data();
+  return result;
+#else
+  return (MetaWord*) block;
+#endif
+}
+
+// Returns the address of spaced allocated for "word_size".
+// This methods does not know about blocks (Metablocks)
+Metablock* SpaceManager::allocate_work(size_t word_size) {
+  assert_lock_strong(_lock);
+#ifdef ASSERT
+  if (Metadebug::test_metadata_failure()) {
+    return NULL;
+  }
+#endif
+  // Is there space in the current chunk?
+  Metablock* result = NULL;
+
+  // For DumpSharedSpaces, only allocate out of the current chunk which is
+  // never null because we gave it the size we wanted.   Caller reports out
+  // of memory if this returns null.
+  if (DumpSharedSpaces) {
+    assert(current_chunk() != NULL, "should never happen");
+    inc_allocation_total(word_size);
+    return current_chunk()->allocate(word_size); // caller handles null result
+  }
+  if (current_chunk() != NULL) {
+    result = current_chunk()->allocate(word_size);
+  }
+
+  if (result == NULL) {
+    result = grow_and_allocate(word_size);
+  }
+  if (result > 0) {
+    inc_allocation_total(word_size);
+    assert(result != (Metablock*) chunks_in_use(MediumIndex), "Head of the list is being allocated");
+    assert(result->word_size() == word_size, "Size not set correctly");
+  }
+
+  return result;
+}
+
+void SpaceManager::verify() {
+  // If there are blocks in the dictionary, then
+  // verfication of chunks does not work since
+  // being in the dictionary alters a chunk.
+  if (block_freelists()->totalSize() == 0) {
+    // Skip the small chunks because their next link points to
+    // medium chunks.  This is because the small chunk is the
+    // current chunk (for allocations) until it is full and the
+    // the addition of the next chunk does not NULL the next
+    // like of the small chunk.
+    for (ChunkIndex i = MediumIndex; i < NumberOfFreeLists; i = next_chunk_index(i)) {
+      Metachunk* curr = chunks_in_use(i);
+      while (curr != NULL) {
+        curr->verify();
+        curr = curr->next();
+      }
+    }
+  }
+}
+
+#ifdef ASSERT
+void SpaceManager::verify_allocation_total() {
+#if 0
+  // Verification is only guaranteed at a safepoint.
+  if (SafepointSynchronize::is_at_safepoint()) {
+    gclog_or_tty->print_cr("Chunk " PTR_FORMAT " allocation_total " SIZE_FORMAT
+                           " sum_used_in_chunks_in_use " SIZE_FORMAT,
+                           this,
+                           allocation_total(),
+                           sum_used_in_chunks_in_use());
+  }
+  MutexLockerEx cl(lock(), Mutex::_no_safepoint_check_flag);
+  assert(allocation_total() == sum_used_in_chunks_in_use(),
+    err_msg("allocation total is not consistent %d vs %d",
+            allocation_total(), sum_used_in_chunks_in_use()));
+#endif
+}
+
+#endif
+
+void SpaceManager::dump(outputStream* const out) const {
+  size_t curr_total = 0;
+  size_t waste = 0;
+  uint i = 0;
+  size_t used = 0;
+  size_t capacity = 0;
+
+  // Add up statistics for all chunks in this SpaceManager.
+  for (ChunkIndex index = SmallIndex;
+       index < NumberOfFreeLists;
+       index = next_chunk_index(index)) {
+    for (Metachunk* curr = chunks_in_use(index);
+         curr != NULL;
+         curr = curr->next()) {
+      out->print("%d) ", i++);
+      curr->print_on(out);
+      if (TraceMetadataChunkAllocation && Verbose) {
+        block_freelists()->print_on(out);
+      }
+      curr_total += curr->word_size();
+      used += curr->used_word_size();
+      capacity += curr->capacity_word_size();
+      waste += curr->free_word_size() + curr->overhead();;
+    }
+  }
+
+  size_t free = current_chunk()->free_word_size();
+  // Free space isn't wasted.
+  waste -= free;
+
+  out->print_cr("total of all chunks "  SIZE_FORMAT " used " SIZE_FORMAT
+                " free " SIZE_FORMAT " capacity " SIZE_FORMAT
+                " waste " SIZE_FORMAT, curr_total, used, free, capacity, waste);
+}
+
+#ifndef PRODUCT
+void SpaceManager::mangle_freed_chunks() {
+  for (ChunkIndex index = SmallIndex;
+       index < NumberOfFreeLists;
+       index = next_chunk_index(index)) {
+    for (Metachunk* curr = chunks_in_use(index);
+         curr != NULL;
+         curr = curr->next()) {
+      // Try to detect incorrectly terminated small chunk
+      // list.
+      assert(index == MediumIndex || curr != chunks_in_use(MediumIndex),
+             err_msg("Mangling medium chunks in small chunks? "
+                     "curr " PTR_FORMAT " medium list " PTR_FORMAT,
+                     curr, chunks_in_use(MediumIndex)));
+      curr->mangle();
+    }
+  }
+}
+#endif // PRODUCT
+
+
+// MetaspaceAux
+
+size_t MetaspaceAux::used_in_bytes(Metaspace::MetadataType mdtype) {
+  size_t used = 0;
+  ClassLoaderDataGraphMetaspaceIterator iter;
+  while (iter.repeat()) {
+    Metaspace* msp = iter.get_next();
+    // Sum allocation_total for each metaspace
+    if (msp != NULL) {
+      used += msp->used_words(mdtype);
+    }
+  }
+  return used * BytesPerWord;
+}
+
+size_t MetaspaceAux::free_in_bytes(Metaspace::MetadataType mdtype) {
+  size_t free = 0;
+  ClassLoaderDataGraphMetaspaceIterator iter;
+  while (iter.repeat()) {
+    Metaspace* msp = iter.get_next();
+    if (msp != NULL) {
+      free += msp->free_words(mdtype);
+    }
+  }
+  return free * BytesPerWord;
+}
+
+// The total words available for metadata allocation.  This
+// uses Metaspace capacity_words() which is the total words
+// in chunks allocated for a Metaspace.
+size_t MetaspaceAux::capacity_in_bytes(Metaspace::MetadataType mdtype) {
+  size_t capacity = free_chunks_total(mdtype);
+  ClassLoaderDataGraphMetaspaceIterator iter;
+  while (iter.repeat()) {
+    Metaspace* msp = iter.get_next();
+    if (msp != NULL) {
+      capacity += msp->capacity_words(mdtype);
+    }
+  }
+  return capacity * BytesPerWord;
+}
+
+size_t MetaspaceAux::reserved_in_bytes(Metaspace::MetadataType mdtype) {
+  size_t reserved = (mdtype == Metaspace::ClassType) ?
+                       Metaspace::class_space_list()->virtual_space_total() :
+                       Metaspace::space_list()->virtual_space_total();
+  return reserved * BytesPerWord;
+}
+
+size_t MetaspaceAux::min_chunk_size() { return SpaceManager::MediumChunk; }
+
+size_t MetaspaceAux::free_chunks_total(Metaspace::MetadataType mdtype) {
+  ChunkManager* chunk = (mdtype == Metaspace::ClassType) ?
+                            Metaspace::class_space_list()->chunk_manager() :
+                            Metaspace::space_list()->chunk_manager();
+
+  chunk->verify_free_chunks_total();
+  return chunk->free_chunks_total();
+}
+
+size_t MetaspaceAux::free_chunks_total_in_bytes(Metaspace::MetadataType mdtype) {
+  return free_chunks_total(mdtype) * BytesPerWord;
+}
+
+void MetaspaceAux::print_metaspace_change(size_t prev_metadata_used) {
+  gclog_or_tty->print(", [Metaspace:");
+  if (PrintGCDetails && Verbose) {
+    gclog_or_tty->print(" "  SIZE_FORMAT
+                        "->" SIZE_FORMAT
+                        "("  SIZE_FORMAT "/" SIZE_FORMAT ")",
+                        prev_metadata_used,
+                        used_in_bytes(),
+                        capacity_in_bytes(),
+                        reserved_in_bytes());
+  } else {
+    gclog_or_tty->print(" "  SIZE_FORMAT "K"
+                        "->" SIZE_FORMAT "K"
+                        "("  SIZE_FORMAT "K/" SIZE_FORMAT "K)",
+                        prev_metadata_used / K,
+                        used_in_bytes()/ K,
+                        capacity_in_bytes()/K,
+                        reserved_in_bytes()/ K);
+  }
+
+  gclog_or_tty->print("]");
+}
+
+// This is printed when PrintGCDetails
+void MetaspaceAux::print_on(outputStream* out) {
+  Metaspace::MetadataType ct = Metaspace::ClassType;
+  Metaspace::MetadataType nct = Metaspace::NonClassType;
+
+  out->print_cr(" Metaspace total "
+                SIZE_FORMAT "K, used " SIZE_FORMAT "K,"
+                " reserved " SIZE_FORMAT "K",
+                capacity_in_bytes()/K, used_in_bytes()/K, reserved_in_bytes()/K);
+  out->print_cr("  data space     "
+                SIZE_FORMAT "K, used " SIZE_FORMAT "K,"
+                " reserved " SIZE_FORMAT "K",
+                capacity_in_bytes(nct)/K, used_in_bytes(nct)/K, reserved_in_bytes(nct)/K);
+  out->print_cr("  class space    "
+                SIZE_FORMAT "K, used " SIZE_FORMAT "K,"
+                " reserved " SIZE_FORMAT "K",
+                capacity_in_bytes(ct)/K, used_in_bytes(ct)/K, reserved_in_bytes(ct)/K);
+}
+
+// Print information for class space and data space separately.
+// This is almost the same as above.
+void MetaspaceAux::print_on(outputStream* out, Metaspace::MetadataType mdtype) {
+  size_t free_chunks_capacity_bytes = free_chunks_total_in_bytes(mdtype);
+  size_t capacity_bytes = capacity_in_bytes(mdtype);
+  size_t used_bytes = used_in_bytes(mdtype);
+  size_t free_bytes = free_in_bytes(mdtype);
+  size_t used_and_free = used_bytes + free_bytes +
+                           free_chunks_capacity_bytes;
+  out->print_cr("  Chunk accounting: used in chunks " SIZE_FORMAT
+             "K + unused in chunks " SIZE_FORMAT "K  + "
+             " capacity in free chunks " SIZE_FORMAT "K = " SIZE_FORMAT
+             "K  capacity in allocated chunks " SIZE_FORMAT "K",
+             used_bytes / K,
+             free_bytes / K,
+             free_chunks_capacity_bytes / K,
+             used_and_free / K,
+             capacity_bytes / K);
+  assert(used_and_free == capacity_bytes, "Accounting is wrong");
+}
+
+// Print total fragmentation for class and data metaspaces separately
+void MetaspaceAux::print_waste(outputStream* out) {
+
+  size_t small_waste = 0, medium_waste = 0, large_waste = 0;
+  size_t cls_small_waste = 0, cls_medium_waste = 0, cls_large_waste = 0;
+
+  ClassLoaderDataGraphMetaspaceIterator iter;
+  while (iter.repeat()) {
+    Metaspace* msp = iter.get_next();
+    if (msp != NULL) {
+      small_waste += msp->vsm()->sum_waste_in_chunks_in_use(SmallIndex);
+      medium_waste += msp->vsm()->sum_waste_in_chunks_in_use(MediumIndex);
+      large_waste += msp->vsm()->sum_waste_in_chunks_in_use(HumongousIndex);
+
+      cls_small_waste += msp->class_vsm()->sum_waste_in_chunks_in_use(SmallIndex);
+      cls_medium_waste += msp->class_vsm()->sum_waste_in_chunks_in_use(MediumIndex);
+      cls_large_waste += msp->class_vsm()->sum_waste_in_chunks_in_use(HumongousIndex);
+    }
+  }
+  out->print_cr("Total fragmentation waste (words) doesn't count free space");
+  out->print("  data: small " SIZE_FORMAT " medium " SIZE_FORMAT,
+             small_waste, medium_waste);
+  out->print_cr(" class: small " SIZE_FORMAT, cls_small_waste);
+}
+
+// Dump global metaspace things from the end of ClassLoaderDataGraph
+void MetaspaceAux::dump(outputStream* out) {
+  out->print_cr("All Metaspace:");
+  out->print("data space: "); print_on(out, Metaspace::NonClassType);
+  out->print("class space: "); print_on(out, Metaspace::ClassType);
+  print_waste(out);
+}
+
+// Metaspace methods
+
+size_t Metaspace::_first_chunk_word_size = 0;
+
+Metaspace::Metaspace(Mutex* lock, size_t word_size) {
+  initialize(lock, word_size);
+}
+
+Metaspace::Metaspace(Mutex* lock) {
+  initialize(lock);
+}
+
+Metaspace::~Metaspace() {
+  delete _vsm;
+  delete _class_vsm;
+}
+
+VirtualSpaceList* Metaspace::_space_list = NULL;
+VirtualSpaceList* Metaspace::_class_space_list = NULL;
+
+#define VIRTUALSPACEMULTIPLIER 2
+
+void Metaspace::global_initialize() {
+  // Initialize the alignment for shared spaces.
+  int max_alignment = os::vm_page_size();
+  MetaspaceShared::set_max_alignment(max_alignment);
+
+  if (DumpSharedSpaces) {
+    SharedReadOnlySize = align_size_up(SharedReadOnlySize, max_alignment);
+    SharedReadWriteSize = align_size_up(SharedReadWriteSize, max_alignment);
+    SharedMiscDataSize  = align_size_up(SharedMiscDataSize, max_alignment);
+    SharedMiscCodeSize  = align_size_up(SharedMiscCodeSize, max_alignment);
+
+    // Initialize with the sum of the shared space sizes.  The read-only
+    // and read write metaspace chunks will be allocated out of this and the
+    // remainder is the misc code and data chunks.
+    size_t total = align_size_up(SharedReadOnlySize + SharedReadWriteSize +
+                                 SharedMiscDataSize + SharedMiscCodeSize,
+                                 os::vm_allocation_granularity());
+    size_t word_size = total/wordSize;
+    _space_list = new VirtualSpaceList(word_size);
+  } else {
+    // If using shared space, open the file that contains the shared space
+    // and map in the memory before initializing the rest of metaspace (so
+    // the addresses don't conflict)
+    if (UseSharedSpaces) {
+      FileMapInfo* mapinfo = new FileMapInfo();
+      memset(mapinfo, 0, sizeof(FileMapInfo));
+
+      // Open the shared archive file, read and validate the header. If
+      // initialization fails, shared spaces [UseSharedSpaces] are
+      // disabled and the file is closed.
+      // Map in spaces now also
+      if (mapinfo->initialize() && MetaspaceShared::map_shared_spaces(mapinfo)) {
+        FileMapInfo::set_current_info(mapinfo);
+      } else {
+        assert(!mapinfo->is_open() && !UseSharedSpaces,
+               "archive file not closed or shared spaces not disabled.");
+      }
+    }
+
+    // Initialize this before initializing the VirtualSpaceList
+    _first_chunk_word_size = InitialBootClassLoaderMetaspaceSize / BytesPerWord;
+    // Arbitrarily set the initial virtual space to a multiple
+    // of the boot class loader size.
+    size_t word_size = VIRTUALSPACEMULTIPLIER * Metaspace::first_chunk_word_size();
+    // Initialize the list of virtual spaces.
+    _space_list = new VirtualSpaceList(word_size);
+  }
+}
+
+// For UseCompressedKlassPointers the class space is reserved as a piece of the
+// Java heap because the compression algorithm is the same for each.  The
+// argument passed in is at the top of the compressed space
+void Metaspace::initialize_class_space(ReservedSpace rs) {
+  // The reserved space size may be bigger because of alignment, esp with UseLargePages
+  assert(rs.size() >= ClassMetaspaceSize, err_msg("%d != %d", rs.size(), ClassMetaspaceSize));
+  _class_space_list = new VirtualSpaceList(rs);
+}
+
+
+void Metaspace::initialize(Mutex* lock, size_t initial_size) {
+  // Use SmallChunk size if not specified.   If specified, use this size for
+  // the data metaspace.
+  size_t word_size;
+  size_t class_word_size;
+  if (initial_size == 0) {
+    word_size = (size_t) SpaceManager::SmallChunk;
+    class_word_size = (size_t) SpaceManager::SmallChunk;
+  } else {
+    word_size = initial_size;
+    // Make the first class chunk bigger than a medium chunk so it's not put
+    // on the medium chunk list.   The next chunk will be small and progress
+    // from there.  This size calculated by -version.
+    class_word_size = MIN2((size_t)SpaceManager::MediumChunk*5,
+                           (ClassMetaspaceSize/BytesPerWord)*2);
+  }
+
+  assert(space_list() != NULL,
+    "Metadata VirtualSpaceList has not been initialized");
+
+  _vsm = new SpaceManager(lock, space_list());
+  if (_vsm == NULL) {
+    return;
+  }
+
+  assert(class_space_list() != NULL,
+    "Class VirtualSpaceList has not been initialized");
+
+  // Allocate SpaceManager for classes.
+  _class_vsm = new SpaceManager(lock, class_space_list());
+  if (_class_vsm == NULL) {
+    return;
+  }
+
+  MutexLockerEx cl(SpaceManager::expand_lock(), Mutex::_no_safepoint_check_flag);
+
+  // Allocate chunk for metadata objects
+  Metachunk* new_chunk =
+     space_list()->current_virtual_space()->get_chunk_vs_with_expand(word_size);
+  assert(!DumpSharedSpaces || new_chunk != NULL, "should have enough space for both chunks");
+  if (new_chunk != NULL) {
+    // Add to this manager's list of chunks in use and current_chunk().
+    vsm()->add_chunk(new_chunk, true);
+  }
+
+  // Allocate chunk for class metadata objects
+  Metachunk* class_chunk =
+     class_space_list()->current_virtual_space()->get_chunk_vs_with_expand(class_word_size);
+  if (class_chunk != NULL) {
+    class_vsm()->add_chunk(class_chunk, true);
+  }
+}
+
+
+MetaWord* Metaspace::allocate(size_t word_size, MetadataType mdtype) {
+  // DumpSharedSpaces doesn't use class metadata area (yet)
+  if (mdtype == ClassType && !DumpSharedSpaces) {
+    return class_vsm()->allocate(word_size);
+  } else {
+    return vsm()->allocate(word_size);
+  }
+}
+
+// Space allocated in the Metaspace.  This may
+// be across several metadata virtual spaces.
+char* Metaspace::bottom() const {
+  assert(DumpSharedSpaces, "only useful and valid for dumping shared spaces");
+  return (char*)vsm()->current_chunk()->bottom();
+}
+
+size_t Metaspace::used_words(MetadataType mdtype) const {
+  // return vsm()->allocation_total();
+  return mdtype == ClassType ? class_vsm()->sum_used_in_chunks_in_use() :
+                               vsm()->sum_used_in_chunks_in_use();  // includes overhead!
+}
+
+size_t Metaspace::free_words(MetadataType mdtype) const {
+  return mdtype == ClassType ? class_vsm()->sum_free_in_chunks_in_use() :
+                               vsm()->sum_free_in_chunks_in_use();
+}
+
+// Space capacity in the Metaspace.  It includes
+// space in the list of chunks from which allocations
+// have been made. Don't include space in the global freelist and
+// in the space available in the dictionary which
+// is already counted in some chunk.
+size_t Metaspace::capacity_words(MetadataType mdtype) const {
+  return mdtype == ClassType ? class_vsm()->sum_capacity_in_chunks_in_use() :
+                               vsm()->sum_capacity_in_chunks_in_use();
+}
+
+void Metaspace::deallocate(MetaWord* ptr, size_t word_size, bool is_class) {
+  if (SafepointSynchronize::is_at_safepoint()) {
+    assert(Thread::current()->is_VM_thread(), "should be the VM thread");
+    // Don't take lock
+#ifdef DEALLOCATE_BLOCKS
+    if (is_class) {
+      class_vsm()->deallocate(ptr);
+    } else {
+      vsm()->deallocate(ptr);
+    }
+#else
+#ifdef ASSERT
+    Copy::fill_to_words((HeapWord*)ptr, word_size, metadata_deallocate);
+#endif
+#endif
+
+  } else {
+    MutexLocker ml(vsm()->lock());
+
+#ifdef DEALLOCATE_BLOCKS
+    if (is_class) {
+      class_vsm()->deallocate(ptr);
+    } else {
+      vsm()->deallocate(ptr);
+    }
+#else
+#ifdef ASSERT
+    Copy::fill_to_words((HeapWord*)ptr, word_size, metadata_deallocate);
+#endif
+#endif
+  }
+}
+
+MetaWord* Metaspace::allocate(ClassLoaderData* loader_data, size_t word_size,
+                              bool read_only, MetadataType mdtype, TRAPS) {
+  if (HAS_PENDING_EXCEPTION) {
+    assert(false, "Should not allocate with exception pending");
+    return NULL;  // caller does a CHECK_NULL too
+  }
+
+  // SSS: Should we align the allocations and make sure the sizes are aligned.
+  MetaWord* result = NULL;
+
+  assert(loader_data != NULL, "Should never pass around a NULL loader_data. "
+        "ClassLoaderData::the_null_class_loader_data() should have been used.");
+  // Allocate in metaspaces without taking out a lock, because it deadlocks
+  // with the SymbolTable_lock.  Dumping is single threaded for now.  We'll have
+  // to revisit this for application class data sharing.
+  if (DumpSharedSpaces) {
+    if (read_only) {
+      result = loader_data->ro_metaspace()->allocate(word_size, NonClassType);
+    } else {
+      result = loader_data->rw_metaspace()->allocate(word_size, NonClassType);
+    }
+    if (result == NULL) {
+      report_out_of_shared_space(read_only ? SharedReadOnly : SharedReadWrite);
+    }
+    return result;
+  }
+
+  result = loader_data->metaspace_non_null()->allocate(word_size, mdtype);
+
+  if (result == NULL) {
+    // Try to clean out some memory and retry.
+    result =
+    Universe::heap()->collector_policy()->satisfy_failed_metadata_allocation(
+        loader_data, word_size, mdtype);
+
+    // If result is still null, we are out of memory.
+    if (result == NULL) {
+      // -XX:+HeapDumpOnOutOfMemoryError and -XX:OnOutOfMemoryError support
+      report_java_out_of_memory("Metadata space");
+
+      if (JvmtiExport::should_post_resource_exhausted()) {
+        JvmtiExport::post_resource_exhausted(
+            JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR,
+            "Metadata space");
+      }
+      THROW_OOP_0(Universe::out_of_memory_error_perm_gen());
+    }
+  }
+  return result;
+}
+
+void Metaspace::print_on(outputStream* out) const {
+  // Print both class virtual space counts and metaspace.
+  if (Verbose) {
+      vsm()->print_on(out);
+      class_vsm()->print_on(out);
+  }
+}
+
+#ifndef PRODUCT
+bool Metaspace::contains(const void * ptr) const {
+  if (MetaspaceShared::is_in_shared_space(ptr)) {
+    return true;
+  }
+  MutexLockerEx cl(SpaceManager::expand_lock(), Mutex::_no_safepoint_check_flag);
+  return space_list()->contains(ptr) || class_space_list()->contains(ptr);
+}
+#endif
+
+void Metaspace::verify() {
+  vsm()->verify();
+  class_vsm()->verify();
+}
+
+void Metaspace::dump(outputStream* const out) const {
+  if (UseMallocOnly) {
+    // Just print usage for now
+    out->print_cr("usage %d", used_words(Metaspace::NonClassType));
+  }
+  out->print_cr("\nVirtual space manager: " INTPTR_FORMAT, vsm());
+  vsm()->dump(out);
+  out->print_cr("\nClass space manager: " INTPTR_FORMAT, class_vsm());
+  class_vsm()->dump(out);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspace.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+#ifndef SHARE_VM_MEMORY_METASPACE_HPP
+#define SHARE_VM_MEMORY_METASPACE_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "runtime/virtualspace.hpp"
+#include "utilities/exceptions.hpp"
+
+// Metaspace
+//
+// Metaspaces are Arenas for the VM's metadata.
+// They are allocated one per class loader object, and one for the null
+// bootstrap class loader
+// Eventually for bootstrap loader we'll have a read-only section and read-write
+// to write for DumpSharedSpaces and read for UseSharedSpaces
+//
+//    block X ---+       +-------------------+
+//               |       |  Virtualspace     |
+//               |       |                   |
+//               |       |                   |
+//               |       |-------------------|
+//               |       || Chunk            |
+//               |       ||                  |
+//               |       ||----------        |
+//               +------>||| block 0 |       |
+//                       ||----------        |
+//                       ||| block 1 |       |
+//                       ||----------        |
+//                       ||                  |
+//                       |-------------------|
+//                       |                   |
+//                       |                   |
+//                       +-------------------+
+//
+
+class ClassLoaderData;
+class MetaWord;
+class Mutex;
+class outputStream;
+class FreeChunk;
+template <class Chunk_t> class FreeList;
+template <class Chunk_t> class BinaryTreeDictionary;
+class SpaceManager;
+
+// Metaspaces each have a  SpaceManager and allocations
+// are done by the SpaceManager.  Allocations are done
+// out of the current Metachunk.  When the current Metachunk
+// is exhausted, the SpaceManager gets a new one from
+// the current VirtualSpace.  When the VirtualSpace is exhausted
+// the SpaceManager gets a new one.  The SpaceManager
+// also manages freelists of available Chunks.
+//
+// Currently the space manager maintains the list of
+// virtual spaces and the list of chunks in use.  Its
+// allocate() method returns a block for use as a
+// quantum of metadata.
+
+class VirtualSpaceList;
+
+class Metaspace : public CHeapObj<mtClass> {
+  friend class VMStructs;
+  friend class SpaceManager;
+  friend class VM_CollectForMetadataAllocation;
+  friend class MetaspaceGC;
+  friend class MetaspaceAux;
+
+ public:
+  enum MetadataType {ClassType, NonClassType};
+
+ private:
+  void initialize(Mutex* lock, size_t initial_size = 0);
+
+  static size_t _first_chunk_word_size;
+
+  SpaceManager* _vsm;
+  SpaceManager* vsm() const { return _vsm; }
+
+  SpaceManager* _class_vsm;
+  SpaceManager* class_vsm() const { return _class_vsm; }
+
+  MetaWord* allocate(size_t word_size, MetadataType mdtype);
+
+  // Virtual Space lists for both classes and other metadata
+  static VirtualSpaceList* _space_list;
+  static VirtualSpaceList* _class_space_list;
+
+  static VirtualSpaceList* space_list()       { return _space_list; }
+  static VirtualSpaceList* class_space_list() { return _class_space_list; }
+
+ public:
+
+  Metaspace(Mutex* lock, size_t initial_size);
+  Metaspace(Mutex* lock);
+  ~Metaspace();
+
+  // Initialize globals for Metaspace
+  static void global_initialize();
+  static void initialize_class_space(ReservedSpace rs);
+
+  static size_t first_chunk_word_size() { return _first_chunk_word_size; }
+
+  char*  bottom() const;
+  size_t used_words(MetadataType mdtype) const;
+  size_t free_words(MetadataType mdtype) const;
+  size_t capacity_words(MetadataType mdtype) const;
+  size_t waste_words(MetadataType mdtype) const;
+
+  static MetaWord* allocate(ClassLoaderData* loader_data, size_t size,
+                            bool read_only, MetadataType mdtype, TRAPS);
+
+  void deallocate(MetaWord* ptr, size_t byte_size, bool is_class);
+
+#ifndef PRODUCT
+  bool contains(const void *ptr) const;
+  bool contains_class(const void *ptr) const;
+#endif
+
+  void dump(outputStream* const out) const;
+
+  void print_on(outputStream* st) const;
+  // Debugging support
+  void verify();
+};
+
+class MetaspaceAux : AllStatic {
+
+  // Statistics for class space and data space in metaspace.
+  static size_t used_in_bytes(Metaspace::MetadataType mdtype);
+  static size_t free_in_bytes(Metaspace::MetadataType mdtype);
+  static size_t capacity_in_bytes(Metaspace::MetadataType mdtype);
+  static size_t reserved_in_bytes(Metaspace::MetadataType mdtype);
+
+  static size_t free_chunks_total(Metaspace::MetadataType mdtype);
+  static size_t free_chunks_total_in_bytes(Metaspace::MetadataType mdtype);
+
+ public:
+  // Total of space allocated to metadata in all Metaspaces
+  static size_t used_in_bytes() {
+    return used_in_bytes(Metaspace::ClassType) +
+           used_in_bytes(Metaspace::NonClassType);
+  }
+
+  // Total of available space in all Metaspaces
+  // Total of capacity allocated to all Metaspaces.  This includes
+  // space in Metachunks not yet allocated and in the Metachunk
+  // freelist.
+  static size_t capacity_in_bytes() {
+    return capacity_in_bytes(Metaspace::ClassType) +
+           capacity_in_bytes(Metaspace::NonClassType);
+  }
+
+  // Total space reserved in all Metaspaces
+  static size_t reserved_in_bytes() {
+    return reserved_in_bytes(Metaspace::ClassType) +
+           reserved_in_bytes(Metaspace::NonClassType);
+  }
+
+  static size_t min_chunk_size();
+
+  // Print change in used metadata.
+  static void print_metaspace_change(size_t prev_metadata_used);
+  static void print_on(outputStream * out);
+  static void print_on(outputStream * out, Metaspace::MetadataType mdtype);
+
+  static void print_waste(outputStream* out);
+  static void dump(outputStream* out);
+};
+
+// Metaspace are deallocated when their class loader are GC'ed.
+// This class implements a policy for inducing GC's to recover
+// Metaspaces.
+
+class MetaspaceGC : AllStatic {
+
+  // The current high-water-mark for inducing a GC.  When
+  // the capacity of all space in the virtual lists reaches this value,
+  // a GC is induced and the value is increased.  This should be changed
+  // to the space actually used for allocations to avoid affects of
+  // fragmentation losses to partially used chunks.  Size is in words.
+  static size_t _capacity_until_GC;
+
+  // After a GC is done any allocation that fails should try to expand
+  // the capacity of the Metaspaces.  This flag is set during attempts
+  // to allocate in the VMGCOperation that does the GC.
+  static bool _expand_after_GC;
+
+  // For a CMS collection, signal that a concurrent collection should
+  // be started.
+  static bool _should_concurrent_collect;
+
+  static uint _shrink_factor;
+
+  static void set_capacity_until_GC(size_t v) { _capacity_until_GC = v; }
+
+  static size_t shrink_factor() { return _shrink_factor; }
+  void set_shrink_factor(uint v) { _shrink_factor = v; }
+
+ public:
+
+  static size_t capacity_until_GC() { return _capacity_until_GC; }
+  static size_t capacity_until_GC_in_bytes() { return _capacity_until_GC * BytesPerWord; }
+  static void inc_capacity_until_GC(size_t v) { _capacity_until_GC += v; }
+  static void dec_capacity_until_GC(size_t v) {
+    _capacity_until_GC = _capacity_until_GC > v ? _capacity_until_GC - v : 0;
+  }
+  static bool expand_after_GC()           { return _expand_after_GC; }
+  static void set_expand_after_GC(bool v) { _expand_after_GC = v; }
+
+  static bool should_concurrent_collect() { return _should_concurrent_collect; }
+  static void set_should_concurrent_collect(bool v) {
+    _should_concurrent_collect = v;
+  }
+
+  // The amount to increase the high-water-mark (_capacity_until_GC)
+  static size_t delta_capacity_until_GC(size_t word_size);
+
+  // It is expected that this will be called when the current capacity
+  // has been used and a GC should be considered.
+  static bool should_expand(VirtualSpaceList* vsl, size_t word_size);
+
+  // Calculate the new high-water mark at which to induce
+  // a GC.
+  static void compute_new_size();
+};
+
+#endif // SHARE_VM_MEMORY_METASPACE_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspaceCounters.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "memory/metaspaceCounters.hpp"
+#include "memory/resourceArea.hpp"
+
+#define METASPACE_NAME "perm"
+
+MetaspaceCounters* MetaspaceCounters::_metaspace_counters = NULL;
+
+MetaspaceCounters::MetaspaceCounters() {
+  if (UsePerfData) {
+    size_t min_capacity = MetaspaceAux::min_chunk_size();
+    size_t max_capacity = MetaspaceAux::reserved_in_bytes();
+    size_t curr_capacity = MetaspaceAux::capacity_in_bytes();
+    size_t used = MetaspaceAux::used_in_bytes();
+
+    initialize(min_capacity, max_capacity, curr_capacity, used);
+  }
+}
+
+void MetaspaceCounters::initialize(size_t min_capacity,
+                                   size_t max_capacity,
+                                   size_t curr_capacity,
+                                   size_t used) {
+
+  if (UsePerfData) {
+    EXCEPTION_MARK;
+    ResourceMark rm;
+
+    // Create a name that will be recognized by jstat tools as
+    // the perm gen.  Change this to a Metaspace name when the
+    // tools are fixed.
+    // name to recognize "sun.gc.generation.2.*"
+
+    const char* name = METASPACE_NAME;
+    const int ordinal = 2;
+    const int spaces = 1;
+
+    const char* cns = PerfDataManager::name_space("generation", ordinal);
+
+    _name_space = NEW_C_HEAP_ARRAY(char, strlen(cns)+1, mtClass);
+    strcpy(_name_space, cns);
+
+    const char* cname = PerfDataManager::counter_name(_name_space, "name");
+    PerfDataManager::create_string_constant(SUN_GC, cname, name, CHECK);
+
+    // End of perm gen like name creation
+
+    cname = PerfDataManager::counter_name(_name_space, "spaces");
+    PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_None,
+                                     spaces, CHECK);
+
+    cname = PerfDataManager::counter_name(_name_space, "minCapacity");
+    PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes,
+                                     min_capacity, CHECK);
+
+    cname = PerfDataManager::counter_name(_name_space, "maxCapacity");
+    PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes,
+                                     max_capacity, CHECK);
+
+    cname = PerfDataManager::counter_name(_name_space, "capacity");
+    _current_size =
+      PerfDataManager::create_variable(SUN_GC, cname, PerfData::U_Bytes,
+                                       curr_capacity, CHECK);
+
+    // SpaceCounter like counters
+    // name to recognize "sun.gc.generation.2.space.0.*"
+    {
+      const int space_ordinal = 0;
+      const char* cns = PerfDataManager::name_space(_name_space, "space",
+                                                    space_ordinal);
+
+      char* space_name_space = NEW_C_HEAP_ARRAY(char, strlen(cns)+1, mtClass);
+      strcpy(space_name_space, cns);
+
+      const char* cname = PerfDataManager::counter_name(space_name_space, "name");
+      PerfDataManager::create_string_constant(SUN_GC, cname, name, CHECK);
+
+      cname = PerfDataManager::counter_name(space_name_space, "maxCapacity");
+      _max_capacity = PerfDataManager::create_variable(SUN_GC, cname,
+                                                       PerfData::U_Bytes,
+                                                       (jlong)max_capacity, CHECK);
+
+      cname = PerfDataManager::counter_name(space_name_space, "capacity");
+      _capacity = PerfDataManager::create_variable(SUN_GC, cname,
+                                                   PerfData::U_Bytes,
+                                                   curr_capacity, CHECK);
+
+      cname = PerfDataManager::counter_name(space_name_space, "used");
+      _used = PerfDataManager::create_variable(SUN_GC,
+                                               cname,
+                                               PerfData::U_Bytes,
+                                               used,
+                                               CHECK);
+
+    cname = PerfDataManager::counter_name(space_name_space, "initCapacity");
+    PerfDataManager::create_constant(SUN_GC, cname, PerfData::U_Bytes,
+                                     min_capacity, CHECK);
+    }
+  }
+}
+
+void MetaspaceCounters::update_capacity() {
+  assert(UsePerfData, "Should not be called unless being used");
+  size_t capacity_in_bytes = MetaspaceAux::capacity_in_bytes();
+  _capacity->set_value(capacity_in_bytes);
+}
+
+void MetaspaceCounters::update_used() {
+  assert(UsePerfData, "Should not be called unless being used");
+  size_t used_in_bytes = MetaspaceAux::used_in_bytes();
+  _used->set_value(used_in_bytes);
+}
+
+void MetaspaceCounters::update_max_capacity() {
+  assert(UsePerfData, "Should not be called unless being used");
+  size_t reserved_in_bytes = MetaspaceAux::reserved_in_bytes();
+  _max_capacity->set_value(reserved_in_bytes);
+}
+
+void MetaspaceCounters::update_all() {
+  if (UsePerfData) {
+    update_used();
+    update_capacity();
+    update_max_capacity();
+    _current_size->set_value(MetaspaceAux::reserved_in_bytes());
+  }
+}
+
+void MetaspaceCounters::initialize_performance_counters() {
+  if (UsePerfData) {
+    _metaspace_counters = new MetaspaceCounters();
+  }
+}
+
+void MetaspaceCounters::update_performance_counters() {
+  if (UsePerfData) {
+    _metaspace_counters->update_all();
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspaceCounters.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_MEMORY_METASPACECOUNTERS_HPP
+#define SHARE_VM_MEMORY_METASPACECOUNTERS_HPP
+
+#include "runtime/perfData.hpp"
+
+class MetaspaceCounters: public CHeapObj<mtClass> {
+  friend class VMStructs;
+  PerfVariable*      _current_size;
+  PerfVariable*      _capacity;
+  PerfVariable*      _used;
+  PerfVariable*      _max_capacity;
+  char*              _name_space;
+  static MetaspaceCounters* _metaspace_counters;
+  void initialize(size_t min_capacity,
+                  size_t max_capacity,
+                  size_t curr_capacity,
+                  size_t used);
+ public:
+  MetaspaceCounters();
+  ~MetaspaceCounters();
+
+  void update_capacity();
+  void update_used();
+  void update_max_capacity();
+
+  void update_all();
+
+  static void initialize_performance_counters();
+  static void update_performance_counters();
+
+};
+#endif // SHARE_VM_MEMORY_METASPACECOUNTERS_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspaceShared.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,844 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/dictionary.hpp"
+#include "classfile/loaderConstraints.hpp"
+#include "classfile/placeholders.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/codeCache.hpp"
+#include "memory/filemap.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/metaspace.hpp"
+#include "memory/metaspaceShared.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vm_operations.hpp"
+#include "runtime/vmThread.hpp"
+#include "utilities/hashtable.inline.hpp"
+
+
+int MetaspaceShared::_max_alignment = 0;
+int MetaspaceShared::max_alignment()                   { return _max_alignment; }
+void MetaspaceShared::set_max_alignment(int alignment) { _max_alignment = alignment; }
+
+// Accessor functions to save shared space created for metadata, which has
+// extra space allocated at the end for miscellaneous data and code.
+ReservedSpace* MetaspaceShared::_shared_rs = NULL;
+ReservedSpace* MetaspaceShared::shared_rs()            { return _shared_rs; }
+void MetaspaceShared::set_shared_rs(ReservedSpace* rs) { _shared_rs = rs; }
+
+// Read/write a data stream for restoring/preserving metadata pointers and
+// miscellaneous data from/to the shared archive file.
+
+void MetaspaceShared::serialize(SerializeClosure* soc) {
+  int tag = 0;
+  soc->do_tag(--tag);
+
+  assert(!UseCompressedOops, "UseCompressedOops doesn't work with shared archive");
+  // Verify the sizes of various metadata in the system.
+  soc->do_tag(sizeof(Method));
+  soc->do_tag(sizeof(ConstMethod));
+  soc->do_tag(arrayOopDesc::base_offset_in_bytes(T_BYTE));
+  soc->do_tag(sizeof(ConstantPool));
+  soc->do_tag(sizeof(ConstantPoolCache));
+  soc->do_tag(objArrayOopDesc::base_offset_in_bytes());
+  soc->do_tag(typeArrayOopDesc::base_offset_in_bytes(T_BYTE));
+  soc->do_tag(sizeof(Symbol));
+
+  // Dump/restore miscellaneous metadata.
+  Universe::serialize(soc, true);
+  soc->do_tag(--tag);
+
+  // Dump/restore references to commonly used names and signatures.
+  vmSymbols::serialize(soc);
+  soc->do_tag(--tag);
+
+  soc->do_tag(666);
+}
+
+
+// CDS code for dumping shared archive.
+
+// Global object for holding classes that have been loaded.  Since this
+// is run at a safepoint just before exit, this is the entire set of classes.
+static GrowableArray<Klass*>* _global_klass_objects;
+static void collect_classes(Klass* k) {
+  _global_klass_objects->append_if_missing(k);
+  if (k->oop_is_instance()) {
+    // Add in the array classes too
+    InstanceKlass* ik = InstanceKlass::cast(k);
+    ik->array_klasses_do(collect_classes);
+  }
+}
+
+static void remove_unshareable_in_classes() {
+  for (int i = 0; i < _global_klass_objects->length(); i++) {
+    Klass* k = _global_klass_objects->at(i);
+    k->remove_unshareable_info();
+  }
+}
+
+// Walk all methods in the class list and assign a fingerprint.
+// so that this part of the ConstMethod* is read only.
+static void calculate_fingerprints() {
+  for (int i = 0; i < _global_klass_objects->length(); i++) {
+    Klass* k = _global_klass_objects->at(i);
+    if (k->oop_is_instance()) {
+      InstanceKlass* ik = InstanceKlass::cast(k);
+      for (int i = 0; i < ik->methods()->length(); i++) {
+        ResourceMark rm;
+        Method* m = ik->methods()->at(i);
+        (new Fingerprinter(m))->fingerprint();
+      }
+    }
+  }
+}
+
+// Patch C++ vtable pointer in metadata.
+
+// Klass and other metadata objects contain references to c++ vtables in the
+// JVM library.
+// Fix them to point to our constructed vtables.  However, don't iterate
+// across the space while doing this, as that causes the vtables to be
+// patched, undoing our useful work.  Instead, iterate to make a list,
+// then use the list to do the fixing.
+//
+// Our constructed vtables:
+// Dump time:
+//  1. init_self_patching_vtbl_list: table of pointers to current virtual method addrs
+//  2. generate_vtable_methods: create jump table, appended to above vtbl_list
+//  3. patch_klass_vtables: for Klass list, patch the vtable entry in klass and
+//     associated metadata to point to jump table rather than to current vtbl
+// Table layout: NOTE FIXED SIZE
+//   1. vtbl pointers
+//   2. #Klass X #virtual methods per Klass
+//   1 entry for each, in the order:
+//   Klass1:method1 entry, Klass1:method2 entry, ... Klass1:method<num_virtuals> entry
+//   Klass2:method1 entry, Klass2:method2 entry, ... Klass2:method<num_virtuals> entry
+//   ...
+//   Klass<vtbl_list_size>:method1 entry, Klass<vtbl_list_size>:method2 entry,
+//       ... Klass<vtbl_list_size>:method<num_virtuals> entry
+//  Sample entry: (Sparc):
+//   save(sp, -256, sp)
+//   ba,pt common_code
+//   mov XXX, %L0       %L0 gets: Klass index <<8 + method index (note: max method index 255)
+//
+// Restore time:
+//   1. initialize_shared_space: reserve space for table
+//   2. init_self_patching_vtbl_list: update pointers to NEW virtual method addrs in text
+//
+// Execution time:
+//   First virtual method call for any object of these metadata types:
+//   1. object->klass
+//   2. vtable entry for that klass points to the jump table entries
+//   3. branches to common_code with %O0/klass, %L0: Klass index <<8 + method index
+//   4. common_code:
+//      Get address of new vtbl pointer for this Klass from updated table
+//      Update new vtbl pointer in the Klass: future virtual calls go direct
+//      Jump to method, using new vtbl pointer and method index
+
+
+static void* find_matching_vtbl_ptr(void** vtbl_list, void* new_vtable_start, void* obj) {
+  void* old_vtbl_ptr = *(void**)obj;
+  for (int i = 0; i < MetaspaceShared::vtbl_list_size; i++) {
+    if (vtbl_list[i] == old_vtbl_ptr) {
+      return (void**)new_vtable_start + i * MetaspaceShared::num_virtuals;
+    }
+  }
+  ShouldNotReachHere();
+  return NULL;
+}
+
+// Assumes the vtable is in first slot in object.
+static void patch_klass_vtables(void** vtbl_list, void* new_vtable_start) {
+  int n = _global_klass_objects->length();
+  for (int i = 0; i < n; i++) {
+    Klass* obj = _global_klass_objects->at(i);
+    // Note oop_is_instance() is a virtual call.  After patching vtables
+    // all virtual calls on the dummy vtables will restore the original!
+    if (obj->oop_is_instance()) {
+      InstanceKlass* ik = InstanceKlass::cast(obj);
+      *(void**)ik = find_matching_vtbl_ptr(vtbl_list, new_vtable_start, ik);
+      ConstantPool* cp = ik->constants();
+      *(void**)cp = find_matching_vtbl_ptr(vtbl_list, new_vtable_start, cp);
+      for (int j = 0; j < ik->methods()->length(); j++) {
+        Method* m = ik->methods()->at(j);
+        *(void**)m = find_matching_vtbl_ptr(vtbl_list, new_vtable_start, m);
+      }
+    } else {
+      // Array klasses
+      Klass* k = obj;
+      *(void**)k = find_matching_vtbl_ptr(vtbl_list, new_vtable_start, k);
+    }
+  }
+}
+
+// Closure for serializing initialization data out to a data area to be
+// written to the shared file.
+
+class WriteClosure : public SerializeClosure {
+private:
+  intptr_t* top;
+  char* end;
+
+  inline void check_space() {
+    if ((char*)top + sizeof(intptr_t) > end) {
+      report_out_of_shared_space(SharedMiscData);
+    }
+  }
+
+public:
+  WriteClosure(char* md_top, char* md_end) {
+    top = (intptr_t*)md_top;
+    end = md_end;
+  }
+
+  char* get_top() { return (char*)top; }
+
+  void do_ptr(void** p) {
+    check_space();
+    *top = (intptr_t)*p;
+    ++top;
+  }
+
+  void do_tag(int tag) {
+    check_space();
+    *top = (intptr_t)tag;
+    ++top;
+  }
+
+  void do_region(u_char* start, size_t size) {
+    if ((char*)top + size > end) {
+      report_out_of_shared_space(SharedMiscData);
+    }
+    assert((intptr_t)start % sizeof(intptr_t) == 0, "bad alignment");
+    assert(size % sizeof(intptr_t) == 0, "bad size");
+    do_tag((int)size);
+    while (size > 0) {
+      *top = *(intptr_t*)start;
+      ++top;
+      start += sizeof(intptr_t);
+      size -= sizeof(intptr_t);
+    }
+  }
+
+  bool reading() const { return false; }
+};
+
+
+// Populate the shared space.
+
+class VM_PopulateDumpSharedSpace: public VM_Operation {
+private:
+  ClassLoaderData* _loader_data;
+  GrowableArray<Klass*> *_class_promote_order;
+  VirtualSpace _md_vs;
+  VirtualSpace _mc_vs;
+
+public:
+  VM_PopulateDumpSharedSpace(ClassLoaderData* loader_data,
+                             GrowableArray<Klass*> *class_promote_order) :
+    _loader_data(loader_data) {
+
+    // Split up and initialize the misc code and data spaces
+    ReservedSpace* shared_rs = MetaspaceShared::shared_rs();
+    int metadata_size = SharedReadOnlySize+SharedReadWriteSize;
+    ReservedSpace shared_ro_rw = shared_rs->first_part(metadata_size);
+    ReservedSpace misc_section = shared_rs->last_part(metadata_size);
+
+    // Now split into misc sections.
+    ReservedSpace md_rs   = misc_section.first_part(SharedMiscDataSize);
+    ReservedSpace mc_rs   = misc_section.last_part(SharedMiscDataSize);
+    _md_vs.initialize(md_rs, SharedMiscDataSize);
+    _mc_vs.initialize(mc_rs, SharedMiscCodeSize);
+    _class_promote_order = class_promote_order;
+  }
+
+  VMOp_Type type() const { return VMOp_PopulateDumpSharedSpace; }
+  void doit();   // outline because gdb sucks
+}; // class VM_PopulateDumpSharedSpace
+
+
+void VM_PopulateDumpSharedSpace::doit() {
+  Thread* THREAD = VMThread::vm_thread();
+  NOT_PRODUCT(SystemDictionary::verify();)
+  // The following guarantee is meant to ensure that no loader constraints
+  // exist yet, since the constraints table is not shared.  This becomes
+  // more important now that we don't re-initialize vtables/itables for
+  // shared classes at runtime, where constraints were previously created.
+  guarantee(SystemDictionary::constraints()->number_of_entries() == 0,
+            "loader constraints are not saved");
+  guarantee(SystemDictionary::placeholders()->number_of_entries() == 0,
+          "placeholders are not saved");
+  // Revisit and implement this if we prelink method handle call sites:
+  guarantee(SystemDictionary::invoke_method_table() == NULL ||
+            SystemDictionary::invoke_method_table()->number_of_entries() == 0,
+            "invoke method table is not saved");
+
+  // At this point, many classes have been loaded.
+  // Gather systemDictionary classes in a global array and do everything to
+  // that so we don't have to walk the SystemDictionary again.
+  _global_klass_objects = new GrowableArray<Klass*>(1000);
+  Universe::basic_type_classes_do(collect_classes);
+  SystemDictionary::classes_do(collect_classes);
+
+  tty->print_cr("Number of classes %d", _global_klass_objects->length());
+
+  // Update all the fingerprints in the shared methods.
+  tty->print("Calculating fingerprints ... ");
+  calculate_fingerprints();
+  tty->print_cr("done. ");
+
+  // Remove all references outside the metadata
+  tty->print("Removing unshareable information ... ");
+  remove_unshareable_in_classes();
+  tty->print_cr("done. ");
+
+  // Set up the share data and shared code segments.
+  char* md_low = _md_vs.low();
+  char* md_top = md_low;
+  char* md_end = _md_vs.high();
+  char* mc_low = _mc_vs.low();
+  char* mc_top = mc_low;
+  char* mc_end = _mc_vs.high();
+
+  // Reserve space for the list of Klass*s whose vtables are used
+  // for patching others as needed.
+
+  void** vtbl_list = (void**)md_top;
+  int vtbl_list_size = MetaspaceShared::vtbl_list_size;
+  Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size);
+
+  md_top += vtbl_list_size * sizeof(void*);
+  void* vtable = md_top;
+
+  // Reserve space for a new dummy vtable for klass objects in the
+  // heap.  Generate self-patching vtable entries.
+
+  MetaspaceShared::generate_vtable_methods(vtbl_list, &vtable,
+                                     &md_top, md_end,
+                                     &mc_top, mc_end);
+
+  // Reorder the system dictionary.  (Moving the symbols affects
+  // how the hash table indices are calculated.)
+  // Not doing this either.
+
+  SystemDictionary::reorder_dictionary();
+
+  NOT_PRODUCT(SystemDictionary::verify();)
+
+  // Copy the the symbol table, and the system dictionary to the shared
+  // space in usable form.  Copy the hastable
+  // buckets first [read-write], then copy the linked lists of entries
+  // [read-only].
+
+  SymbolTable::reverse(md_top);
+  NOT_PRODUCT(SymbolTable::verify());
+  SymbolTable::copy_buckets(&md_top, md_end);
+
+  SystemDictionary::reverse();
+  SystemDictionary::copy_buckets(&md_top, md_end);
+
+  ClassLoader::verify();
+  ClassLoader::copy_package_info_buckets(&md_top, md_end);
+  ClassLoader::verify();
+
+  SymbolTable::copy_table(&md_top, md_end);
+  SystemDictionary::copy_table(&md_top, md_end);
+  ClassLoader::verify();
+  ClassLoader::copy_package_info_table(&md_top, md_end);
+  ClassLoader::verify();
+
+  // Write the other data to the output array.
+  WriteClosure wc(md_top, md_end);
+  MetaspaceShared::serialize(&wc);
+  md_top = wc.get_top();
+
+  // Print shared spaces all the time
+  const char* fmt = "%s space: " PTR_FORMAT " out of " PTR_FORMAT " words allocated at " PTR_FORMAT ".";
+  Metaspace* ro_space = _loader_data->ro_metaspace();
+  Metaspace* rw_space = _loader_data->rw_metaspace();
+  tty->print_cr(fmt, "ro", ro_space->used_words(Metaspace::NonClassType),
+                ro_space->capacity_words(Metaspace::NonClassType),
+                ro_space->bottom());
+  tty->print_cr(fmt, "rw", rw_space->used_words(Metaspace::NonClassType),
+                rw_space->capacity_words(Metaspace::NonClassType),
+                rw_space->bottom());
+  tty->print_cr(fmt, "md", md_top - md_low, md_end-md_low, md_low);
+  tty->print_cr(fmt, "mc", mc_top - mc_low, mc_end-mc_low, mc_low);
+
+  // Update the vtable pointers in all of the Klass objects in the
+  // heap. They should point to newly generated vtable.
+  patch_klass_vtables(vtbl_list, vtable);
+
+  // dunno what this is for.
+  char* saved_vtbl = (char*)os::malloc(vtbl_list_size * sizeof(void*), mtClass);
+  memmove(saved_vtbl, vtbl_list, vtbl_list_size * sizeof(void*));
+  memset(vtbl_list, 0, vtbl_list_size * sizeof(void*));
+
+  // Create and write the archive file that maps the shared spaces.
+
+  FileMapInfo* mapinfo = new FileMapInfo();
+  mapinfo->populate_header(MetaspaceShared::max_alignment());
+
+  // Pass 1 - update file offsets in header.
+  mapinfo->write_header();
+  mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true);
+  mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false);
+  mapinfo->write_region(MetaspaceShared::md, _md_vs.low(),
+                        pointer_delta(md_top, _md_vs.low(), sizeof(char)),
+                        SharedMiscDataSize,
+                        false, false);
+  mapinfo->write_region(MetaspaceShared::mc, _mc_vs.low(),
+                        pointer_delta(mc_top, _mc_vs.low(), sizeof(char)),
+                        SharedMiscCodeSize,
+                        true, true);
+
+  // Pass 2 - write data.
+  mapinfo->open_for_write();
+  mapinfo->write_header();
+  mapinfo->write_space(MetaspaceShared::ro, _loader_data->ro_metaspace(), true);
+  mapinfo->write_space(MetaspaceShared::rw, _loader_data->rw_metaspace(), false);
+  mapinfo->write_region(MetaspaceShared::md, _md_vs.low(),
+                        pointer_delta(md_top, _md_vs.low(), sizeof(char)),
+                        SharedMiscDataSize,
+                        false, false);
+  mapinfo->write_region(MetaspaceShared::mc, _mc_vs.low(),
+                        pointer_delta(mc_top, _mc_vs.low(), sizeof(char)),
+                        SharedMiscCodeSize,
+                        true, true);
+  mapinfo->close();
+
+  memmove(vtbl_list, saved_vtbl, vtbl_list_size * sizeof(void*));
+}
+
+static void link_shared_classes(Klass* obj, TRAPS) {
+  Klass* k = Klass::cast(obj);
+  if (k->oop_is_instance()) {
+    InstanceKlass* ik = (InstanceKlass*) k;
+    // Link the class to cause the bytecodes to be rewritten and the
+    // cpcache to be created.
+    if (ik->init_state() < InstanceKlass::linked) {
+      ik->link_class(THREAD);
+      guarantee(!HAS_PENDING_EXCEPTION, "exception in class rewriting");
+    }
+  }
+}
+
+
+// Support for a simple checksum of the contents of the class list
+// file to prevent trivial tampering. The algorithm matches that in
+// the MakeClassList program used by the J2SE build process.
+#define JSUM_SEED ((jlong)CONST64(0xcafebabebabecafe))
+static jlong
+jsum(jlong start, const char *buf, const int len)
+{
+    jlong h = start;
+    char *p = (char *)buf, *e = p + len;
+    while (p < e) {
+        char c = *p++;
+        if (c <= ' ') {
+            /* Skip spaces and control characters */
+            continue;
+        }
+        h = 31 * h + c;
+    }
+    return h;
+}
+
+// Preload classes from a list, populate the shared spaces and dump to a
+// file.
+void MetaspaceShared::preload_and_dump(TRAPS) {
+  TraceTime timer("Dump Shared Spaces", TraceStartupTime);
+  ResourceMark rm;
+
+  // Lock out GC - is it necessary? I don't think we care.
+  No_GC_Verifier no_gc;
+
+  // Preload classes to be shared.
+  // Should use some os:: method rather than fopen() here. aB.
+  // Construct the path to the class list (in jre/lib)
+  // Walk up two directories from the location of the VM and
+  // optionally tack on "lib" (depending on platform)
+  char class_list_path[JVM_MAXPATHLEN];
+  os::jvm_path(class_list_path, sizeof(class_list_path));
+  for (int i = 0; i < 3; i++) {
+    char *end = strrchr(class_list_path, *os::file_separator());
+    if (end != NULL) *end = '\0';
+  }
+  int class_list_path_len = (int)strlen(class_list_path);
+  if (class_list_path_len >= 3) {
+    if (strcmp(class_list_path + class_list_path_len - 3, "lib") != 0) {
+      strcat(class_list_path, os::file_separator());
+      strcat(class_list_path, "lib");
+    }
+  }
+  strcat(class_list_path, os::file_separator());
+  strcat(class_list_path, "classlist");
+
+  FILE* file = fopen(class_list_path, "r");
+  if (file != NULL) {
+    jlong computed_jsum  = JSUM_SEED;
+    jlong file_jsum      = 0;
+
+    char class_name[256];
+    int class_count = 0;
+    GrowableArray<Klass*>* class_promote_order = new GrowableArray<Klass*>();
+
+    // sun.io.Converters
+    static const char obj_array_sig[] = "[[Ljava/lang/Object;";
+    SymbolTable::new_permanent_symbol(obj_array_sig, THREAD);
+
+    // java.util.HashMap
+    static const char map_entry_array_sig[] = "[Ljava/util/Map$Entry;";
+    SymbolTable::new_permanent_symbol(map_entry_array_sig, THREAD);
+
+    tty->print("Loading classes to share ... ");
+    while ((fgets(class_name, sizeof class_name, file)) != NULL) {
+      if (*class_name == '#') {
+        jint fsh, fsl;
+        if (sscanf(class_name, "# %8x%8x\n", &fsh, &fsl) == 2) {
+          file_jsum = ((jlong)(fsh) << 32) | (fsl & 0xffffffff);
+        }
+
+        continue;
+      }
+      // Remove trailing newline
+      size_t name_len = strlen(class_name);
+      class_name[name_len-1] = '\0';
+
+      computed_jsum = jsum(computed_jsum, class_name, (const int)name_len - 1);
+
+      // Got a class name - load it.
+      TempNewSymbol class_name_symbol = SymbolTable::new_permanent_symbol(class_name, THREAD);
+      guarantee(!HAS_PENDING_EXCEPTION, "Exception creating a symbol.");
+      Klass* klass = SystemDictionary::resolve_or_null(class_name_symbol,
+                                                         THREAD);
+      guarantee(!HAS_PENDING_EXCEPTION, "Exception resolving a class.");
+      if (klass != NULL) {
+        if (PrintSharedSpaces && Verbose && WizardMode) {
+          tty->print_cr("Shared spaces preloaded: %s", class_name);
+        }
+
+
+        InstanceKlass* ik = InstanceKlass::cast(klass);
+
+        // Should be class load order as per -XX:+TraceClassLoadingPreorder
+        class_promote_order->append(ik);
+
+        // Link the class to cause the bytecodes to be rewritten and the
+        // cpcache to be created. The linking is done as soon as classes
+        // are loaded in order that the related data structures (klass and
+        // cpCache) are located together.
+
+        if (ik->init_state() < InstanceKlass::linked) {
+          ik->link_class(THREAD);
+          guarantee(!(HAS_PENDING_EXCEPTION), "exception in class rewriting");
+        }
+
+        // TODO: Resolve klasses in constant pool
+        ik->constants()->resolve_class_constants(THREAD);
+
+        class_count++;
+      } else {
+        if (PrintSharedSpaces && Verbose && WizardMode) {
+          tty->cr();
+          tty->print_cr(" Preload failed: %s", class_name);
+        }
+      }
+      file_jsum = 0; // Checksum must be on last line of file
+    }
+    if (computed_jsum != file_jsum) {
+      tty->cr();
+      tty->print_cr("Preload failed: checksum of class list was incorrect.");
+      exit(1);
+    }
+
+    tty->print_cr("done. ");
+
+    if (PrintSharedSpaces) {
+      tty->print_cr("Shared spaces: preloaded %d classes", class_count);
+    }
+
+    // Rewrite and unlink classes.
+    tty->print("Rewriting and linking classes ... ");
+
+    // Link any classes which got missed.  (It's not quite clear why
+    // they got missed.)  This iteration would be unsafe if we weren't
+    // single-threaded at this point; however we can't do it on the VM
+    // thread because it requires object allocation.
+    SystemDictionary::classes_do(link_shared_classes, CATCH);
+    tty->print_cr("done. ");
+
+    // Create and dump the shared spaces.   Everything so far is loaded
+    // with the null class loader.
+    ClassLoaderData* loader_data = ClassLoaderData::the_null_class_loader_data();
+    VM_PopulateDumpSharedSpace op(loader_data, class_promote_order);
+    VMThread::execute(&op);
+
+  } else {
+    char errmsg[JVM_MAXPATHLEN];
+    os::lasterror(errmsg, JVM_MAXPATHLEN);
+    tty->print_cr("Loading classlist failed: %s", errmsg);
+    exit(1);
+  }
+
+  // Since various initialization steps have been undone by this process,
+  // it is not reasonable to continue running a java process.
+  exit(0);
+}
+
+
+// Closure for serializing initialization data in from a data area
+// (ptr_array) read from the shared file.
+
+class ReadClosure : public SerializeClosure {
+private:
+  intptr_t** _ptr_array;
+
+  inline intptr_t nextPtr() {
+    return *(*_ptr_array)++;
+  }
+
+public:
+  ReadClosure(intptr_t** ptr_array) { _ptr_array = ptr_array; }
+
+  void do_ptr(void** p) {
+    assert(*p == NULL, "initializing previous initialized pointer.");
+    intptr_t obj = nextPtr();
+    assert((intptr_t)obj >= 0 || (intptr_t)obj < -100,
+           "hit tag while initializing ptrs.");
+    *p = (void*)obj;
+  }
+
+  void do_tag(int tag) {
+    int old_tag;
+    old_tag = (int)(intptr_t)nextPtr();
+    // do_int(&old_tag);
+    assert(tag == old_tag, "old tag doesn't match");
+    FileMapInfo::assert_mark(tag == old_tag);
+  }
+
+  void do_region(u_char* start, size_t size) {
+    assert((intptr_t)start % sizeof(intptr_t) == 0, "bad alignment");
+    assert(size % sizeof(intptr_t) == 0, "bad size");
+    do_tag((int)size);
+    while (size > 0) {
+      *(intptr_t*)start = nextPtr();
+      start += sizeof(intptr_t);
+      size -= sizeof(intptr_t);
+    }
+  }
+
+  bool reading() const { return true; }
+};
+
+
+// Save bounds of shared spaces mapped in.
+static char* _ro_base = NULL;
+static char* _rw_base = NULL;
+static char* _md_base = NULL;
+static char* _mc_base = NULL;
+
+// Return true if given address is in the mapped shared space.
+bool MetaspaceShared::is_in_shared_space(const void* p) {
+  if (_ro_base == NULL || _rw_base == NULL) {
+    return false;
+  } else {
+    return ((p > _ro_base && p < (_ro_base + SharedReadOnlySize)) ||
+            (p > _rw_base && p < (_rw_base + SharedReadWriteSize)));
+  }
+}
+
+void MetaspaceShared::print_shared_spaces() {
+  gclog_or_tty->print_cr("Shared Spaces:");
+  gclog_or_tty->print("  read-only " INTPTR_FORMAT "-" INTPTR_FORMAT,
+    _ro_base, _ro_base + SharedReadOnlySize);
+  gclog_or_tty->print("  read-write " INTPTR_FORMAT "-" INTPTR_FORMAT,
+    _rw_base, _rw_base + SharedReadWriteSize);
+  gclog_or_tty->cr();
+  gclog_or_tty->print("  misc-data " INTPTR_FORMAT "-" INTPTR_FORMAT,
+    _md_base, _md_base + SharedMiscDataSize);
+  gclog_or_tty->print("  misc-code " INTPTR_FORMAT "-" INTPTR_FORMAT,
+    _mc_base, _mc_base + SharedMiscCodeSize);
+  gclog_or_tty->cr();
+}
+
+
+// Map shared spaces at requested addresses and return if succeeded.
+// Need to keep the bounds of the ro and rw space for the Metaspace::contains
+// call, or is_in_shared_space.
+bool MetaspaceShared::map_shared_spaces(FileMapInfo* mapinfo) {
+  size_t image_alignment = mapinfo->alignment();
+
+  // Map in the shared memory and then map the regions on top of it
+  ReservedSpace shared_rs = mapinfo->reserve_shared_memory();
+  if (!shared_rs.is_reserved()) return false;
+
+  // Split reserved memory into pieces (windows needs this)
+  ReservedSpace ro_rs   = shared_rs.first_part(SharedReadOnlySize);
+  ReservedSpace tmp_rs1 = shared_rs.last_part(SharedReadOnlySize);
+  ReservedSpace rw_rs   = tmp_rs1.first_part(SharedReadWriteSize);
+  ReservedSpace tmp_rs2 = tmp_rs1.last_part(SharedReadWriteSize);
+  ReservedSpace md_rs   = tmp_rs2.first_part(SharedMiscDataSize);
+  ReservedSpace mc_rs   = tmp_rs2.last_part(SharedMiscDataSize);
+
+  // Map each shared region
+  if ((_ro_base = mapinfo->map_region(ro)) != NULL &&
+      (_rw_base = mapinfo->map_region(rw)) != NULL &&
+      (_md_base = mapinfo->map_region(md)) != NULL &&
+      (_mc_base = mapinfo->map_region(mc)) != NULL &&
+      (image_alignment == (size_t)max_alignment())) {
+    // Success (no need to do anything)
+    return true;
+  } else {
+    // If there was a failure in mapping any of the spaces, unmap the ones
+    // that succeeded
+    if (_ro_base != NULL) mapinfo->unmap_region(ro);
+    if (_rw_base != NULL) mapinfo->unmap_region(rw);
+    if (_md_base != NULL) mapinfo->unmap_region(md);
+    if (_mc_base != NULL) mapinfo->unmap_region(mc);
+    // Release the entire mapped region
+    shared_rs.release();
+    // If -Xshare:on is specified, print out the error message and exit VM,
+    // otherwise, set UseSharedSpaces to false and continue.
+    if (RequireSharedSpaces) {
+      vm_exit_during_initialization("Unable to use shared archive.", NULL);
+    } else {
+      FLAG_SET_DEFAULT(UseSharedSpaces, false);
+    }
+    return false;
+  }
+}
+
+// Read the miscellaneous data from the shared file, and
+// serialize it out to its various destinations.
+
+void MetaspaceShared::initialize_shared_spaces() {
+  FileMapInfo *mapinfo = FileMapInfo::current_info();
+
+  char* buffer = mapinfo->region_base(md);
+
+  // Skip over (reserve space for) a list of addresses of C++ vtables
+  // for Klass objects.  They get filled in later.
+
+  void** vtbl_list = (void**)buffer;
+  buffer += MetaspaceShared::vtbl_list_size * sizeof(void*);
+  Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size);
+
+  // Skip over (reserve space for) dummy C++ vtables Klass objects.
+  // They are used as is.
+
+  intptr_t vtable_size = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  buffer += vtable_size;
+
+  // Create the symbol table using the bucket array at this spot in the
+  // misc data space.  Since the symbol table is often modified, this
+  // region (of mapped pages) will be copy-on-write.
+
+  int symbolTableLen = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  int number_of_entries = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  SymbolTable::create_table((HashtableBucket<mtSymbol>*)buffer, symbolTableLen,
+                            number_of_entries);
+  buffer += symbolTableLen;
+
+  // Create the shared dictionary using the bucket array at this spot in
+  // the misc data space.  Since the shared dictionary table is never
+  // modified, this region (of mapped pages) will be (effectively, if
+  // not explicitly) read-only.
+
+  int sharedDictionaryLen = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  number_of_entries = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  SystemDictionary::set_shared_dictionary((HashtableBucket<mtClass>*)buffer,
+                                          sharedDictionaryLen,
+                                          number_of_entries);
+  buffer += sharedDictionaryLen;
+
+  // Create the package info table using the bucket array at this spot in
+  // the misc data space.  Since the package info table is never
+  // modified, this region (of mapped pages) will be (effectively, if
+  // not explicitly) read-only.
+
+  int pkgInfoLen = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  number_of_entries = *(intptr_t*)buffer;
+  buffer += sizeof(intptr_t);
+  ClassLoader::create_package_info_table((HashtableBucket<mtClass>*)buffer, pkgInfoLen,
+                                         number_of_entries);
+  buffer += pkgInfoLen;
+  ClassLoader::verify();
+
+  // The following data in the shared misc data region are the linked
+  // list elements (HashtableEntry objects) for the symbol table, string
+  // table, and shared dictionary.  The heap objects refered to by the
+  // symbol table, string table, and shared dictionary are permanent and
+  // unmovable.  Since new entries added to the string and symbol tables
+  // are always added at the beginning of the linked lists, THESE LINKED
+  // LIST ELEMENTS ARE READ-ONLY.
+
+  int len = *(intptr_t*)buffer; // skip over symbol table entries
+  buffer += sizeof(intptr_t);
+  buffer += len;
+
+  len = *(intptr_t*)buffer;     // skip over shared dictionary entries
+  buffer += sizeof(intptr_t);
+  buffer += len;
+
+  len = *(intptr_t*)buffer;     // skip over package info table entries
+  buffer += sizeof(intptr_t);
+  buffer += len;
+
+  len = *(intptr_t*)buffer;     // skip over package info table char[] arrays.
+  buffer += sizeof(intptr_t);
+  buffer += len;
+
+  intptr_t* array = (intptr_t*)buffer;
+  ReadClosure rc(&array);
+  serialize(&rc);
+
+  // Close the mapinfo file
+  mapinfo->close();
+}
+
+// JVM/TI RedefineClasses() support:
+bool MetaspaceShared::remap_shared_readonly_as_readwrite() {
+  assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
+
+  if (UseSharedSpaces) {
+    // remap the shared readonly space to shared readwrite, private
+    FileMapInfo* mapinfo = FileMapInfo::current_info();
+    if (!mapinfo->remap_shared_readonly_as_readwrite()) {
+      return false;
+    }
+  }
+  return true;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/memory/metaspaceShared.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+#ifndef SHARE_VM_MEMORY_METASPACE_SHARED_HPP
+#define SHARE_VM_MEMORY_METASPACE_SHARED_HPP
+
+#include "memory/allocation.hpp"
+#include "memory/memRegion.hpp"
+#include "runtime/virtualspace.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/macros.hpp"
+
+class FileMapInfo;
+
+// Class Data Sharing Support
+class MetaspaceShared : AllStatic {
+
+  // CDS support
+  static ReservedSpace* _shared_rs;
+  static int _max_alignment;
+
+ public:
+  enum {
+    vtbl_list_size = 17, // number of entries in the shared space vtable list.
+    num_virtuals = 200   // maximum number of virtual functions
+                         // If virtual functions are added to Metadata,
+                         // this number needs to be increased.  Also,
+                         // SharedMiscCodeSize will need to be increased.
+  };
+
+  enum {
+    ro = 0,  // read-only shared space in the heap
+    rw = 1,  // read-write shared space in the heap
+    md = 2,  // miscellaneous data for initializing tables, etc.
+    mc = 3,  // miscellaneous code - vtable replacement.
+    n_regions = 4
+  };
+
+  static void set_max_alignment(int alignment) KERNEL_RETURN;
+  static int max_alignment()                   KERNEL_RETURN_(0);
+
+  static void preload_and_dump(TRAPS) KERNEL_RETURN;
+  static ReservedSpace* shared_rs();
+  static void set_shared_rs(ReservedSpace* rs) KERNEL_RETURN;
+
+  static bool map_shared_spaces(FileMapInfo* mapinfo) KERNEL_RETURN_(false);
+  static void initialize_shared_spaces() KERNEL_RETURN;
+
+  // Return true if given address is in the mapped shared space.
+  static bool is_in_shared_space(const void* p) KERNEL_RETURN_(false);
+
+  static void generate_vtable_methods(void** vtbl_list,
+                                      void** vtable,
+                                      char** md_top, char* md_end,
+                                      char** mc_top, char* mc_end);
+  static void serialize(SerializeClosure* sc);
+
+  // JVM/TI RedefineClasses() support:
+  // Remap the shared readonly space to shared readwrite, private if
+  // sharing is enabled. Simply returns true if sharing is not enabled
+  // or if the remapping has already been done by a prior call.
+  static bool remap_shared_readonly_as_readwrite() KERNEL_RETURN_(true);
+
+  static void print_shared_spaces();
+};
+#endif // SHARE_VM_MEMORY_METASPACE_SHARED_HPP
--- a/src/share/vm/memory/modRefBarrierSet.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/modRefBarrierSet.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -51,7 +51,6 @@
 
   bool read_ref_needs_barrier(void* field) { return false; }
   bool read_prim_needs_barrier(HeapWord* field, size_t bytes) { return false; }
-  virtual bool write_ref_needs_barrier(void* field, oop new_val) = 0;
   bool write_prim_needs_barrier(HeapWord* field, size_t bytes,
                                 juint val1, juint val2) { return false; }
 
--- a/src/share/vm/memory/oopFactory.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/oopFactory.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -31,17 +31,8 @@
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/compiledICHolderKlass.hpp"
-#include "oops/constMethodKlass.hpp"
-#include "oops/constantPoolKlass.hpp"
-#include "oops/cpCacheKlass.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/instanceKlassKlass.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/klassKlass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodDataKlass.hpp"
-#include "oops/methodKlass.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 
@@ -55,135 +46,45 @@
   return result;
 }
 
-typeArrayOop oopFactory::new_permanent_charArray(int length, TRAPS) {
-  return typeArrayKlass::cast(Universe::charArrayKlassObj())->allocate_permanent(length, THREAD);
-}
-
-typeArrayOop oopFactory::new_permanent_byteArray(int length, TRAPS) {
-  return typeArrayKlass::cast(Universe::byteArrayKlassObj())->allocate_permanent(length, THREAD);
+typeArrayOop oopFactory::new_tenured_charArray(int length, TRAPS) {
+  return typeArrayKlass::cast(Universe::charArrayKlassObj())->allocate(length, THREAD);
 }
 
-
-typeArrayOop oopFactory::new_permanent_shortArray(int length, TRAPS) {
-  return typeArrayKlass::cast(Universe::shortArrayKlassObj())->allocate_permanent(length, THREAD);
+typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
+  Klass* type_asKlassOop = Universe::typeArrayKlassObj(type);
+  typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
+  typeArrayOop result = type_asArrayKlass->allocate(length, THREAD);
+  return result;
 }
 
-
-typeArrayOop oopFactory::new_permanent_intArray(int length, TRAPS) {
-  return typeArrayKlass::cast(Universe::intArrayKlassObj())->allocate_permanent(length, THREAD);
-}
-
-
-typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
-  klassOop type_asKlassOop = Universe::typeArrayKlassObj(type);
+// Create a Java array that points to metadata.
+// As far as Java code is concerned, a metaData array is either an array of
+// int or long depending on pointer size.  Only a few things use this, like
+// stack trace elements in Throwable.  They cast Method* into this type.
+// Note:can't point to symbols because there's no way to unreference count
+// them when this object goes away.
+typeArrayOop oopFactory::new_metaDataArray(int length, TRAPS) {
+  BasicType type = LP64_ONLY(T_LONG) NOT_LP64(T_INT);
+  Klass* type_asKlassOop = Universe::typeArrayKlassObj(type);
   typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
   typeArrayOop result = type_asArrayKlass->allocate_common(length, true, THREAD);
   return result;
 }
 
 typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) {
-  klassOop type_asKlassOop = Universe::typeArrayKlassObj(type);
+  Klass* type_asKlassOop = Universe::typeArrayKlassObj(type);
   typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
   typeArrayOop result = type_asArrayKlass->allocate_common(length, false, THREAD);
   return result;
 }
 
 
-objArrayOop oopFactory::new_objArray(klassOop klass, int length, TRAPS) {
+objArrayOop oopFactory::new_objArray(Klass* klass, int length, TRAPS) {
   assert(klass->is_klass(), "must be instance class");
-  if (klass->klass_part()->oop_is_array()) {
-    return ((arrayKlass*)klass->klass_part())->allocate_arrayArray(1, length, THREAD);
+  if (klass->oop_is_array()) {
+    return ((arrayKlass*)klass)->allocate_arrayArray(1, length, THREAD);
   } else {
-    assert (klass->klass_part()->oop_is_instance(), "new object array with klass not an instanceKlass");
-    return ((instanceKlass*)klass->klass_part())->allocate_objArray(1, length, THREAD);
+    assert (klass->oop_is_instance(), "new object array with klass not an InstanceKlass");
+    return ((InstanceKlass*)klass)->allocate_objArray(1, length, THREAD);
   }
 }
-
-objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
-  int size = objArrayOopDesc::object_size(length);
-  KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj());
-  objArrayOop o = (objArrayOop)
-    Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
-  // initialization not needed, allocated cleared
-  return o;
-}
-
-
-constantPoolOop oopFactory::new_constantPool(int length,
-                                             bool is_conc_safe,
-                                             TRAPS) {
-  constantPoolKlass* ck = constantPoolKlass::cast(Universe::constantPoolKlassObj());
-  return ck->allocate(length, is_conc_safe, CHECK_NULL);
-}
-
-
-constantPoolCacheOop oopFactory::new_constantPoolCache(int length,
-                                                       TRAPS) {
-  constantPoolCacheKlass* ck = constantPoolCacheKlass::cast(Universe::constantPoolCacheKlassObj());
-  return ck->allocate(length, CHECK_NULL);
-}
-
-
-klassOop oopFactory::new_instanceKlass(Symbol* name, int vtable_len, int itable_len,
-                                       int static_field_size,
-                                       unsigned int nonstatic_oop_map_count,
-                                       AccessFlags access_flags,
-                                       ReferenceType rt,
-                                       KlassHandle host_klass, TRAPS) {
-  instanceKlassKlass* ikk = instanceKlassKlass::cast(Universe::instanceKlassKlassObj());
-  return ikk->allocate_instance_klass(name, vtable_len, itable_len,
-                                      static_field_size, nonstatic_oop_map_count,
-                                      access_flags, rt, host_klass, CHECK_NULL);
-}
-
-
-constMethodOop oopFactory::new_constMethod(int byte_code_size,
-                                           int compressed_line_number_size,
-                                           int localvariable_table_length,
-                                           int exception_table_length,
-                                           int checked_exceptions_length,
-                                           bool is_conc_safe,
-                                           TRAPS) {
-  klassOop cmkObj = Universe::constMethodKlassObj();
-  constMethodKlass* cmk = constMethodKlass::cast(cmkObj);
-  return cmk->allocate(byte_code_size, compressed_line_number_size,
-                       localvariable_table_length, exception_table_length,
-                       checked_exceptions_length, is_conc_safe,
-                       CHECK_NULL);
-}
-
-
-methodOop oopFactory::new_method(int byte_code_size, AccessFlags access_flags,
-                                 int compressed_line_number_size,
-                                 int localvariable_table_length,
-                                 int exception_table_length,
-                                 int checked_exceptions_length,
-                                 bool is_conc_safe,
-                                 TRAPS) {
-  methodKlass* mk = methodKlass::cast(Universe::methodKlassObj());
-  assert(!access_flags.is_native() || byte_code_size == 0,
-         "native methods should not contain byte codes");
-  constMethodOop cm = new_constMethod(byte_code_size,
-                                      compressed_line_number_size,
-                                      localvariable_table_length,
-                                      exception_table_length,
-                                      checked_exceptions_length,
-                                      is_conc_safe, CHECK_NULL);
-  constMethodHandle rw(THREAD, cm);
-  return mk->allocate(rw, access_flags, CHECK_NULL);
-}
-
-
-methodDataOop oopFactory::new_methodData(methodHandle method, TRAPS) {
-  methodDataKlass* mdk = methodDataKlass::cast(Universe::methodDataKlassObj());
-  return mdk->allocate(method, CHECK_NULL);
-}
-
-
-compiledICHolderOop oopFactory::new_compiledICHolder(methodHandle method, KlassHandle klass, TRAPS) {
-  compiledICHolderKlass* ck = (compiledICHolderKlass*) Universe::compiledICHolderKlassObj()->klass_part();
-  compiledICHolderOop c = ck->allocate(CHECK_NULL);
-  c->set_holder_method(method());
-  c->set_holder_klass(klass());
-  return c;
-}
--- a/src/share/vm/memory/oopFactory.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/oopFactory.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,7 +28,6 @@
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "memory/universe.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.hpp"
 #include "oops/typeArrayKlass.hpp"
@@ -52,68 +51,20 @@
 
   // create java.lang.Object[]
   static objArrayOop     new_objectArray(int length, TRAPS)  {
+    assert(Universe::objectArrayKlassObj() != NULL, "Too early?");
     return objArrayKlass::
       cast(Universe::objectArrayKlassObj())->allocate(length, CHECK_NULL);
   }
 
   static typeArrayOop    new_charArray           (const char* utf8_str,  TRAPS);
-  static typeArrayOop    new_permanent_charArray (int length, TRAPS);
-  static typeArrayOop    new_permanent_byteArray (int length, TRAPS);  // used for class file structures
-  static typeArrayOop    new_permanent_shortArray(int length, TRAPS);  // used for class file structures
-  static typeArrayOop    new_permanent_intArray  (int length, TRAPS);  // used for class file structures
+  static typeArrayOop    new_tenured_charArray(int length, TRAPS);
 
   static typeArrayOop    new_typeArray(BasicType type, int length, TRAPS);
   static typeArrayOop    new_typeArray_nozero(BasicType type, int length, TRAPS);
-
-  // Constant pools
-  static constantPoolOop      new_constantPool     (int length,
-                                                    bool is_conc_safe,
-                                                    TRAPS);
-  static constantPoolCacheOop new_constantPoolCache(int length,
-                                                    TRAPS);
-
-  // Instance classes
-  static klassOop        new_instanceKlass(Symbol* name,
-                                           int vtable_len, int itable_len,
-                                           int static_field_size,
-                                           unsigned int nonstatic_oop_map_count,
-                                           AccessFlags access_flags,
-                                           ReferenceType rt,
-                                           KlassHandle host_klass, TRAPS);
-
-  // Methods
-private:
-  static constMethodOop  new_constMethod(int byte_code_size,
-                                         int compressed_line_number_size,
-                                         int localvariable_table_length,
-                                         int exception_table_length,
-                                         int checked_exceptions_length,
-                                         bool is_conc_safe,
-                                         TRAPS);
-public:
-  // Set is_conc_safe for methods which cannot safely be
-  // processed by concurrent GC even after the return of
-  // the method.
-  static methodOop       new_method(int byte_code_size,
-                                    AccessFlags access_flags,
-                                    int compressed_line_number_size,
-                                    int localvariable_table_length,
-                                    int exception_table_length,
-                                    int checked_exceptions_length,
-                                    bool is_conc_safe,
-                                    TRAPS);
-
-  // Method Data containers
-  static methodDataOop   new_methodData(methodHandle method, TRAPS);
-
-  // System object arrays
-  static objArrayOop     new_system_objArray(int length, TRAPS);
+  static typeArrayOop    new_metaDataArray(int length, TRAPS);
 
   // Regular object arrays
-  static objArrayOop     new_objArray(klassOop klass, int length, TRAPS);
-
-  // For compiled ICs
-  static compiledICHolderOop new_compiledICHolder(methodHandle method, KlassHandle klass, TRAPS);
+  static objArrayOop     new_objArray(Klass* klass, int length, TRAPS);
 };
 
 #endif // SHARE_VM_MEMORY_OOPFACTORY_HPP
--- a/src/share/vm/memory/permGen.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2000, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/shared/cSpaceCounters.hpp"
-#include "gc_implementation/shared/vmGCOperations.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/blockOffsetTable.inline.hpp"
-#include "memory/compactPermGen.hpp"
-#include "memory/gcLocker.hpp"
-#include "memory/gcLocker.inline.hpp"
-#include "memory/genCollectedHeap.hpp"
-#include "memory/generation.inline.hpp"
-#include "memory/permGen.hpp"
-#include "memory/universe.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/java.hpp"
-#include "runtime/vmThread.hpp"
-
-HeapWord* PermGen::request_expand_and_allocate(Generation* gen, size_t size,
-                                               GCCause::Cause prev_cause) {
-  if (gen->capacity() < _capacity_expansion_limit ||
-      prev_cause != GCCause::_no_gc || UseG1GC) {  // last disjunct is a temporary hack for G1
-    return gen->expand_and_allocate(size, false);
-  }
-  // We have reached the limit of capacity expansion where
-  // we will not expand further until a GC is done; request denied.
-  return NULL;
-}
-
-HeapWord* PermGen::mem_allocate_in_gen(size_t size, Generation* gen) {
-  GCCause::Cause next_cause = GCCause::_permanent_generation_full;
-  GCCause::Cause prev_cause = GCCause::_no_gc;
-  unsigned int gc_count_before, full_gc_count_before;
-  HeapWord* obj;
-
-  for (;;) {
-    {
-      MutexLocker ml(Heap_lock);
-      if ((obj = gen->allocate(size, false)) != NULL) {
-        return obj;
-      }
-      // Attempt to expand and allocate the requested space:
-      // specific subtypes may use specific policy to either expand
-      // or not. The default policy (see above) is to expand until
-      // _capacity_expansion_limit, and no further unless a GC is done.
-      // Concurrent collectors may decide to kick off a concurrent
-      // collection under appropriate conditions.
-      obj = request_expand_and_allocate(gen, size, prev_cause);
-
-      if (obj != NULL || prev_cause == GCCause::_last_ditch_collection) {
-        return obj;
-      }
-      if (GC_locker::is_active_and_needs_gc()) {
-        // If this thread is not in a jni critical section, we stall
-        // the requestor until the critical section has cleared and
-        // GC allowed. When the critical section clears, a GC is
-        // initiated by the last thread exiting the critical section; so
-        // we retry the allocation sequence from the beginning of the loop,
-        // rather than causing more, now probably unnecessary, GC attempts.
-        JavaThread* jthr = JavaThread::current();
-        if (!jthr->in_critical()) {
-          MutexUnlocker mul(Heap_lock);
-          // Wait for JNI critical section to be exited
-          GC_locker::stall_until_clear();
-          continue;
-        } else {
-          if (CheckJNICalls) {
-            fatal("Possible deadlock due to allocating while"
-                  " in jni critical section");
-          }
-          return NULL;
-        }
-      }
-      // Read the GC count while holding the Heap_lock
-      gc_count_before      = SharedHeap::heap()->total_collections();
-      full_gc_count_before = SharedHeap::heap()->total_full_collections();
-    }
-
-    // Give up heap lock above, VMThread::execute below gets it back
-    VM_GenCollectForPermanentAllocation op(size, gc_count_before, full_gc_count_before,
-                                           next_cause);
-    VMThread::execute(&op);
-    if (!op.prologue_succeeded() || op.gc_locked()) {
-      assert(op.result() == NULL, "must be NULL if gc_locked() is true");
-      continue;  // retry and/or stall as necessary
-    }
-    obj = op.result();
-    assert(obj == NULL || SharedHeap::heap()->is_in_reserved(obj),
-           "result not in heap");
-    if (obj != NULL) {
-      return obj;
-    }
-    prev_cause = next_cause;
-    next_cause = GCCause::_last_ditch_collection;
-  }
-}
-
-CompactingPermGen::CompactingPermGen(ReservedSpace rs,
-                                     ReservedSpace shared_rs,
-                                     size_t initial_byte_size,
-                                     GenRemSet* remset,
-                                     PermanentGenerationSpec* perm_spec)
-{
-  CompactingPermGenGen* g =
-    new CompactingPermGenGen(rs, shared_rs, initial_byte_size, -1, remset,
-                             NULL, perm_spec);
-  if (g == NULL)
-    vm_exit_during_initialization("Could not allocate a CompactingPermGen");
-  _gen = g;
-
-  g->initialize_performance_counters();
-
-  _capacity_expansion_limit = g->capacity() + MaxPermHeapExpansion;
-}
-
-HeapWord* CompactingPermGen::mem_allocate(size_t size) {
-  return mem_allocate_in_gen(size, _gen);
-}
-
-void CompactingPermGen::compute_new_size() {
-  size_t desired_capacity = align_size_up(_gen->used(), MinPermHeapExpansion);
-  if (desired_capacity < PermSize) {
-    desired_capacity = PermSize;
-  }
-  if (_gen->capacity() > desired_capacity) {
-    _gen->shrink(_gen->capacity() - desired_capacity);
-  }
-  set_capacity_expansion_limit(_gen->capacity() + MaxPermHeapExpansion);
-}
--- a/src/share/vm/memory/permGen.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2000, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_MEMORY_PERMGEN_HPP
-#define SHARE_VM_MEMORY_PERMGEN_HPP
-
-#include "gc_interface/gcCause.hpp"
-#include "memory/generation.hpp"
-#include "memory/iterator.hpp"
-#include "runtime/handles.hpp"
-#include "runtime/mutexLocker.hpp"
-#include "runtime/virtualspace.hpp"
-
-// All heaps contains a "permanent generation," containing permanent
-// (reflective) objects.  This is like a regular generation in some ways,
-// but unlike one in others, and so is split apart.
-
-class Generation;
-class GenRemSet;
-class CSpaceCounters;
-
-// PermGen models the part of the heap used to allocate class meta-data.
-
-class PermGen : public CHeapObj<mtGC> {
-  friend class VMStructs;
- protected:
-  size_t _capacity_expansion_limit;  // maximum expansion allowed without a
-                                     // full gc occurring
-  void set_capacity_expansion_limit(size_t limit) {
-    assert_locked_or_safepoint(Heap_lock);
-    _capacity_expansion_limit = limit;
-  }
-
-  HeapWord* mem_allocate_in_gen(size_t size, Generation* gen);
-  // Along with mem_allocate_in_gen() above, implements policy for
-  // "scheduling" allocation/expansion/collection of the perm gen.
-  // The virtual method request_...() below can be overridden by
-  // subtypes that want to implement a different expansion/collection
-  // policy from the default provided.
-  virtual HeapWord* request_expand_and_allocate(Generation* gen, size_t size,
-                                                GCCause::Cause prev_cause);
-
- public:
-  enum Name {
-    MarkSweepCompact, MarkSweep, ConcurrentMarkSweep
-  };
-
-  // Permanent allocation (initialized)
-  virtual HeapWord* mem_allocate(size_t size) = 0;
-
-  // Mark sweep support
-  virtual void compute_new_size() = 0;
-
-  // Ideally, we would use MI (IMHO) but we'll do delegation instead.
-  virtual Generation* as_gen() const = 0;
-
-  virtual void oop_iterate(OopClosure* cl) {
-    Generation* g = as_gen();
-    assert(g != NULL, "as_gen() NULL");
-    g->oop_iterate(cl);
-  }
-
-  virtual void object_iterate(ObjectClosure* cl) {
-    Generation* g = as_gen();
-    assert(g != NULL, "as_gen() NULL");
-    g->object_iterate(cl);
-  }
-
-  // Performance Counter support
-  virtual void update_counters() {
-    Generation* g = as_gen();
-    assert(g != NULL, "as_gen() NULL");
-    g->update_counters();
-  }
-};
-
-#endif // SHARE_VM_MEMORY_PERMGEN_HPP
--- a/src/share/vm/memory/referenceProcessor.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/referenceProcessor.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -541,7 +541,7 @@
         !policy->should_clear_reference(iter.obj(), _soft_ref_timestamp_clock)) {
       if (TraceReferenceGC) {
         gclog_or_tty->print_cr("Dropping reference (" INTPTR_FORMAT ": %s"  ") by policy",
-                               iter.obj(), iter.obj()->blueprint()->internal_name());
+                               iter.obj(), iter.obj()->klass()->internal_name());
       }
       // Remove Reference object from list
       iter.remove();
@@ -580,7 +580,7 @@
     if (iter.is_referent_alive()) {
       if (TraceReferenceGC) {
         gclog_or_tty->print_cr("Dropping strongly reachable reference (" INTPTR_FORMAT ": %s)",
-                               iter.obj(), iter.obj()->blueprint()->internal_name());
+                               iter.obj(), iter.obj()->klass()->internal_name());
       }
       // The referent is reachable after all.
       // Remove Reference object from list.
@@ -666,7 +666,7 @@
     if (TraceReferenceGC) {
       gclog_or_tty->print_cr("Adding %sreference (" INTPTR_FORMAT ": %s) as pending",
                              clear_referent ? "cleared " : "",
-                             iter.obj(), iter.obj()->blueprint()->internal_name());
+                             iter.obj(), iter.obj()->klass()->internal_name());
     }
     assert(iter.obj()->is_oop(UseConcMarkSweepGC), "Adding a bad reference");
     iter.next();
@@ -1036,7 +1036,7 @@
       list = &_discoveredPhantomRefs[id];
       break;
     case REF_NONE:
-      // we should not reach here if we are an instanceRefKlass
+      // we should not reach here if we are an InstanceRefKlass
     default:
       ShouldNotReachHere();
   }
@@ -1081,14 +1081,14 @@
 
     if (TraceReferenceGC) {
       gclog_or_tty->print_cr("Discovered reference (mt) (" INTPTR_FORMAT ": %s)",
-                             obj, obj->blueprint()->internal_name());
+                             obj, obj->klass()->internal_name());
     }
   } else {
     // If retest was non NULL, another thread beat us to it:
     // The reference has already been discovered...
     if (TraceReferenceGC) {
       gclog_or_tty->print_cr("Already discovered reference (" INTPTR_FORMAT ": %s)",
-                             obj, obj->blueprint()->internal_name());
+                             obj, obj->klass()->internal_name());
     }
   }
 }
@@ -1183,7 +1183,7 @@
     // The reference has already been discovered...
     if (TraceReferenceGC) {
       gclog_or_tty->print_cr("Already discovered reference (" INTPTR_FORMAT ": %s)",
-                             obj, obj->blueprint()->internal_name());
+                             obj, obj->klass()->internal_name());
     }
     if (RefDiscoveryPolicy == ReferentBasedDiscovery) {
       // assumes that an object is not processed twice;
@@ -1251,7 +1251,7 @@
 
     if (TraceReferenceGC) {
       gclog_or_tty->print_cr("Discovered reference (" INTPTR_FORMAT ": %s)",
-                                obj, obj->blueprint()->internal_name());
+                                obj, obj->klass()->internal_name());
     }
   }
   assert(obj->is_oop(), "Discovered a bad reference");
@@ -1267,18 +1267,10 @@
   BoolObjectClosure* is_alive,
   OopClosure* keep_alive,
   VoidClosure* complete_gc,
-  YieldClosure* yield,
-  bool should_unload_classes) {
+  YieldClosure* yield) {
 
   NOT_PRODUCT(verify_ok_to_handle_reflists());
 
-#ifdef ASSERT
-  bool must_remember_klasses = ClassUnloading && !UseConcMarkSweepGC ||
-                               CMSClassUnloadingEnabled && UseConcMarkSweepGC ||
-                               ExplicitGCInvokesConcurrentAndUnloadsClasses &&
-                                 UseConcMarkSweepGC && should_unload_classes;
-  RememberKlassesChecker mx(must_remember_klasses);
-#endif
   // Soft references
   {
     TraceTime tt("Preclean SoftReferences", PrintGCDetails && PrintReferenceGC,
@@ -1357,7 +1349,7 @@
       // active; we need to trace and mark its cohort.
       if (TraceReferenceGC) {
         gclog_or_tty->print_cr("Precleaning Reference (" INTPTR_FORMAT ": %s)",
-                               iter.obj(), iter.obj()->blueprint()->internal_name());
+                               iter.obj(), iter.obj()->klass()->internal_name());
       }
       // Remove Reference object from list
       iter.remove();
--- a/src/share/vm/memory/referenceProcessor.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/referenceProcessor.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -345,13 +345,11 @@
   // The caller is responsible for taking care of potential
   // interference with concurrent operations on these lists
   // (or predicates involved) by other threads. Currently
-  // only used by the CMS collector.  should_unload_classes is
-  // used to aid assertion checking when classes are collected.
+  // only used by the CMS collector.
   void preclean_discovered_references(BoolObjectClosure* is_alive,
                                       OopClosure*        keep_alive,
                                       VoidClosure*       complete_gc,
-                                      YieldClosure*      yield,
-                                      bool               should_unload_classes);
+                                      YieldClosure*      yield);
 
   // Delete entries in the discovered lists that have
   // either a null referent or are not active. Such
@@ -496,6 +494,7 @@
 
   // Balance each of the discovered lists.
   void balance_all_queues();
+  void verify_list(DiscoveredList& ref_list);
 
   // Discover a Reference object, using appropriate discovery criteria
   bool discover_reference(oop obj, ReferenceType rt);
--- a/src/share/vm/memory/restore.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "memory/filemap.hpp"
-#include "oops/oop.inline.hpp"
-#include "utilities/hashtable.inline.hpp"
-
-
-// Closure for serializing initialization data in from a data area
-// (oop_array) read from the shared file.
-
-class ReadClosure : public SerializeOopClosure {
-private:
-  oop** _oop_array;
-
-  inline oop nextOop() {
-    return *(*_oop_array)++;
-  }
-
-public:
-  ReadClosure(oop** oop_array) { _oop_array = oop_array; }
-
-  void do_oop(oop* p) {
-    assert(SharedSkipVerify || *p == NULL || *p == Universe::klassKlassObj(),
-           "initializing previously initialized oop.");
-    oop obj = nextOop();
-    assert(SharedSkipVerify || (intptr_t)obj >= 0 || (intptr_t)obj < -100,
-           "hit tag while initializing oops.");
-    assert(SharedSkipVerify || obj->is_oop_or_null(), "invalid oop");
-    *p = obj;
-  }
-
-  void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-
-  void do_ptr(void** p) {
-    assert(*p == NULL, "initializing previous initialized pointer.");
-    void* obj = nextOop();
-    assert((intptr_t)obj >= 0 || (intptr_t)obj < -100,
-           "hit tag while initializing ptrs.");
-    *p = obj;
-  }
-
-  void do_ptr(HeapWord** p) { do_ptr((void **) p); }
-
-  void do_int(int* p) {
-    *p = (int)(intptr_t)nextOop();
-  }
-
-  void do_size_t(size_t* p) {
-    // Assumes that size_t and pointers are the same size.
-    *p = (size_t)nextOop();
-  }
-
-  void do_tag(int tag) {
-    int old_tag;
-    do_int(&old_tag);
-    FileMapInfo::assert_mark(tag == old_tag);
-  }
-
-  void do_region(u_char* start, size_t size) {
-    assert((intptr_t)start % sizeof(oop) == 0, "bad alignment");
-    assert(size % sizeof(oop) == 0, "bad size");
-    do_tag((int)size);
-    while (size > 0) {
-      *(oop*)start = nextOop();
-      start += sizeof(oop);
-      size -= sizeof(oop);
-    }
-  }
-
-  bool reading() const { return true; }
-};
-
-
-// Read the oop and miscellaneous data from the shared file, and
-// serialize it out to its various destinations.
-
-void CompactingPermGenGen::initialize_oops() {
-  FileMapInfo *mapinfo = FileMapInfo::current_info();
-
-  char* buffer = mapinfo->region_base(md);
-
-  // Skip over (reserve space for) a list of addresses of C++ vtables
-  // for Klass objects.  They get filled in later.
-
-  void** vtbl_list = (void**)buffer;
-  buffer += vtbl_list_size * sizeof(void*);
-  Universe::init_self_patching_vtbl_list(vtbl_list, vtbl_list_size);
-
-  // Skip over (reserve space for) dummy C++ vtables Klass objects.
-  // They are used as is.
-
-  intptr_t vtable_size = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  buffer += vtable_size;
-
-  // Skip the recorded symbols.
-
-  intptr_t total_symbol_size = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t) * 2;
-  buffer += total_symbol_size;
-
-  // Create the symbol table using the bucket array at this spot in the
-  // misc data space.  Since the symbol table is often modified, this
-  // region (of mapped pages) will be copy-on-write.
-
-  int symbolTableLen = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  int number_of_entries = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  SymbolTable::create_table((HashtableBucket<mtSymbol>*)buffer, symbolTableLen,
-                            number_of_entries);
-  buffer += symbolTableLen;
-
-  // Create the string table using the bucket array at this spot in the
-  // misc data space.  Since the string table is often modified, this
-  // region (of mapped pages) will be copy-on-write.
-
-  int stringTableLen = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  number_of_entries = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  StringTable::create_table((HashtableBucket<mtSymbol>*)buffer, stringTableLen,
-                            number_of_entries);
-  buffer += stringTableLen;
-
-  // Create the shared dictionary using the bucket array at this spot in
-  // the misc data space.  Since the shared dictionary table is never
-  // modified, this region (of mapped pages) will be (effectively, if
-  // not explicitly) read-only.
-
-  int sharedDictionaryLen = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  number_of_entries = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  SystemDictionary::set_shared_dictionary((HashtableBucket<mtClass>*)buffer,
-                                          sharedDictionaryLen,
-                                          number_of_entries);
-  buffer += sharedDictionaryLen;
-
-  // Create the package info table using the bucket array at this spot in
-  // the misc data space.  Since the package info table is never
-  // modified, this region (of mapped pages) will be (effectively, if
-  // not explicitly) read-only.
-
-  int pkgInfoLen = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  number_of_entries = *(intptr_t*)buffer;
-  buffer += sizeof(intptr_t);
-  ClassLoader::create_package_info_table((HashtableBucket<mtClass>*)buffer, pkgInfoLen,
-                                         number_of_entries);
-  buffer += pkgInfoLen;
-  ClassLoader::verify();
-
-  // The following data in the shared misc data region are the linked
-  // list elements (HashtableEntry objects) for the symbol table, string
-  // table, and shared dictionary.  The heap objects refered to by the
-  // symbol table, string table, and shared dictionary are permanent and
-  // unmovable.  Since new entries added to the string and symbol tables
-  // are always added at the beginning of the linked lists, THESE LINKED
-  // LIST ELEMENTS ARE READ-ONLY.
-
-  int len = *(intptr_t*)buffer; // skip over symbol table entries
-  buffer += sizeof(intptr_t);
-  buffer += len;
-
-  len = *(intptr_t*)buffer;     // skip over string table entries
-  buffer += sizeof(intptr_t);
-  buffer += len;
-
-  len = *(intptr_t*)buffer;     // skip over shared dictionary entries
-  buffer += sizeof(intptr_t);
-  buffer += len;
-
-  len = *(intptr_t*)buffer;     // skip over package info table entries
-  buffer += sizeof(intptr_t);
-  buffer += len;
-
-  len = *(intptr_t*)buffer;     // skip over package info table char[] arrays.
-  buffer += sizeof(intptr_t);
-  buffer += len;
-
-  oop* oop_array = (oop*)buffer;
-  ReadClosure rc(&oop_array);
-  serialize_oops(&rc);
-}
--- a/src/share/vm/memory/serialize.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) 2003, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "code/codeCache.hpp"
-#include "memory/classify.hpp"
-#include "memory/compactingPermGenGen.hpp"
-#include "oops/compiledICHolderOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/objArrayOop.hpp"
-#include "oops/oop.inline.hpp"
-
-
-// Serialize out the block offset shared array for the shared spaces.
-
-void CompactingPermGenGen::serialize_bts(SerializeOopClosure* soc) {
-  _ro_bts->serialize(soc, readonly_bottom, readonly_end);
-  _rw_bts->serialize(soc, readwrite_bottom, readwrite_end);
-}
-
-
-// Read/write a data stream for restoring/preserving oop pointers and
-// miscellaneous data from/to the shared archive file.
-
-void CompactingPermGenGen::serialize_oops(SerializeOopClosure* soc) {
-  int tag = 0;
-  soc->do_tag(--tag);
-
-  assert(!UseCompressedOops, "UseCompressedOops doesn't work with shared archive");
-  // Verify the sizes of various oops in the system.
-  soc->do_tag(sizeof(oopDesc));
-  soc->do_tag(sizeof(instanceOopDesc));
-  soc->do_tag(sizeof(methodOopDesc));
-  soc->do_tag(sizeof(constMethodOopDesc));
-  soc->do_tag(sizeof(methodDataOopDesc));
-  soc->do_tag(arrayOopDesc::base_offset_in_bytes(T_BYTE));
-  soc->do_tag(sizeof(constantPoolOopDesc));
-  soc->do_tag(sizeof(constantPoolCacheOopDesc));
-  soc->do_tag(objArrayOopDesc::base_offset_in_bytes());
-  soc->do_tag(typeArrayOopDesc::base_offset_in_bytes(T_BYTE));
-  soc->do_tag(sizeof(Symbol));
-  soc->do_tag(sizeof(klassOopDesc));
-  soc->do_tag(sizeof(markOopDesc));
-  soc->do_tag(sizeof(compiledICHolderOopDesc));
-
-  // Dump the block offset table entries.
-  GenCollectedHeap* gch = GenCollectedHeap::heap();
-  CompactingPermGenGen* pg = (CompactingPermGenGen*)gch->perm_gen();
-  pg->serialize_bts(soc);
-  soc->do_tag(--tag);
-  pg->ro_space()->serialize_block_offset_array_offsets(soc);
-  soc->do_tag(--tag);
-  pg->rw_space()->serialize_block_offset_array_offsets(soc);
-  soc->do_tag(--tag);
-
-  // Special case - this oop needed in oop->is_oop() assertions.
-  soc->do_ptr((void**)&Universe::_klassKlassObj);
-  soc->do_tag(--tag);
-
-  // Dump/restore miscellaneous oops.
-  Universe::oops_do(soc, true);
-  soc->do_tag(--tag);
-  CodeCache::oops_do(soc);
-  soc->do_tag(--tag);
-
-  // Dump/restore references to commonly used names and signatures.
-  vmSymbols::serialize(soc);
-  soc->do_tag(--tag);
-
-  soc->do_tag(666);
-}
--- a/src/share/vm/memory/sharedHeap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/sharedHeap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -55,7 +55,7 @@
 SharedHeap::SharedHeap(CollectorPolicy* policy_) :
   CollectedHeap(),
   _collector_policy(policy_),
-  _perm_gen(NULL), _rem_set(NULL),
+  _rem_set(NULL),
   _strong_roots_parity(0),
   _process_strong_tasks(new SubTasksDone(SH_PS_NumElements)),
   _workers(NULL)
@@ -100,15 +100,6 @@
   _process_strong_tasks->set_n_threads(t);
 }
 
-class AssertIsPermClosure: public OopClosure {
-public:
-  virtual void do_oop(oop* p) {
-    assert((*p) == NULL || (*p)->is_perm(), "Referent should be perm.");
-  }
-  virtual void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-};
-static AssertIsPermClosure assert_is_perm_closure;
-
 #ifdef ASSERT
 class AssertNonScavengableClosure: public OopClosure {
 public:
@@ -143,12 +134,13 @@
 }
 
 void SharedHeap::process_strong_roots(bool activate_scope,
-                                      bool collecting_perm_gen,
+                                      bool is_scavenging,
                                       ScanningOption so,
                                       OopClosure* roots,
                                       CodeBlobClosure* code_roots,
-                                      OopsInGenClosure* perm_blk) {
+                                      KlassClosure* klass_closure) {
   StrongRootsScope srs(this, activate_scope);
+
   // General strong roots.
   assert(_strong_roots_parity != 0, "must have called prologue code");
   // _n_termination for _process_strong_tasks should be set up stream
@@ -157,8 +149,6 @@
   // is executing in another GC worker.
   if (!_process_strong_tasks->is_task_claimed(SH_PS_Universe_oops_do)) {
     Universe::oops_do(roots);
-    // Consider perm-gen discovered lists to be strong.
-    perm_gen()->ref_processor()->weak_oops_do(roots);
   }
   // Global (strong) JNI handles
   if (!_process_strong_tasks->is_task_claimed(SH_PS_JNIHandles_oops_do))
@@ -181,41 +171,33 @@
   if (!_process_strong_tasks->is_task_claimed(SH_PS_SystemDictionary_oops_do)) {
     if (so & SO_AllClasses) {
       SystemDictionary::oops_do(roots);
+      ClassLoaderDataGraph::oops_do(roots, klass_closure, !is_scavenging);
     } else if (so & SO_SystemClasses) {
       SystemDictionary::always_strong_oops_do(roots);
+      ClassLoaderDataGraph::always_strong_oops_do(roots, klass_closure, !is_scavenging);
+    } else {
+      ShouldNotReachHere2("We should always have selected either SO_AllClasses or SO_SystemClasses");
     }
   }
 
   if (!_process_strong_tasks->is_task_claimed(SH_PS_StringTable_oops_do)) {
-    if (so & SO_Strings || (!collecting_perm_gen && !JavaObjectsInPerm)) {
+    if (so & SO_Strings) {
       StringTable::oops_do(roots);
     }
-    if (JavaObjectsInPerm) {
-      // Verify the string table contents are in the perm gen
-      NOT_PRODUCT(StringTable::oops_do(&assert_is_perm_closure));
-    }
   }
 
   if (!_process_strong_tasks->is_task_claimed(SH_PS_CodeCache_oops_do)) {
     if (so & SO_CodeCache) {
-      // (Currently, CMSCollector uses this to do intermediate-strength collections.)
-      assert(collecting_perm_gen, "scanning all of code cache");
       assert(code_roots != NULL, "must supply closure for code cache");
-      if (code_roots != NULL) {
+
+      if (is_scavenging) {
+        // We only visit parts of the CodeCache when scavenging.
+        CodeCache::scavenge_root_nmethods_do(code_roots);
+      } else {
+        // CMSCollector uses this to do intermediate-strength collections.
+        // We scan the entire code cache, since CodeCache::do_unloading is not called.
         CodeCache::blobs_do(code_roots);
       }
-    } else if (so & (SO_SystemClasses|SO_AllClasses)) {
-      if (!collecting_perm_gen) {
-        // If we are collecting from class statics, but we are not going to
-        // visit all of the CodeCache, collect from the non-perm roots if any.
-        // This makes the code cache function temporarily as a source of strong
-        // roots for oops, until the next major collection.
-        //
-        // If collecting_perm_gen is true, we require that this phase will call
-        // CodeCache::do_unloading.  This will kill off nmethods with expired
-        // weak references, such as stale invokedynamic targets.
-        CodeCache::scavenge_root_nmethods_do(code_roots);
-      }
     }
     // Verify that the code cache contents are not subject to
     // movement by a scavenging collection.
@@ -223,11 +205,6 @@
     DEBUG_ONLY(CodeCache::asserted_non_scavengable_nmethods_do(&assert_code_is_non_scavengable));
   }
 
-  if (!collecting_perm_gen) {
-    // All threads perform this; coordination is handled internally.
-
-    rem_set()->younger_refs_iterate(perm_gen(), perm_blk);
-  }
   _process_strong_tasks->all_tasks_completed();
 }
 
@@ -238,33 +215,6 @@
 };
 static AlwaysTrueClosure always_true;
 
-class SkipAdjustingSharedStrings: public OopClosure {
-  OopClosure* _clo;
-public:
-  SkipAdjustingSharedStrings(OopClosure* clo) : _clo(clo) {}
-
-  virtual void do_oop(oop* p) {
-    oop o = (*p);
-    if (!o->is_shared_readwrite()) {
-      _clo->do_oop(p);
-    }
-  }
-  virtual void do_oop(narrowOop* p) { ShouldNotReachHere(); }
-};
-
-// Unmarked shared Strings in the StringTable (which got there due to
-// being in the constant pools of as-yet unloaded shared classes) were
-// not marked and therefore did not have their mark words preserved.
-// These entries are also deliberately not purged from the string
-// table during unloading of unmarked strings. If an identity hash
-// code was computed for any of these objects, it will not have been
-// cleared to zero during the forwarding process or by the
-// RecursiveAdjustSharedObjectClosure, and will be confused by the
-// adjusting process as a forwarding pointer. We need to skip
-// forwarding StringTable entries which contain unmarked shared
-// Strings. Actually, since shared strings won't be moving, we can
-// just skip adjusting any shared entries in the string table.
-
 void SharedHeap::process_weak_roots(OopClosure* root_closure,
                                     CodeBlobClosure* code_roots,
                                     OopClosure* non_root_closure) {
@@ -272,13 +222,8 @@
   JNIHandles::weak_oops_do(&always_true, root_closure);
 
   CodeCache::blobs_do(code_roots);
-  if (UseSharedSpaces && !DumpSharedSpaces) {
-    SkipAdjustingSharedStrings skip_closure(root_closure);
-    StringTable::oops_do(&skip_closure);
-  } else {
     StringTable::oops_do(root_closure);
   }
-}
 
 void SharedHeap::set_barrier_set(BarrierSet* bs) {
   _barrier_set = bs;
@@ -290,9 +235,7 @@
   ref_processing_init();
 }
 
-void SharedHeap::ref_processing_init() {
-  perm_gen()->ref_processor_init();
-}
+void SharedHeap::ref_processing_init() {}
 
 // Some utilities.
 void SharedHeap::print_size_transition(outputStream* out,
--- a/src/share/vm/memory/sharedHeap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/sharedHeap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,14 +27,12 @@
 
 #include "gc_interface/collectedHeap.hpp"
 #include "memory/generation.hpp"
-#include "memory/permGen.hpp"
 
 // A "SharedHeap" is an implementation of a java heap for HotSpot.  This
 // is an abstract class: there may be many different kinds of heaps.  This
 // class defines the functions that a heap must implement, and contains
 // infrastructure common to all heaps.
 
-class PermGen;
 class Generation;
 class BarrierSet;
 class GenRemSet;
@@ -47,7 +45,7 @@
 class WorkGang;
 class FlexibleWorkGang;
 class CollectorPolicy;
-class KlassHandle;
+class KlassClosure;
 
 // Note on use of FlexibleWorkGang's for GC.
 // There are three places where task completion is determined.
@@ -73,14 +71,13 @@
 // Example of using SubTasksDone and SequentialSubTasksDone
 // G1CollectedHeap::g1_process_strong_roots() calls
 //  process_strong_roots(false, // no scoping; this is parallel code
-//                       collecting_perm_gen, so,
+//                       is_scavenging, so,
 //                       &buf_scan_non_heap_roots,
-//                       &eager_scan_code_roots,
-//                       &buf_scan_perm);
+//                       &eager_scan_code_roots);
 //  which delegates to SharedHeap::process_strong_roots() and uses
 //  SubTasksDone* _process_strong_tasks to claim tasks.
 //  process_strong_roots() calls
-//      rem_set()->younger_refs_iterate(perm_gen(), perm_blk);
+//      rem_set()->younger_refs_iterate()
 //  to scan the card table and which eventually calls down into
 //  CardTableModRefBS::par_non_clean_card_iterate_work().  This method
 //  uses SequentialSubTasksDone* _pst to claim tasks.
@@ -121,11 +118,6 @@
   // set the static pointer "_sh" to that instance.
   static SharedHeap* _sh;
 
-  // All heaps contain a "permanent generation."  This is some ways
-  // similar to a generation in a generational system, in other ways not.
-  // See the "PermGen" class.
-  PermGen* _perm_gen;
-
   // and the Gen Remembered Set, at least one good enough to scan the perm
   // gen.
   GenRemSet* _rem_set;
@@ -155,8 +147,6 @@
 public:
   static SharedHeap* heap() { return _sh; }
 
-  CollectorPolicy *collector_policy() const { return _collector_policy; }
-
   void set_barrier_set(BarrierSet* bs);
   SubTasksDone* process_strong_tasks() { return _process_strong_tasks; }
 
@@ -166,24 +156,15 @@
   // Initialization of ("weak") reference processing support
   virtual void ref_processing_init();
 
-  void set_perm(PermGen* perm_gen) { _perm_gen = perm_gen; }
-
   // This function returns the "GenRemSet" object that allows us to scan
-  // generations; at least the perm gen, possibly more in a fully
-  // generational heap.
+  // generations in a fully generational heap.
   GenRemSet* rem_set() { return _rem_set; }
 
-  // These function return the "permanent" generation, in which
-  // reflective objects are allocated and stored.  Two versions, the second
-  // of which returns the view of the perm gen as a generation.
-  PermGen* perm() const { return _perm_gen; }
-  Generation* perm_gen() const { return _perm_gen->as_gen(); }
-
   // Iteration functions.
-  void oop_iterate(OopClosure* cl) = 0;
+  void oop_iterate(ExtendedOopClosure* cl) = 0;
 
   // Same as above, restricted to a memory region.
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl) = 0;
+  virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl) = 0;
 
   // Iterate over all objects allocated since the last collection, calling
   // "cl->do_object" on each.  The heap must have been initialized properly
@@ -251,22 +232,18 @@
   FlexibleWorkGang* workers() const { return _workers; }
 
   // Invoke the "do_oop" method the closure "roots" on all root locations.
-  // If "collecting_perm_gen" is false, then roots that may only contain
-  // references to permGen objects are not scanned; instead, in that case,
-  // the "perm_blk" closure is applied to all outgoing refs in the
-  // permanent generation.  The "so" argument determines which of roots
-  // the closure is applied to:
+  // The "so" argument determines which roots the closure is applied to:
   // "SO_None" does none;
   // "SO_AllClasses" applies the closure to all entries in the SystemDictionary;
   // "SO_SystemClasses" to all the "system" classes and loaders;
   // "SO_Strings" applies the closure to all entries in StringTable;
   // "SO_CodeCache" applies the closure to all elements of the CodeCache.
   void process_strong_roots(bool activate_scope,
-                            bool collecting_perm_gen,
+                            bool is_scavenging,
                             ScanningOption so,
                             OopClosure* roots,
                             CodeBlobClosure* code_roots,
-                            OopsInGenClosure* perm_blk);
+                            KlassClosure* klass_closure);
 
   // Apply "blk" to all the weak roots of the system.  These include
   // JNI weak roots, the code cache, system dictionary, symbol table,
@@ -296,46 +273,6 @@
   // New methods from CollectedHeap
   //
 
-  size_t permanent_capacity() const {
-    assert(perm_gen(), "NULL perm gen");
-    return perm_gen()->capacity();
-  }
-
-  size_t permanent_used() const {
-    assert(perm_gen(), "NULL perm gen");
-    return perm_gen()->used();
-  }
-
-  bool is_in_permanent(const void *p) const {
-    assert(perm_gen(), "NULL perm gen");
-    return perm_gen()->is_in_reserved(p);
-  }
-
-  // Different from is_in_permanent in that is_in_permanent
-  // only checks if p is in the reserved area of the heap
-  // and this checks to see if it in the commited area.
-  // This is typically used by things like the forte stackwalker
-  // during verification of suspicious frame values.
-  bool is_permanent(const void *p) const {
-    assert(perm_gen(), "NULL perm gen");
-    return perm_gen()->is_in(p);
-  }
-
-  HeapWord* permanent_mem_allocate(size_t size) {
-    assert(perm_gen(), "NULL perm gen");
-    return _perm_gen->mem_allocate(size);
-  }
-
-  void permanent_oop_iterate(OopClosure* cl) {
-    assert(perm_gen(), "NULL perm gen");
-    _perm_gen->oop_iterate(cl);
-  }
-
-  void permanent_object_iterate(ObjectClosure* cl) {
-    assert(perm_gen(), "NULL perm gen");
-    _perm_gen->object_iterate(cl);
-  }
-
   // Some utilities.
   void print_size_transition(outputStream* out,
                              size_t bytes_before,
--- a/src/share/vm/memory/space.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/space.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -178,7 +178,7 @@
   }
 }
 
-DirtyCardToOopClosure* Space::new_dcto_cl(OopClosure* cl,
+DirtyCardToOopClosure* Space::new_dcto_cl(ExtendedOopClosure* cl,
                                           CardTableModRefBS::PrecisionStyle precision,
                                           HeapWord* boundary) {
   return new DirtyCardToOopClosure(this, cl, precision, boundary);
@@ -253,11 +253,11 @@
 // (There are only two of these, rather than N, because the split is due
 // only to the introduction of the FilteringClosure, a local part of the
 // impl of this abstraction.)
-ContiguousSpaceDCTOC__walk_mem_region_with_cl_DEFN(OopClosure)
+ContiguousSpaceDCTOC__walk_mem_region_with_cl_DEFN(ExtendedOopClosure)
 ContiguousSpaceDCTOC__walk_mem_region_with_cl_DEFN(FilteringClosure)
 
 DirtyCardToOopClosure*
-ContiguousSpace::new_dcto_cl(OopClosure* cl,
+ContiguousSpace::new_dcto_cl(ExtendedOopClosure* cl,
                              CardTableModRefBS::PrecisionStyle precision,
                              HeapWord* boundary) {
   return new ContiguousSpaceDCTOC(this, cl, precision, boundary);
@@ -548,7 +548,7 @@
   }
 }
 
-void Space::oop_iterate(OopClosure* blk) {
+void Space::oop_iterate(ExtendedOopClosure* blk) {
   ObjectToOopClosure blk2(blk);
   object_iterate(&blk2);
 }
@@ -679,7 +679,7 @@
 #undef ContigSpace_PAR_OOP_ITERATE_DEFN
 #endif // SERIALGC
 
-void ContiguousSpace::oop_iterate(OopClosure* blk) {
+void ContiguousSpace::oop_iterate(ExtendedOopClosure* blk) {
   if (is_empty()) return;
   HeapWord* obj_addr = bottom();
   HeapWord* t = top();
@@ -689,7 +689,7 @@
   }
 }
 
-void ContiguousSpace::oop_iterate(MemRegion mr, OopClosure* blk) {
+void ContiguousSpace::oop_iterate(MemRegion mr, ExtendedOopClosure* blk) {
   if (is_empty()) {
     return;
   }
@@ -1002,17 +1002,7 @@
   guarantee(p == top(), "end of last object must match end of space");
 }
 
-void OffsetTableContigSpace::serialize_block_offset_array_offsets(
-                                                      SerializeOopClosure* soc) {
-  _offsets.serialize(soc);
-}
-
 
 size_t TenuredSpace::allowed_dead_ratio() const {
   return MarkSweepDeadRatio;
 }
-
-
-size_t ContigPermSpace::allowed_dead_ratio() const {
-  return PermMarkSweepDeadRatio;
-}
--- a/src/share/vm/memory/space.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/space.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -65,7 +65,6 @@
 //       - OffsetTableContigSpace -- contiguous space with a block offset array
 //                          that allows "fast" block_start calls
 //         - TenuredSpace -- (used for TenuredGeneration)
-//         - ContigPermSpace -- an offset table contiguous space for perm gen
 
 // Forward decls.
 class Space;
@@ -79,9 +78,9 @@
 class DirtyCardToOopClosure;
 
 // An oop closure that is circumscribed by a filtering memory region.
-class SpaceMemRegionOopsIterClosure: public OopClosure {
+class SpaceMemRegionOopsIterClosure: public ExtendedOopClosure {
  private:
-  OopClosure* _cl;
+  ExtendedOopClosure* _cl;
   MemRegion   _mr;
  protected:
   template <class T> void do_oop_work(T* p) {
@@ -90,10 +89,17 @@
     }
   }
  public:
-  SpaceMemRegionOopsIterClosure(OopClosure* cl, MemRegion mr):
+  SpaceMemRegionOopsIterClosure(ExtendedOopClosure* cl, MemRegion mr):
     _cl(cl), _mr(mr) {}
   virtual void do_oop(oop* p);
   virtual void do_oop(narrowOop* p);
+  virtual bool do_metadata() {
+    // _cl is of type ExtendedOopClosure instead of OopClosure, so that we can check this.
+    assert(!_cl->do_metadata(), "I've checked all call paths, this shouldn't happen.");
+    return false;
+  }
+  virtual void do_klass(Klass* k)                         { ShouldNotReachHere(); }
+  virtual void do_class_loader_data(ClassLoaderData* cld) { ShouldNotReachHere(); }
 };
 
 // A Space describes a heap area. Class Space is an abstract
@@ -209,12 +215,12 @@
   // Iterate over all the ref-containing fields of all objects in the
   // space, calling "cl.do_oop" on each.  Fields in objects allocated by
   // applications of the closure are not included in the iteration.
-  virtual void oop_iterate(OopClosure* cl);
+  virtual void oop_iterate(ExtendedOopClosure* cl);
 
   // Same as above, restricted to the intersection of a memory region and
   // the space.  Fields in objects allocated by applications of the closure
   // are not included in the iteration.
-  virtual void oop_iterate(MemRegion mr, OopClosure* cl) = 0;
+  virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl) = 0;
 
   // Iterate over all objects in the space, calling "cl.do_object" on
   // each.  Objects allocated by applications of the closure are not
@@ -246,7 +252,7 @@
   // overriden to return the appropriate type of closure
   // depending on the type of space in which the closure will
   // operate. ResourceArea allocated.
-  virtual DirtyCardToOopClosure* new_dcto_cl(OopClosure* cl,
+  virtual DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
                                              CardTableModRefBS::PrecisionStyle precision,
                                              HeapWord* boundary = NULL);
 
@@ -321,7 +327,7 @@
 
 class DirtyCardToOopClosure: public MemRegionClosureRO {
 protected:
-  OopClosure* _cl;
+  ExtendedOopClosure* _cl;
   Space* _sp;
   CardTableModRefBS::PrecisionStyle _precision;
   HeapWord* _boundary;          // If non-NULL, process only non-NULL oops
@@ -351,7 +357,7 @@
   virtual void walk_mem_region(MemRegion mr, HeapWord* bottom, HeapWord* top);
 
 public:
-  DirtyCardToOopClosure(Space* sp, OopClosure* cl,
+  DirtyCardToOopClosure(Space* sp, ExtendedOopClosure* cl,
                         CardTableModRefBS::PrecisionStyle precision,
                         HeapWord* boundary) :
     _sp(sp), _cl(cl), _precision(precision), _boundary(boundary),
@@ -394,8 +400,6 @@
 class CompactibleSpace: public Space {
   friend class VMStructs;
   friend class CompactibleFreeListSpace;
-  friend class CompactingPermGenGen;
-  friend class CMSPermGenGen;
 private:
   HeapWord* _compaction_top;
   CompactibleSpace* _next_compaction_space;
@@ -532,7 +536,7 @@
    * Occasionally, we want to ensure a full compaction, which is determined  \
    * by the MarkSweepAlwaysCompactCount parameter.                           \
    */                                                                        \
-  int invocations = SharedHeap::heap()->perm_gen()->stat_record()->invocations;\
+  int invocations = MarkSweep::total_invocations();                          \
   bool skip_dead = (MarkSweepAlwaysCompactCount < 1)                         \
     ||((invocations % MarkSweepAlwaysCompactCount) != 0);                    \
                                                                              \
@@ -562,7 +566,6 @@
     if (block_is_obj(q) && oop(q)->is_gc_marked()) {                         \
       /* prefetch beyond q */                                                \
       Prefetch::write(q, interval);                                          \
-      /* size_t size = oop(q)->size();  changing this for cms for perm gen */\
       size_t size = block_size(q);                                           \
       compact_top = cp->space->forward(oop(q), size, cp, compact_top);       \
       q += size;                                                             \
@@ -647,7 +650,7 @@
       /* I originally tried to conjoin "block_start(q) == q" to the             \
        * assertion below, but that doesn't work, because you can't              \
        * accurately traverse previous objects to get to the current one         \
-       * after their pointers (including pointers into permGen) have been       \
+       * after their pointers have been                                         \
        * updated, until the actual compaction is done.  dld, 4/00 */            \
       assert(block_is_obj(q),                                                   \
              "should be at block boundaries, and should be looking at objs");   \
@@ -871,8 +874,8 @@
   }
 
   // Iteration
-  void oop_iterate(OopClosure* cl);
-  void oop_iterate(MemRegion mr, OopClosure* cl);
+  void oop_iterate(ExtendedOopClosure* cl);
+  void oop_iterate(MemRegion mr, ExtendedOopClosure* cl);
   void object_iterate(ObjectClosure* blk);
   // For contiguous spaces this method will iterate safely over objects
   // in the space (i.e., between bottom and top) when at a safepoint.
@@ -892,6 +895,7 @@
     _concurrent_iteration_safe_limit = new_limit;
   }
 
+
 #ifndef SERIALGC
   // In support of parallel oop_iterate.
   #define ContigSpace_PAR_OOP_ITERATE_DECL(OopClosureType, nv_suffix)  \
@@ -911,7 +915,7 @@
   virtual size_t minimum_free_block_size() const { return 0; }
 
   // Override.
-  DirtyCardToOopClosure* new_dcto_cl(OopClosure* cl,
+  DirtyCardToOopClosure* new_dcto_cl(ExtendedOopClosure* cl,
                                      CardTableModRefBS::PrecisionStyle precision,
                                      HeapWord* boundary = NULL);
 
@@ -981,13 +985,13 @@
   // apparent.
   virtual void walk_mem_region_with_cl(MemRegion mr,
                                        HeapWord* bottom, HeapWord* top,
-                                       OopClosure* cl) = 0;
+                                       ExtendedOopClosure* cl) = 0;
   virtual void walk_mem_region_with_cl(MemRegion mr,
                                        HeapWord* bottom, HeapWord* top,
                                        FilteringClosure* cl) = 0;
 
 public:
-  Filtering_DCTOC(Space* sp, OopClosure* cl,
+  Filtering_DCTOC(Space* sp, ExtendedOopClosure* cl,
                   CardTableModRefBS::PrecisionStyle precision,
                   HeapWord* boundary) :
     DirtyCardToOopClosure(sp, cl, precision, boundary) {}
@@ -1010,13 +1014,13 @@
 
   virtual void walk_mem_region_with_cl(MemRegion mr,
                                        HeapWord* bottom, HeapWord* top,
-                                       OopClosure* cl);
+                                       ExtendedOopClosure* cl);
   virtual void walk_mem_region_with_cl(MemRegion mr,
                                        HeapWord* bottom, HeapWord* top,
                                        FilteringClosure* cl);
 
 public:
-  ContiguousSpaceDCTOC(ContiguousSpace* sp, OopClosure* cl,
+  ContiguousSpaceDCTOC(ContiguousSpace* sp, ExtendedOopClosure* cl,
                        CardTableModRefBS::PrecisionStyle precision,
                        HeapWord* boundary) :
     Filtering_DCTOC(sp, cl, precision, boundary)
@@ -1076,7 +1080,7 @@
 // A ContigSpace that Supports an efficient "block_start" operation via
 // a BlockOffsetArray (whose BlockOffsetSharedArray may be shared with
 // other spaces.)  This is the abstract base class for old generation
-// (tenured, perm) spaces.
+// (tenured) spaces.
 
 class OffsetTableContigSpace: public ContiguousSpace {
   friend class VMStructs;
@@ -1108,9 +1112,6 @@
 
   // Debugging
   void verify() const;
-
-  // Shared space support
-  void serialize_block_offset_array_offsets(SerializeOopClosure* soc);
 };
 
 
@@ -1127,19 +1128,4 @@
                MemRegion mr) :
     OffsetTableContigSpace(sharedOffsetArray, mr) {}
 };
-
-
-// Class ContigPermSpace is used by CompactingPermGen
-
-class ContigPermSpace: public OffsetTableContigSpace {
-  friend class VMStructs;
- protected:
-  // Mark sweep support
-  size_t allowed_dead_ratio() const;
- public:
-  // Constructor
-  ContigPermSpace(BlockOffsetSharedArray* sharedOffsetArray, MemRegion mr) :
-    OffsetTableContigSpace(sharedOffsetArray, mr) {}
-};
-
 #endif // SHARE_VM_MEMORY_SPACE_HPP
--- a/src/share/vm/memory/specialized_oop_closures.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/specialized_oop_closures.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -54,6 +54,8 @@
 class Par_PushOrMarkClosure;
 class CMSKeepAliveClosure;
 class CMSInnerParMarkAndPushClosure;
+// Misc
+class NoHeaderExtendedOopClosure;
 
 // This macro applies an argument macro to all OopClosures for which we
 // want specialized bodies of "oop_oop_iterate".  The arguments to "f" are:
@@ -87,6 +89,7 @@
 #endif // SERIALGC
 
 #define SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_1(f)       \
+  f(NoHeaderExtendedOopClosure,_nv)                     \
   SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_S(f)             \
   SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_P(f)
 
@@ -111,7 +114,7 @@
 // doesn't.
 
 #define ALL_OOP_OOP_ITERATE_CLOSURES_1(f)               \
-  f(OopClosure,_v)                                      \
+  f(ExtendedOopClosure,_v)                              \
   SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_1(f)
 
 #define ALL_OOP_OOP_ITERATE_CLOSURES_2(f)               \
@@ -131,7 +134,7 @@
   f(Par_PushAndMarkClosure,_nv)
 
 #define ALL_PAR_OOP_ITERATE_CLOSURES(f)                \
-  f(OopClosure,_v)                                     \
+  f(ExtendedOopClosure,_v)                             \
   SPECIALIZED_PAR_OOP_ITERATE_CLOSURES(f)
 #endif // SERIALGC
 
@@ -195,8 +198,8 @@
 class SpecializationStats {
 public:
   enum Kind {
-    ik,             // instanceKlass
-    irk,            // instanceRefKlass
+    ik,             // InstanceKlass
+    irk,            // InstanceRefKlass
     oa,             // objArrayKlass
     NUM_Kinds
   };
--- a/src/share/vm/memory/universe.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/universe.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "classfile/classLoader.hpp"
+#include "classfile/classLoaderData.hpp"
 #include "classfile/javaClasses.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
@@ -33,35 +34,23 @@
 #include "gc_interface/collectedHeap.inline.hpp"
 #include "interpreter/interpreter.hpp"
 #include "memory/cardTableModRefBS.hpp"
-#include "memory/filemap.hpp"
 #include "memory/gcLocker.inline.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/genRemSet.hpp"
 #include "memory/generation.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/oopFactory.hpp"
-#include "memory/permGen.hpp"
 #include "memory/space.hpp"
 #include "memory/universe.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/arrayKlassKlass.hpp"
-#include "oops/compiledICHolderKlass.hpp"
-#include "oops/constMethodKlass.hpp"
-#include "oops/constantPoolKlass.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/cpCacheKlass.hpp"
-#include "oops/cpCacheOop.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/instanceClassLoaderKlass.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
-#include "oops/instanceKlassKlass.hpp"
 #include "oops/instanceRefKlass.hpp"
-#include "oops/klassKlass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodDataKlass.hpp"
-#include "oops/methodKlass.hpp"
-#include "oops/objArrayKlassKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayKlass.hpp"
-#include "oops/typeArrayKlassKlass.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
 #include "runtime/aprofiler.hpp"
 #include "runtime/arguments.hpp"
@@ -101,28 +90,16 @@
 #endif
 
 // Known objects
-klassOop Universe::_boolArrayKlassObj                 = NULL;
-klassOop Universe::_byteArrayKlassObj                 = NULL;
-klassOop Universe::_charArrayKlassObj                 = NULL;
-klassOop Universe::_intArrayKlassObj                  = NULL;
-klassOop Universe::_shortArrayKlassObj                = NULL;
-klassOop Universe::_longArrayKlassObj                 = NULL;
-klassOop Universe::_singleArrayKlassObj               = NULL;
-klassOop Universe::_doubleArrayKlassObj               = NULL;
-klassOop Universe::_typeArrayKlassObjs[T_VOID+1]      = { NULL /*, NULL...*/ };
-klassOop Universe::_objectArrayKlassObj               = NULL;
-klassOop Universe::_methodKlassObj                    = NULL;
-klassOop Universe::_constMethodKlassObj               = NULL;
-klassOop Universe::_methodDataKlassObj                = NULL;
-klassOop Universe::_klassKlassObj                     = NULL;
-klassOop Universe::_arrayKlassKlassObj                = NULL;
-klassOop Universe::_objArrayKlassKlassObj             = NULL;
-klassOop Universe::_typeArrayKlassKlassObj            = NULL;
-klassOop Universe::_instanceKlassKlassObj             = NULL;
-klassOop Universe::_constantPoolKlassObj              = NULL;
-klassOop Universe::_constantPoolCacheKlassObj         = NULL;
-klassOop Universe::_compiledICHolderKlassObj          = NULL;
-klassOop Universe::_systemObjArrayKlassObj            = NULL;
+Klass* Universe::_boolArrayKlassObj                 = NULL;
+Klass* Universe::_byteArrayKlassObj                 = NULL;
+Klass* Universe::_charArrayKlassObj                 = NULL;
+Klass* Universe::_intArrayKlassObj                  = NULL;
+Klass* Universe::_shortArrayKlassObj                = NULL;
+Klass* Universe::_longArrayKlassObj                 = NULL;
+Klass* Universe::_singleArrayKlassObj               = NULL;
+Klass* Universe::_doubleArrayKlassObj               = NULL;
+Klass* Universe::_typeArrayKlassObjs[T_VOID+1]      = { NULL /*, NULL...*/ };
+Klass* Universe::_objectArrayKlassObj               = NULL;
 oop Universe::_int_mirror                             = NULL;
 oop Universe::_float_mirror                           = NULL;
 oop Universe::_double_mirror                          = NULL;
@@ -135,16 +112,11 @@
 oop Universe::_mirrors[T_VOID+1]                      = { NULL /*, NULL...*/ };
 oop Universe::_main_thread_group                      = NULL;
 oop Universe::_system_thread_group                    = NULL;
-typeArrayOop Universe::_the_empty_byte_array          = NULL;
-typeArrayOop Universe::_the_empty_short_array         = NULL;
-typeArrayOop Universe::_the_empty_int_array           = NULL;
-objArrayOop Universe::_the_empty_system_obj_array     = NULL;
 objArrayOop Universe::_the_empty_class_klass_array    = NULL;
-objArrayOop Universe::_the_array_interfaces_array     = NULL;
+Array<Klass*>* Universe::_the_array_interfaces_array = NULL;
 oop Universe::_the_null_string                        = NULL;
 oop Universe::_the_min_jint_string                   = NULL;
 LatestMethodOopCache* Universe::_finalizer_register_cache = NULL;
-LatestMethodOopCache* Universe::_loader_addClass_cache    = NULL;
 ActiveMethodOopsCache* Universe::_reflect_invoke_cache    = NULL;
 oop Universe::_out_of_memory_error_java_heap          = NULL;
 oop Universe::_out_of_memory_error_perm_gen           = NULL;
@@ -157,12 +129,15 @@
 oop Universe::_arithmetic_exception_instance          = NULL;
 oop Universe::_virtual_machine_error_instance         = NULL;
 oop Universe::_vm_exception                           = NULL;
+Array<int>* Universe::_the_empty_int_array            = NULL;
+Array<u2>* Universe::_the_empty_short_array           = NULL;
+Array<Klass*>* Universe::_the_empty_klass_array     = NULL;
+Array<Method*>* Universe::_the_empty_method_array   = NULL;
 
 // These variables are guarded by FullGCALot_lock.
 debug_only(objArrayOop Universe::_fullgc_alot_dummy_array = NULL;)
 debug_only(int Universe::_fullgc_alot_dummy_next      = 0;)
 
-
 // Heap
 int             Universe::_verify_count = 0;
 
@@ -178,7 +153,7 @@
 NarrowOopStruct Universe::_narrow_oop = { NULL, 0, true };
 
 
-void Universe::basic_type_classes_do(void f(klassOop)) {
+void Universe::basic_type_classes_do(void f(Klass*)) {
   f(boolArrayKlassObj());
   f(byteArrayKlassObj());
   f(charArrayKlassObj());
@@ -189,20 +164,6 @@
   f(doubleArrayKlassObj());
 }
 
-
-void Universe::system_classes_do(void f(klassOop)) {
-  f(methodKlassObj());
-  f(constMethodKlassObj());
-  f(methodDataKlassObj());
-  f(klassKlassObj());
-  f(arrayKlassKlassObj());
-  f(objArrayKlassKlassObj());
-  f(typeArrayKlassKlassObj());
-  f(instanceKlassKlassObj());
-  f(constantPoolKlassObj());
-  f(systemObjArrayKlassObj());
-}
-
 void Universe::oops_do(OopClosure* f, bool do_all) {
 
   f->do_oop((oop*) &_int_mirror);
@@ -215,63 +176,19 @@
   f->do_oop((oop*) &_short_mirror);
   f->do_oop((oop*) &_void_mirror);
 
-  // It's important to iterate over these guys even if they are null,
-  // since that's how shared heaps are restored.
   for (int i = T_BOOLEAN; i < T_VOID+1; i++) {
     f->do_oop((oop*) &_mirrors[i]);
   }
   assert(_mirrors[0] == NULL && _mirrors[T_BOOLEAN - 1] == NULL, "checking");
 
-  // %%% Consider moving those "shared oops" over here with the others.
-  f->do_oop((oop*)&_boolArrayKlassObj);
-  f->do_oop((oop*)&_byteArrayKlassObj);
-  f->do_oop((oop*)&_charArrayKlassObj);
-  f->do_oop((oop*)&_intArrayKlassObj);
-  f->do_oop((oop*)&_shortArrayKlassObj);
-  f->do_oop((oop*)&_longArrayKlassObj);
-  f->do_oop((oop*)&_singleArrayKlassObj);
-  f->do_oop((oop*)&_doubleArrayKlassObj);
-  f->do_oop((oop*)&_objectArrayKlassObj);
-  {
-    for (int i = 0; i < T_VOID+1; i++) {
-      if (_typeArrayKlassObjs[i] != NULL) {
-        assert(i >= T_BOOLEAN, "checking");
-        f->do_oop((oop*)&_typeArrayKlassObjs[i]);
-      } else if (do_all) {
-        f->do_oop((oop*)&_typeArrayKlassObjs[i]);
-      }
-    }
-  }
-  f->do_oop((oop*)&_methodKlassObj);
-  f->do_oop((oop*)&_constMethodKlassObj);
-  f->do_oop((oop*)&_methodDataKlassObj);
-  f->do_oop((oop*)&_klassKlassObj);
-  f->do_oop((oop*)&_arrayKlassKlassObj);
-  f->do_oop((oop*)&_objArrayKlassKlassObj);
-  f->do_oop((oop*)&_typeArrayKlassKlassObj);
-  f->do_oop((oop*)&_instanceKlassKlassObj);
-  f->do_oop((oop*)&_constantPoolKlassObj);
-  f->do_oop((oop*)&_constantPoolCacheKlassObj);
-  f->do_oop((oop*)&_compiledICHolderKlassObj);
-  f->do_oop((oop*)&_systemObjArrayKlassObj);
-  f->do_oop((oop*)&_the_empty_byte_array);
-  f->do_oop((oop*)&_the_empty_short_array);
-  f->do_oop((oop*)&_the_empty_int_array);
-  f->do_oop((oop*)&_the_empty_system_obj_array);
   f->do_oop((oop*)&_the_empty_class_klass_array);
-  f->do_oop((oop*)&_the_array_interfaces_array);
   f->do_oop((oop*)&_the_null_string);
   f->do_oop((oop*)&_the_min_jint_string);
-  _finalizer_register_cache->oops_do(f);
-  _loader_addClass_cache->oops_do(f);
-  _reflect_invoke_cache->oops_do(f);
   f->do_oop((oop*)&_out_of_memory_error_java_heap);
   f->do_oop((oop*)&_out_of_memory_error_perm_gen);
   f->do_oop((oop*)&_out_of_memory_error_array_size);
   f->do_oop((oop*)&_out_of_memory_error_gc_overhead_limit);
-  if (_preallocated_out_of_memory_error_array != (oop)NULL) {   // NULL when DumpSharedSpaces
     f->do_oop((oop*)&_preallocated_out_of_memory_error_array);
-  }
   f->do_oop((oop*)&_null_ptr_exception_instance);
   f->do_oop((oop*)&_arithmetic_exception_instance);
   f->do_oop((oop*)&_virtual_machine_error_instance);
@@ -281,6 +198,38 @@
   debug_only(f->do_oop((oop*)&_fullgc_alot_dummy_array);)
 }
 
+// Serialize metadata in and out of CDS archive, not oops.
+void Universe::serialize(SerializeClosure* f, bool do_all) {
+
+  f->do_ptr((void**)&_boolArrayKlassObj);
+  f->do_ptr((void**)&_byteArrayKlassObj);
+  f->do_ptr((void**)&_charArrayKlassObj);
+  f->do_ptr((void**)&_intArrayKlassObj);
+  f->do_ptr((void**)&_shortArrayKlassObj);
+  f->do_ptr((void**)&_longArrayKlassObj);
+  f->do_ptr((void**)&_singleArrayKlassObj);
+  f->do_ptr((void**)&_doubleArrayKlassObj);
+  f->do_ptr((void**)&_objectArrayKlassObj);
+
+  {
+    for (int i = 0; i < T_VOID+1; i++) {
+      if (_typeArrayKlassObjs[i] != NULL) {
+        assert(i >= T_BOOLEAN, "checking");
+        f->do_ptr((void**)&_typeArrayKlassObjs[i]);
+      } else if (do_all) {
+        f->do_ptr((void**)&_typeArrayKlassObjs[i]);
+      }
+    }
+  }
+
+  f->do_ptr((void**)&_the_array_interfaces_array);
+  f->do_ptr((void**)&_the_empty_int_array);
+  f->do_ptr((void**)&_the_empty_short_array);
+  f->do_ptr((void**)&_the_empty_method_array);
+  f->do_ptr((void**)&_the_empty_klass_array);
+  _finalizer_register_cache->serialize(f);
+  _reflect_invoke_cache->serialize(f);
+}
 
 void Universe::check_alignment(uintx size, uintx alignment, const char* name) {
   if (size < alignment || size % alignment != 0) {
@@ -292,9 +241,20 @@
   }
 }
 
+void initialize_basic_type_klass(Klass* k, TRAPS) {
+  Klass* ok = SystemDictionary::Object_klass();
+  if (UseSharedSpaces) {
+    assert(k->super() == ok, "u3");
+    k->restore_unshareable_info(CHECK);
+  } else {
+    k->initialize_supers(ok, CHECK);
+  }
+  k->append_to_sibling_list();
+}
 
 void Universe::genesis(TRAPS) {
   ResourceMark rm;
+
   { FlagSetting fs(_bootstrapping, true);
 
     { MutexLocker mc(Compile_lock);
@@ -303,13 +263,6 @@
       compute_base_vtable_size();
 
       if (!UseSharedSpaces) {
-        _klassKlassObj          = klassKlass::create_klass(CHECK);
-        _arrayKlassKlassObj     = arrayKlassKlass::create_klass(CHECK);
-
-        _objArrayKlassKlassObj  = objArrayKlassKlass::create_klass(CHECK);
-        _instanceKlassKlassObj  = instanceKlassKlass::create_klass(CHECK);
-        _typeArrayKlassKlassObj = typeArrayKlassKlass::create_klass(CHECK);
-
         _boolArrayKlassObj      = typeArrayKlass::create_klass(T_BOOLEAN, sizeof(jboolean), CHECK);
         _charArrayKlassObj      = typeArrayKlass::create_klass(T_CHAR,    sizeof(jchar),    CHECK);
         _singleArrayKlassObj    = typeArrayKlass::create_klass(T_FLOAT,   sizeof(jfloat),   CHECK);
@@ -328,21 +281,13 @@
         _typeArrayKlassObjs[T_INT]     = _intArrayKlassObj;
         _typeArrayKlassObjs[T_LONG]    = _longArrayKlassObj;
 
-        _methodKlassObj             = methodKlass::create_klass(CHECK);
-        _constMethodKlassObj        = constMethodKlass::create_klass(CHECK);
-        _methodDataKlassObj         = methodDataKlass::create_klass(CHECK);
-        _constantPoolKlassObj       = constantPoolKlass::create_klass(CHECK);
-        _constantPoolCacheKlassObj  = constantPoolCacheKlass::create_klass(CHECK);
+        ClassLoaderData* null_cld = ClassLoaderData::the_null_class_loader_data();
 
-        _compiledICHolderKlassObj   = compiledICHolderKlass::create_klass(CHECK);
-        _systemObjArrayKlassObj     = objArrayKlassKlass::cast(objArrayKlassKlassObj())->allocate_system_objArray_klass(CHECK);
-
-        _the_empty_byte_array       = oopFactory::new_permanent_byteArray(0, CHECK);
-        _the_empty_short_array      = oopFactory::new_permanent_shortArray(0, CHECK);
-        _the_empty_int_array        = oopFactory::new_permanent_intArray(0, CHECK);
-        _the_empty_system_obj_array = oopFactory::new_system_objArray(0, CHECK);
-
-        _the_array_interfaces_array = oopFactory::new_system_objArray(2, CHECK);
+        _the_array_interfaces_array = MetadataFactory::new_array<Klass*>(null_cld, 2, NULL, CHECK);
+        _the_empty_int_array        = MetadataFactory::new_array<int>(null_cld, 0, CHECK);
+        _the_empty_short_array      = MetadataFactory::new_array<u2>(null_cld, 0, CHECK);
+        _the_empty_method_array     = MetadataFactory::new_array<Method*>(null_cld, 0, CHECK);
+        _the_empty_klass_array      = MetadataFactory::new_array<Klass*>(null_cld, 0, CHECK);
       }
     }
 
@@ -350,83 +295,53 @@
 
     SystemDictionary::initialize(CHECK);
 
-    klassOop ok = SystemDictionary::Object_klass();
+    Klass* ok = SystemDictionary::Object_klass();
 
     _the_null_string            = StringTable::intern("null", CHECK);
     _the_min_jint_string       = StringTable::intern("-2147483648", CHECK);
 
     if (UseSharedSpaces) {
       // Verify shared interfaces array.
-      assert(_the_array_interfaces_array->obj_at(0) ==
+      assert(_the_array_interfaces_array->at(0) ==
              SystemDictionary::Cloneable_klass(), "u3");
-      assert(_the_array_interfaces_array->obj_at(1) ==
+      assert(_the_array_interfaces_array->at(1) ==
              SystemDictionary::Serializable_klass(), "u3");
-
-      // Verify element klass for system obj array klass
-      assert(objArrayKlass::cast(_systemObjArrayKlassObj)->element_klass() == ok, "u1");
-      assert(objArrayKlass::cast(_systemObjArrayKlassObj)->bottom_klass() == ok, "u2");
-
-      // Verify super class for the classes created above
-      assert(Klass::cast(boolArrayKlassObj()     )->super() == ok, "u3");
-      assert(Klass::cast(charArrayKlassObj()     )->super() == ok, "u3");
-      assert(Klass::cast(singleArrayKlassObj()   )->super() == ok, "u3");
-      assert(Klass::cast(doubleArrayKlassObj()   )->super() == ok, "u3");
-      assert(Klass::cast(byteArrayKlassObj()     )->super() == ok, "u3");
-      assert(Klass::cast(shortArrayKlassObj()    )->super() == ok, "u3");
-      assert(Klass::cast(intArrayKlassObj()      )->super() == ok, "u3");
-      assert(Klass::cast(longArrayKlassObj()     )->super() == ok, "u3");
-      assert(Klass::cast(constantPoolKlassObj()  )->super() == ok, "u3");
-      assert(Klass::cast(systemObjArrayKlassObj())->super() == ok, "u3");
     } else {
       // Set up shared interfaces array.  (Do this before supers are set up.)
-      _the_array_interfaces_array->obj_at_put(0, SystemDictionary::Cloneable_klass());
-      _the_array_interfaces_array->obj_at_put(1, SystemDictionary::Serializable_klass());
-
-      // Set element klass for system obj array klass
-      objArrayKlass::cast(_systemObjArrayKlassObj)->set_element_klass(ok);
-      objArrayKlass::cast(_systemObjArrayKlassObj)->set_bottom_klass(ok);
-
-      // Set super class for the classes created above
-      Klass::cast(boolArrayKlassObj()     )->initialize_supers(ok, CHECK);
-      Klass::cast(charArrayKlassObj()     )->initialize_supers(ok, CHECK);
-      Klass::cast(singleArrayKlassObj()   )->initialize_supers(ok, CHECK);
-      Klass::cast(doubleArrayKlassObj()   )->initialize_supers(ok, CHECK);
-      Klass::cast(byteArrayKlassObj()     )->initialize_supers(ok, CHECK);
-      Klass::cast(shortArrayKlassObj()    )->initialize_supers(ok, CHECK);
-      Klass::cast(intArrayKlassObj()      )->initialize_supers(ok, CHECK);
-      Klass::cast(longArrayKlassObj()     )->initialize_supers(ok, CHECK);
-      Klass::cast(constantPoolKlassObj()  )->initialize_supers(ok, CHECK);
-      Klass::cast(systemObjArrayKlassObj())->initialize_supers(ok, CHECK);
-      Klass::cast(boolArrayKlassObj()     )->set_super(ok);
-      Klass::cast(charArrayKlassObj()     )->set_super(ok);
-      Klass::cast(singleArrayKlassObj()   )->set_super(ok);
-      Klass::cast(doubleArrayKlassObj()   )->set_super(ok);
-      Klass::cast(byteArrayKlassObj()     )->set_super(ok);
-      Klass::cast(shortArrayKlassObj()    )->set_super(ok);
-      Klass::cast(intArrayKlassObj()      )->set_super(ok);
-      Klass::cast(longArrayKlassObj()     )->set_super(ok);
-      Klass::cast(constantPoolKlassObj()  )->set_super(ok);
-      Klass::cast(systemObjArrayKlassObj())->set_super(ok);
+      _the_array_interfaces_array->at_put(0, SystemDictionary::Cloneable_klass());
+      _the_array_interfaces_array->at_put(1, SystemDictionary::Serializable_klass());
     }
 
-    Klass::cast(boolArrayKlassObj()     )->append_to_sibling_list();
-    Klass::cast(charArrayKlassObj()     )->append_to_sibling_list();
-    Klass::cast(singleArrayKlassObj()   )->append_to_sibling_list();
-    Klass::cast(doubleArrayKlassObj()   )->append_to_sibling_list();
-    Klass::cast(byteArrayKlassObj()     )->append_to_sibling_list();
-    Klass::cast(shortArrayKlassObj()    )->append_to_sibling_list();
-    Klass::cast(intArrayKlassObj()      )->append_to_sibling_list();
-    Klass::cast(longArrayKlassObj()     )->append_to_sibling_list();
-    Klass::cast(constantPoolKlassObj()  )->append_to_sibling_list();
-    Klass::cast(systemObjArrayKlassObj())->append_to_sibling_list();
+    initialize_basic_type_klass(boolArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(charArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(singleArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(doubleArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(byteArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(shortArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(intArrayKlassObj(), CHECK);
+    initialize_basic_type_klass(longArrayKlassObj(), CHECK);
   } // end of core bootstrapping
 
+  // Maybe this could be lifted up now that object array can be initialized
+  // during the bootstrapping.
+
+  // OLD
   // Initialize _objectArrayKlass after core bootstraping to make
   // sure the super class is set up properly for _objectArrayKlass.
-  _objectArrayKlassObj = instanceKlass::
+  // ---
+  // NEW
+  // Since some of the old system object arrays have been converted to
+  // ordinary object arrays, _objectArrayKlass will be loaded when
+  // SystemDictionary::initialize(CHECK); is run. See the extra check
+  // for Object_klass_loaded in objArrayKlassKlass::allocate_objArray_klass_impl.
+  _objectArrayKlassObj = InstanceKlass::
     cast(SystemDictionary::Object_klass())->array_klass(1, CHECK);
+  // OLD
   // Add the class to the class hierarchy manually to make sure that
   // its vtable is initialized after core bootstrapping is completed.
+  // ---
+  // New
+  // Have already been initialized.
   Klass::cast(_objectArrayKlassObj)->append_to_sibling_list();
 
   // Compute is_jdk version flags.
@@ -435,7 +350,7 @@
   // Only 1.5 or later has the java.lang.management.MemoryUsage class.
   if (JDK_Version::is_partially_initialized()) {
     uint8_t jdk_version;
-    klassOop k = SystemDictionary::resolve_or_null(
+    Klass* k = SystemDictionary::resolve_or_null(
         vmSymbols::java_lang_management_MemoryUsage(), THREAD);
     CLEAR_PENDING_EXCEPTION; // ignore exceptions
     if (k == NULL) {
@@ -479,17 +394,12 @@
     } else {
       size = FullGCALotDummies * 2;
     }
-    objArrayOop    naked_array = oopFactory::new_system_objArray(size, CHECK);
+    objArrayOop    naked_array = oopFactory::new_objArray(SystemDictionary::Object_klass(), size, CHECK);
     objArrayHandle dummy_array(THREAD, naked_array);
     int i = 0;
     while (i < size) {
-      if (!UseConcMarkSweepGC) {
         // Allocate dummy in old generation
-        oop dummy = instanceKlass::cast(SystemDictionary::Object_klass())->allocate_instance(CHECK);
-        dummy_array->obj_at_put(i++, dummy);
-      }
-      // Allocate dummy in permanent generation
-      oop dummy = instanceKlass::cast(SystemDictionary::Object_klass())->allocate_permanent_instance(CHECK);
+      oop dummy = InstanceKlass::cast(SystemDictionary::Object_klass())->allocate_instance(CHECK);
       dummy_array->obj_at_put(i++, dummy);
     }
     {
@@ -506,7 +416,11 @@
   #endif
 }
 
-
+// CDS support for patching vtables in metadata in the shared archive.
+// All types inherited from Metadata have vtables, but not types inherited
+// from MetaspaceObj, because the latter does not have virtual functions.
+// If the metadata type has a vtable, it cannot be shared in the read-only
+// section of the CDS archive, because the vtable pointer is patched.
 static inline void* dereference(void* addr) {
   return *(void**)addr;
 }
@@ -520,56 +434,17 @@
 
 void Universe::init_self_patching_vtbl_list(void** list, int count) {
   int n = 0;
-  { klassKlass o;             add_vtable(list, &n, &o, count); }
-  { arrayKlassKlass o;        add_vtable(list, &n, &o, count); }
-  { objArrayKlassKlass o;     add_vtable(list, &n, &o, count); }
-  { instanceKlassKlass o;     add_vtable(list, &n, &o, count); }
-  { instanceKlass o;          add_vtable(list, &n, &o, count); }
-  { instanceMirrorKlass o;    add_vtable(list, &n, &o, count); }
-  { instanceRefKlass o;       add_vtable(list, &n, &o, count); }
-  { typeArrayKlassKlass o;    add_vtable(list, &n, &o, count); }
+  { InstanceKlass o;          add_vtable(list, &n, &o, count); }
+  { InstanceClassLoaderKlass o; add_vtable(list, &n, &o, count); }
+  { InstanceMirrorKlass o;    add_vtable(list, &n, &o, count); }
+  { InstanceRefKlass o;       add_vtable(list, &n, &o, count); }
   { typeArrayKlass o;         add_vtable(list, &n, &o, count); }
-  { methodKlass o;            add_vtable(list, &n, &o, count); }
-  { constMethodKlass o;       add_vtable(list, &n, &o, count); }
-  { constantPoolKlass o;      add_vtable(list, &n, &o, count); }
-  { constantPoolCacheKlass o; add_vtable(list, &n, &o, count); }
   { objArrayKlass o;          add_vtable(list, &n, &o, count); }
-  { methodDataKlass o;        add_vtable(list, &n, &o, count); }
-  { compiledICHolderKlass o;  add_vtable(list, &n, &o, count); }
-#ifndef PRODUCT
-  // In non-product builds CHeapObj is derived from AllocatedObj,
-  // so symbols in CDS archive should have their vtable pointer patched.
-  { Symbol o;                 add_vtable(list, &n, &o, count); }
-#endif
+  { Method o;                 add_vtable(list, &n, &o, count); }
+  { ConstantPool o;           add_vtable(list, &n, &o, count); }
 }
 
-
-class FixupMirrorClosure: public ObjectClosure {
- public:
-  virtual void do_object(oop obj) {
-    if (obj->is_klass()) {
-      EXCEPTION_MARK;
-      KlassHandle k(THREAD, klassOop(obj));
-      // We will never reach the CATCH below since Exceptions::_throw will cause
-      // the VM to exit if an exception is thrown during initialization
-      java_lang_Class::fixup_mirror(k, CATCH);
-      // This call unconditionally creates a new mirror for k,
-      // and links in k's component_mirror field if k is an array.
-      // If k is an objArray, k's element type must already have
-      // a mirror.  In other words, this closure must process
-      // the component type of an objArray k before it processes k.
-      // This works because the permgen iterator presents arrays
-      // and their component types in order of creation.
-    }
-  }
-};
-
 void Universe::initialize_basic_type_mirrors(TRAPS) {
-  if (UseSharedSpaces) {
-    assert(_int_mirror != NULL, "already loaded");
-    assert(_void_mirror == _mirrors[T_VOID], "consistently loaded");
-  } else {
-
     assert(_int_mirror==NULL, "basic type mirrors already initialized");
     _int_mirror     =
       java_lang_Class::create_basic_type_mirror("int",    T_INT, CHECK);
@@ -599,9 +474,8 @@
     _mirrors[T_LONG]    = _long_mirror;
     _mirrors[T_SHORT]   = _short_mirror;
     _mirrors[T_VOID]    = _void_mirror;
-    //_mirrors[T_OBJECT]  = instanceKlass::cast(_object_klass)->java_mirror();
-    //_mirrors[T_ARRAY]   = instanceKlass::cast(_object_klass)->java_mirror();
-  }
+  //_mirrors[T_OBJECT]  = InstanceKlass::cast(_object_klass)->java_mirror();
+  //_mirrors[T_ARRAY]   = InstanceKlass::cast(_object_klass)->java_mirror();
 }
 
 void Universe::fixup_mirrors(TRAPS) {
@@ -610,14 +484,22 @@
   // walk over permanent objects created so far (mostly classes) and fixup their mirrors. Note
   // that the number of objects allocated at this point is very small.
   assert(SystemDictionary::Class_klass_loaded(), "java.lang.Class should be loaded");
-
+  HandleMark hm(THREAD);
   // Cache the start of the static fields
-  instanceMirrorKlass::init_offset_of_static_fields();
+  InstanceMirrorKlass::init_offset_of_static_fields();
 
-  FixupMirrorClosure blk;
-  Universe::heap()->permanent_object_iterate(&blk);
+  GrowableArray <Klass*>* list = java_lang_Class::fixup_mirror_list();
+  int list_length = list->length();
+  for (int i = 0; i < list_length; i++) {
+    Klass* k = list->at(i);
+    assert(k->is_klass(), "List should only hold classes");
+    EXCEPTION_MARK;
+    KlassHandle kh(THREAD, k);
+    java_lang_Class::fixup_mirror(kh, CATCH);
 }
-
+  delete java_lang_Class::fixup_mirror_list();
+  java_lang_Class::set_fixup_mirror_list(NULL);
+}
 
 static bool has_run_finalizers_on_exit = false;
 
@@ -650,20 +532,20 @@
 // In case those ever change we use handles for oops
 void Universe::reinitialize_vtable_of(KlassHandle k_h, TRAPS) {
   // init vtable of k and all subclasses
-  Klass* ko = k_h()->klass_part();
+  Klass* ko = k_h();
   klassVtable* vt = ko->vtable();
   if (vt) vt->initialize_vtable(false, CHECK);
   if (ko->oop_is_instance()) {
-    instanceKlass* ik = (instanceKlass*)ko;
-    for (KlassHandle s_h(THREAD, ik->subklass()); s_h() != NULL; s_h = (THREAD, s_h()->klass_part()->next_sibling())) {
+    InstanceKlass* ik = (InstanceKlass*)ko;
+    for (KlassHandle s_h(THREAD, ik->subklass()); s_h() != NULL; s_h = (THREAD, s_h()->next_sibling())) {
       reinitialize_vtable_of(s_h, CHECK);
     }
   }
 }
 
 
-void initialize_itable_for_klass(klassOop k, TRAPS) {
-  instanceKlass::cast(k)->itable()->initialize_itable(false, CHECK);
+void initialize_itable_for_klass(Klass* k, TRAPS) {
+  InstanceKlass::cast(k)->itable()->initialize_itable(false, CHECK);
 }
 
 
@@ -758,49 +640,28 @@
   GC_locker::lock();  // do not allow gc during bootstrapping
   JavaClasses::compute_hard_coded_offsets();
 
-  // Get map info from shared archive file.
-  if (DumpSharedSpaces)
-    UseSharedSpaces = false;
-
-  FileMapInfo* mapinfo = NULL;
-  if (UseSharedSpaces) {
-    mapinfo = NEW_C_HEAP_OBJ(FileMapInfo, mtInternal);
-    memset(mapinfo, 0, sizeof(FileMapInfo));
-
-    // Open the shared archive file, read and validate the header. If
-    // initialization files, shared spaces [UseSharedSpaces] are
-    // disabled and the file is closed.
-
-    if (mapinfo->initialize()) {
-      FileMapInfo::set_current_info(mapinfo);
-    } else {
-      assert(!mapinfo->is_open() && !UseSharedSpaces,
-             "archive file not closed or shared spaces not disabled.");
-    }
-  }
-
   jint status = Universe::initialize_heap();
   if (status != JNI_OK) {
     return status;
   }
 
-  // We have a heap so create the methodOop caches before
-  // CompactingPermGenGen::initialize_oops() tries to populate them.
+  // Create memory for metadata.  Must be after initializing heap for
+  // DumpSharedSpaces.
+  ClassLoaderData::init_null_class_loader_data();
+
+  // We have a heap so create the Method* caches before
+  // Metaspace::initialize_shared_spaces() tries to populate them.
   Universe::_finalizer_register_cache = new LatestMethodOopCache();
-  Universe::_loader_addClass_cache    = new LatestMethodOopCache();
   Universe::_reflect_invoke_cache     = new ActiveMethodOopsCache();
 
   if (UseSharedSpaces) {
-
     // Read the data structures supporting the shared spaces (shared
     // system dictionary, symbol table, etc.).  After that, access to
     // the file (other than the mapped regions) is no longer needed, and
     // the file is closed. Closing the file does not affect the
     // currently mapped regions.
-
-    CompactingPermGenGen::initialize_oops();
-    mapinfo->close();
-
+    MetaspaceShared::initialize_shared_spaces();
+    StringTable::create_table();
   } else {
     SymbolTable::create_table();
     StringTable::create_table();
@@ -992,6 +853,54 @@
   return JNI_OK;
 }
 
+
+// Reserve the Java heap, which is now the same for all GCs.
+ReservedSpace Universe::reserve_heap(size_t heap_size, size_t alignment) {
+  // Add in the class metaspace area so the classes in the headers can
+  // be compressed the same as instances.
+  size_t total_reserved = align_size_up(heap_size + ClassMetaspaceSize, alignment);
+  char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
+
+  ReservedHeapSpace total_rs(total_reserved, alignment, UseLargePages, addr);
+
+  if (UseCompressedOops) {
+    if (addr != NULL && !total_rs.is_reserved()) {
+      // Failed to reserve at specified address - the requested memory
+      // region is taken already, for example, by 'java' launcher.
+      // Try again to reserver heap higher.
+      addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
+
+      ReservedHeapSpace total_rs0(total_reserved, alignment,
+                                  UseLargePages, addr);
+
+      if (addr != NULL && !total_rs0.is_reserved()) {
+        // Failed to reserve at specified address again - give up.
+        addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
+        assert(addr == NULL, "");
+
+        ReservedHeapSpace total_rs1(total_reserved, alignment,
+                                    UseLargePages, addr);
+        total_rs = total_rs1;
+      } else {
+        total_rs = total_rs0;
+      }
+    }
+  }
+
+  if (!total_rs.is_reserved()) {
+    vm_exit_during_initialization(err_msg("Could not reserve enough space for object heap %d bytes", total_reserved));
+    return total_rs;
+  }
+
+  // Split the reserved space into main Java heap and a space for classes
+  // so that they can be compressed using the same algorithm as compressed oops
+  ReservedSpace heap_rs = total_rs.first_part(heap_size);
+  ReservedSpace class_rs = total_rs.last_part(heap_size, alignment);
+  Metaspace::initialize_class_space(class_rs);
+  return heap_rs;
+}
+
+
 // It's the caller's repsonsibility to ensure glitch-freedom
 // (if required).
 void Universe::update_heap_info_at_gc() {
@@ -1026,55 +935,56 @@
   { ResourceMark rm;
     Interpreter::initialize();      // needed for interpreter entry points
     if (!UseSharedSpaces) {
+      HandleMark hm(THREAD);
       KlassHandle ok_h(THREAD, SystemDictionary::Object_klass());
       Universe::reinitialize_vtable_of(ok_h, CHECK_false);
       Universe::reinitialize_itables(CHECK_false);
     }
   }
 
-  klassOop k;
+  HandleMark hm(THREAD);
+  Klass* k;
   instanceKlassHandle k_h;
-  if (!UseSharedSpaces) {
     // Setup preallocated empty java.lang.Class array
     Universe::_the_empty_class_klass_array = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_false);
+
     // Setup preallocated OutOfMemoryError errors
     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_OutOfMemoryError(), true, CHECK_false);
     k_h = instanceKlassHandle(THREAD, k);
-    Universe::_out_of_memory_error_java_heap = k_h->allocate_permanent_instance(CHECK_false);
-    Universe::_out_of_memory_error_perm_gen = k_h->allocate_permanent_instance(CHECK_false);
-    Universe::_out_of_memory_error_array_size = k_h->allocate_permanent_instance(CHECK_false);
+    Universe::_out_of_memory_error_java_heap = k_h->allocate_instance(CHECK_false);
+    Universe::_out_of_memory_error_perm_gen = k_h->allocate_instance(CHECK_false);
+    Universe::_out_of_memory_error_array_size = k_h->allocate_instance(CHECK_false);
     Universe::_out_of_memory_error_gc_overhead_limit =
-      k_h->allocate_permanent_instance(CHECK_false);
+      k_h->allocate_instance(CHECK_false);
 
     // Setup preallocated NullPointerException
     // (this is currently used for a cheap & dirty solution in compiler exception handling)
     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_NullPointerException(), true, CHECK_false);
-    Universe::_null_ptr_exception_instance = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false);
+    Universe::_null_ptr_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
     // Setup preallocated ArithmeticException
     // (this is currently used for a cheap & dirty solution in compiler exception handling)
     k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ArithmeticException(), true, CHECK_false);
-    Universe::_arithmetic_exception_instance = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false);
+    Universe::_arithmetic_exception_instance = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
     // Virtual Machine Error for when we get into a situation we can't resolve
     k = SystemDictionary::resolve_or_fail(
       vmSymbols::java_lang_VirtualMachineError(), true, CHECK_false);
-    bool linked = instanceKlass::cast(k)->link_class_or_fail(CHECK_false);
+    bool linked = InstanceKlass::cast(k)->link_class_or_fail(CHECK_false);
     if (!linked) {
       tty->print_cr("Unable to link/verify VirtualMachineError class");
       return false; // initialization failed
     }
     Universe::_virtual_machine_error_instance =
-      instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false);
+      InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 
-    Universe::_vm_exception               = instanceKlass::cast(k)->allocate_permanent_instance(CHECK_false);
+    Universe::_vm_exception               = InstanceKlass::cast(k)->allocate_instance(CHECK_false);
 
-  }
   if (!DumpSharedSpaces) {
     // These are the only Java fields that are currently set during shared space dumping.
     // We prefer to not handle this generally, so we always reinitialize these detail messages.
     Handle msg = java_lang_String::create_from_str("Java heap space", CHECK_false);
     java_lang_Throwable::set_message(Universe::_out_of_memory_error_java_heap, msg());
 
-    msg = java_lang_String::create_from_str("PermGen space", CHECK_false);
+    msg = java_lang_String::create_from_str("Metadata space", CHECK_false);
     java_lang_Throwable::set_message(Universe::_out_of_memory_error_perm_gen, msg());
 
     msg = java_lang_String::create_from_str("Requested array size exceeds VM limit", CHECK_false);
@@ -1088,13 +998,13 @@
 
     // Setup the array of errors that have preallocated backtrace
     k = Universe::_out_of_memory_error_java_heap->klass();
-    assert(k->klass_part()->name() == vmSymbols::java_lang_OutOfMemoryError(), "should be out of memory error");
+    assert(k->name() == vmSymbols::java_lang_OutOfMemoryError(), "should be out of memory error");
     k_h = instanceKlassHandle(THREAD, k);
 
     int len = (StackTraceInThrowable) ? (int)PreallocatedOutOfMemoryErrorCount : 0;
     Universe::_preallocated_out_of_memory_error_array = oopFactory::new_objArray(k_h(), len, CHECK_false);
     for (int i=0; i<len; i++) {
-      oop err = k_h->allocate_permanent_instance(CHECK_false);
+      oop err = k_h->allocate_instance(CHECK_false);
       Handle err_h = Handle(THREAD, err);
       java_lang_Throwable::allocate_backtrace(err_h, CHECK_false);
       Universe::preallocated_out_of_memory_errors()->obj_at_put(i, err_h());
@@ -1106,8 +1016,8 @@
   // Setup static method for registering finalizers
   // The finalizer klass must be linked before looking up the method, in
   // case it needs to get rewritten.
-  instanceKlass::cast(SystemDictionary::Finalizer_klass())->link_class(CHECK_false);
-  methodOop m = instanceKlass::cast(SystemDictionary::Finalizer_klass())->find_method(
+  InstanceKlass::cast(SystemDictionary::Finalizer_klass())->link_class(CHECK_false);
+  Method* m = InstanceKlass::cast(SystemDictionary::Finalizer_klass())->find_method(
                                   vmSymbols::register_method_name(),
                                   vmSymbols::register_method_signature());
   if (m == NULL || !m->is_static()) {
@@ -1131,16 +1041,6 @@
   }
   Universe::_reflect_invoke_cache->init(k_h(), m, CHECK_false);
 
-  // Setup method for registering loaded classes in class loader vector
-  instanceKlass::cast(SystemDictionary::ClassLoader_klass())->link_class(CHECK_false);
-  m = instanceKlass::cast(SystemDictionary::ClassLoader_klass())->find_method(vmSymbols::addClass_name(), vmSymbols::class_void_signature());
-  if (m == NULL || m->is_static()) {
-    THROW_MSG_(vmSymbols::java_lang_NoSuchMethodException(),
-      "java.lang.ClassLoader.addClass", false);
-  }
-  Universe::_loader_addClass_cache->init(
-    SystemDictionary::ClassLoader_klass(), m, CHECK_false);
-
   // The folowing is initializing converter functions for serialization in
   // JVM.cpp. If we clean up the StrictMath code above we may want to find
   // a better solution for this as well.
@@ -1156,6 +1056,9 @@
   // ("weak") refs processing infrastructure initialization
   Universe::heap()->post_initialize();
 
+  // Initialize performance counters for metaspaces
+  MetaspaceCounters::initialize_performance_counters();
+
   GC_locker::unlock();  // allow gc after bootstrapping
 
   MemoryService::set_universe_heap(Universe::_collectedHeap);
@@ -1204,14 +1107,14 @@
   CallSiteDepChange changes(call_site(), method_handle());
 
   // Compute the dependent nmethods that have a reference to a
-  // CallSite object.  We use instanceKlass::mark_dependent_nmethod
+  // CallSite object.  We use InstanceKlass::mark_dependent_nmethod
   // directly instead of CodeCache::mark_for_deoptimization because we
   // want dependents on the call site class only not all classes in
   // the ContextStream.
   int marked = 0;
   {
     MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-    instanceKlass* call_site_klass = instanceKlass::cast(call_site->klass());
+    InstanceKlass* call_site_klass = InstanceKlass::cast(call_site->klass());
     marked = call_site_klass->mark_dependent_nmethods(changes);
   }
   if (marked > 0) {
@@ -1363,6 +1266,10 @@
   }
   if (!silent) gclog_or_tty->print("dict ");
   SystemDictionary::verify();
+#ifndef PRODUCT
+  if (!silent) gclog_or_tty->print("cldg ");
+  ClassLoaderDataGraph::verify();
+#endif
   if (!silent) gclog_or_tty->print("hand ");
   JNIHandles::verify();
   if (!silent) gclog_or_tty->print("C-heap ");
@@ -1433,62 +1340,10 @@
   return _verify_oop_data[1];
 }
 
-
-uintptr_t Universe::verify_klass_mask() {
-  /* $$$
-  // A klass can never live in the new space.  Since the new and old
-  // spaces can change size, we must settle for bounds-checking against
-  // the bottom of the world, plus the smallest possible new and old
-  // space sizes that may arise during execution.
-  size_t min_new_size = Universe::new_size();   // in bytes
-  size_t min_old_size = Universe::old_size();   // in bytes
-  calculate_verify_data(_verify_klass_data,
-          (HeapWord*)((uintptr_t)_new_gen->low_boundary + min_new_size + min_old_size),
-          _perm_gen->high_boundary);
-                        */
-  // Why doesn't the above just say that klass's always live in the perm
-  // gen?  I'll see if that seems to work...
-  MemRegion permanent_reserved;
-  switch (Universe::heap()->kind()) {
-  default:
-    // ???: What if a CollectedHeap doesn't have a permanent generation?
-    ShouldNotReachHere();
-    break;
-  case CollectedHeap::GenCollectedHeap:
-  case CollectedHeap::G1CollectedHeap: {
-    SharedHeap* sh = (SharedHeap*) Universe::heap();
-    permanent_reserved = sh->perm_gen()->reserved();
-   break;
-  }
-#ifndef SERIALGC
-  case CollectedHeap::ParallelScavengeHeap: {
-    ParallelScavengeHeap* psh = (ParallelScavengeHeap*) Universe::heap();
-    permanent_reserved = psh->perm_gen()->reserved();
-    break;
-  }
-#endif // SERIALGC
-  }
-  calculate_verify_data(_verify_klass_data,
-                        permanent_reserved.start(),
-                        permanent_reserved.end());
-
-  return _verify_klass_data[0];
-}
-
-
-
-uintptr_t Universe::verify_klass_bits() {
-  verify_klass_mask();
-  return _verify_klass_data[1];
-}
-
-
 uintptr_t Universe::verify_mark_mask() {
   return markOopDesc::lock_mask_in_place;
 }
 
-
-
 uintptr_t Universe::verify_mark_bits() {
   intptr_t mask = verify_mark_mask();
   intptr_t bits = (intptr_t)markOopDesc::prototype();
@@ -1503,12 +1358,10 @@
   verify_oop_bits();
   verify_mark_mask();
   verify_mark_bits();
-  verify_klass_mask();
-  verify_klass_bits();
 }
 
 
-void CommonMethodOopCache::init(klassOop k, methodOop m, TRAPS) {
+void CommonMethodOopCache::init(Klass* k, Method* m, TRAPS) {
   if (!UseSharedSpaces) {
     _klass = k;
   }
@@ -1526,27 +1379,24 @@
 
 ActiveMethodOopsCache::~ActiveMethodOopsCache() {
   if (_prev_methods != NULL) {
-    for (int i = _prev_methods->length() - 1; i >= 0; i--) {
-      jweak method_ref = _prev_methods->at(i);
-      if (method_ref != NULL) {
-        JNIHandles::destroy_weak_global(method_ref);
-      }
-    }
     delete _prev_methods;
     _prev_methods = NULL;
   }
 }
 
 
-void ActiveMethodOopsCache::add_previous_version(const methodOop method) {
+void ActiveMethodOopsCache::add_previous_version(Method* const method) {
   assert(Thread::current()->is_VM_thread(),
     "only VMThread can add previous versions");
 
+  // Only append the previous method if it is executing on the stack.
+  if (method->on_stack()) {
+
   if (_prev_methods == NULL) {
     // This is the first previous version so make some space.
     // Start with 2 elements under the assumption that the class
     // won't be redefined much.
-    _prev_methods = new (ResourceObj::C_HEAP, mtClass) GrowableArray<jweak>(2, true);
+      _prev_methods = new (ResourceObj::C_HEAP, mtClass) GrowableArray<Method*>(2, true);
   }
 
   // RC_TRACE macro has an embedded ResourceMark
@@ -1555,42 +1405,35 @@
     method->name()->as_C_string(), method->signature()->as_C_string(),
     _prev_methods->length()));
 
-  methodHandle method_h(method);
-  jweak method_ref = JNIHandles::make_weak_global(method_h);
-  _prev_methods->append(method_ref);
+    _prev_methods->append(method);
+  }
+
 
-  // Using weak references allows previous versions of the cached
-  // method to be GC'ed when they are no longer needed. Since the
-  // caller is the VMThread and we are at a safepoint, this is a good
-  // time to clear out unused weak references.
+  // Since the caller is the VMThread and we are at a safepoint, this is a good
+  // time to clear out unused method references.
+
+  if (_prev_methods == NULL) return;
 
   for (int i = _prev_methods->length() - 1; i >= 0; i--) {
-    jweak method_ref = _prev_methods->at(i);
-    assert(method_ref != NULL, "weak method ref was unexpectedly cleared");
-    if (method_ref == NULL) {
+    Method* method = _prev_methods->at(i);
+    assert(method != NULL, "weak method ref was unexpectedly cleared");
+
+    if (!method->on_stack()) {
+      // This method isn't running anymore so remove it
       _prev_methods->remove_at(i);
-      // Since we are traversing the array backwards, we don't have to
-      // do anything special with the index.
-      continue;  // robustness
-    }
-
-    methodOop m = (methodOop)JNIHandles::resolve(method_ref);
-    if (m == NULL) {
-      // this method entry has been GC'ed so remove it
-      JNIHandles::destroy_weak_global(method_ref);
-      _prev_methods->remove_at(i);
+      MetadataFactory::free_metadata(method->method_holder()->class_loader_data(), method);
     } else {
       // RC_TRACE macro has an embedded ResourceMark
       RC_TRACE(0x00000400, ("add: %s(%s): previous cached method @%d is alive",
-        m->name()->as_C_string(), m->signature()->as_C_string(), i));
+        method->name()->as_C_string(), method->signature()->as_C_string(), i));
     }
   }
 } // end add_previous_version()
 
 
-bool ActiveMethodOopsCache::is_same_method(const methodOop method) const {
-  instanceKlass* ik = instanceKlass::cast(klass());
-  methodOop check_method = ik->method_with_idnum(method_idnum());
+bool ActiveMethodOopsCache::is_same_method(Method* const method) const {
+  InstanceKlass* ik = InstanceKlass::cast(klass());
+  Method* check_method = ik->method_with_idnum(method_idnum());
   assert(check_method != NULL, "sanity check");
   if (check_method == method) {
     // done with the easy case
@@ -1601,13 +1444,7 @@
     // The cached method has been redefined at least once so search
     // the previous versions for a match.
     for (int i = 0; i < _prev_methods->length(); i++) {
-      jweak method_ref = _prev_methods->at(i);
-      assert(method_ref != NULL, "weak method ref was unexpectedly cleared");
-      if (method_ref == NULL) {
-        continue;  // robustness
-      }
-
-      check_method = (methodOop)JNIHandles::resolve(method_ref);
+      check_method = _prev_methods->at(i);
       if (check_method == method) {
         // a previous version matches
         return true;
@@ -1620,9 +1457,9 @@
 }
 
 
-methodOop LatestMethodOopCache::get_methodOop() {
-  instanceKlass* ik = instanceKlass::cast(klass());
-  methodOop m = ik->method_with_idnum(method_idnum());
+Method* LatestMethodOopCache::get_Method() {
+  InstanceKlass* ik = InstanceKlass::cast(klass());
+  Method* m = ik->method_with_idnum(method_idnum());
   assert(m != NULL, "sanity check");
   return m;
 }
--- a/src/share/vm/memory/universe.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/memory/universe.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,6 +26,7 @@
 #define SHARE_VM_MEMORY_UNIVERSE_HPP
 
 #include "runtime/handles.hpp"
+#include "utilities/array.hpp"
 #include "utilities/growableArray.hpp"
 
 // Universe is a name space holding known system classes and objects in the VM.
@@ -40,60 +41,68 @@
 class DeferredObjAllocEvent;
 
 
-// Common parts of a methodOop cache. This cache safely interacts with
+// Common parts of a Method* cache. This cache safely interacts with
 // the RedefineClasses API.
 //
 class CommonMethodOopCache : public CHeapObj<mtClass> {
-  // We save the klassOop and the idnum of methodOop in order to get
-  // the current cached methodOop.
+  // We save the Klass* and the idnum of Method* in order to get
+  // the current cached Method*.
  private:
-  klassOop              _klass;
+  Klass*                _klass;
   int                   _method_idnum;
 
  public:
   CommonMethodOopCache()   { _klass = NULL; _method_idnum = -1; }
   ~CommonMethodOopCache()  { _klass = NULL; _method_idnum = -1; }
 
-  void     init(klassOop k, methodOop m, TRAPS);
-  klassOop klass() const         { return _klass; }
+  void     init(Klass* k, Method* m, TRAPS);
+  Klass* klass() const         { return _klass; }
   int      method_idnum() const  { return _method_idnum; }
 
-  // GC support
-  void     oops_do(OopClosure* f)  { f->do_oop((oop*)&_klass); }
+  // Enhanced Class Redefinition support
+  void classes_do(void f(Klass*)) {
+    f(_klass);
+  }
+
+  // CDS support.  Replace the klass in this with the archive version
+  // could use this for Enhanced Class Redefinition also.
+  void serialize(SerializeClosure* f) {
+    f->do_ptr((void**)&_klass);
+  }
 };
 
 
-// A helper class for caching a methodOop when the user of the cache
-// cares about all versions of the methodOop.
+// A helper class for caching a Method* when the user of the cache
+// cares about all versions of the Method*.
 //
 class ActiveMethodOopsCache : public CommonMethodOopCache {
   // This subclass adds weak references to older versions of the
-  // methodOop and a query method for a methodOop.
+  // Method* and a query method for a Method*.
 
  private:
-  // If the cached methodOop has not been redefined, then
+  // If the cached Method* has not been redefined, then
   // _prev_methods will be NULL. If all of the previous
   // versions of the method have been collected, then
   // _prev_methods can have a length of zero.
-  GrowableArray<jweak>* _prev_methods;
+  GrowableArray<Method*>* _prev_methods;
 
  public:
   ActiveMethodOopsCache()   { _prev_methods = NULL; }
   ~ActiveMethodOopsCache();
 
-  void add_previous_version(const methodOop method);
-  bool is_same_method(const methodOop method) const;
+  void add_previous_version(Method* const method);
+  bool is_same_method(Method* const method) const;
 };
 
 
-// A helper class for caching a methodOop when the user of the cache
-// only cares about the latest version of the methodOop.
+// A helper class for caching a Method* when the user of the cache
+// only cares about the latest version of the Method*.
 //
 class LatestMethodOopCache : public CommonMethodOopCache {
-  // This subclass adds a getter method for the latest methodOop.
+  // This subclass adds a getter method for the latest Method*.
 
  public:
-  methodOop get_methodOop();
+  Method* get_Method();
 };
 
 // For UseCompressedOops.
@@ -126,7 +135,6 @@
   friend class Arguments;
   friend class SystemDictionary;
   friend class VMStructs;
-  friend class CompactingPermGenGen;
   friend class VM_PopulateDumpSharedSpace;
 
   friend jint  universe_init();
@@ -135,30 +143,17 @@
 
  private:
   // Known classes in the VM
-  static klassOop _boolArrayKlassObj;
-  static klassOop _byteArrayKlassObj;
-  static klassOop _charArrayKlassObj;
-  static klassOop _intArrayKlassObj;
-  static klassOop _shortArrayKlassObj;
-  static klassOop _longArrayKlassObj;
-  static klassOop _singleArrayKlassObj;
-  static klassOop _doubleArrayKlassObj;
-  static klassOop _typeArrayKlassObjs[T_VOID+1];
-
-  static klassOop _objectArrayKlassObj;
+  static Klass* _boolArrayKlassObj;
+  static Klass* _byteArrayKlassObj;
+  static Klass* _charArrayKlassObj;
+  static Klass* _intArrayKlassObj;
+  static Klass* _shortArrayKlassObj;
+  static Klass* _longArrayKlassObj;
+  static Klass* _singleArrayKlassObj;
+  static Klass* _doubleArrayKlassObj;
+  static Klass* _typeArrayKlassObjs[T_VOID+1];
 
-  static klassOop _methodKlassObj;
-  static klassOop _constMethodKlassObj;
-  static klassOop _methodDataKlassObj;
-  static klassOop _klassKlassObj;
-  static klassOop _arrayKlassKlassObj;
-  static klassOop _objArrayKlassKlassObj;
-  static klassOop _typeArrayKlassKlassObj;
-  static klassOop _instanceKlassKlassObj;
-  static klassOop _constantPoolKlassObj;
-  static klassOop _constantPoolCacheKlassObj;
-  static klassOop _compiledICHolderKlassObj;
-  static klassOop _systemObjArrayKlassObj;
+  static Klass* _objectArrayKlassObj;
 
   // Known objects in the VM
 
@@ -176,22 +171,23 @@
   static oop          _main_thread_group;             // Reference to the main thread group object
   static oop          _system_thread_group;           // Reference to the system thread group object
 
-  static typeArrayOop _the_empty_byte_array;          // Canonicalized byte array
-  static typeArrayOop _the_empty_short_array;         // Canonicalized short array
-  static typeArrayOop _the_empty_int_array;           // Canonicalized int array
-  static objArrayOop  _the_empty_system_obj_array;    // Canonicalized system obj array
   static objArrayOop  _the_empty_class_klass_array;   // Canonicalized obj array of type java.lang.Class
-  static objArrayOop  _the_array_interfaces_array;    // Canonicalized 2-array of cloneable & serializable klasses
   static oop          _the_null_string;               // A cache of "null" as a Java string
   static oop          _the_min_jint_string;          // A cache of "-2147483648" as a Java string
   static LatestMethodOopCache* _finalizer_register_cache; // static method for registering finalizable objects
-  static LatestMethodOopCache* _loader_addClass_cache;    // method for registering loaded classes in class loader vector
   static ActiveMethodOopsCache* _reflect_invoke_cache;    // method for security checks
   static oop          _out_of_memory_error_java_heap; // preallocated error object (no backtrace)
   static oop          _out_of_memory_error_perm_gen;  // preallocated error object (no backtrace)
   static oop          _out_of_memory_error_array_size;// preallocated error object (no backtrace)
   static oop          _out_of_memory_error_gc_overhead_limit; // preallocated error object (no backtrace)
 
+  static Array<int>*       _the_empty_int_array;    // Canonicalized int array
+  static Array<u2>*        _the_empty_short_array;  // Canonicalized short array
+  static Array<Klass*>*  _the_empty_klass_array;  // Canonicalized klass obj array
+  static Array<Method*>* _the_empty_method_array; // Canonicalized method obj array
+
+  static Array<Klass*>*  _the_array_interfaces_array;
+
   // array of preallocated error objects with backtrace
   static objArrayOop   _preallocated_out_of_memory_error_array;
 
@@ -250,6 +246,21 @@
     return m;
   }
 
+  // Narrow Oop encoding mode:
+  // 0 - Use 32-bits oops without encoding when
+  //     NarrowOopHeapBaseMin + heap_size < 4Gb
+  // 1 - Use zero based compressed oops with encoding when
+  //     NarrowOopHeapBaseMin + heap_size < 32Gb
+  // 2 - Use compressed oops with heap base + encoding.
+  enum NARROW_OOP_MODE {
+    UnscaledNarrowOop  = 0,
+    ZeroBasedNarrowOop = 1,
+    HeapBasedNarrowOop = 2
+  };
+  static char*    preferred_heap_base(size_t heap_size, NARROW_OOP_MODE mode);
+  static void     set_narrow_oop_base(address base)   { _narrow_oop._base  = base; }
+  static void     set_narrow_oop_use_implicit_null_checks(bool use) { _narrow_oop._use_implicit_null_checks = use; }
+
   // Debugging
   static int _verify_count;                           // number of verifies done
   // True during call to verify().  Should only be set/cleared in verify().
@@ -259,38 +270,25 @@
 
  public:
   // Known classes in the VM
-  static klassOop boolArrayKlassObj()                 { return _boolArrayKlassObj;   }
-  static klassOop byteArrayKlassObj()                 { return _byteArrayKlassObj;   }
-  static klassOop charArrayKlassObj()                 { return _charArrayKlassObj;   }
-  static klassOop intArrayKlassObj()                  { return _intArrayKlassObj;    }
-  static klassOop shortArrayKlassObj()                { return _shortArrayKlassObj;  }
-  static klassOop longArrayKlassObj()                 { return _longArrayKlassObj;   }
-  static klassOop singleArrayKlassObj()               { return _singleArrayKlassObj; }
-  static klassOop doubleArrayKlassObj()               { return _doubleArrayKlassObj; }
+  static Klass* boolArrayKlassObj()                 { return _boolArrayKlassObj;   }
+  static Klass* byteArrayKlassObj()                 { return _byteArrayKlassObj;   }
+  static Klass* charArrayKlassObj()                 { return _charArrayKlassObj;   }
+  static Klass* intArrayKlassObj()                  { return _intArrayKlassObj;    }
+  static Klass* shortArrayKlassObj()                { return _shortArrayKlassObj;  }
+  static Klass* longArrayKlassObj()                 { return _longArrayKlassObj;   }
+  static Klass* singleArrayKlassObj()               { return _singleArrayKlassObj; }
+  static Klass* doubleArrayKlassObj()               { return _doubleArrayKlassObj; }
 
-  static klassOop objectArrayKlassObj() {
+  static Klass* objectArrayKlassObj() {
     return _objectArrayKlassObj;
   }
 
-  static klassOop typeArrayKlassObj(BasicType t) {
+  static Klass* typeArrayKlassObj(BasicType t) {
     assert((uint)t < T_VOID+1, err_msg("range check for type: %s", type2name(t)));
     assert(_typeArrayKlassObjs[t] != NULL, "domain check");
     return _typeArrayKlassObjs[t];
   }
 
-  static klassOop methodKlassObj()                    { return _methodKlassObj;            }
-  static klassOop constMethodKlassObj()               { return _constMethodKlassObj;         }
-  static klassOop methodDataKlassObj()                { return _methodDataKlassObj;        }
-  static klassOop klassKlassObj()                     { return _klassKlassObj;             }
-  static klassOop arrayKlassKlassObj()                { return _arrayKlassKlassObj;        }
-  static klassOop objArrayKlassKlassObj()             { return _objArrayKlassKlassObj;     }
-  static klassOop typeArrayKlassKlassObj()            { return _typeArrayKlassKlassObj;    }
-  static klassOop instanceKlassKlassObj()             { return _instanceKlassKlassObj;     }
-  static klassOop constantPoolKlassObj()              { return _constantPoolKlassObj;      }
-  static klassOop constantPoolCacheKlassObj()         { return _constantPoolCacheKlassObj; }
-  static klassOop compiledICHolderKlassObj()          { return _compiledICHolderKlassObj;  }
-  static klassOop systemObjArrayKlassObj()            { return _systemObjArrayKlassObj;    }
-
   // Known objects in the VM
   static oop int_mirror()                   { return check_mirror(_int_mirror); }
   static oop float_mirror()                 { return check_mirror(_float_mirror); }
@@ -315,22 +313,22 @@
   static oop      system_thread_group()               { return _system_thread_group; }
   static void set_system_thread_group(oop group)      { _system_thread_group = group;}
 
-  static typeArrayOop the_empty_byte_array()          { return _the_empty_byte_array;          }
-  static typeArrayOop the_empty_short_array()         { return _the_empty_short_array;         }
-  static typeArrayOop the_empty_int_array()           { return _the_empty_int_array;           }
-  static objArrayOop  the_empty_system_obj_array ()   { return _the_empty_system_obj_array;    }
   static objArrayOop  the_empty_class_klass_array ()  { return _the_empty_class_klass_array;   }
-  static objArrayOop  the_array_interfaces_array()    { return _the_array_interfaces_array;    }
+  static Array<Klass*>* the_array_interfaces_array() { return _the_array_interfaces_array;   }
   static oop          the_null_string()               { return _the_null_string;               }
   static oop          the_min_jint_string()          { return _the_min_jint_string;          }
-  static methodOop    finalizer_register_method()     { return _finalizer_register_cache->get_methodOop(); }
-  static methodOop    loader_addClass_method()        { return _loader_addClass_cache->get_methodOop(); }
+  static Method*      finalizer_register_method()     { return _finalizer_register_cache->get_Method(); }
   static ActiveMethodOopsCache* reflect_invoke_cache() { return _reflect_invoke_cache; }
   static oop          null_ptr_exception_instance()   { return _null_ptr_exception_instance;   }
   static oop          arithmetic_exception_instance() { return _arithmetic_exception_instance; }
   static oop          virtual_machine_error_instance() { return _virtual_machine_error_instance; }
   static oop          vm_exception()                  { return _vm_exception; }
 
+  static Array<int>*       the_empty_int_array()    { return _the_empty_int_array; }
+  static Array<u2>*        the_empty_short_array()  { return _the_empty_short_array; }
+  static Array<Method*>* the_empty_method_array() { return _the_empty_method_array; }
+  static Array<Klass*>*  the_empty_klass_array()  { return _the_empty_klass_array; }
+
   // OutOfMemoryError support. Returns an error with the required message. The returned error
   // may or may not have a backtrace. If error has a backtrace then the stack trace is already
   // filled in.
@@ -340,15 +338,15 @@
   static oop out_of_memory_error_gc_overhead_limit()  { return gen_out_of_memory_error(_out_of_memory_error_gc_overhead_limit);  }
 
   // Accessors needed for fast allocation
-  static klassOop* boolArrayKlassObj_addr()           { return &_boolArrayKlassObj;   }
-  static klassOop* byteArrayKlassObj_addr()           { return &_byteArrayKlassObj;   }
-  static klassOop* charArrayKlassObj_addr()           { return &_charArrayKlassObj;   }
-  static klassOop* intArrayKlassObj_addr()            { return &_intArrayKlassObj;    }
-  static klassOop* shortArrayKlassObj_addr()          { return &_shortArrayKlassObj;  }
-  static klassOop* longArrayKlassObj_addr()           { return &_longArrayKlassObj;   }
-  static klassOop* singleArrayKlassObj_addr()         { return &_singleArrayKlassObj; }
-  static klassOop* doubleArrayKlassObj_addr()         { return &_doubleArrayKlassObj; }
-  static klassOop* systemObjArrayKlassObj_addr()      { return &_systemObjArrayKlassObj; }
+  static Klass** boolArrayKlassObj_addr()           { return &_boolArrayKlassObj;   }
+  static Klass** byteArrayKlassObj_addr()           { return &_byteArrayKlassObj;   }
+  static Klass** charArrayKlassObj_addr()           { return &_charArrayKlassObj;   }
+  static Klass** intArrayKlassObj_addr()            { return &_intArrayKlassObj;    }
+  static Klass** shortArrayKlassObj_addr()          { return &_shortArrayKlassObj;  }
+  static Klass** longArrayKlassObj_addr()           { return &_longArrayKlassObj;   }
+  static Klass** singleArrayKlassObj_addr()         { return &_singleArrayKlassObj; }
+  static Klass** doubleArrayKlassObj_addr()         { return &_doubleArrayKlassObj; }
+  static Klass** objectArrayKlassObj_addr()         { return &_objectArrayKlassObj; }
 
   // The particular choice of collected heap.
   static CollectedHeap* heap() { return _collectedHeap; }
@@ -358,22 +356,13 @@
   static address  narrow_oop_base()                   { return  _narrow_oop._base; }
   static bool  is_narrow_oop_base(void* addr)         { return (narrow_oop_base() == (address)addr); }
   static int      narrow_oop_shift()                  { return  _narrow_oop._shift; }
-  static void     set_narrow_oop_base(address base)   { _narrow_oop._base  = base; }
+  static bool     narrow_oop_use_implicit_null_checks()             { return  _narrow_oop._use_implicit_null_checks; }
+
+  // this is set in vm_version on sparc (and then reset in universe afaict)
   static void     set_narrow_oop_shift(int shift)     { _narrow_oop._shift = shift; }
-  static bool     narrow_oop_use_implicit_null_checks()             { return  _narrow_oop._use_implicit_null_checks; }
-  static void     set_narrow_oop_use_implicit_null_checks(bool use) { _narrow_oop._use_implicit_null_checks = use; }
-  // Narrow Oop encoding mode:
-  // 0 - Use 32-bits oops without encoding when
-  //     NarrowOopHeapBaseMin + heap_size < 4Gb
-  // 1 - Use zero based compressed oops with encoding when
-  //     NarrowOopHeapBaseMin + heap_size < 32Gb
-  // 2 - Use compressed oops with heap base + encoding.
-  enum NARROW_OOP_MODE {
-    UnscaledNarrowOop  = 0,
-    ZeroBasedNarrowOop = 1,
-    HeapBasedNarrowOop = 2
-  };
-  static char* preferred_heap_base(size_t heap_size, NARROW_OOP_MODE mode);
+
+  // Reserve Java heap and determine CompressedOops mode
+  static ReservedSpace reserve_heap(size_t heap_size, size_t alignment);
 
   // Historic gc information
   static size_t get_heap_capacity_at_last_gc()         { return _heap_capacity_at_last_gc; }
@@ -400,12 +389,12 @@
   // as static fields of "Universe".
   static void oops_do(OopClosure* f, bool do_all = false);
 
+  // CDS support
+  static void serialize(SerializeClosure* f, bool do_all = false);
+
   // Apply "f" to all klasses for basic types (classes not present in
   // SystemDictionary).
-  static void basic_type_classes_do(void f(klassOop));
-
-  // Apply "f" to all system klasses (classes not present in SystemDictionary).
-  static void system_classes_do(void f(klassOop));
+  static void basic_type_classes_do(void f(Klass*));
 
   // For sharing -- fill in a list of known vtable pointers.
   static void init_self_patching_vtbl_list(void** list, int count);
@@ -438,8 +427,6 @@
   static uintptr_t verify_oop_bits()          PRODUCT_RETURN0;
   static uintptr_t verify_mark_bits()         PRODUCT_RETURN0;
   static uintptr_t verify_mark_mask()         PRODUCT_RETURN0;
-  static uintptr_t verify_klass_mask()        PRODUCT_RETURN0;
-  static uintptr_t verify_klass_bits()        PRODUCT_RETURN0;
 
   // Flushing and deoptimization
   static void flush_dependents_on(instanceKlassHandle dependee);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/annotations.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/classLoaderData.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/annotations.hpp"
+#include "oops/instanceKlass.hpp"
+#include "utilities/ostream.hpp"
+
+// Allocate annotations in metadata area
+Annotations* Annotations::allocate(ClassLoaderData* loader_data, TRAPS) {
+  return new (loader_data, size(), true, THREAD) Annotations();
+}
+
+Annotations* Annotations::allocate(ClassLoaderData* loader_data,
+                                   Array<AnnotationArray*>* fa,
+                                   Array<AnnotationArray*>* ma,
+                                   Array<AnnotationArray*>* mpa,
+                                   Array<AnnotationArray*>* mda, TRAPS) {
+  return new (loader_data, size(), true, THREAD) Annotations(fa, ma, mpa, mda);
+}
+
+// helper
+static void free_contents(ClassLoaderData* loader_data, Array<AnnotationArray*>* p) {
+  if (p != NULL) {
+    for (int i = 0; i < p->length(); i++) {
+      MetadataFactory::free_array<u1>(loader_data, p->at(i));
+    }
+    MetadataFactory::free_array<AnnotationArray*>(loader_data, p);
+  }
+}
+
+void Annotations::deallocate_contents(ClassLoaderData* loader_data) {
+  if (class_annotations() != NULL) {
+    MetadataFactory::free_array<u1>(loader_data, class_annotations());
+  }
+  free_contents(loader_data, fields_annotations());
+  free_contents(loader_data, methods_annotations());
+  free_contents(loader_data, methods_parameter_annotations());
+  free_contents(loader_data, methods_default_annotations());
+}
+
+// Set the annotation at 'idnum' to 'anno'.
+// We don't want to create or extend the array if 'anno' is NULL, since that is the
+// default value.  However, if the array exists and is long enough, we must set NULL values.
+void Annotations::set_methods_annotations_of(instanceKlassHandle ik,
+                                             int idnum, AnnotationArray* anno,
+                                             Array<AnnotationArray*>** md_p,
+                                             TRAPS) {
+  Array<AnnotationArray*>* md = *md_p;
+  if (md != NULL && md->length() > idnum) {
+    md->at_put(idnum, anno);
+  } else if (anno != NULL) {
+    // create the array
+    int length = MAX2(idnum+1, (int)ik->idnum_allocated_count());
+    md = MetadataFactory::new_array<AnnotationArray*>(ik->class_loader_data(), length, CHECK);
+    if (*md_p != NULL) {
+      // copy the existing entries
+      for (int index = 0; index < (*md_p)->length(); index++) {
+        md->at_put(index, (*md_p)->at(index));
+      }
+    }
+    set_annotations(md, md_p);
+    md->at_put(idnum, anno);
+  } // if no array and idnum isn't included there is nothing to do
+}
+
+// Keep created annotations in a global growable array (should be hashtable)
+// need to add, search, delete when class is unloaded.
+// Does it need a lock?  yes.  This sucks.
+
+// Copy annotations to JVM call or reflection to the java heap.
+typeArrayOop Annotations::make_java_array(AnnotationArray* annotations, TRAPS) {
+  if (annotations != NULL) {
+    int length = annotations->length();
+    typeArrayOop copy = oopFactory::new_byteArray(length, CHECK_NULL);
+    for (int i = 0; i< length; i++) {
+      copy->byte_at_put(i, annotations->at(i));
+    }
+    return copy;
+  } else {
+    return NULL;
+  }
+}
+
+
+void Annotations::print_value_on(outputStream* st) const {
+  st->print("Anotations(" INTPTR_FORMAT ")", this);
+}
+
+#define BULLET  " - "
+
+#ifndef PRODUCT
+void Annotations::print_on(outputStream* st) const {
+  st->print(BULLET"class_annotations            "); class_annotations()->print_value_on(st);
+  st->print(BULLET"fields_annotations           "); fields_annotations()->print_value_on(st);
+  st->print(BULLET"methods_annotations          "); methods_annotations()->print_value_on(st);
+  st->print(BULLET"methods_parameter_annotations"); methods_parameter_annotations()->print_value_on(st);
+  st->print(BULLET"methods_default_annotations  "); methods_default_annotations()->print_value_on(st);
+}
+#endif // PRODUCT
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/annotations.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_ANNOTATIONS_HPP
+#define SHARE_VM_OOPS_ANNOTATIONS_HPP
+
+#include "oops/metadata.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/array.hpp"
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
+
+
+class ClassLoaderData;
+class outputStream;
+
+typedef Array<u1> AnnotationArray;
+
+// Class to hold the various types of annotations. The only metadata that points
+// to this is InstanceKlass.
+
+class Annotations: public MetaspaceObj {
+
+  // Annotations for this class, or null if none.
+  AnnotationArray*             _class_annotations;
+  // Annotation objects (byte arrays) for fields, or null if no annotations.
+  // Indices correspond to entries (not indices) in fields array.
+  Array<AnnotationArray*>*     _fields_annotations;
+  // Annotation objects (byte arrays) for methods, or null if no annotations.
+  // Index is the idnum, which is initially the same as the methods array index.
+  Array<AnnotationArray*>*     _methods_annotations;
+  // Annotation objects (byte arrays) for methods' parameters, or null if no
+  // such annotations.
+  // Index is the idnum, which is initially the same as the methods array index.
+  Array<AnnotationArray*>*     _methods_parameter_annotations;
+  // Annotation objects (byte arrays) for methods' default values, or null if no
+  // such annotations.
+  // Index is the idnum, which is initially the same as the methods array index.
+  Array<AnnotationArray*>*     _methods_default_annotations;
+
+  // Constructor where some some values are known to not be null
+  Annotations(Array<AnnotationArray*>* fa, Array<AnnotationArray*>* ma,
+              Array<AnnotationArray*>* mpa, Array<AnnotationArray*>* mda) :
+                 _class_annotations(NULL),
+                 _fields_annotations(fa),
+                 _methods_annotations(ma),
+                 _methods_parameter_annotations(mpa),
+                 _methods_default_annotations(mda) {}
+
+ public:
+  // Allocate instance of this class
+  static Annotations* allocate(ClassLoaderData* loader_data, TRAPS);
+  static Annotations* allocate(ClassLoaderData* loader_data,
+                               Array<AnnotationArray*>* fa,
+                               Array<AnnotationArray*>* ma,
+                               Array<AnnotationArray*>* mpa,
+                               Array<AnnotationArray*>* mda, TRAPS);
+  void deallocate_contents(ClassLoaderData* loader_data);
+  DEBUG_ONLY(bool on_stack() { return false; })  // for template
+  static int size()    { return sizeof(Annotations) / wordSize; }
+
+  // Constructor to initialize to null
+  Annotations() : _class_annotations(NULL), _fields_annotations(NULL),
+                  _methods_annotations(NULL),
+                  _methods_parameter_annotations(NULL),
+                  _methods_default_annotations(NULL) {}
+
+  AnnotationArray* class_annotations() const                       { return _class_annotations; }
+  Array<AnnotationArray*>* fields_annotations() const              { return _fields_annotations; }
+  Array<AnnotationArray*>* methods_annotations() const             { return _methods_annotations; }
+  Array<AnnotationArray*>* methods_parameter_annotations() const   { return _methods_parameter_annotations; }
+  Array<AnnotationArray*>* methods_default_annotations() const     { return _methods_default_annotations; }
+
+  void set_class_annotations(AnnotationArray* md)                     { _class_annotations = md; }
+  void set_fields_annotations(Array<AnnotationArray*>* md)            { _fields_annotations = md; }
+  void set_methods_annotations(Array<AnnotationArray*>* md)           { _methods_annotations = md; }
+  void set_methods_parameter_annotations(Array<AnnotationArray*>* md) { _methods_parameter_annotations = md; }
+  void set_methods_default_annotations(Array<AnnotationArray*>* md)   { _methods_default_annotations = md; }
+
+  // Redefine classes support
+  AnnotationArray* get_method_annotations_of(int idnum)
+                                                { return get_method_annotations_from(idnum, _methods_annotations); }
+
+  AnnotationArray* get_method_parameter_annotations_of(int idnum)
+                                                { return get_method_annotations_from(idnum, _methods_parameter_annotations); }
+  AnnotationArray* get_method_default_annotations_of(int idnum)
+                                                { return get_method_annotations_from(idnum, _methods_default_annotations); }
+
+
+  void set_method_annotations_of(instanceKlassHandle ik,
+                                 int idnum, AnnotationArray* anno, TRAPS) {
+    set_methods_annotations_of(ik, idnum, anno, &_methods_annotations, THREAD);
+  }
+
+  void set_method_parameter_annotations_of(instanceKlassHandle ik,
+                                 int idnum, AnnotationArray* anno, TRAPS) {
+    set_methods_annotations_of(ik, idnum, anno, &_methods_parameter_annotations, THREAD);
+  }
+
+  void set_method_default_annotations_of(instanceKlassHandle ik,
+                                 int idnum, AnnotationArray* anno, TRAPS) {
+    set_methods_annotations_of(ik, idnum, anno, &_methods_default_annotations, THREAD);
+  }
+
+  // Turn metadata annotations into a Java heap object (oop)
+  static typeArrayOop make_java_array(AnnotationArray* annotations, TRAPS);
+
+  inline AnnotationArray* get_method_annotations_from(int idnum, Array<AnnotationArray*>* annos);
+  void set_annotations(Array<AnnotationArray*>* md, Array<AnnotationArray*>** md_p)  { *md_p = md; }
+
+ private:
+  void set_methods_annotations_of(instanceKlassHandle ik,
+                                  int idnum, AnnotationArray* anno,
+                                  Array<AnnotationArray*>** md_p, TRAPS);
+
+ public:
+  const char* internal_name() const { return "{constant pool}"; }
+#ifndef PRODUCT
+  void print_on(outputStream* st) const;
+#endif
+  void print_value_on(outputStream* st) const;
+};
+
+
+// For method with idnum get the method's Annotations
+inline AnnotationArray* Annotations::get_method_annotations_from(int idnum, Array<AnnotationArray*>* annos) {
+  if (annos == NULL || annos->length() <= idnum) {
+    return NULL;
+  }
+  return annos->at(idnum);
+}
+#endif // SHARE_VM_OOPS_ANNOTATIONS_HPP
--- a/src/share/vm/oops/arrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/arrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -31,27 +31,27 @@
 #include "memory/gcLocker.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/arrayKlass.hpp"
-#include "oops/arrayKlassKlass.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 
-int arrayKlass::object_size(int header_size) const {
+int arrayKlass::static_size(int header_size) {
   // size of an array klass object
-  assert(header_size <= instanceKlass::header_size(), "bad header size");
+  assert(header_size <= InstanceKlass::header_size(), "bad header size");
   // If this assert fails, see comments in base_create_array_klass.
-  header_size = instanceKlass::header_size();
+  header_size = InstanceKlass::header_size();
+  int vtable_len = Universe::base_vtable_size();
 #ifdef _LP64
-  int size = header_size + align_object_offset(vtable_length());
+  int size = header_size + align_object_offset(vtable_len);
 #else
-  int size = header_size + vtable_length();
+  int size = header_size + vtable_len;
 #endif
   return align_object_size(size);
 }
 
 
-klassOop arrayKlass::java_super() const {
+Klass* arrayKlass::java_super() const {
   if (super() == NULL)  return NULL;  // bootstrap case
   // Array klasses have primary supertypes which are not reported to Java.
   // Example super chain:  String[][] -> Object[][] -> Object[] -> Object
@@ -64,70 +64,48 @@
   return NULL;
 }
 
-methodOop arrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
+Method* arrayKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
   // There are no methods in an array klass but the super class (Object) has some
   assert(super(), "super klass must be present");
   return Klass::cast(super())->uncached_lookup_method(name, signature);
 }
 
+arrayKlass::arrayKlass(Symbol* name) {
+  set_alloc_size(0);
+  set_name(name);
 
-arrayKlassHandle arrayKlass::base_create_array_klass(
-const Klass_vtbl& cplusplus_vtbl, int header_size, KlassHandle klass, TRAPS) {
-  // Allocation
-  // Note: because the Java vtable must start at the same offset in all klasses,
-  // we must insert filler fields into arrayKlass to make it the same size as instanceKlass.
-  // If this assert fails, add filler to instanceKlass to make it bigger.
-  assert(header_size <= instanceKlass::header_size(),
-         "array klasses must be same size as instanceKlass");
-  header_size = instanceKlass::header_size();
+  set_super(Universe::is_bootstrapping() ? (Klass*)NULL : SystemDictionary::Object_klass());
+  set_layout_helper(Klass::_lh_neutral_value);
+  set_dimension(1);
+  set_higher_dimension(NULL);
+  set_lower_dimension(NULL);
+  set_component_mirror(NULL);
   // Arrays don't add any new methods, so their vtable is the same size as
   // the vtable of klass Object.
   int vtable_size = Universe::base_vtable_size();
-  arrayKlassHandle k;
-  KlassHandle base_klass = Klass::base_create_klass(klass,
-                                                 header_size + vtable_size,
-                                                 cplusplus_vtbl, CHECK_(k));
-
-  // No safepoint should be possible until the handle's
-  // target below becomes parsable
-  No_Safepoint_Verifier no_safepoint;
-  k = arrayKlassHandle(THREAD, base_klass());
-
-  assert(!k()->is_parsable(), "not expecting parsability yet.");
-  k->set_super(Universe::is_bootstrapping() ? (klassOop)NULL : SystemDictionary::Object_klass());
-  k->set_layout_helper(Klass::_lh_neutral_value);
-  k->set_dimension(1);
-  k->set_higher_dimension(NULL);
-  k->set_lower_dimension(NULL);
-  k->set_component_mirror(NULL);
-  k->set_vtable_length(vtable_size);
-  k->set_is_cloneable(); // All arrays are considered to be cloneable (See JLS 20.1.5)
-
-  assert(k()->is_parsable(), "should be parsable here.");
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size + vtable_size), "wrong size for object");
-
-  return k;
+  set_vtable_length(vtable_size);
+  set_is_cloneable(); // All arrays are considered to be cloneable (See JLS 20.1.5)
 }
 
 
 // Initialization of vtables and mirror object is done separatly from base_create_array_klass,
 // since a GC can happen. At this point all instance variables of the arrayKlass must be setup.
-void arrayKlass::complete_create_array_klass(arrayKlassHandle k, KlassHandle super_klass, TRAPS) {
+void arrayKlass::complete_create_array_klass(arrayKlass* k, KlassHandle super_klass, TRAPS) {
   ResourceMark rm(THREAD);
   k->initialize_supers(super_klass(), CHECK);
   k->vtable()->initialize_vtable(false, CHECK);
   java_lang_Class::create_mirror(k, CHECK);
 }
 
-objArrayOop arrayKlass::compute_secondary_supers(int num_extra_slots, TRAPS) {
+GrowableArray<Klass*>* arrayKlass::compute_secondary_supers(int num_extra_slots) {
   // interfaces = { cloneable_klass, serializable_klass };
   assert(num_extra_slots == 0, "sanity of primitive array type");
   // Must share this for correct bootstrapping!
-  return Universe::the_array_interfaces_array();
+  set_secondary_supers(Universe::the_array_interfaces_array());
+  return NULL;
 }
 
-bool arrayKlass::compute_is_subtype_of(klassOop k) {
+bool arrayKlass::compute_is_subtype_of(Klass* k) {
   // An array is a subtype of Serializable, Clonable, and Object
   return    k == SystemDictionary::Object_klass()
          || k == SystemDictionary::Cloneable_klass()
@@ -136,13 +114,13 @@
 
 
 inline intptr_t* arrayKlass::start_of_vtable() const {
-  // all vtables start at the same place, that's why we use instanceKlass::header_size here
-  return ((intptr_t*)as_klassOop()) + instanceKlass::header_size();
+  // all vtables start at the same place, that's why we use InstanceKlass::header_size here
+  return ((intptr_t*)this) + InstanceKlass::header_size();
 }
 
 
 klassVtable* arrayKlass::vtable() const {
-  KlassHandle kh(Thread::current(), as_klassOop());
+  KlassHandle kh(Thread::current(), this);
   return new klassVtable(kh, start_of_vtable(), vtable_length() / vtableEntry::size());
 }
 
@@ -157,17 +135,25 @@
     THROW_OOP_0(Universe::out_of_memory_error_array_size());
   }
   int size = objArrayOopDesc::object_size(length);
-  klassOop k = array_klass(n+dimension(), CHECK_0);
-  arrayKlassHandle ak (THREAD, k);
+  Klass* k = array_klass(n+dimension(), CHECK_0);
+  arrayKlass* ak = arrayKlass::cast(k);
   objArrayOop o =
     (objArrayOop)CollectedHeap::array_allocate(ak, size, length, CHECK_0);
   // initialization to NULL not necessary, area already cleared
   return o;
 }
 
+void arrayKlass::array_klasses_do(void f(Klass* k, TRAPS), TRAPS) {
+  Klass* k = this;
+  // Iterate over this array klass and all higher dimensions
+  while (k != NULL) {
+    f(k, CHECK);
+    k = arrayKlass::cast(k)->higher_dimension();
+  }
+}
 
-void arrayKlass::array_klasses_do(void f(klassOop k)) {
-  klassOop k = as_klassOop();
+void arrayKlass::array_klasses_do(void f(Klass* k)) {
+  Klass* k = this;
   // Iterate over this array klass and all higher dimensions
   while (k != NULL) {
     f(k);
@@ -176,10 +162,19 @@
 }
 
 
-void arrayKlass::with_array_klasses_do(void f(klassOop k)) {
+void arrayKlass::with_array_klasses_do(void f(Klass* k)) {
   array_klasses_do(f);
 }
 
+
+// GC support
+
+void arrayKlass::oops_do(OopClosure* cl) {
+  Klass::oops_do(cl);
+
+  cl->do_oop(adr_component_mirror());
+}
+
 // JVM support
 
 jint arrayKlass::compute_modifier_flags(TRAPS) const {
@@ -192,16 +187,48 @@
   return JVMTI_CLASS_STATUS_ARRAY;
 }
 
+void arrayKlass::remove_unshareable_info() {
+  Klass::remove_unshareable_info();
+  // Clear the java mirror
+  set_component_mirror(NULL);
+}
+
+void arrayKlass::restore_unshareable_info(TRAPS) {
+  Klass::restore_unshareable_info(CHECK);
+  // Klass recreates the component mirror also
+}
+
 // Printing
 
+void arrayKlass::print_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+  Klass::print_on(st);
+}
+
+void arrayKlass::print_value_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+  for(int index = 0; index < dimension(); index++) {
+    st->print("[]");
+  }
+}
+
 void arrayKlass::oop_print_on(oop obj, outputStream* st) {
   assert(obj->is_array(), "must be array");
   Klass::oop_print_on(obj, st);
   st->print_cr(" - length: %d", arrayOop(obj)->length());
 }
 
+
 // Verification
 
+void arrayKlass::verify_on(outputStream* st) {
+  Klass::verify_on(st);
+
+  if (component_mirror() != NULL) {
+    guarantee(component_mirror()->klass() != NULL, "should have a class");
+  }
+}
+
 void arrayKlass::oop_verify_on(oop obj, outputStream* st) {
   guarantee(obj->is_array(), "must be array");
   arrayOop a = arrayOop(obj);
--- a/src/share/vm/oops/arrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/arrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -27,8 +27,8 @@
 
 #include "memory/universe.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/klassVtable.hpp"
+
+class klassVtable;
 
 // arrayKlass is the abstract baseclass for all array classes
 
@@ -36,27 +36,34 @@
   friend class VMStructs;
  private:
   int      _dimension;         // This is n'th-dimensional array.
-  volatile klassOop _higher_dimension;  // Refers the (n+1)'th-dimensional array (if present).
-  volatile klassOop _lower_dimension;   // Refers the (n-1)'th-dimensional array (if present).
+  Klass* volatile _higher_dimension;  // Refers the (n+1)'th-dimensional array (if present).
+  Klass* volatile _lower_dimension;   // Refers the (n-1)'th-dimensional array (if present).
   int      _vtable_len;        // size of vtable for this klass
   juint    _alloc_size;        // allocation profiling support
   oop      _component_mirror;  // component type, as a java/lang/Class
 
+ protected:
+  // Constructors
+  // The constructor with the Symbol argument does the real array
+  // initialization, the other is a dummy
+  arrayKlass(Symbol* name);
+  arrayKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for cds"); }
+
  public:
   // Testing operation
-  bool oop_is_array() const { return true; }
+  bool oop_is_array_slow() const { return true; }
 
   // Instance variables
   int dimension() const                 { return _dimension;      }
   void set_dimension(int dimension)     { _dimension = dimension; }
 
-  klassOop higher_dimension() const     { return _higher_dimension; }
-  void set_higher_dimension(klassOop k) { oop_store_without_check((oop*) &_higher_dimension, (oop) k); }
-  oop* adr_higher_dimension()           { return (oop*)&this->_higher_dimension;}
+  Klass* higher_dimension() const     { return _higher_dimension; }
+  void set_higher_dimension(Klass* k) { _higher_dimension = k; }
+  Klass** adr_higher_dimension()      { return (Klass**)&this->_higher_dimension;}
 
-  klassOop lower_dimension() const      { return _lower_dimension; }
-  void set_lower_dimension(klassOop k)  { oop_store_without_check((oop*) &_lower_dimension, (oop) k); }
-  oop* adr_lower_dimension()            { return (oop*)&this->_lower_dimension;}
+  Klass* lower_dimension() const      { return _lower_dimension; }
+  void set_lower_dimension(Klass* k)  { _lower_dimension = k; }
+  Klass** adr_lower_dimension()       { return (Klass**)&this->_lower_dimension;}
 
   // Allocation profiling support
   juint alloc_size() const              { return _alloc_size; }
@@ -69,13 +76,13 @@
   BasicType element_type() const        { return layout_helper_element_type(layout_helper()); }
 
   oop  component_mirror() const         { return _component_mirror; }
-  void set_component_mirror(oop m)      { oop_store((oop*) &_component_mirror, m); }
+  void set_component_mirror(oop m)      { klass_oop_store(&_component_mirror, m); }
   oop* adr_component_mirror()           { return (oop*)&this->_component_mirror;}
 
   // Compiler/Interpreter offset
-  static ByteSize component_mirror_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(arrayKlass, _component_mirror)); }
+  static ByteSize component_mirror_offset() { return in_ByteSize(offset_of(arrayKlass, _component_mirror)); }
 
-  virtual klassOop java_super() const;//{ return SystemDictionary::Object_klass(); }
+  virtual Klass* java_super() const;//{ return SystemDictionary::Object_klass(); }
 
   // Allocation
   // Sizes points to the first dimension of the array, subsequent dimensions
@@ -84,23 +91,20 @@
   objArrayOop allocate_arrayArray(int n, int length, TRAPS);
 
   // Lookup operations
-  methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
+  Method* uncached_lookup_method(Symbol* name, Symbol* signature) const;
 
-  // Casting from klassOop
-  static arrayKlass* cast(klassOop k) {
-    Klass* kp = k->klass_part();
-    assert(kp->null_vtbl() || kp->oop_is_array(), "cast to arrayKlass");
-    return (arrayKlass*) kp;
+  // Casting from Klass*
+  static arrayKlass* cast(Klass* k) {
+    assert(k->oop_is_array(), "cast to arrayKlass");
+    return (arrayKlass*) k;
   }
 
-  objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
-  bool compute_is_subtype_of(klassOop k);
+  GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
+  bool compute_is_subtype_of(Klass* k);
 
   // Sizing
-  static int header_size()                 { return oopDesc::header_size() + sizeof(arrayKlass)/HeapWordSize; }
-  int object_size(int header_size) const;
-
-  bool object_is_parsable() const          { return _vtable_len > 0; }
+  static int header_size()                 { return sizeof(arrayKlass)/HeapWordSize; }
+  static int static_size(int header_size);
 
   // Java vtable
   klassVtable* vtable() const;             // return new klassVtable
@@ -112,16 +116,16 @@
 
  public:
   // Iterators
-  void array_klasses_do(void f(klassOop k));
-  void with_array_klasses_do(void f(klassOop k));
+  void array_klasses_do(void f(Klass* k));
+  void array_klasses_do(void f(Klass* k, TRAPS), TRAPS);
+  void with_array_klasses_do(void f(Klass* k));
 
-  // Shared creation method
-  static arrayKlassHandle base_create_array_klass(
-                                          const Klass_vtbl& vtbl,
-                                          int header_size, KlassHandle klass,
-                                          TRAPS);
+  // GC support
+  virtual void oops_do(OopClosure* cl);
+
   // Return a handle.
-  static void     complete_create_array_klass(arrayKlassHandle k, KlassHandle super_klass, TRAPS);
+  static void     complete_create_array_klass(arrayKlass* k, KlassHandle super_klass, TRAPS);
+
 
   // jvm support
   jint compute_modifier_flags(TRAPS) const;
@@ -129,10 +133,19 @@
   // JVMTI support
   jint jvmti_class_status() const;
 
+  // CDS support - remove and restore oops from metadata. Oops are not shared.
+  virtual void remove_unshareable_info();
+  virtual void restore_unshareable_info(TRAPS);
+
   // Printing
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
   void oop_print_on(oop obj, outputStream* st);
 
   // Verification
+  void verify_on(outputStream* st);
+
   void oop_verify_on(oop obj, outputStream* st);
 };
 
--- a/src/share/vm/oops/arrayKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 1997, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "oops/arrayKlassKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/handles.inline.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-
-klassOop arrayKlassKlass::create_klass(TRAPS) {
-  arrayKlassKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror, make links
-  return k();
-}
-
-bool arrayKlassKlass::oop_is_parsable(oop obj) const {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  return (!ak->null_vtbl()) && ak->object_is_parsable();
-}
-
-void arrayKlassKlass::oop_follow_contents(oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  MarkSweep::mark_and_push(ak->adr_component_mirror());
-  MarkSweep::mark_and_push(ak->adr_lower_dimension());
-  MarkSweep::mark_and_push(ak->adr_higher_dimension());
-  {
-    HandleMark hm;
-    ak->vtable()->oop_follow_contents();
-  }
-  klassKlass::oop_follow_contents(obj);
-}
-
-#ifndef SERIALGC
-void arrayKlassKlass::oop_follow_contents(ParCompactionManager* cm,
-                                          oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  PSParallelCompact::mark_and_push(cm, ak->adr_component_mirror());
-  PSParallelCompact::mark_and_push(cm, ak->adr_lower_dimension());
-  PSParallelCompact::mark_and_push(cm, ak->adr_higher_dimension());
-  {
-    HandleMark hm;
-    ak->vtable()->oop_follow_contents(cm);
-  }
-  klassKlass::oop_follow_contents(cm, obj);
-}
-#endif // SERIALGC
-
-
-int arrayKlassKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  MarkSweep::adjust_pointer(ak->adr_component_mirror());
-  MarkSweep::adjust_pointer(ak->adr_lower_dimension());
-  MarkSweep::adjust_pointer(ak->adr_higher_dimension());
-  {
-    HandleMark hm;
-    ak->vtable()->oop_adjust_pointers();
-  }
-  return klassKlass::oop_adjust_pointers(obj);
-}
-
-
-int arrayKlassKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  blk->do_oop(ak->adr_component_mirror());
-  blk->do_oop(ak->adr_lower_dimension());
-  blk->do_oop(ak->adr_higher_dimension());
-  ak->vtable()->oop_oop_iterate(blk);
-  return klassKlass::oop_oop_iterate(obj, blk);
-}
-
-
-int arrayKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  oop* addr = ak->adr_component_mirror();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = ak->adr_lower_dimension();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = ak->adr_higher_dimension();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  ak->vtable()->oop_oop_iterate_m(blk, mr);
-  return klassKlass::oop_oop_iterate_m(obj, blk, mr);
-}
-
-#ifndef SERIALGC
-void arrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->blueprint()->oop_is_arrayKlass(),"must be an array klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  oop* p = ak->adr_component_mirror();
-  if (PSScavenge::should_scavenge(p)) {
-    pm->claim_or_forward_depth(p);
-  }
-  klassKlass::oop_push_contents(pm, obj);
-}
-
-int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  PSParallelCompact::adjust_pointer(ak->adr_component_mirror());
-  PSParallelCompact::adjust_pointer(ak->adr_lower_dimension());
-  PSParallelCompact::adjust_pointer(ak->adr_higher_dimension());
-  {
-    HandleMark hm;
-    ak->vtable()->oop_update_pointers(cm);
-  }
-  return klassKlass::oop_update_pointers(cm, obj);
-}
-#endif // SERIALGC
-
-// Printing
-
-void arrayKlassKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  klassKlass::oop_print_on(obj, st);
-}
-
-void arrayKlassKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  for(int index = 0; index < ak->dimension(); index++) {
-    st->print("[]");
-  }
-}
-
-
-const char* arrayKlassKlass::internal_name() const {
-  return "{array class}";
-}
-
-void arrayKlassKlass::oop_verify_on(oop obj, outputStream* st) {
-  klassKlass::oop_verify_on(obj, st);
-
-  arrayKlass* ak = arrayKlass::cast(klassOop(obj));
-  if (!obj->partially_loaded()) {
-    if (ak->component_mirror() != NULL)
-      guarantee(ak->component_mirror()->klass(), "should have a class");
-    if (ak->lower_dimension() != NULL)
-      guarantee(ak->lower_dimension()->klass(), "should have a class");
-    if (ak->higher_dimension() != NULL)
-      guarantee(ak->higher_dimension()->klass(), "should have a class");
-  }
-}
--- a/src/share/vm/oops/arrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
-#define SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
-
-#include "oops/arrayKlass.hpp"
-#include "oops/klassKlass.hpp"
-
-// arrayKlassKlass is the abstract baseclass for all array class classes
-
-class arrayKlassKlass : public klassKlass {
- public:
-   // Testing
-  bool oop_is_arrayKlass() const { return true; }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(arrayKlassKlass);
-  static klassOop create_klass(TRAPS);
-
-  // Casting from klassOop
-  static arrayKlassKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_klass(), "cast to arrayKlassKlass");
-    return (arrayKlassKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()      { return oopDesc::header_size() + sizeof(arrayKlassKlass)/HeapWordSize; }
-  int object_size() const       { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int oop_adjust_pointers(oop obj);
-  bool oop_is_parsable(oop obj) const;
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on(oop obj, outputStream* st);
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-};
-
-#endif // SHARE_VM_OOPS_ARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/arrayOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/arrayOop.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -35,7 +35,7 @@
 // The layout of array Oops is:
 //
 //  markOop
-//  klassOop  // 32 bits if compressed but declared 64 in LP64.
+//  Klass*    // 32 bits if compressed but declared 64 in LP64.
 //  length    // shares klass memory or allocated after declared fields.
 
 
@@ -65,7 +65,7 @@
   // declared nonstatic fields in arrayOopDesc if not compressed, otherwise
   // it occupies the second half of the _klass field in oopDesc.
   static int length_offset_in_bytes() {
-    return UseCompressedOops ? klass_gap_offset_in_bytes() :
+    return UseCompressedKlassPointers ? klass_gap_offset_in_bytes() :
                                sizeof(arrayOopDesc);
   }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/compiledICHolder.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 1998, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "oops/compiledICHolder.hpp"
+#include "oops/klass.hpp"
+#include "oops/method.hpp"
+#include "oops/oop.inline2.hpp"
+
+volatile int CompiledICHolder::_live_count;
+volatile int CompiledICHolder::_live_not_claimed_count;
+
+
+// Printing
+
+void CompiledICHolder::print_on(outputStream* st) const {
+  st->print("%s", internal_name());
+  st->print(" - method: "); holder_method()->print_value_on(st); st->cr();
+  st->print(" - klass:  "); holder_klass()->print_value_on(st); st->cr();
+}
+
+void CompiledICHolder::print_value_on(outputStream* st) const {
+  st->print("%s", internal_name());
+}
+
+
+// Verification
+
+void CompiledICHolder::verify_on(outputStream* st) {
+  guarantee(holder_method()->is_metadata(),   "should be in permspace");
+  guarantee(holder_method()->is_method(), "should be method");
+  guarantee(holder_klass()->is_metadata(),    "should be in permspace");
+  guarantee(holder_klass()->is_klass(),   "should be klass");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/compiledICHolder.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 1998, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
+#define SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
+
+#include "oops/oop.hpp"
+
+// A CompiledICHolder* is a helper object for the inline cache implementation.
+// It holds an intermediate value (method+klass pair) used when converting from
+// compiled to an interpreted call.
+//
+// These are always allocated in the C heap and are freed during a
+// safepoint by the ICBuffer logic.  It's unsafe to free them earlier
+// since they might be in use.
+//
+
+
+class CompiledICHolder : public CHeapObj<mtCompiler> {
+  friend class VMStructs;
+ private:
+  static volatile int _live_count; // allocated
+  static volatile int _live_not_claimed_count; // allocated but not yet in use so not
+                                               // reachable by iterating over nmethods
+
+  Method* _holder_method;
+  Klass*    _holder_klass;    // to avoid name conflict with oopDesc::_klass
+  CompiledICHolder* _next;
+
+ public:
+  // Constructor
+  CompiledICHolder(Method* method, Klass* klass)
+      : _holder_method(method), _holder_klass(klass) {
+#ifdef ASSERT
+    Atomic::inc(&_live_count);
+    Atomic::inc(&_live_not_claimed_count);
+#endif
+  }
+
+  ~CompiledICHolder() {
+#ifdef ASSERT
+    assert(_live_count > 0, "underflow");
+    Atomic::dec(&_live_count);
+#endif
+  }
+
+  static int live_count() { return _live_count; }
+  static int live_not_claimed_count() { return _live_not_claimed_count; }
+
+  // accessors
+  Method* holder_method() const     { return _holder_method; }
+  Klass*    holder_klass()  const     { return _holder_klass; }
+
+  void set_holder_method(Method* m) { _holder_method = m; }
+  void set_holder_klass(Klass* k)   { _holder_klass = k; }
+
+  // interpreter support (offsets in bytes)
+  static int holder_method_offset()   { return offset_of(CompiledICHolder, _holder_method); }
+  static int holder_klass_offset()    { return offset_of(CompiledICHolder, _holder_klass); }
+
+  CompiledICHolder* next()     { return _next; }
+  void set_next(CompiledICHolder* n) { _next = n; }
+
+  // Verify
+  void verify_on(outputStream* st);
+
+  // Printing
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
+  const char* internal_name() const { return "{compiledICHolder}"; }
+
+  void claim() {
+#ifdef ASSERT
+    Atomic::dec(&_live_not_claimed_count);
+#endif
+  }
+};
+
+#endif // SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
--- a/src/share/vm/oops/compiledICHolderKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1998, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/permGen.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/compiledICHolderKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "runtime/handles.inline.hpp"
-#ifndef SERIALGC
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-klassOop compiledICHolderKlass::create_klass(TRAPS) {
-  compiledICHolderKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-
-compiledICHolderOop compiledICHolderKlass::allocate(TRAPS) {
-  KlassHandle h_k(THREAD, as_klassOop());
-  int size = compiledICHolderOopDesc::object_size();
-  compiledICHolderOop c = (compiledICHolderOop)
-    CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL);
-  c->set_holder_method(NULL);
-  c->set_holder_klass(NULL);
-  return c;
-}
-
-
-int compiledICHolderKlass::oop_size(oop obj) const {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  return compiledICHolderOop(obj)->object_size();
-}
-
-void compiledICHolderKlass::oop_follow_contents(oop obj) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-
-  obj->follow_header();
-  MarkSweep::mark_and_push(c->adr_holder_method());
-  MarkSweep::mark_and_push(c->adr_holder_klass());
-}
-
-#ifndef SERIALGC
-void compiledICHolderKlass::oop_follow_contents(ParCompactionManager* cm,
-                                                oop obj) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-
-  obj->follow_header(cm);
-  PSParallelCompact::mark_and_push(cm, c->adr_holder_method());
-  PSParallelCompact::mark_and_push(cm, c->adr_holder_klass());
-}
-#endif // SERIALGC
-
-
-int compiledICHolderKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = c->object_size();
-
-  obj->oop_iterate_header(blk);
-  blk->do_oop(c->adr_holder_method());
-  blk->do_oop(c->adr_holder_klass());
-  return size;
-}
-
-int compiledICHolderKlass::oop_oop_iterate_m(oop obj, OopClosure* blk,
-                                              MemRegion mr) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = c->object_size();
-
-  obj->oop_iterate_header(blk, mr);
-
-  oop* adr;
-  adr = c->adr_holder_method();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = c->adr_holder_klass();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  return size;
-}
-
-
-int compiledICHolderKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = c->object_size();
-
-  MarkSweep::adjust_pointer(c->adr_holder_method());
-  MarkSweep::adjust_pointer(c->adr_holder_klass());
-  obj->adjust_header();
-  return size;
-}
-
-#ifndef SERIALGC
-void compiledICHolderKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-}
-
-int compiledICHolderKlass::oop_update_pointers(ParCompactionManager* cm,
-                                               oop obj) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-
-  PSParallelCompact::adjust_pointer(c->adr_holder_method());
-  PSParallelCompact::adjust_pointer(c->adr_holder_klass());
-  return c->object_size();
-}
-#endif // SERIALGC
-
-// Printing
-
-void compiledICHolderKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  Klass::oop_print_on(obj, st);
-  compiledICHolderOop c = compiledICHolderOop(obj);
-  st->print(" - method: "); c->holder_method()->print_value_on(st); st->cr();
-  st->print(" - klass:  "); c->holder_klass()->print_value_on(st); st->cr();
-}
-
-void compiledICHolderKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_compiledICHolder(), "must be compiledICHolder");
-  Klass::oop_print_value_on(obj, st);
-}
-
-const char* compiledICHolderKlass::internal_name() const {
-  return "{compiledICHolder}";
-}
-
-// Verification
-
-void compiledICHolderKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_compiledICHolder(), "must be compiledICHolder");
-  compiledICHolderOop c = compiledICHolderOop(obj);
-  guarantee(c->is_perm(),             "should be in permspace");
-  guarantee(c->holder_method()->is_perm(),   "should be in permspace");
-  guarantee(c->holder_method()->is_method(), "should be method");
-  guarantee(c->holder_klass()->is_perm(),    "should be in permspace");
-  guarantee(c->holder_klass()->is_klass(),   "should be klass");
-}
--- a/src/share/vm/oops/compiledICHolderKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
- * Copyright (c) 1998, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
-#define SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
-
-#include "oops/compiledICHolderOop.hpp"
-#include "oops/klass.hpp"
-#include "oops/methodOop.hpp"
-
-class CMSIsAliveClosure;
-
-// a compiledICHolderKlass is the klass of a compiledICHolderOop
-
-class compiledICHolderKlass : public Klass {
-  friend class VMStructs;
- private:
-  juint    _alloc_size;        // allocation profiling support
- public:
-  // Testing
-  bool oop_is_compiledICHolder() const { return true; }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(compiledICHolderKlass);
-  compiledICHolderOop allocate(TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Sizing
-  int oop_size(oop obj) const;
-  int klass_oop_size() const     { return object_size(); }
-
-  // Casting from klassOop
-  static compiledICHolderKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_compiledICHolder(), "cast to compiledICHolderKlass");
-    return (compiledICHolderKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()       { return oopDesc::header_size() + sizeof(compiledICHolderKlass)/HeapWordSize; }
-  int object_size() const        { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Iterators
-  int  oop_oop_iterate(oop obj, OopClosure* blk);
-  int  oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on      (oop obj, outputStream* st);
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-
-};
-
-#endif // SHARE_VM_OOPS_COMPILEDICHOLDERKLASS_HPP
--- a/src/share/vm/oops/compiledICHolderOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 1998, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "oops/compiledICHolderOop.hpp"
-
-// <<this page is intentionally left blank>>
--- a/src/share/vm/oops/compiledICHolderOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 1998, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
-#define SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
-
-#include "oops/oop.hpp"
-
-// A compiledICHolderOop is a helper object for the inline cache implementation.
-// It holds an intermediate value (method+klass pair) used when converting from
-// compiled to an interpreted call.
-//
-// compiledICHolderOops are always allocated permanent (to avoid traversing the
-// codeCache during scavenge).
-
-
-class compiledICHolderOopDesc : public oopDesc {
-  friend class VMStructs;
- private:
-  methodOop _holder_method;
-  klassOop  _holder_klass;    // to avoid name conflict with oopDesc::_klass
- public:
-  // accessors
-  methodOop holder_method() const     { return _holder_method; }
-  klassOop  holder_klass()  const     { return _holder_klass; }
-
-  void set_holder_method(methodOop m) { oop_store_without_check((oop*)&_holder_method, (oop)m); }
-  void set_holder_klass(klassOop k)   { oop_store_without_check((oop*)&_holder_klass, (oop)k); }
-
-  static int header_size()            { return sizeof(compiledICHolderOopDesc)/HeapWordSize; }
-  static int object_size()            { return align_object_size(header_size()); }
-
-  // interpreter support (offsets in bytes)
-  static int holder_method_offset()   { return offset_of(compiledICHolderOopDesc, _holder_method); }
-  static int holder_klass_offset()    { return offset_of(compiledICHolderOopDesc, _holder_klass); }
-
-  // GC support
-  oop* adr_holder_method() const      { return (oop*)&_holder_method; }
-  oop* adr_holder_klass() const       { return (oop*)&_holder_klass; }
-};
-
-#endif // SHARE_VM_OOPS_COMPILEDICHOLDEROOP_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/constMethod.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) 2003, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "interpreter/interpreter.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/metadataFactory.hpp"
+#include "oops/constMethod.hpp"
+#include "oops/method.hpp"
+
+// Static initialization
+const u2 ConstMethod::MAX_IDNUM   = 0xFFFE;
+const u2 ConstMethod::UNSET_IDNUM = 0xFFFF;
+
+ConstMethod* ConstMethod::allocate(ClassLoaderData* loader_data,
+                                            int byte_code_size,
+                                            int compressed_line_number_size,
+                                            int localvariable_table_length,
+                                            int exception_table_length,
+                                            int checked_exceptions_length,
+                                            TRAPS) {
+  int size = ConstMethod::size(byte_code_size,
+                                      compressed_line_number_size,
+                                      localvariable_table_length,
+                                      exception_table_length,
+                                      checked_exceptions_length);
+  return new (loader_data, size, true, THREAD) ConstMethod(
+                       byte_code_size, compressed_line_number_size,
+                       localvariable_table_length, exception_table_length,
+                       checked_exceptions_length, size);
+}
+
+ConstMethod::ConstMethod(int byte_code_size,
+                                       int compressed_line_number_size,
+                                       int localvariable_table_length,
+                                       int exception_table_length,
+                                       int checked_exceptions_length,
+                                       int size) {
+
+  No_Safepoint_Verifier no_safepoint;
+  set_interpreter_kind(Interpreter::invalid);
+  init_fingerprint();
+  set_constants(NULL);
+  set_stackmap_data(NULL);
+  set_code_size(byte_code_size);
+  set_constMethod_size(size);
+  set_inlined_tables_length(checked_exceptions_length,
+                            compressed_line_number_size,
+                            localvariable_table_length,
+                            exception_table_length);
+  assert(this->size() == size, "wrong size for object");
+}
+
+
+// Deallocate metadata fields associated with ConstMethod*
+void ConstMethod::deallocate_contents(ClassLoaderData* loader_data) {
+  set_interpreter_kind(Interpreter::invalid);
+  if (stackmap_data() != NULL) {
+    MetadataFactory::free_array<u1>(loader_data, stackmap_data());
+  }
+  set_stackmap_data(NULL);
+}
+
+// How big must this constMethodObject be?
+
+int ConstMethod::size(int code_size,
+                                    int compressed_line_number_size,
+                                    int local_variable_table_length,
+                                    int exception_table_length,
+                                    int checked_exceptions_length) {
+  int extra_bytes = code_size;
+  if (compressed_line_number_size > 0) {
+    extra_bytes += compressed_line_number_size;
+  }
+  if (checked_exceptions_length > 0) {
+    extra_bytes += sizeof(u2);
+    extra_bytes += checked_exceptions_length * sizeof(CheckedExceptionElement);
+  }
+  if (local_variable_table_length > 0) {
+    extra_bytes += sizeof(u2);
+    extra_bytes +=
+              local_variable_table_length * sizeof(LocalVariableTableElement);
+  }
+  if (exception_table_length > 0) {
+    extra_bytes += sizeof(u2);
+    extra_bytes += exception_table_length * sizeof(ExceptionTableElement);
+  }
+  int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord;
+  return align_object_size(header_size() + extra_words);
+}
+
+Method* ConstMethod::method() const {
+    return InstanceKlass::cast(_constants->pool_holder())->method_with_idnum(
+                               _method_idnum);
+  }
+
+// linenumber table - note that length is unknown until decompression,
+// see class CompressedLineNumberReadStream.
+
+u_char* ConstMethod::compressed_linenumber_table() const {
+  // Located immediately following the bytecodes.
+  assert(has_linenumber_table(), "called only if table is present");
+  return code_end();
+}
+
+u2* ConstMethod::checked_exceptions_length_addr() const {
+  // Located at the end of the constMethod.
+  assert(has_checked_exceptions(), "called only if table is present");
+  return last_u2_element();
+}
+
+u2* ConstMethod::exception_table_length_addr() const {
+  assert(has_exception_handler(), "called only if table is present");
+  if (has_checked_exceptions()) {
+    // If checked_exception present, locate immediately before them.
+    return (u2*) checked_exceptions_start() - 1;
+  } else {
+    // Else, the exception table is at the end of the constMethod.
+    return last_u2_element();
+  }
+}
+
+u2* ConstMethod::localvariable_table_length_addr() const {
+  assert(has_localvariable_table(), "called only if table is present");
+  if (has_exception_handler()) {
+    // If exception_table present, locate immediately before them.
+    return (u2*) exception_table_start() - 1;
+  } else {
+    if (has_checked_exceptions()) {
+      // If checked_exception present, locate immediately before them.
+      return (u2*) checked_exceptions_start() - 1;
+    } else {
+      // Else, the linenumber table is at the end of the constMethod.
+      return last_u2_element();
+    }
+  }
+}
+
+
+// Update the flags to indicate the presence of these optional fields.
+void ConstMethod::set_inlined_tables_length(
+                                              int checked_exceptions_len,
+                                              int compressed_line_number_size,
+                                              int localvariable_table_len,
+                                              int exception_table_len) {
+  // Must be done in the order below, otherwise length_addr accessors
+  // will not work. Only set bit in header if length is positive.
+  assert(_flags == 0, "Error");
+  if (compressed_line_number_size > 0) {
+    _flags |= _has_linenumber_table;
+  }
+  if (checked_exceptions_len > 0) {
+    _flags |= _has_checked_exceptions;
+    *(checked_exceptions_length_addr()) = checked_exceptions_len;
+  }
+  if (exception_table_len > 0) {
+    _flags |= _has_exception_table;
+    *(exception_table_length_addr()) = exception_table_len;
+  }
+  if (localvariable_table_len > 0) {
+    _flags |= _has_localvariable_table;
+    *(localvariable_table_length_addr()) = localvariable_table_len;
+  }
+}
+
+
+int ConstMethod::checked_exceptions_length() const {
+  return has_checked_exceptions() ? *(checked_exceptions_length_addr()) : 0;
+}
+
+
+CheckedExceptionElement* ConstMethod::checked_exceptions_start() const {
+  u2* addr = checked_exceptions_length_addr();
+  u2 length = *addr;
+  assert(length > 0, "should only be called if table is present");
+  addr -= length * sizeof(CheckedExceptionElement) / sizeof(u2);
+  return (CheckedExceptionElement*) addr;
+}
+
+
+int ConstMethod::localvariable_table_length() const {
+  return has_localvariable_table() ? *(localvariable_table_length_addr()) : 0;
+}
+
+
+LocalVariableTableElement* ConstMethod::localvariable_table_start() const {
+  u2* addr = localvariable_table_length_addr();
+  u2 length = *addr;
+  assert(length > 0, "should only be called if table is present");
+  addr -= length * sizeof(LocalVariableTableElement) / sizeof(u2);
+  return (LocalVariableTableElement*) addr;
+}
+
+int ConstMethod::exception_table_length() const {
+  return has_exception_handler() ? *(exception_table_length_addr()) : 0;
+}
+
+ExceptionTableElement* ConstMethod::exception_table_start() const {
+  u2* addr = exception_table_length_addr();
+  u2 length = *addr;
+  assert(length > 0, "should only be called if table is present");
+  addr -= length * sizeof(ExceptionTableElement) / sizeof(u2);
+  return (ExceptionTableElement*)addr;
+}
+
+
+// Printing
+
+void ConstMethod::print_on(outputStream* st) const {
+  ResourceMark rm;
+  assert(is_constMethod(), "must be constMethod");
+  st->print_cr(internal_name());
+  st->print(" - method:       " INTPTR_FORMAT " ", (address)method());
+  method()->print_value_on(st); st->cr();
+  if (has_stackmap_table()) {
+    st->print(" - stackmap data:       ");
+    stackmap_data()->print_value_on(st);
+    st->cr();
+  }
+}
+
+// Short version of printing ConstMethod* - just print the name of the
+// method it belongs to.
+void ConstMethod::print_value_on(outputStream* st) const {
+  assert(is_constMethod(), "must be constMethod");
+  st->print(" const part of method " );
+  method()->print_value_on(st);
+}
+
+
+// Verification
+
+void ConstMethod::verify_on(outputStream* st) {
+  guarantee(is_constMethod(), "object must be constMethod");
+  guarantee(is_metadata(), err_msg("Should be metadata " PTR_FORMAT, this));
+
+  // Verification can occur during oop construction before the method or
+  // other fields have been initialized.
+  guarantee(is_metadata(), err_msg("Should be metadata " PTR_FORMAT, this));
+  guarantee(method()->is_method(), "should be method");
+
+  address m_end = (address)((oop*) this + size());
+  address compressed_table_start = code_end();
+  guarantee(compressed_table_start <= m_end, "invalid method layout");
+  address compressed_table_end = compressed_table_start;
+  // Verify line number table
+  if (has_linenumber_table()) {
+    CompressedLineNumberReadStream stream(compressed_linenumber_table());
+    while (stream.read_pair()) {
+      guarantee(stream.bci() >= 0 && stream.bci() <= code_size(), "invalid bci in line number table");
+    }
+    compressed_table_end += stream.position();
+  }
+  guarantee(compressed_table_end <= m_end, "invalid method layout");
+  // Verify checked exceptions, exception table and local variable tables
+  if (has_checked_exceptions()) {
+    u2* addr = checked_exceptions_length_addr();
+    guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
+  }
+  if (has_exception_handler()) {
+    u2* addr = exception_table_length_addr();
+     guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
+  }
+  if (has_localvariable_table()) {
+    u2* addr = localvariable_table_length_addr();
+    guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
+  }
+  // Check compressed_table_end relative to uncompressed_table_start
+  u2* uncompressed_table_start;
+  if (has_localvariable_table()) {
+    uncompressed_table_start = (u2*) localvariable_table_start();
+  } else if (has_exception_handler()) {
+    uncompressed_table_start = (u2*) exception_table_start();
+  } else if (has_checked_exceptions()) {
+      uncompressed_table_start = (u2*) checked_exceptions_start();
+  } else {
+      uncompressed_table_start = (u2*) m_end;
+  }
+  int gap = (intptr_t) uncompressed_table_start - (intptr_t) compressed_table_end;
+  int max_gap = align_object_size(1)*BytesPerWord;
+  guarantee(gap >= 0 && gap < max_gap, "invalid method layout");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/constMethod.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,331 @@
+/*
+ * Copyright (c) 2003, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_CONSTMETHODOOP_HPP
+#define SHARE_VM_OOPS_CONSTMETHODOOP_HPP
+
+#include "oops/oop.hpp"
+
+// An ConstMethod* represents portions of a Java method which
+// do not vary.
+//
+// Memory layout (each line represents a word). Note that most
+// applications load thousands of methods, so keeping the size of this
+// structure small has a big impact on footprint.
+//
+// |------------------------------------------------------|
+// | header                                               |
+// | klass                                                |
+// |------------------------------------------------------|
+// | fingerprint 1                                        |
+// | fingerprint 2                                        |
+// | constants                      (oop)                 |
+// | stackmap_data                  (oop)                 |
+// | constMethod_size                                     |
+// | interp_kind  | flags    | code_size                  |
+// | name index              | signature index            |
+// | method_idnum            | generic_signature_index    |
+// |------------------------------------------------------|
+// |                                                      |
+// | byte codes                                           |
+// |                                                      |
+// |------------------------------------------------------|
+// | compressed linenumber table                          |
+// |  (see class CompressedLineNumberReadStream)          |
+// |  (note that length is unknown until decompressed)    |
+// |  (access flags bit tells whether table is present)   |
+// |  (indexed from start of ConstMethod*)              |
+// |  (elements not necessarily sorted!)                  |
+// |------------------------------------------------------|
+// | localvariable table elements + length (length last)  |
+// |  (length is u2, elements are 6-tuples of u2)         |
+// |  (see class LocalVariableTableElement)               |
+// |  (access flags bit tells whether table is present)   |
+// |  (indexed from end of ConstMethod*)                |
+// |------------------------------------------------------|
+// | exception table + length (length last)               |
+// |  (length is u2, elements are 4-tuples of u2)         |
+// |  (see class ExceptionTableElement)                   |
+// |  (access flags bit tells whether table is present)   |
+// |  (indexed from end of ConstMethod*)                |
+// |------------------------------------------------------|
+// | checked exceptions elements + length (length last)   |
+// |  (length is u2, elements are u2)                     |
+// |  (see class CheckedExceptionElement)                 |
+// |  (access flags bit tells whether table is present)   |
+// |  (indexed from end of ConstMethod*)                |
+// |------------------------------------------------------|
+
+
+// Utitily class decribing elements in checked exceptions table inlined in Method*.
+class CheckedExceptionElement VALUE_OBJ_CLASS_SPEC {
+ public:
+  u2 class_cp_index;
+};
+
+
+// Utitily class decribing elements in local variable table inlined in Method*.
+class LocalVariableTableElement VALUE_OBJ_CLASS_SPEC {
+ public:
+  u2 start_bci;
+  u2 length;
+  u2 name_cp_index;
+  u2 descriptor_cp_index;
+  u2 signature_cp_index;
+  u2 slot;
+};
+
+// Utitily class describing elements in exception table
+class ExceptionTableElement VALUE_OBJ_CLASS_SPEC {
+ public:
+  u2 start_pc;
+  u2 end_pc;
+  u2 handler_pc;
+  u2 catch_type_index;
+};
+
+
+class ConstMethod : public MetaspaceObj {
+  friend class VMStructs;
+private:
+  enum {
+    _has_linenumber_table = 1,
+    _has_checked_exceptions = 2,
+    _has_localvariable_table = 4,
+    _has_exception_table = 8
+  };
+
+  // Bit vector of signature
+  // Callers interpret 0=not initialized yet and
+  // -1=too many args to fix, must parse the slow way.
+  // The real initial value is special to account for nonatomicity of 64 bit
+  // loads and stores.  This value may updated and read without a lock by
+  // multiple threads, so is volatile.
+  volatile uint64_t _fingerprint;
+
+  ConstantPool*     _constants;                  // Constant pool
+
+  // Raw stackmap data for the method
+  Array<u1>*        _stackmap_data;
+
+  int               _constMethod_size;
+  jbyte             _interpreter_kind;
+  jbyte             _flags;
+
+  // Size of Java bytecodes allocated immediately after Method*.
+  u2                _code_size;
+  u2                _name_index;                 // Method name (index in constant pool)
+  u2                _signature_index;            // Method signature (index in constant pool)
+  u2                _method_idnum;               // unique identification number for the method within the class
+                                                 // initially corresponds to the index into the methods array.
+                                                 // but this may change with redefinition
+  u2                _generic_signature_index;    // Generic signature (index in constant pool, 0 if absent)
+
+
+  // Constructor
+  ConstMethod(int byte_code_size,
+                     int compressed_line_number_size,
+                     int localvariable_table_length,
+                     int exception_table_length,
+                     int checked_exceptions_length,
+                     int size);
+public:
+  static ConstMethod* allocate(ClassLoaderData* loader_data,
+                                 int byte_code_size,
+                                 int compressed_line_number_size,
+                                 int localvariable_table_length,
+                                 int exception_table_length,
+                                 int checked_exceptions_length,
+                                 TRAPS);
+
+  bool is_constMethod() const { return true; }
+
+  // Inlined tables
+  void set_inlined_tables_length(int checked_exceptions_len,
+                                 int compressed_line_number_size,
+                                 int localvariable_table_len,
+                                 int exception_table_len);
+
+  bool has_linenumber_table() const
+    { return (_flags & _has_linenumber_table) != 0; }
+
+  bool has_checked_exceptions() const
+    { return (_flags & _has_checked_exceptions) != 0; }
+
+  bool has_localvariable_table() const
+    { return (_flags & _has_localvariable_table) != 0; }
+
+  bool has_exception_handler() const
+    { return (_flags & _has_exception_table) != 0; }
+
+  void set_interpreter_kind(int kind)      { _interpreter_kind = kind; }
+  int  interpreter_kind(void) const        { return _interpreter_kind; }
+
+  // constant pool
+  ConstantPool* constants() const        { return _constants; }
+  void set_constants(ConstantPool* c)    { _constants = c; }
+
+  Method* method() const;
+
+  // stackmap table data
+  Array<u1>* stackmap_data() const { return _stackmap_data; }
+  void set_stackmap_data(Array<u1>* sd) { _stackmap_data = sd; }
+  bool has_stackmap_table() const { return _stackmap_data != NULL; }
+
+  void init_fingerprint() {
+    const uint64_t initval = CONST64(0x8000000000000000);
+    _fingerprint = initval;
+  }
+
+  uint64_t fingerprint() const                   {
+    // Since reads aren't atomic for 64 bits, if any of the high or low order
+    // word is the initial value, return 0.  See init_fingerprint for initval.
+    uint high_fp = (uint)(_fingerprint >> 32);
+    if ((int) _fingerprint == 0 || high_fp == 0x80000000) {
+      return 0L;
+    } else {
+      return _fingerprint;
+    }
+  }
+
+  uint64_t set_fingerprint(uint64_t new_fingerprint) {
+#ifdef ASSERT
+    // Assert only valid if complete/valid 64 bit _fingerprint value is read.
+    uint64_t oldfp = fingerprint();
+#endif // ASSERT
+    _fingerprint = new_fingerprint;
+    assert(oldfp == 0L || new_fingerprint == oldfp,
+           "fingerprint cannot change");
+    assert(((new_fingerprint >> 32) != 0x80000000) && (int)new_fingerprint !=0,
+           "fingerprint should call init to set initial value");
+    return new_fingerprint;
+  }
+
+  // name
+  int name_index() const                         { return _name_index; }
+  void set_name_index(int index)                 { _name_index = index; }
+
+  // signature
+  int signature_index() const                    { return _signature_index; }
+  void set_signature_index(int index)            { _signature_index = index; }
+
+  // generics support
+  int generic_signature_index() const            { return _generic_signature_index; }
+  void set_generic_signature_index(int index)    { _generic_signature_index = index; }
+
+  // Sizing
+  static int header_size() {
+    return sizeof(ConstMethod)/HeapWordSize;
+  }
+
+  // Size needed
+  static int size(int code_size, int compressed_line_number_size,
+                         int local_variable_table_length,
+                         int exception_table_length,
+                         int checked_exceptions_length);
+
+  int size() const                    { return _constMethod_size;}
+  void set_constMethod_size(int size)     { _constMethod_size = size; }
+
+  // code size
+  int code_size() const                          { return _code_size; }
+  void set_code_size(int size) {
+    assert(max_method_code_size < (1 << 16),
+           "u2 is too small to hold method code size in general");
+    assert(0 <= size && size <= max_method_code_size, "invalid code size");
+    _code_size = size;
+  }
+
+  // linenumber table - note that length is unknown until decompression,
+  // see class CompressedLineNumberReadStream.
+  u_char* compressed_linenumber_table() const;         // not preserved by gc
+  u2* checked_exceptions_length_addr() const;
+  u2* localvariable_table_length_addr() const;
+  u2* exception_table_length_addr() const;
+
+  // checked exceptions
+  int checked_exceptions_length() const;
+  CheckedExceptionElement* checked_exceptions_start() const;
+
+  // localvariable table
+  int localvariable_table_length() const;
+  LocalVariableTableElement* localvariable_table_start() const;
+
+  // exception table
+  int exception_table_length() const;
+  ExceptionTableElement* exception_table_start() const;
+
+  // byte codes
+  void    set_code(address code) {
+    if (code_size() > 0) {
+      memcpy(code_base(), code, code_size());
+    }
+  }
+  address code_base() const            { return (address) (this+1); }
+  address code_end() const             { return code_base() + code_size(); }
+  bool    contains(address bcp) const  { return code_base() <= bcp
+                                                     && bcp < code_end(); }
+  // Offset to bytecodes
+  static ByteSize codes_offset()
+                            { return in_ByteSize(sizeof(ConstMethod)); }
+
+  static ByteSize constants_offset()
+                            { return byte_offset_of(ConstMethod, _constants); }
+
+  // Unique id for the method
+  static const u2 MAX_IDNUM;
+  static const u2 UNSET_IDNUM;
+  u2 method_idnum() const                        { return _method_idnum; }
+  void set_method_idnum(u2 idnum)                { _method_idnum = idnum; }
+
+  // Deallocation for RedefineClasses
+  void deallocate_contents(ClassLoaderData* loader_data);
+  bool is_klass() const { return false; }
+  DEBUG_ONLY(bool on_stack() { return false; })
+
+private:
+  // Since the size of the compressed line number table is unknown, the
+  // offsets of the other variable sized sections are computed backwards
+  // from the end of the ConstMethod*.
+
+  // First byte after ConstMethod*
+  address constMethod_end() const
+                          { return (address)((oop*)this + _constMethod_size); }
+
+  // Last short in ConstMethod*
+  u2* last_u2_element() const
+                                         { return (u2*)constMethod_end() - 1; }
+
+ public:
+  // Printing
+  void print_on      (outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
+  const char* internal_name() const { return "{constMethod}"; }
+
+  // Verify
+  void verify_on(outputStream* st);
+};
+
+#endif // SHARE_VM_OOPS_CONSTMETHODOOP_HPP
--- a/src/share/vm/oops/constMethodKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "interpreter/interpreter.hpp"
-#include "memory/gcLocker.hpp"
-#include "memory/resourceArea.hpp"
-#include "oops/constMethodKlass.hpp"
-#include "oops/constMethodOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "runtime/handles.inline.hpp"
-
-
-klassOop constMethodKlass::create_klass(TRAPS) {
-  constMethodKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(),
-                                    o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()),
-         "wrong size for object");
-  //java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-
-int constMethodKlass::oop_size(oop obj) const {
-  assert(obj->is_constMethod(), "must be constMethod oop");
-  return constMethodOop(obj)->object_size();
-}
-
-bool constMethodKlass::oop_is_parsable(oop obj) const {
-  assert(obj->is_constMethod(), "must be constMethod oop");
-  return constMethodOop(obj)->object_is_parsable();
-}
-
-bool constMethodKlass::oop_is_conc_safe(oop obj) const {
-  assert(obj->is_constMethod(), "must be constMethod oop");
-  return constMethodOop(obj)->is_conc_safe();
-}
-
-constMethodOop constMethodKlass::allocate(int byte_code_size,
-                                          int compressed_line_number_size,
-                                          int localvariable_table_length,
-                                          int exception_table_length,
-                                          int checked_exceptions_length,
-                                          bool is_conc_safe,
-                                          TRAPS) {
-
-  int size = constMethodOopDesc::object_size(byte_code_size,
-                                             compressed_line_number_size,
-                                             localvariable_table_length,
-                                             exception_table_length,
-                                             checked_exceptions_length);
-  KlassHandle h_k(THREAD, as_klassOop());
-  constMethodOop cm = (constMethodOop)
-    CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL);
-  assert(!cm->is_parsable(), "Not yet safely parsable");
-  No_Safepoint_Verifier no_safepoint;
-  cm->set_interpreter_kind(Interpreter::invalid);
-  cm->init_fingerprint();
-  cm->set_constants(NULL);
-  cm->set_stackmap_data(NULL);
-  cm->set_code_size(byte_code_size);
-  cm->set_constMethod_size(size);
-  cm->set_inlined_tables_length(checked_exceptions_length,
-                                compressed_line_number_size,
-                                localvariable_table_length,
-                                exception_table_length);
-  assert(cm->size() == size, "wrong size for object");
-  cm->set_is_conc_safe(is_conc_safe);
-  cm->set_partially_loaded();
-  assert(cm->is_parsable(), "Is safely parsable by gc");
-  return cm;
-}
-
-void constMethodKlass::oop_follow_contents(oop obj) {
-  assert (obj->is_constMethod(), "object must be constMethod");
-  constMethodOop cm = constMethodOop(obj);
-  MarkSweep::mark_and_push(cm->adr_constants());
-  MarkSweep::mark_and_push(cm->adr_stackmap_data());
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constMethodKlassObj never moves.
-}
-
-#ifndef SERIALGC
-void constMethodKlass::oop_follow_contents(ParCompactionManager* cm,
-                                           oop obj) {
-  assert (obj->is_constMethod(), "object must be constMethod");
-  constMethodOop cm_oop = constMethodOop(obj);
-  PSParallelCompact::mark_and_push(cm, cm_oop->adr_constants());
-  PSParallelCompact::mark_and_push(cm, cm_oop->adr_stackmap_data());
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constMethodKlassObj never moves.
-}
-#endif // SERIALGC
-
-int constMethodKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert (obj->is_constMethod(), "object must be constMethod");
-  constMethodOop cm = constMethodOop(obj);
-  blk->do_oop(cm->adr_constants());
-  blk->do_oop(cm->adr_stackmap_data());
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cm->object_size();
-  return size;
-}
-
-
-int constMethodKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert (obj->is_constMethod(), "object must be constMethod");
-  constMethodOop cm = constMethodOop(obj);
-  oop* adr;
-  adr = cm->adr_constants();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = cm->adr_stackmap_data();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cm->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constMethodKlassObj never moves.
-  return size;
-}
-
-
-int constMethodKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_constMethod(), "should be constMethod");
-  constMethodOop cm = constMethodOop(obj);
-  MarkSweep::adjust_pointer(cm->adr_constants());
-  MarkSweep::adjust_pointer(cm->adr_stackmap_data());
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cm->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constMethodKlassObj never moves.
-  return size;
-}
-
-#ifndef SERIALGC
-void constMethodKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->is_constMethod(), "should be constMethod");
-}
-
-int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_constMethod(), "should be constMethod");
-  constMethodOop cm_oop = constMethodOop(obj);
-  oop* const beg_oop = cm_oop->oop_block_beg();
-  oop* const end_oop = cm_oop->oop_block_end();
-  for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
-    PSParallelCompact::adjust_pointer(cur_oop);
-  }
-  return cm_oop->object_size();
-}
-#endif // SERIALGC
-
-// Printing
-
-void constMethodKlass::oop_print_on(oop obj, outputStream* st) {
-  ResourceMark rm;
-  assert(obj->is_constMethod(), "must be constMethod");
-  Klass::oop_print_on(obj, st);
-  constMethodOop m = constMethodOop(obj);
-  st->print(" - constants:       " INTPTR_FORMAT " ", (address)m->constants());
-  m->constants()->print_value_on(st); st->cr();
-  if (m->has_stackmap_table()) {
-    st->print(" - stackmap data:       ");
-    m->stackmap_data()->print_value_on(st);
-    st->cr();
-  }
-}
-
-// Short version of printing constMethodOop - just print the name of the
-// method it belongs to.
-void constMethodKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_constMethod(), "must be constMethod");
-  constMethodOop m = constMethodOop(obj);
-  st->print(" const part of method " );
-  m->method()->print_value_on(st);
-}
-
-const char* constMethodKlass::internal_name() const {
-  return "{constMethod}";
-}
-
-
-// Verification
-
-void constMethodKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_constMethod(), "object must be constMethod");
-  constMethodOop m = constMethodOop(obj);
-  guarantee(m->is_perm(),                            "should be in permspace");
-
-  // Verification can occur during oop construction before the method or
-  // other fields have been initialized.
-  if (!obj->partially_loaded()) {
-    guarantee(m->constants()->is_perm(), "should be in permspace");
-    guarantee(m->constants()->is_constantPool(), "should be constant pool");
-    typeArrayOop stackmap_data = m->stackmap_data();
-    guarantee(stackmap_data == NULL ||
-              stackmap_data->is_perm(),  "should be in permspace");
-
-    address m_end = (address)((oop*) m + m->size());
-    address compressed_table_start = m->code_end();
-    guarantee(compressed_table_start <= m_end, "invalid method layout");
-    address compressed_table_end = compressed_table_start;
-    // Verify line number table
-    if (m->has_linenumber_table()) {
-      CompressedLineNumberReadStream stream(m->compressed_linenumber_table());
-      while (stream.read_pair()) {
-        guarantee(stream.bci() >= 0 && stream.bci() <= m->code_size(), "invalid bci in line number table");
-      }
-      compressed_table_end += stream.position();
-    }
-    guarantee(compressed_table_end <= m_end, "invalid method layout");
-    // Verify checked exceptions, exception table and local variable tables
-    if (m->has_checked_exceptions()) {
-      u2* addr = m->checked_exceptions_length_addr();
-      guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
-    }
-    if (m->has_exception_handler()) {
-      u2* addr = m->exception_table_length_addr();
-      guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
-    }
-    if (m->has_localvariable_table()) {
-      u2* addr = m->localvariable_table_length_addr();
-      guarantee(*addr > 0 && (address) addr >= compressed_table_end && (address) addr < m_end, "invalid method layout");
-    }
-    // Check compressed_table_end relative to uncompressed_table_start
-    u2* uncompressed_table_start;
-    if (m->has_localvariable_table()) {
-      uncompressed_table_start = (u2*) m->localvariable_table_start();
-    } else if (m->has_exception_handler()) {
-      uncompressed_table_start = (u2*) m->exception_table_start();
-    } else if (m->has_checked_exceptions()) {
-        uncompressed_table_start = (u2*) m->checked_exceptions_start();
-    } else {
-        uncompressed_table_start = (u2*) m_end;
-    }
-    int gap = (intptr_t) uncompressed_table_start - (intptr_t) compressed_table_end;
-    int max_gap = align_object_size(1)*BytesPerWord;
-    guarantee(gap >= 0 && gap < max_gap, "invalid method layout");
-  }
-}
-
-bool constMethodKlass::oop_partially_loaded(oop obj) const {
-  assert(obj->is_constMethod(), "object must be klass");
-  constMethodOop m = constMethodOop(obj);
-  // check whether stackmap_data points to self (flag for partially loaded)
-  return m->stackmap_data() == (typeArrayOop)obj;
-}
-
-
-// The exception_table is the last field set when loading an object.
-void constMethodKlass::oop_set_partially_loaded(oop obj) {
-  assert(obj->is_constMethod(), "object must be klass");
-  constMethodOop m = constMethodOop(obj);
-  // Temporarily set stackmap_data to point to self
-  m->set_stackmap_data((typeArrayOop)obj);
-}
--- a/src/share/vm/oops/constMethodKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
-#define SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
-
-#include "oops/klass.hpp"
-#include "oops/oop.hpp"
-#include "runtime/orderAccess.hpp"
-
-// A constMethodKlass is the klass of a constMethodOop
-
-class constMethodKlass : public Klass {
-  friend class VMStructs;
-private:
-  juint    _alloc_size;        // allocation profiling support
-public:
-  // Testing
-  bool oop_is_constMethod() const { return true; }
-  virtual bool oop_is_parsable(oop obj) const;
-  virtual bool oop_is_conc_safe(oop obj) const;
-
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(constMethodKlass);
-  constMethodOop allocate(int byte_code_size, int compressed_line_number_size,
-                          int localvariable_table_length,
-                          int exception_table_length,
-                          int checked_exceptions_length,
-                          bool is_conc_safe,
-                          TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Sizing
-  int oop_size(oop obj) const;
-  int klass_oop_size() const     { return object_size(); }
-
-  // Casting from klassOop
-  static constMethodKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_constMethod(), "cast to constMethodKlass");
-    return (constMethodKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size() {
-    return oopDesc::header_size() + sizeof(constMethodKlass)/HeapWordSize;
-  }
-  int object_size() const {
-    return align_object_size(header_size());
-  }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on      (oop obj, outputStream* st);
-
-  // Verify operations
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-  bool oop_partially_loaded(oop obj) const;
-  void oop_set_partially_loaded(oop obj);
-};
-
-#endif // SHARE_VM_OOPS_CONSTMETHODKLASS_HPP
--- a/src/share/vm/oops/constMethodOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "oops/constMethodOop.hpp"
-#include "oops/methodOop.hpp"
-
-// Static initialization
-const u2 constMethodOopDesc::MAX_IDNUM   = 0xFFFE;
-const u2 constMethodOopDesc::UNSET_IDNUM = 0xFFFF;
-
-// How big must this constMethodObject be?
-
-int constMethodOopDesc::object_size(int code_size,
-                                    int compressed_line_number_size,
-                                    int local_variable_table_length,
-                                    int exception_table_length,
-                                    int checked_exceptions_length) {
-  int extra_bytes = code_size;
-  if (compressed_line_number_size > 0) {
-    extra_bytes += compressed_line_number_size;
-  }
-  if (checked_exceptions_length > 0) {
-    extra_bytes += sizeof(u2);
-    extra_bytes += checked_exceptions_length * sizeof(CheckedExceptionElement);
-  }
-  if (local_variable_table_length > 0) {
-    extra_bytes += sizeof(u2);
-    extra_bytes +=
-              local_variable_table_length * sizeof(LocalVariableTableElement);
-  }
-  if (exception_table_length > 0) {
-    extra_bytes += sizeof(u2);
-    extra_bytes += exception_table_length * sizeof(ExceptionTableElement);
-  }
-  int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord;
-  return align_object_size(header_size() + extra_words);
-}
-
-methodOop constMethodOopDesc::method() const {
-    return instanceKlass::cast(_constants->pool_holder())->method_with_idnum(
-                               _method_idnum);
-  }
-
-// linenumber table - note that length is unknown until decompression,
-// see class CompressedLineNumberReadStream.
-
-u_char* constMethodOopDesc::compressed_linenumber_table() const {
-  // Located immediately following the bytecodes.
-  assert(has_linenumber_table(), "called only if table is present");
-  return code_end();
-}
-
-u2* constMethodOopDesc::checked_exceptions_length_addr() const {
-  // Located at the end of the constMethod.
-  assert(has_checked_exceptions(), "called only if table is present");
-  return last_u2_element();
-}
-
-u2* constMethodOopDesc::exception_table_length_addr() const {
-  assert(has_exception_handler(), "called only if table is present");
-  if (has_checked_exceptions()) {
-    // If checked_exception present, locate immediately before them.
-    return (u2*) checked_exceptions_start() - 1;
-  } else {
-    // Else, the exception table is at the end of the constMethod.
-    return last_u2_element();
-  }
-}
-
-u2* constMethodOopDesc::localvariable_table_length_addr() const {
-  assert(has_localvariable_table(), "called only if table is present");
-  if (has_exception_handler()) {
-    // If exception_table present, locate immediately before them.
-    return (u2*) exception_table_start() - 1;
-  } else {
-    if (has_checked_exceptions()) {
-      // If checked_exception present, locate immediately before them.
-      return (u2*) checked_exceptions_start() - 1;
-    } else {
-      // Else, the linenumber table is at the end of the constMethod.
-      return last_u2_element();
-    }
-  }
-}
-
-
-// Update the flags to indicate the presence of these optional fields.
-void constMethodOopDesc::set_inlined_tables_length(
-                                              int checked_exceptions_len,
-                                              int compressed_line_number_size,
-                                              int localvariable_table_len,
-                                              int exception_table_len) {
-  // Must be done in the order below, otherwise length_addr accessors
-  // will not work. Only set bit in header if length is positive.
-  assert(_flags == 0, "Error");
-  if (compressed_line_number_size > 0) {
-    _flags |= _has_linenumber_table;
-  }
-  if (checked_exceptions_len > 0) {
-    _flags |= _has_checked_exceptions;
-    *(checked_exceptions_length_addr()) = checked_exceptions_len;
-  }
-  if (exception_table_len > 0) {
-    _flags |= _has_exception_table;
-    *(exception_table_length_addr()) = exception_table_len;
-  }
-  if (localvariable_table_len > 0) {
-    _flags |= _has_localvariable_table;
-    *(localvariable_table_length_addr()) = localvariable_table_len;
-  }
-}
-
-
-int constMethodOopDesc::checked_exceptions_length() const {
-  return has_checked_exceptions() ? *(checked_exceptions_length_addr()) : 0;
-}
-
-
-CheckedExceptionElement* constMethodOopDesc::checked_exceptions_start() const {
-  u2* addr = checked_exceptions_length_addr();
-  u2 length = *addr;
-  assert(length > 0, "should only be called if table is present");
-  addr -= length * sizeof(CheckedExceptionElement) / sizeof(u2);
-  return (CheckedExceptionElement*) addr;
-}
-
-
-int constMethodOopDesc::localvariable_table_length() const {
-  return has_localvariable_table() ? *(localvariable_table_length_addr()) : 0;
-}
-
-
-LocalVariableTableElement* constMethodOopDesc::localvariable_table_start() const {
-  u2* addr = localvariable_table_length_addr();
-  u2 length = *addr;
-  assert(length > 0, "should only be called if table is present");
-  addr -= length * sizeof(LocalVariableTableElement) / sizeof(u2);
-  return (LocalVariableTableElement*) addr;
-}
-
-int constMethodOopDesc::exception_table_length() const {
-  return has_exception_handler() ? *(exception_table_length_addr()) : 0;
-}
-
-ExceptionTableElement* constMethodOopDesc::exception_table_start() const {
-  u2* addr = exception_table_length_addr();
-  u2 length = *addr;
-  assert(length > 0, "should only be called if table is present");
-  addr -= length * sizeof(ExceptionTableElement) / sizeof(u2);
-  return (ExceptionTableElement*)addr;
-}
--- a/src/share/vm/oops/constMethodOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,327 +0,0 @@
-/*
- * Copyright (c) 2003, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CONSTMETHODOOP_HPP
-#define SHARE_VM_OOPS_CONSTMETHODOOP_HPP
-
-#include "oops/oop.hpp"
-#include "oops/typeArrayOop.hpp"
-
-// An constMethodOop represents portions of a Java method which
-// do not vary.
-//
-// Memory layout (each line represents a word). Note that most
-// applications load thousands of methods, so keeping the size of this
-// structure small has a big impact on footprint.
-//
-// |------------------------------------------------------|
-// | header                                               |
-// | klass                                                |
-// |------------------------------------------------------|
-// | fingerprint 1                                        |
-// | fingerprint 2                                        |
-// | constants                      (oop)                 |
-// | stackmap_data                  (oop)                 |
-// | constMethod_size                                     |
-// | interp_kind  | flags    | code_size                  |
-// | name index              | signature index            |
-// | method_idnum            | generic_signature_index    |
-// |------------------------------------------------------|
-// |                                                      |
-// | byte codes                                           |
-// |                                                      |
-// |------------------------------------------------------|
-// | compressed linenumber table                          |
-// |  (see class CompressedLineNumberReadStream)          |
-// |  (note that length is unknown until decompressed)    |
-// |  (access flags bit tells whether table is present)   |
-// |  (indexed from start of constMethodOop)              |
-// |  (elements not necessarily sorted!)                  |
-// |------------------------------------------------------|
-// | localvariable table elements + length (length last)  |
-// |  (length is u2, elements are 6-tuples of u2)         |
-// |  (see class LocalVariableTableElement)               |
-// |  (access flags bit tells whether table is present)   |
-// |  (indexed from end of constMethodOop)                |
-// |------------------------------------------------------|
-// | exception table + length (length last)               |
-// |  (length is u2, elements are 4-tuples of u2)         |
-// |  (see class ExceptionTableElement)                   |
-// |  (access flags bit tells whether table is present)   |
-// |  (indexed from end of constMethodOop)                |
-// |------------------------------------------------------|
-// | checked exceptions elements + length (length last)   |
-// |  (length is u2, elements are u2)                     |
-// |  (see class CheckedExceptionElement)                 |
-// |  (access flags bit tells whether table is present)   |
-// |  (indexed from end of constMethodOop)                |
-// |------------------------------------------------------|
-
-
-// Utitily class decribing elements in checked exceptions table inlined in methodOop.
-class CheckedExceptionElement VALUE_OBJ_CLASS_SPEC {
- public:
-  u2 class_cp_index;
-};
-
-
-// Utitily class decribing elements in local variable table inlined in methodOop.
-class LocalVariableTableElement VALUE_OBJ_CLASS_SPEC {
- public:
-  u2 start_bci;
-  u2 length;
-  u2 name_cp_index;
-  u2 descriptor_cp_index;
-  u2 signature_cp_index;
-  u2 slot;
-};
-
-
-// Utitily class describing elements in exception table
-class ExceptionTableElement VALUE_OBJ_CLASS_SPEC {
- public:
-  u2 start_pc;
-  u2 end_pc;
-  u2 handler_pc;
-  u2 catch_type_index;
-};
-
-class constMethodOopDesc : public oopDesc {
-  friend class constMethodKlass;
-  friend class VMStructs;
-private:
-  enum {
-    _has_linenumber_table = 1,
-    _has_checked_exceptions = 2,
-    _has_localvariable_table = 4,
-    _has_exception_table = 8
-  };
-
-  // Bit vector of signature
-  // Callers interpret 0=not initialized yet and
-  // -1=too many args to fix, must parse the slow way.
-  // The real initial value is special to account for nonatomicity of 64 bit
-  // loads and stores.  This value may updated and read without a lock by
-  // multiple threads, so is volatile.
-  volatile uint64_t _fingerprint;
-  volatile bool     _is_conc_safe; // if true, safe for concurrent GC processing
-
-public:
-  oop* oop_block_beg() const { return adr_constants(); }
-  oop* oop_block_end() const { return adr_stackmap_data() + 1; }
-
-private:
-  //
-  // The oop block.  See comment in klass.hpp before making changes.
-  //
-
-  constantPoolOop   _constants;                  // Constant pool
-
-  // Raw stackmap data for the method
-  typeArrayOop      _stackmap_data;
-
-  //
-  // End of the oop block.
-  //
-
-  int               _constMethod_size;
-  jbyte             _interpreter_kind;
-  jbyte             _flags;
-
-  // Size of Java bytecodes allocated immediately after methodOop.
-  u2                _code_size;
-  u2                _name_index;                 // Method name (index in constant pool)
-  u2                _signature_index;            // Method signature (index in constant pool)
-  u2                _method_idnum;               // unique identification number for the method within the class
-                                                 // initially corresponds to the index into the methods array.
-                                                 // but this may change with redefinition
-  u2                _generic_signature_index;    // Generic signature (index in constant pool, 0 if absent)
-
-public:
-  // Inlined tables
-  void set_inlined_tables_length(int checked_exceptions_len,
-                                 int compressed_line_number_size,
-                                 int localvariable_table_len,
-                                 int exception_table_len);
-
-  bool has_linenumber_table() const
-    { return (_flags & _has_linenumber_table) != 0; }
-
-  bool has_checked_exceptions() const
-    { return (_flags & _has_checked_exceptions) != 0; }
-
-  bool has_localvariable_table() const
-    { return (_flags & _has_localvariable_table) != 0; }
-
-  bool has_exception_handler() const
-    { return (_flags & _has_exception_table) != 0; }
-
-  void set_interpreter_kind(int kind)      { _interpreter_kind = kind; }
-  int  interpreter_kind(void) const        { return _interpreter_kind; }
-
-  // constant pool
-  constantPoolOop constants() const        { return _constants; }
-  void set_constants(constantPoolOop c)    {
-    oop_store_without_check((oop*)&_constants, (oop)c);
-  }
-
-  methodOop method() const;
-
-  // stackmap table data
-  typeArrayOop stackmap_data() const { return _stackmap_data; }
-  void set_stackmap_data(typeArrayOop sd) {
-    oop_store_without_check((oop*)&_stackmap_data, (oop)sd);
-  }
-  bool has_stackmap_table() const { return _stackmap_data != NULL; }
-
-  void init_fingerprint() {
-    const uint64_t initval = CONST64(0x8000000000000000);
-    _fingerprint = initval;
-  }
-
-  uint64_t fingerprint() const                   {
-    // Since reads aren't atomic for 64 bits, if any of the high or low order
-    // word is the initial value, return 0.  See init_fingerprint for initval.
-    uint high_fp = (uint)(_fingerprint >> 32);
-    if ((int) _fingerprint == 0 || high_fp == 0x80000000) {
-      return 0L;
-    } else {
-      return _fingerprint;
-    }
-  }
-
-  uint64_t set_fingerprint(uint64_t new_fingerprint) {
-#ifdef ASSERT
-    // Assert only valid if complete/valid 64 bit _fingerprint value is read.
-    uint64_t oldfp = fingerprint();
-#endif // ASSERT
-    _fingerprint = new_fingerprint;
-    assert(oldfp == 0L || new_fingerprint == oldfp,
-           "fingerprint cannot change");
-    assert(((new_fingerprint >> 32) != 0x80000000) && (int)new_fingerprint !=0,
-           "fingerprint should call init to set initial value");
-    return new_fingerprint;
-  }
-
-  // name
-  int name_index() const                         { return _name_index; }
-  void set_name_index(int index)                 { _name_index = index; }
-
-  // signature
-  int signature_index() const                    { return _signature_index; }
-  void set_signature_index(int index)            { _signature_index = index; }
-
-  // generics support
-  int generic_signature_index() const            { return _generic_signature_index; }
-  void set_generic_signature_index(int index)    { _generic_signature_index = index; }
-
-  // Sizing
-  static int header_size() {
-    return sizeof(constMethodOopDesc)/HeapWordSize;
-  }
-
-  // Object size needed
-  static int object_size(int code_size, int compressed_line_number_size,
-                         int local_variable_table_length,
-                         int exception_table_length,
-                         int checked_exceptions_length);
-
-  int object_size() const                 { return _constMethod_size; }
-  void set_constMethod_size(int size)     { _constMethod_size = size; }
-  // Is object parsable by gc
-  bool object_is_parsable()               { return object_size() > 0; }
-
-  // code size
-  int code_size() const                          { return _code_size; }
-  void set_code_size(int size) {
-    assert(max_method_code_size < (1 << 16),
-           "u2 is too small to hold method code size in general");
-    assert(0 <= size && size <= max_method_code_size, "invalid code size");
-    _code_size = size;
-  }
-
-  // linenumber table - note that length is unknown until decompression,
-  // see class CompressedLineNumberReadStream.
-  u_char* compressed_linenumber_table() const;         // not preserved by gc
-  u2* checked_exceptions_length_addr() const;
-  u2* localvariable_table_length_addr() const;
-  u2* exception_table_length_addr() const;
-
-  // checked exceptions
-  int checked_exceptions_length() const;
-  CheckedExceptionElement* checked_exceptions_start() const;
-
-  // localvariable table
-  int localvariable_table_length() const;
-  LocalVariableTableElement* localvariable_table_start() const;
-
-  // exception table
-  int exception_table_length() const;
-  ExceptionTableElement* exception_table_start() const;
-
-  // byte codes
-  void    set_code(address code) {
-    if (code_size() > 0) {
-      memcpy(code_base(), code, code_size());
-    }
-  }
-  address code_base() const            { return (address) (this+1); }
-  address code_end() const             { return code_base() + code_size(); }
-  bool    contains(address bcp) const  { return code_base() <= bcp
-                                                     && bcp < code_end(); }
-  // Offset to bytecodes
-  static ByteSize codes_offset()
-                            { return in_ByteSize(sizeof(constMethodOopDesc)); }
-
-  // interpreter support
-  static ByteSize constants_offset()
-               { return byte_offset_of(constMethodOopDesc, _constants); }
-
-  // Garbage collection support
-  oop*  adr_constants() const          { return (oop*)&_constants; }
-  oop*  adr_stackmap_data() const      { return (oop*)&_stackmap_data;   }
-  bool is_conc_safe() { return _is_conc_safe; }
-  void set_is_conc_safe(bool v) { _is_conc_safe = v; }
-
-  // Unique id for the method
-  static const u2 MAX_IDNUM;
-  static const u2 UNSET_IDNUM;
-  u2 method_idnum() const                        { return _method_idnum; }
-  void set_method_idnum(u2 idnum)                { _method_idnum = idnum; }
-
-private:
-  // Since the size of the compressed line number table is unknown, the
-  // offsets of the other variable sized sections are computed backwards
-  // from the end of the constMethodOop.
-
-  // First byte after constMethodOop
-  address constMethod_end() const
-                          { return (address)((oop*)this + _constMethod_size); }
-
-  // Last short in constMethodOop
-  u2* last_u2_element() const
-                                         { return (u2*)constMethod_end() - 1; }
-};
-
-#endif // SHARE_VM_OOPS_CONSTMETHODOOP_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/constantPool.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,2013 @@
+/*
+ * 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/classLoaderData.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/symbolTable.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "classfile/vmSymbols.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/objArrayKlass.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "runtime/fieldType.hpp"
+#include "runtime/init.hpp"
+#include "runtime/javaCalls.hpp"
+#include "runtime/signature.hpp"
+#include "runtime/vframe.hpp"
+
+ConstantPool* ConstantPool::allocate(ClassLoaderData* loader_data, int length, TRAPS) {
+  // Tags are RW but comment below applies to tags also.
+  Array<u1>* tags = MetadataFactory::new_writeable_array<u1>(loader_data, length, 0, CHECK_NULL);
+
+  int size = ConstantPool::size(length);
+
+  // CDS considerations:
+  // Allocate read-write but may be able to move to read-only at dumping time
+  // if all the klasses are resolved.  The only other field that is writable is
+  // the resolved_references array, which is recreated at startup time.
+  // But that could be moved to InstanceKlass (although a pain to access from
+  // assembly code).  Maybe it could be moved to the cpCache which is RW.
+  return new (loader_data, size, false, THREAD) ConstantPool(tags);
+}
+
+ConstantPool::ConstantPool(Array<u1>* tags) {
+  set_length(tags->length());
+  set_tags(NULL);
+  set_cache(NULL);
+  set_reference_map(NULL);
+  set_resolved_references(NULL);
+  set_operands(NULL);
+  set_pool_holder(NULL);
+  set_flags(0);
+  // only set to non-zero if constant pool is merged by RedefineClasses
+  set_orig_length(0);
+  set_lock(new Monitor(Monitor::nonleaf + 2, "A constant pool lock"));
+  // all fields are initialized; needed for GC
+  set_on_stack(false);
+
+  // initialize tag array
+  int length = tags->length();
+  for (int index = 0; index < length; index++) {
+    tags->at_put(index, JVM_CONSTANT_Invalid);
+  }
+  set_tags(tags);
+}
+
+void ConstantPool::deallocate_contents(ClassLoaderData* loader_data) {
+  MetadataFactory::free_metadata(loader_data, cache());
+  set_cache(NULL);
+  MetadataFactory::free_array<jushort>(loader_data, operands());
+  set_operands(NULL);
+
+  release_C_heap_structures();
+
+  // free tag array
+  MetadataFactory::free_array<u1>(loader_data, tags());
+  set_tags(NULL);
+}
+
+void ConstantPool::release_C_heap_structures() {
+  // walk constant pool and decrement symbol reference counts
+  unreference_symbols();
+
+  delete _lock;
+  set_lock(NULL);
+}
+
+void ConstantPool::set_flag_at(FlagBit fb) {
+  const int MAX_STATE_CHANGES = 2;
+  for (int i = MAX_STATE_CHANGES + 10; i > 0; i--) {
+    int oflags = _flags;
+    int nflags = oflags | (1 << (int)fb);
+    if (Atomic::cmpxchg(nflags, &_flags, oflags) == oflags)
+      return;
+  }
+  assert(false, "failed to cmpxchg flags");
+  _flags |= (1 << (int)fb);     // better than nothing
+}
+
+objArrayOop ConstantPool::resolved_references() const {
+  return (objArrayOop)JNIHandles::resolve(_resolved_references);
+}
+
+// Create resolved_references array and mapping array for original cp indexes
+// The ldc bytecode was rewritten to have the resolved reference array index so need a way
+// to map it back for resolving and some unlikely miscellaneous uses.
+// The objects created by invokedynamic are appended to this list.
+void ConstantPool::initialize_resolved_references(ClassLoaderData* loader_data,
+                                                  intStack reference_map,
+                                                  int constant_pool_map_length,
+                                                   TRAPS) {
+  // Initialized the resolved object cache.
+  int map_length = reference_map.length();
+  if (map_length > 0) {
+    // Only need mapping back to constant pool entries.  The map isn't used for
+    // invokedynamic resolved_reference entries.  The constant pool cache index
+    // has the mapping back to both the constant pool and to the resolved
+    // reference index.
+    if (constant_pool_map_length > 0) {
+      Array<u2>* om = MetadataFactory::new_array<u2>(loader_data, map_length, CHECK);
+
+      for (int i = 0; i < constant_pool_map_length; i++) {
+        int x = reference_map.at(i);
+        assert(x == (int)(jushort) x, "klass index is too big");
+        om->at_put(i, (jushort)x);
+      }
+      set_reference_map(om);
+    }
+
+    // Create Java array for holding resolved strings, methodHandles,
+    // methodTypes, invokedynamic and invokehandle appendix objects, etc.
+    objArrayOop stom = oopFactory::new_objArray(SystemDictionary::Object_klass(), map_length, CHECK);
+    Handle refs_handle (THREAD, (oop)stom);  // must handleize.
+    set_resolved_references(loader_data->add_handle(refs_handle));
+  }
+}
+
+// CDS support. Create a new resolved_references array.
+void ConstantPool::restore_unshareable_info(TRAPS) {
+
+  // restore the C++ vtable from the shared archive
+  restore_vtable();
+
+  if (SystemDictionary::Object_klass_loaded()) {
+    // Recreate the object array and add to ClassLoaderData.
+    int map_length = resolved_reference_length();
+    if (map_length > 0) {
+      objArrayOop stom = oopFactory::new_objArray(SystemDictionary::Object_klass(), map_length, CHECK);
+      Handle refs_handle (THREAD, (oop)stom);  // must handleize.
+
+      ClassLoaderData* loader_data = pool_holder()->class_loader_data();
+      set_resolved_references(loader_data->add_handle(refs_handle));
+    }
+
+    // Also need to recreate the mutex.  Make sure this matches the constructor
+    set_lock(new Monitor(Monitor::nonleaf + 2, "A constant pool lock"));
+  }
+}
+
+void ConstantPool::remove_unshareable_info() {
+  // Resolved references are not in the shared archive.
+  // Save the length for restoration.  It is not necessarily the same length
+  // as reference_map.length() if invokedynamic is saved.
+  set_resolved_reference_length(
+    resolved_references() != NULL ? resolved_references()->length() : 0);
+  set_resolved_references(NULL);
+  set_lock(NULL);
+}
+
+int ConstantPool::cp_to_object_index(int cp_index) {
+  // this is harder don't do this so much.
+  for (int i = 0; i< reference_map()->length(); i++) {
+    if (reference_map()->at(i) == cp_index) return i;
+    // Zero entry is divider between constant pool indices for strings,
+    // method handles and method types. After that the index is a constant
+    // pool cache index for invokedynamic.  Stop when zero (which can never
+    // be a constant pool index)
+    if (reference_map()->at(i) == 0) break;
+  }
+  // We might not find the index.
+  return _no_index_sentinel;
+}
+
+Klass* ConstantPool::klass_at_impl(constantPoolHandle this_oop, int which, TRAPS) {
+  // A resolved constantPool entry will contain a Klass*, otherwise a Symbol*.
+  // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and
+  // tag is not updated atomicly.
+
+  CPSlot entry = this_oop->slot_at(which);
+  if (entry.is_resolved()) {
+    assert(entry.get_klass()->is_klass(), "must be");
+    // Already resolved - return entry.
+    return entry.get_klass();
+  }
+
+  // Acquire lock on constant oop while doing update. After we get the lock, we check if another object
+  // already has updated the object
+  assert(THREAD->is_Java_thread(), "must be a Java thread");
+  bool do_resolve = false;
+  bool in_error = false;
+
+  // Create a handle for the mirror. This will preserve the resolved class
+  // until the loader_data is registered.
+  Handle mirror_handle;
+
+  Symbol* name = NULL;
+  Handle       loader;
+  {  MonitorLockerEx ml(this_oop->lock());
+
+    if (this_oop->tag_at(which).is_unresolved_klass()) {
+      if (this_oop->tag_at(which).is_unresolved_klass_in_error()) {
+        in_error = true;
+      } else {
+        do_resolve = true;
+        name   = this_oop->unresolved_klass_at(which);
+        loader = Handle(THREAD, InstanceKlass::cast(this_oop->pool_holder())->class_loader());
+      }
+    }
+  } // unlocking constantPool
+
+
+  // The original attempt to resolve this constant pool entry failed so find the
+  // original error and throw it again (JVMS 5.4.3).
+  if (in_error) {
+    Symbol* error = SystemDictionary::find_resolution_error(this_oop, which);
+    guarantee(error != (Symbol*)NULL, "tag mismatch with resolution error table");
+    ResourceMark rm;
+    // exception text will be the class name
+    const char* className = this_oop->unresolved_klass_at(which)->as_C_string();
+    THROW_MSG_0(error, className);
+  }
+
+  if (do_resolve) {
+    // this_oop must be unlocked during resolve_or_fail
+    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
+    Handle h_prot (THREAD, protection_domain);
+    Klass* k_oop = SystemDictionary::resolve_or_fail(name, loader, h_prot, true, THREAD);
+    KlassHandle k;
+    if (!HAS_PENDING_EXCEPTION) {
+      k = KlassHandle(THREAD, k_oop);
+      // preserve the resolved klass.
+      mirror_handle = Handle(THREAD, k_oop->java_mirror());
+      // Do access check for klasses
+      verify_constant_pool_resolve(this_oop, k, THREAD);
+    }
+
+    // Failed to resolve class. We must record the errors so that subsequent attempts
+    // to resolve this constant pool entry fail with the same error (JVMS 5.4.3).
+    if (HAS_PENDING_EXCEPTION) {
+      ResourceMark rm;
+      Symbol* error = PENDING_EXCEPTION->klass()->name();
+
+      bool throw_orig_error = false;
+      {
+        MonitorLockerEx ml(this_oop->lock());
+
+        // some other thread has beaten us and has resolved the class.
+        if (this_oop->tag_at(which).is_klass()) {
+          CLEAR_PENDING_EXCEPTION;
+          entry = this_oop->resolved_klass_at(which);
+          return entry.get_klass();
+        }
+
+        if (!PENDING_EXCEPTION->
+              is_a(SystemDictionary::LinkageError_klass())) {
+          // Just throw the exception and don't prevent these classes from
+          // being loaded due to virtual machine errors like StackOverflow
+          // and OutOfMemoryError, etc, or if the thread was hit by stop()
+          // Needs clarification to section 5.4.3 of the VM spec (see 6308271)
+        }
+        else if (!this_oop->tag_at(which).is_unresolved_klass_in_error()) {
+          SystemDictionary::add_resolution_error(this_oop, which, error);
+          this_oop->tag_at_put(which, JVM_CONSTANT_UnresolvedClassInError);
+        } else {
+          // some other thread has put the class in error state.
+          error = SystemDictionary::find_resolution_error(this_oop, which);
+          assert(error != NULL, "checking");
+          throw_orig_error = true;
+        }
+      } // unlocked
+
+      if (throw_orig_error) {
+        CLEAR_PENDING_EXCEPTION;
+        ResourceMark rm;
+        const char* className = this_oop->unresolved_klass_at(which)->as_C_string();
+        THROW_MSG_0(error, className);
+      }
+
+      return 0;
+    }
+
+    if (TraceClassResolution && !k()->oop_is_array()) {
+      // skip resolving the constant pool so that this code get's
+      // called the next time some bytecodes refer to this class.
+      ResourceMark rm;
+      int line_number = -1;
+      const char * source_file = NULL;
+      if (JavaThread::current()->has_last_Java_frame()) {
+        // try to identify the method which called this function.
+        vframeStream vfst(JavaThread::current());
+        if (!vfst.at_end()) {
+          line_number = vfst.method()->line_number_from_bci(vfst.bci());
+          Symbol* s = InstanceKlass::cast(vfst.method()->method_holder())->source_file_name();
+          if (s != NULL) {
+            source_file = s->as_C_string();
+          }
+        }
+      }
+      if (k() != this_oop->pool_holder()) {
+        // only print something if the classes are different
+        if (source_file != NULL) {
+          tty->print("RESOLVE %s %s %s:%d\n",
+                     InstanceKlass::cast(this_oop->pool_holder())->external_name(),
+                     InstanceKlass::cast(k())->external_name(), source_file, line_number);
+        } else {
+          tty->print("RESOLVE %s %s\n",
+                     InstanceKlass::cast(this_oop->pool_holder())->external_name(),
+                     InstanceKlass::cast(k())->external_name());
+        }
+      }
+      return k();
+    } else {
+      MonitorLockerEx ml(this_oop->lock());
+      // Only updated constant pool - if it is resolved.
+      do_resolve = this_oop->tag_at(which).is_unresolved_klass();
+      if (do_resolve) {
+        ClassLoaderData* this_key = InstanceKlass::cast(this_oop->pool_holder())->class_loader_data();
+        if (!this_key->is_the_null_class_loader_data()) {
+          this_key->record_dependency(k(), CHECK_NULL); // Can throw OOM
+        }
+        this_oop->klass_at_put(which, k());
+      }
+    }
+  }
+
+  entry = this_oop->resolved_klass_at(which);
+  assert(entry.is_resolved() && entry.get_klass()->is_klass(), "must be resolved at this point");
+  return entry.get_klass();
+}
+
+
+// Does not update ConstantPool* - to avoid any exception throwing. Used
+// by compiler and exception handling.  Also used to avoid classloads for
+// instanceof operations. Returns NULL if the class has not been loaded or
+// if the verification of constant pool failed
+Klass* ConstantPool::klass_at_if_loaded(constantPoolHandle this_oop, int which) {
+  CPSlot entry = this_oop->slot_at(which);
+  if (entry.is_resolved()) {
+    assert(entry.get_klass()->is_klass(), "must be");
+    return entry.get_klass();
+  } else {
+    assert(entry.is_unresolved(), "must be either symbol or klass");
+    Thread *thread = Thread::current();
+    Symbol* name = entry.get_symbol();
+    oop loader = InstanceKlass::cast(this_oop->pool_holder())->class_loader();
+    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
+    Handle h_prot (thread, protection_domain);
+    Handle h_loader (thread, loader);
+    Klass* k = SystemDictionary::find(name, h_loader, h_prot, thread);
+
+    if (k != NULL) {
+      // Make sure that resolving is legal
+      EXCEPTION_MARK;
+      KlassHandle klass(THREAD, k);
+      // return NULL if verification fails
+      verify_constant_pool_resolve(this_oop, klass, THREAD);
+      if (HAS_PENDING_EXCEPTION) {
+        CLEAR_PENDING_EXCEPTION;
+        return NULL;
+      }
+      return klass();
+    } else {
+      return k;
+    }
+  }
+}
+
+
+Klass* ConstantPool::klass_ref_at_if_loaded(constantPoolHandle this_oop, int which) {
+  return klass_at_if_loaded(this_oop, this_oop->klass_ref_index_at(which));
+}
+
+
+// This is an interface for the compiler that allows accessing non-resolved entries
+// in the constant pool - but still performs the validations tests. Must be used
+// in a pre-parse of the compiler - to determine what it can do and not do.
+// Note: We cannot update the ConstantPool from the vm_thread.
+Klass* ConstantPool::klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int index, TRAPS) {
+  int which = this_oop->klass_ref_index_at(index);
+  CPSlot entry = this_oop->slot_at(which);
+  if (entry.is_resolved()) {
+    assert(entry.get_klass()->is_klass(), "must be");
+    return entry.get_klass();
+  } else {
+    assert(entry.is_unresolved(), "must be either symbol or klass");
+    Symbol*  name  = entry.get_symbol();
+    oop loader = InstanceKlass::cast(this_oop->pool_holder())->class_loader();
+    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
+    Handle h_loader(THREAD, loader);
+    Handle h_prot  (THREAD, protection_domain);
+    KlassHandle k(THREAD, SystemDictionary::find(name, h_loader, h_prot, THREAD));
+
+    // Do access check for klasses
+    if( k.not_null() ) verify_constant_pool_resolve(this_oop, k, CHECK_NULL);
+    return k();
+  }
+}
+
+
+Method* ConstantPool::method_at_if_loaded(constantPoolHandle cpool,
+                                                   int which) {
+  if (cpool->cache() == NULL)  return NULL;  // nothing to load yet
+  int cache_index = decode_cpcache_index(which, true);
+  if (!(cache_index >= 0 && cache_index < cpool->cache()->length())) {
+    // FIXME: should be an assert
+    if (PrintMiscellaneous && (Verbose||WizardMode)) {
+      tty->print_cr("bad operand %d in:", which); cpool->print();
+    }
+    return NULL;
+  }
+  ConstantPoolCacheEntry* e = cpool->cache()->entry_at(cache_index);
+  return e->method_if_resolved(cpool);
+}
+
+
+bool ConstantPool::has_appendix_at_if_loaded(constantPoolHandle cpool, int which) {
+  if (cpool->cache() == NULL)  return false;  // nothing to load yet
+  int cache_index = decode_cpcache_index(which, true);
+  ConstantPoolCacheEntry* e = cpool->cache()->entry_at(cache_index);
+  return e->has_appendix();
+}
+
+
+oop ConstantPool::appendix_at_if_loaded(constantPoolHandle cpool, int which) {
+  if (cpool->cache() == NULL)  return NULL;  // nothing to load yet
+  int cache_index = decode_cpcache_index(which, true);
+  ConstantPoolCacheEntry* e = cpool->cache()->entry_at(cache_index);
+  return e->appendix_if_resolved(cpool);
+}
+
+
+Symbol* ConstantPool::impl_name_ref_at(int which, bool uncached) {
+  int name_index = name_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
+  return symbol_at(name_index);
+}
+
+
+Symbol* ConstantPool::impl_signature_ref_at(int which, bool uncached) {
+  int signature_index = signature_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
+  return symbol_at(signature_index);
+}
+
+
+int ConstantPool::impl_name_and_type_ref_index_at(int which, bool uncached) {
+  int i = which;
+  if (!uncached && cache() != NULL) {
+    if (ConstantPool::is_invokedynamic_index(which)) {
+      // Invokedynamic index is index into resolved_references
+      int pool_index = invokedynamic_cp_cache_entry_at(which)->constant_pool_index();
+      pool_index = invoke_dynamic_name_and_type_ref_index_at(pool_index);
+      assert(tag_at(pool_index).is_name_and_type(), "");
+      return pool_index;
+    }
+    // change byte-ordering and go via cache
+    i = remap_instruction_operand_from_cache(which);
+  } else {
+    if (tag_at(which).is_invoke_dynamic()) {
+      int pool_index = invoke_dynamic_name_and_type_ref_index_at(which);
+      assert(tag_at(pool_index).is_name_and_type(), "");
+      return pool_index;
+    }
+  }
+  assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
+  assert(!tag_at(i).is_invoke_dynamic(), "Must be handled above");
+  jint ref_index = *int_at_addr(i);
+  return extract_high_short_from_int(ref_index);
+}
+
+
+int ConstantPool::impl_klass_ref_index_at(int which, bool uncached) {
+  guarantee(!ConstantPool::is_invokedynamic_index(which),
+            "an invokedynamic instruction does not have a klass");
+  int i = which;
+  if (!uncached && cache() != NULL) {
+    // change byte-ordering and go via cache
+    i = remap_instruction_operand_from_cache(which);
+  }
+  assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
+  jint ref_index = *int_at_addr(i);
+  return extract_low_short_from_int(ref_index);
+}
+
+
+
+int ConstantPool::remap_instruction_operand_from_cache(int operand) {
+  int cpc_index = operand;
+  DEBUG_ONLY(cpc_index -= CPCACHE_INDEX_TAG);
+  assert((int)(u2)cpc_index == cpc_index, "clean u2");
+  int member_index = cache()->entry_at(cpc_index)->constant_pool_index();
+  return member_index;
+}
+
+
+void ConstantPool::verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle k, TRAPS) {
+ if (k->oop_is_instance() || k->oop_is_objArray()) {
+    instanceKlassHandle holder (THREAD, this_oop->pool_holder());
+    Klass* elem_oop = k->oop_is_instance() ? k() : objArrayKlass::cast(k())->bottom_klass();
+    KlassHandle element (THREAD, elem_oop);
+
+    // The element type could be a typeArray - we only need the access check if it is
+    // an reference to another class
+    if (element->oop_is_instance()) {
+      LinkResolver::check_klass_accessability(holder, element, CHECK);
+    }
+  }
+}
+
+
+int ConstantPool::name_ref_index_at(int which_nt) {
+  jint ref_index = name_and_type_at(which_nt);
+  return extract_low_short_from_int(ref_index);
+}
+
+
+int ConstantPool::signature_ref_index_at(int which_nt) {
+  jint ref_index = name_and_type_at(which_nt);
+  return extract_high_short_from_int(ref_index);
+}
+
+
+Klass* ConstantPool::klass_ref_at(int which, TRAPS) {
+  return klass_at(klass_ref_index_at(which), CHECK_NULL);
+}
+
+
+Symbol* ConstantPool::klass_name_at(int which) {
+  assert(tag_at(which).is_unresolved_klass() || tag_at(which).is_klass(),
+         "Corrupted constant pool");
+  // A resolved constantPool entry will contain a Klass*, otherwise a Symbol*.
+  // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and
+  // tag is not updated atomicly.
+  CPSlot entry = slot_at(which);
+  if (entry.is_resolved()) {
+    // Already resolved - return entry's name.
+    assert(entry.get_klass()->is_klass(), "must be");
+    return entry.get_klass()->name();
+  } else {
+    assert(entry.is_unresolved(), "must be either symbol or klass");
+    return entry.get_symbol();
+  }
+}
+
+Symbol* ConstantPool::klass_ref_at_noresolve(int which) {
+  jint ref_index = klass_ref_index_at(which);
+  return klass_at_noresolve(ref_index);
+}
+
+Symbol* ConstantPool::uncached_klass_ref_at_noresolve(int which) {
+  jint ref_index = uncached_klass_ref_index_at(which);
+  return klass_at_noresolve(ref_index);
+}
+
+char* ConstantPool::string_at_noresolve(int which) {
+  Symbol* s = unresolved_string_at(which);
+  if (s == NULL) {
+    return (char*)"<pseudo-string>";
+  } else {
+    return unresolved_string_at(which)->as_C_string();
+  }
+}
+
+BasicType ConstantPool::basic_type_for_signature_at(int which) {
+  return FieldType::basic_type(symbol_at(which));
+}
+
+
+void ConstantPool::resolve_string_constants_impl(constantPoolHandle this_oop, TRAPS) {
+  for (int index = 1; index < this_oop->length(); index++) { // Index 0 is unused
+    if (this_oop->tag_at(index).is_string()) {
+      this_oop->string_at(index, CHECK);
+    }
+  }
+}
+
+// Resolve all the classes in the constant pool.  If they are all resolved,
+// the constant pool is read-only.  Enhancement: allocate cp entries to
+// another metaspace, and copy to read-only or read-write space if this
+// bit is set.
+bool ConstantPool::resolve_class_constants(TRAPS) {
+  constantPoolHandle cp(THREAD, this);
+  for (int index = 1; index < length(); index++) { // Index 0 is unused
+    if (tag_at(index).is_unresolved_klass() &&
+        klass_at_if_loaded(cp, index) == NULL) {
+      return false;
+  }
+  }
+  // set_preresolution(); or some bit for future use
+  return true;
+}
+
+// If resolution for MethodHandle or MethodType fails, save the exception
+// in the resolution error table, so that the same exception is thrown again.
+void ConstantPool::save_and_throw_exception(constantPoolHandle this_oop, int which,
+                                     int tag, TRAPS) {
+  ResourceMark rm;
+  Symbol* error = PENDING_EXCEPTION->klass()->name();
+  MonitorLockerEx ml(this_oop->lock());  // lock cpool to change tag.
+
+  int error_tag = (tag == JVM_CONSTANT_MethodHandle) ?
+           JVM_CONSTANT_MethodHandleInError : JVM_CONSTANT_MethodTypeInError;
+
+  if (!PENDING_EXCEPTION->
+    is_a(SystemDictionary::LinkageError_klass())) {
+    // Just throw the exception and don't prevent these classes from
+    // being loaded due to virtual machine errors like StackOverflow
+    // and OutOfMemoryError, etc, or if the thread was hit by stop()
+    // Needs clarification to section 5.4.3 of the VM spec (see 6308271)
+
+  } else if (this_oop->tag_at(which).value() != error_tag) {
+    SystemDictionary::add_resolution_error(this_oop, which, error);
+    this_oop->tag_at_put(which, error_tag);
+  } else {
+    // some other thread has put the class in error state.
+    error = SystemDictionary::find_resolution_error(this_oop, which);
+    assert(error != NULL, "checking");
+    CLEAR_PENDING_EXCEPTION;
+    THROW_MSG(error, "");
+  }
+}
+
+
+// Called to resolve constants in the constant pool and return an oop.
+// Some constant pool entries cache their resolved oop. This is also
+// called to create oops from constants to use in arguments for invokedynamic
+oop ConstantPool::resolve_constant_at_impl(constantPoolHandle this_oop, int index, int cache_index, TRAPS) {
+  oop result_oop = NULL;
+  Handle throw_exception;
+
+  if (cache_index == _possible_index_sentinel) {
+    // It is possible that this constant is one which is cached in the objects.
+    // We'll do a linear search.  This should be OK because this usage is rare.
+    assert(index > 0, "valid index");
+    cache_index = this_oop->cp_to_object_index(index);
+  }
+  assert(cache_index == _no_index_sentinel || cache_index >= 0, "");
+  assert(index == _no_index_sentinel || index >= 0, "");
+
+  if (cache_index >= 0) {
+    result_oop = this_oop->resolved_references()->obj_at(cache_index);
+    if (result_oop != NULL) {
+      return result_oop;
+      // That was easy...
+    }
+    index = this_oop->object_to_cp_index(cache_index);
+  }
+
+  jvalue prim_value;  // temp used only in a few cases below
+
+  int tag_value = this_oop->tag_at(index).value();
+
+  switch (tag_value) {
+
+  case JVM_CONSTANT_UnresolvedClass:
+  case JVM_CONSTANT_UnresolvedClassInError:
+  case JVM_CONSTANT_Class:
+    {
+      assert(cache_index == _no_index_sentinel, "should not have been set");
+      Klass* resolved = klass_at_impl(this_oop, index, CHECK_NULL);
+      // ldc wants the java mirror.
+      result_oop = resolved->java_mirror();
+      break;
+    }
+
+  case JVM_CONSTANT_String:
+    assert(cache_index != _no_index_sentinel, "should have been set");
+    if (this_oop->is_pseudo_string_at(index)) {
+      result_oop = this_oop->pseudo_string_at(index, cache_index);
+      break;
+    }
+    result_oop = string_at_impl(this_oop, index, cache_index, CHECK_NULL);
+    break;
+
+  case JVM_CONSTANT_Object:
+    result_oop = this_oop->object_at(index);
+    break;
+
+  case JVM_CONSTANT_MethodHandleInError:
+  case JVM_CONSTANT_MethodTypeInError:
+    {
+      Symbol* error = SystemDictionary::find_resolution_error(this_oop, index);
+      guarantee(error != (Symbol*)NULL, "tag mismatch with resolution error table");
+      ResourceMark rm;
+      THROW_MSG_0(error, "");
+      break;
+    }
+
+  case JVM_CONSTANT_MethodHandle:
+    {
+      int ref_kind                 = this_oop->method_handle_ref_kind_at(index);
+      int callee_index             = this_oop->method_handle_klass_index_at(index);
+      Symbol*  name =      this_oop->method_handle_name_ref_at(index);
+      Symbol*  signature = this_oop->method_handle_signature_ref_at(index);
+      if (PrintMiscellaneous)
+        tty->print_cr("resolve JVM_CONSTANT_MethodHandle:%d [%d/%d/%d] %s.%s",
+                      ref_kind, index, this_oop->method_handle_index_at(index),
+                      callee_index, name->as_C_string(), signature->as_C_string());
+      KlassHandle callee;
+      { Klass* k = klass_at_impl(this_oop, callee_index, CHECK_NULL);
+        callee = KlassHandle(THREAD, k);
+      }
+      KlassHandle klass(THREAD, this_oop->pool_holder());
+      Handle value = SystemDictionary::link_method_handle_constant(klass, ref_kind,
+                                                                   callee, name, signature,
+                                                                   THREAD);
+      result_oop = value();
+      if (HAS_PENDING_EXCEPTION) {
+        save_and_throw_exception(this_oop, index, tag_value, CHECK_NULL);
+      }
+      break;
+    }
+
+  case JVM_CONSTANT_MethodType:
+    {
+      Symbol*  signature = this_oop->method_type_signature_at(index);
+      if (PrintMiscellaneous)
+        tty->print_cr("resolve JVM_CONSTANT_MethodType [%d/%d] %s",
+                      index, this_oop->method_type_index_at(index),
+                      signature->as_C_string());
+      KlassHandle klass(THREAD, this_oop->pool_holder());
+      Handle value = SystemDictionary::find_method_handle_type(signature, klass, THREAD);
+      result_oop = value();
+      if (HAS_PENDING_EXCEPTION) {
+        save_and_throw_exception(this_oop, index, tag_value, CHECK_NULL);
+      }
+      break;
+    }
+
+  case JVM_CONSTANT_Integer:
+    assert(cache_index == _no_index_sentinel, "should not have been set");
+    prim_value.i = this_oop->int_at(index);
+    result_oop = java_lang_boxing_object::create(T_INT, &prim_value, CHECK_NULL);
+    break;
+
+  case JVM_CONSTANT_Float:
+    assert(cache_index == _no_index_sentinel, "should not have been set");
+    prim_value.f = this_oop->float_at(index);
+    result_oop = java_lang_boxing_object::create(T_FLOAT, &prim_value, CHECK_NULL);
+    break;
+
+  case JVM_CONSTANT_Long:
+    assert(cache_index == _no_index_sentinel, "should not have been set");
+    prim_value.j = this_oop->long_at(index);
+    result_oop = java_lang_boxing_object::create(T_LONG, &prim_value, CHECK_NULL);
+    break;
+
+  case JVM_CONSTANT_Double:
+    assert(cache_index == _no_index_sentinel, "should not have been set");
+    prim_value.d = this_oop->double_at(index);
+    result_oop = java_lang_boxing_object::create(T_DOUBLE, &prim_value, CHECK_NULL);
+    break;
+
+  default:
+    DEBUG_ONLY( tty->print_cr("*** %p: tag at CP[%d/%d] = %d",
+                              this_oop(), index, cache_index, tag_value) );
+    assert(false, "unexpected constant tag");
+    break;
+  }
+
+  if (cache_index >= 0) {
+    // Cache the oop here also.
+    Handle result_handle(THREAD, result_oop);
+    MonitorLockerEx ml(this_oop->lock());  // don't know if we really need this
+    oop result = this_oop->resolved_references()->obj_at(cache_index);
+    // Benign race condition:  resolved_references may already be filled in while we were trying to lock.
+    // The important thing here is that all threads pick up the same result.
+    // It doesn't matter which racing thread wins, as long as only one
+    // result is used by all threads, and all future queries.
+    // That result may be either a resolved constant or a failure exception.
+    if (result == NULL) {
+      this_oop->resolved_references()->obj_at_put(cache_index, result_handle());
+      return result_handle();
+    } else {
+      // Return the winning thread's result.  This can be different than
+      // result_handle() for MethodHandles.
+      return result;
+    }
+  } else {
+    return result_oop;
+  }
+}
+
+oop ConstantPool::uncached_string_at(int which, TRAPS) {
+  Symbol* sym = unresolved_string_at(which);
+  oop str = StringTable::intern(sym, CHECK_(NULL));
+  assert(java_lang_String::is_instance(str), "must be string");
+  return str;
+}
+
+
+oop ConstantPool::resolve_bootstrap_specifier_at_impl(constantPoolHandle this_oop, int index, TRAPS) {
+  assert(this_oop->tag_at(index).is_invoke_dynamic(), "Corrupted constant pool");
+
+  Handle bsm;
+  int argc;
+  {
+    // JVM_CONSTANT_InvokeDynamic is an ordered pair of [bootm, name&type], plus optional arguments
+    // The bootm, being a JVM_CONSTANT_MethodHandle, has its own cache entry.
+    // It is accompanied by the optional arguments.
+    int bsm_index = this_oop->invoke_dynamic_bootstrap_method_ref_index_at(index);
+    oop bsm_oop = this_oop->resolve_possibly_cached_constant_at(bsm_index, CHECK_NULL);
+    if (!java_lang_invoke_MethodHandle::is_instance(bsm_oop)) {
+      THROW_MSG_NULL(vmSymbols::java_lang_LinkageError(), "BSM not an MethodHandle");
+    }
+
+    // Extract the optional static arguments.
+    argc = this_oop->invoke_dynamic_argument_count_at(index);
+    if (argc == 0)  return bsm_oop;
+
+    bsm = Handle(THREAD, bsm_oop);
+  }
+
+  objArrayHandle info;
+  {
+    objArrayOop info_oop = oopFactory::new_objArray(SystemDictionary::Object_klass(), 1+argc, CHECK_NULL);
+    info = objArrayHandle(THREAD, info_oop);
+  }
+
+  info->obj_at_put(0, bsm());
+  for (int i = 0; i < argc; i++) {
+    int arg_index = this_oop->invoke_dynamic_argument_index_at(index, i);
+    oop arg_oop = this_oop->resolve_possibly_cached_constant_at(arg_index, CHECK_NULL);
+    info->obj_at_put(1+i, arg_oop);
+  }
+
+  return info();
+}
+
+oop ConstantPool::string_at_impl(constantPoolHandle this_oop, int which, int obj_index, TRAPS) {
+  // If the string has already been interned, this entry will be non-null
+  oop str = this_oop->resolved_references()->obj_at(obj_index);
+  if (str != NULL) return str;
+
+      Symbol* sym = this_oop->unresolved_string_at(which);
+  str = StringTable::intern(sym, CHECK_(NULL));
+  this_oop->string_at_put(which, obj_index, str);
+  assert(java_lang_String::is_instance(str), "must be string");
+  return str;
+}
+
+
+bool ConstantPool::klass_name_at_matches(instanceKlassHandle k,
+                                                int which) {
+  // Names are interned, so we can compare Symbol*s directly
+  Symbol* cp_name = klass_name_at(which);
+  return (cp_name == k->name());
+}
+
+
+// Iterate over symbols and decrement ones which are Symbol*s.
+// This is done during GC so do not need to lock constantPool unless we
+// have per-thread safepoints.
+// Only decrement the UTF8 symbols. Unresolved classes and strings point to
+// these symbols but didn't increment the reference count.
+void ConstantPool::unreference_symbols() {
+  for (int index = 1; index < length(); index++) { // Index 0 is unused
+    constantTag tag = tag_at(index);
+    if (tag.is_symbol()) {
+      symbol_at(index)->decrement_refcount();
+    }
+  }
+}
+
+
+// Compare this constant pool's entry at index1 to the constant pool
+// cp2's entry at index2.
+bool ConstantPool::compare_entry_to(int index1, constantPoolHandle cp2,
+       int index2, TRAPS) {
+
+  jbyte t1 = tag_at(index1).value();
+  jbyte t2 = cp2->tag_at(index2).value();
+
+
+  // JVM_CONSTANT_UnresolvedClassInError is equal to JVM_CONSTANT_UnresolvedClass
+  // when comparing
+  if (t1 == JVM_CONSTANT_UnresolvedClassInError) {
+    t1 = JVM_CONSTANT_UnresolvedClass;
+  }
+  if (t2 == JVM_CONSTANT_UnresolvedClassInError) {
+    t2 = JVM_CONSTANT_UnresolvedClass;
+  }
+
+  if (t1 != t2) {
+    // Not the same entry type so there is nothing else to check. Note
+    // that this style of checking will consider resolved/unresolved
+    // class pairs as different.
+    // From the ConstantPool* API point of view, this is correct
+    // behavior. See VM_RedefineClasses::merge_constant_pools() to see how this
+    // plays out in the context of ConstantPool* merging.
+    return false;
+  }
+
+  switch (t1) {
+  case JVM_CONSTANT_Class:
+  {
+    Klass* k1 = klass_at(index1, CHECK_false);
+    Klass* k2 = cp2->klass_at(index2, CHECK_false);
+    if (k1 == k2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_ClassIndex:
+  {
+    int recur1 = klass_index_at(index1);
+    int recur2 = cp2->klass_index_at(index2);
+    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+    if (match) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_Double:
+  {
+    jdouble d1 = double_at(index1);
+    jdouble d2 = cp2->double_at(index2);
+    if (d1 == d2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_Fieldref:
+  case JVM_CONSTANT_InterfaceMethodref:
+  case JVM_CONSTANT_Methodref:
+  {
+    int recur1 = uncached_klass_ref_index_at(index1);
+    int recur2 = cp2->uncached_klass_ref_index_at(index2);
+    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+    if (match) {
+      recur1 = uncached_name_and_type_ref_index_at(index1);
+      recur2 = cp2->uncached_name_and_type_ref_index_at(index2);
+      match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+      if (match) {
+        return true;
+      }
+    }
+  } break;
+
+  case JVM_CONSTANT_Float:
+  {
+    jfloat f1 = float_at(index1);
+    jfloat f2 = cp2->float_at(index2);
+    if (f1 == f2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_Integer:
+  {
+    jint i1 = int_at(index1);
+    jint i2 = cp2->int_at(index2);
+    if (i1 == i2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_Long:
+  {
+    jlong l1 = long_at(index1);
+    jlong l2 = cp2->long_at(index2);
+    if (l1 == l2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_NameAndType:
+  {
+    int recur1 = name_ref_index_at(index1);
+    int recur2 = cp2->name_ref_index_at(index2);
+    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+    if (match) {
+      recur1 = signature_ref_index_at(index1);
+      recur2 = cp2->signature_ref_index_at(index2);
+      match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+      if (match) {
+        return true;
+      }
+    }
+  } break;
+
+  case JVM_CONSTANT_StringIndex:
+  {
+    int recur1 = string_index_at(index1);
+    int recur2 = cp2->string_index_at(index2);
+    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
+    if (match) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_UnresolvedClass:
+  {
+    Symbol* k1 = unresolved_klass_at(index1);
+    Symbol* k2 = cp2->unresolved_klass_at(index2);
+    if (k1 == k2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_MethodType:
+  {
+    int k1 = method_type_index_at(index1);
+    int k2 = cp2->method_type_index_at(index2);
+    bool match = compare_entry_to(k1, cp2, k2, CHECK_false);
+    if (match) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_MethodHandle:
+  {
+    int k1 = method_handle_ref_kind_at(index1);
+    int k2 = cp2->method_handle_ref_kind_at(index2);
+    if (k1 == k2) {
+      int i1 = method_handle_index_at(index1);
+      int i2 = cp2->method_handle_index_at(index2);
+      bool match = compare_entry_to(i1, cp2, i2, CHECK_false);
+      if (match) {
+        return true;
+      }
+    }
+  } break;
+
+  case JVM_CONSTANT_InvokeDynamic:
+  {
+    int k1 = invoke_dynamic_bootstrap_method_ref_index_at(index1);
+    int k2 = cp2->invoke_dynamic_bootstrap_method_ref_index_at(index2);
+    bool match = compare_entry_to(k1, cp2, k2, CHECK_false);
+    if (!match)  return false;
+    k1 = invoke_dynamic_name_and_type_ref_index_at(index1);
+    k2 = cp2->invoke_dynamic_name_and_type_ref_index_at(index2);
+    match = compare_entry_to(k1, cp2, k2, CHECK_false);
+    if (!match)  return false;
+    int argc = invoke_dynamic_argument_count_at(index1);
+    if (argc == cp2->invoke_dynamic_argument_count_at(index2)) {
+      for (int j = 0; j < argc; j++) {
+        k1 = invoke_dynamic_argument_index_at(index1, j);
+        k2 = cp2->invoke_dynamic_argument_index_at(index2, j);
+        match = compare_entry_to(k1, cp2, k2, CHECK_false);
+        if (!match)  return false;
+      }
+      return true;           // got through loop; all elements equal
+    }
+  } break;
+
+  case JVM_CONSTANT_String:
+  {
+    Symbol* s1 = unresolved_string_at(index1);
+    Symbol* s2 = cp2->unresolved_string_at(index2);
+    if (s1 == s2) {
+      return true;
+    }
+  } break;
+
+  case JVM_CONSTANT_Utf8:
+  {
+    Symbol* s1 = symbol_at(index1);
+    Symbol* s2 = cp2->symbol_at(index2);
+    if (s1 == s2) {
+      return true;
+    }
+  } break;
+
+  // Invalid is used as the tag for the second constant pool entry
+  // occupied by JVM_CONSTANT_Double or JVM_CONSTANT_Long. It should
+  // not be seen by itself.
+  case JVM_CONSTANT_Invalid: // fall through
+
+  default:
+    ShouldNotReachHere();
+    break;
+  }
+
+  return false;
+} // end compare_entry_to()
+
+
+// Copy this constant pool's entries at start_i to end_i (inclusive)
+// to the constant pool to_cp's entries starting at to_i. A total of
+// (end_i - start_i) + 1 entries are copied.
+void ConstantPool::copy_cp_to_impl(constantPoolHandle from_cp, int start_i, int end_i,
+       constantPoolHandle to_cp, int to_i, TRAPS) {
+
+  int dest_i = to_i;  // leave original alone for debug purposes
+
+  for (int src_i = start_i; src_i <= end_i; /* see loop bottom */ ) {
+    copy_entry_to(from_cp, src_i, to_cp, dest_i, CHECK);
+
+    switch (from_cp->tag_at(src_i).value()) {
+    case JVM_CONSTANT_Double:
+    case JVM_CONSTANT_Long:
+      // double and long take two constant pool entries
+      src_i += 2;
+      dest_i += 2;
+      break;
+
+    default:
+      // all others take one constant pool entry
+      src_i++;
+      dest_i++;
+      break;
+    }
+  }
+
+  int from_oplen = operand_array_length(from_cp->operands());
+  int old_oplen  = operand_array_length(to_cp->operands());
+  if (from_oplen != 0) {
+    // append my operands to the target's operands array
+    if (old_oplen == 0) {
+      to_cp->set_operands(from_cp->operands());  // reuse; do not merge
+    } else {
+      int old_len  = to_cp->operands()->length();
+      int from_len = from_cp->operands()->length();
+      int old_off  = old_oplen * sizeof(u2);
+      int from_off = from_oplen * sizeof(u2);
+      // Use the metaspace for the destination constant pool
+      ClassLoaderData* loader_data = to_cp->pool_holder()->class_loader_data();
+      Array<u2>* new_operands = MetadataFactory::new_array<u2>(loader_data, old_len + from_len, CHECK);
+      int fillp = 0, len = 0;
+      // first part of dest
+      Copy::conjoint_memory_atomic(to_cp->operands()->adr_at(0),
+                                   new_operands->adr_at(fillp),
+                                   (len = old_off) * sizeof(u2));
+      fillp += len;
+      // first part of src
+      Copy::conjoint_memory_atomic(to_cp->operands()->adr_at(0),
+                                   new_operands->adr_at(fillp),
+                                   (len = from_off) * sizeof(u2));
+      fillp += len;
+      // second part of dest
+      Copy::conjoint_memory_atomic(to_cp->operands()->adr_at(old_off),
+                                   new_operands->adr_at(fillp),
+                                   (len = old_len - old_off) * sizeof(u2));
+      fillp += len;
+      // second part of src
+      Copy::conjoint_memory_atomic(to_cp->operands()->adr_at(from_off),
+                                   new_operands->adr_at(fillp),
+                                   (len = from_len - from_off) * sizeof(u2));
+      fillp += len;
+      assert(fillp == new_operands->length(), "");
+
+      // Adjust indexes in the first part of the copied operands array.
+      for (int j = 0; j < from_oplen; j++) {
+        int offset = operand_offset_at(new_operands, old_oplen + j);
+        assert(offset == operand_offset_at(from_cp->operands(), j), "correct copy");
+        offset += old_len;  // every new tuple is preceded by old_len extra u2's
+        operand_offset_at_put(new_operands, old_oplen + j, offset);
+      }
+
+      // replace target operands array with combined array
+      to_cp->set_operands(new_operands);
+    }
+  }
+
+} // end copy_cp_to()
+
+
+// Copy this constant pool's entry at from_i to the constant pool
+// to_cp's entry at to_i.
+void ConstantPool::copy_entry_to(constantPoolHandle from_cp, int from_i,
+                                        constantPoolHandle to_cp, int to_i,
+                                        TRAPS) {
+
+  int tag = from_cp->tag_at(from_i).value();
+  switch (tag) {
+  case JVM_CONSTANT_Class:
+  {
+    Klass* k = from_cp->klass_at(from_i, CHECK);
+    to_cp->klass_at_put(to_i, k);
+  } break;
+
+  case JVM_CONSTANT_ClassIndex:
+  {
+    jint ki = from_cp->klass_index_at(from_i);
+    to_cp->klass_index_at_put(to_i, ki);
+  } break;
+
+  case JVM_CONSTANT_Double:
+  {
+    jdouble d = from_cp->double_at(from_i);
+    to_cp->double_at_put(to_i, d);
+    // double takes two constant pool entries so init second entry's tag
+    to_cp->tag_at_put(to_i + 1, JVM_CONSTANT_Invalid);
+  } break;
+
+  case JVM_CONSTANT_Fieldref:
+  {
+    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
+    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
+    to_cp->field_at_put(to_i, class_index, name_and_type_index);
+  } break;
+
+  case JVM_CONSTANT_Float:
+  {
+    jfloat f = from_cp->float_at(from_i);
+    to_cp->float_at_put(to_i, f);
+  } break;
+
+  case JVM_CONSTANT_Integer:
+  {
+    jint i = from_cp->int_at(from_i);
+    to_cp->int_at_put(to_i, i);
+  } break;
+
+  case JVM_CONSTANT_InterfaceMethodref:
+  {
+    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
+    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
+    to_cp->interface_method_at_put(to_i, class_index, name_and_type_index);
+  } break;
+
+  case JVM_CONSTANT_Long:
+  {
+    jlong l = from_cp->long_at(from_i);
+    to_cp->long_at_put(to_i, l);
+    // long takes two constant pool entries so init second entry's tag
+    to_cp->tag_at_put(to_i + 1, JVM_CONSTANT_Invalid);
+  } break;
+
+  case JVM_CONSTANT_Methodref:
+  {
+    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
+    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
+    to_cp->method_at_put(to_i, class_index, name_and_type_index);
+  } break;
+
+  case JVM_CONSTANT_NameAndType:
+  {
+    int name_ref_index = from_cp->name_ref_index_at(from_i);
+    int signature_ref_index = from_cp->signature_ref_index_at(from_i);
+    to_cp->name_and_type_at_put(to_i, name_ref_index, signature_ref_index);
+  } break;
+
+  case JVM_CONSTANT_StringIndex:
+  {
+    jint si = from_cp->string_index_at(from_i);
+    to_cp->string_index_at_put(to_i, si);
+  } break;
+
+  case JVM_CONSTANT_UnresolvedClass:
+  {
+    // Can be resolved after checking tag, so check the slot first.
+    CPSlot entry = from_cp->slot_at(from_i);
+    if (entry.is_resolved()) {
+      assert(entry.get_klass()->is_klass(), "must be");
+      // Already resolved
+      to_cp->klass_at_put(to_i, entry.get_klass());
+    } else {
+      to_cp->unresolved_klass_at_put(to_i, entry.get_symbol());
+    }
+  } break;
+
+  case JVM_CONSTANT_UnresolvedClassInError:
+  {
+    Symbol* k = from_cp->unresolved_klass_at(from_i);
+    to_cp->unresolved_klass_at_put(to_i, k);
+    to_cp->tag_at_put(to_i, JVM_CONSTANT_UnresolvedClassInError);
+  } break;
+
+
+  case JVM_CONSTANT_String:
+  {
+    Symbol* s = from_cp->unresolved_string_at(from_i);
+    to_cp->unresolved_string_at_put(to_i, s);
+  } break;
+
+  case JVM_CONSTANT_Utf8:
+  {
+    Symbol* s = from_cp->symbol_at(from_i);
+    // Need to increase refcount, the old one will be thrown away and deferenced
+    s->increment_refcount();
+    to_cp->symbol_at_put(to_i, s);
+  } break;
+
+  case JVM_CONSTANT_MethodType:
+  {
+    jint k = from_cp->method_type_index_at(from_i);
+    to_cp->method_type_index_at_put(to_i, k);
+  } break;
+
+  case JVM_CONSTANT_MethodHandle:
+  {
+    int k1 = from_cp->method_handle_ref_kind_at(from_i);
+    int k2 = from_cp->method_handle_index_at(from_i);
+    to_cp->method_handle_index_at_put(to_i, k1, k2);
+  } break;
+
+  case JVM_CONSTANT_InvokeDynamic:
+  {
+    int k1 = from_cp->invoke_dynamic_bootstrap_specifier_index(from_i);
+    int k2 = from_cp->invoke_dynamic_name_and_type_ref_index_at(from_i);
+    k1 += operand_array_length(to_cp->operands());  // to_cp might already have operands
+    to_cp->invoke_dynamic_at_put(to_i, k1, k2);
+  } break;
+
+  // Invalid is used as the tag for the second constant pool entry
+  // occupied by JVM_CONSTANT_Double or JVM_CONSTANT_Long. It should
+  // not be seen by itself.
+  case JVM_CONSTANT_Invalid: // fall through
+
+  default:
+  {
+    ShouldNotReachHere();
+  } break;
+  }
+} // end copy_entry_to()
+
+
+// Search constant pool search_cp for an entry that matches this
+// constant pool's entry at pattern_i. Returns the index of a
+// matching entry or zero (0) if there is no matching entry.
+int ConstantPool::find_matching_entry(int pattern_i,
+      constantPoolHandle search_cp, TRAPS) {
+
+  // index zero (0) is not used
+  for (int i = 1; i < search_cp->length(); i++) {
+    bool found = compare_entry_to(pattern_i, search_cp, i, CHECK_0);
+    if (found) {
+      return i;
+    }
+  }
+
+  return 0;  // entry not found; return unused index zero (0)
+} // end find_matching_entry()
+
+
+#ifndef PRODUCT
+
+const char* ConstantPool::printable_name_at(int which) {
+
+  constantTag tag = tag_at(which);
+
+  if (tag.is_string()) {
+    return string_at_noresolve(which);
+  } else if (tag.is_klass() || tag.is_unresolved_klass()) {
+    return klass_name_at(which)->as_C_string();
+  } else if (tag.is_symbol()) {
+    return symbol_at(which)->as_C_string();
+  }
+  return "";
+}
+
+#endif // PRODUCT
+
+
+// JVMTI GetConstantPool support
+
+// For temporary use until code is stable.
+#define DBG(code)
+
+static const char* WARN_MSG = "Must not be such entry!";
+
+static void print_cpool_bytes(jint cnt, u1 *bytes) {
+  jint size = 0;
+  u2   idx1, idx2;
+
+  for (jint idx = 1; idx < cnt; idx++) {
+    jint ent_size = 0;
+    u1   tag  = *bytes++;
+    size++;                       // count tag
+
+    printf("const #%03d, tag: %02d ", idx, tag);
+    switch(tag) {
+      case JVM_CONSTANT_Invalid: {
+        printf("Invalid");
+        break;
+      }
+      case JVM_CONSTANT_Unicode: {
+        printf("Unicode      %s", WARN_MSG);
+        break;
+      }
+      case JVM_CONSTANT_Utf8: {
+        u2 len = Bytes::get_Java_u2(bytes);
+        char str[128];
+        if (len > 127) {
+           len = 127;
+        }
+        strncpy(str, (char *) (bytes+2), len);
+        str[len] = '\0';
+        printf("Utf8          \"%s\"", str);
+        ent_size = 2 + len;
+        break;
+      }
+      case JVM_CONSTANT_Integer: {
+        u4 val = Bytes::get_Java_u4(bytes);
+        printf("int          %d", *(int *) &val);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_Float: {
+        u4 val = Bytes::get_Java_u4(bytes);
+        printf("float        %5.3ff", *(float *) &val);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_Long: {
+        u8 val = Bytes::get_Java_u8(bytes);
+        printf("long         "INT64_FORMAT, (int64_t) *(jlong *) &val);
+        ent_size = 8;
+        idx++; // Long takes two cpool slots
+        break;
+      }
+      case JVM_CONSTANT_Double: {
+        u8 val = Bytes::get_Java_u8(bytes);
+        printf("double       %5.3fd", *(jdouble *)&val);
+        ent_size = 8;
+        idx++; // Double takes two cpool slots
+        break;
+      }
+      case JVM_CONSTANT_Class: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        printf("class        #%03d", idx1);
+        ent_size = 2;
+        break;
+      }
+      case JVM_CONSTANT_String: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        printf("String       #%03d", idx1);
+        ent_size = 2;
+        break;
+      }
+      case JVM_CONSTANT_Fieldref: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        idx2 = Bytes::get_Java_u2(bytes+2);
+        printf("Field        #%03d, #%03d", (int) idx1, (int) idx2);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_Methodref: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        idx2 = Bytes::get_Java_u2(bytes+2);
+        printf("Method       #%03d, #%03d", idx1, idx2);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_InterfaceMethodref: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        idx2 = Bytes::get_Java_u2(bytes+2);
+        printf("InterfMethod #%03d, #%03d", idx1, idx2);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_NameAndType: {
+        idx1 = Bytes::get_Java_u2(bytes);
+        idx2 = Bytes::get_Java_u2(bytes+2);
+        printf("NameAndType  #%03d, #%03d", idx1, idx2);
+        ent_size = 4;
+        break;
+      }
+      case JVM_CONSTANT_ClassIndex: {
+        printf("ClassIndex  %s", WARN_MSG);
+        break;
+      }
+      case JVM_CONSTANT_UnresolvedClass: {
+        printf("UnresolvedClass: %s", WARN_MSG);
+        break;
+      }
+      case JVM_CONSTANT_UnresolvedClassInError: {
+        printf("UnresolvedClassInErr: %s", WARN_MSG);
+        break;
+      }
+      case JVM_CONSTANT_StringIndex: {
+        printf("StringIndex: %s", WARN_MSG);
+        break;
+      }
+    }
+    printf(";\n");
+    bytes += ent_size;
+    size  += ent_size;
+  }
+  printf("Cpool size: %d\n", size);
+  fflush(0);
+  return;
+} /* end print_cpool_bytes */
+
+
+// Returns size of constant pool entry.
+jint ConstantPool::cpool_entry_size(jint idx) {
+  switch(tag_at(idx).value()) {
+    case JVM_CONSTANT_Invalid:
+    case JVM_CONSTANT_Unicode:
+      return 1;
+
+    case JVM_CONSTANT_Utf8:
+      return 3 + symbol_at(idx)->utf8_length();
+
+    case JVM_CONSTANT_Class:
+    case JVM_CONSTANT_String:
+    case JVM_CONSTANT_ClassIndex:
+    case JVM_CONSTANT_UnresolvedClass:
+    case JVM_CONSTANT_UnresolvedClassInError:
+    case JVM_CONSTANT_StringIndex:
+    case JVM_CONSTANT_MethodType:
+      return 3;
+
+    case JVM_CONSTANT_MethodHandle:
+      return 4; //tag, ref_kind, ref_index
+
+    case JVM_CONSTANT_Integer:
+    case JVM_CONSTANT_Float:
+    case JVM_CONSTANT_Fieldref:
+    case JVM_CONSTANT_Methodref:
+    case JVM_CONSTANT_InterfaceMethodref:
+    case JVM_CONSTANT_NameAndType:
+      return 5;
+
+    case JVM_CONSTANT_InvokeDynamic:
+      // u1 tag, u2 bsm, u2 nt
+      return 5;
+
+    case JVM_CONSTANT_Long:
+    case JVM_CONSTANT_Double:
+      return 9;
+  }
+  assert(false, "cpool_entry_size: Invalid constant pool entry tag");
+  return 1;
+} /* end cpool_entry_size */
+
+
+// SymbolHashMap is used to find a constant pool index from a string.
+// This function fills in SymbolHashMaps, one for utf8s and one for
+// class names, returns size of the cpool raw bytes.
+jint ConstantPool::hash_entries_to(SymbolHashMap *symmap,
+                                          SymbolHashMap *classmap) {
+  jint size = 0;
+
+  for (u2 idx = 1; idx < length(); idx++) {
+    u2 tag = tag_at(idx).value();
+    size += cpool_entry_size(idx);
+
+    switch(tag) {
+      case JVM_CONSTANT_Utf8: {
+        Symbol* sym = symbol_at(idx);
+        symmap->add_entry(sym, idx);
+        DBG(printf("adding symbol entry %s = %d\n", sym->as_utf8(), idx));
+        break;
+      }
+      case JVM_CONSTANT_Class:
+      case JVM_CONSTANT_UnresolvedClass:
+      case JVM_CONSTANT_UnresolvedClassInError: {
+        Symbol* sym = klass_name_at(idx);
+        classmap->add_entry(sym, idx);
+        DBG(printf("adding class entry %s = %d\n", sym->as_utf8(), idx));
+        break;
+      }
+      case JVM_CONSTANT_Long:
+      case JVM_CONSTANT_Double: {
+        idx++; // Both Long and Double take two cpool slots
+        break;
+      }
+    }
+  }
+  return size;
+} /* end hash_utf8_entries_to */
+
+
+// Copy cpool bytes.
+// Returns:
+//    0, in case of OutOfMemoryError
+//   -1, in case of internal error
+//  > 0, count of the raw cpool bytes that have been copied
+int ConstantPool::copy_cpool_bytes(int cpool_size,
+                                          SymbolHashMap* tbl,
+                                          unsigned char *bytes) {
+  u2   idx1, idx2;
+  jint size  = 0;
+  jint cnt   = length();
+  unsigned char *start_bytes = bytes;
+
+  for (jint idx = 1; idx < cnt; idx++) {
+    u1   tag      = tag_at(idx).value();
+    jint ent_size = cpool_entry_size(idx);
+
+    assert(size + ent_size <= cpool_size, "Size mismatch");
+
+    *bytes = tag;
+    DBG(printf("#%03hd tag=%03hd, ", idx, tag));
+    switch(tag) {
+      case JVM_CONSTANT_Invalid: {
+        DBG(printf("JVM_CONSTANT_Invalid"));
+        break;
+      }
+      case JVM_CONSTANT_Unicode: {
+        assert(false, "Wrong constant pool tag: JVM_CONSTANT_Unicode");
+        DBG(printf("JVM_CONSTANT_Unicode"));
+        break;
+      }
+      case JVM_CONSTANT_Utf8: {
+        Symbol* sym = symbol_at(idx);
+        char*     str = sym->as_utf8();
+        // Warning! It's crashing on x86 with len = sym->utf8_length()
+        int       len = (int) strlen(str);
+        Bytes::put_Java_u2((address) (bytes+1), (u2) len);
+        for (int i = 0; i < len; i++) {
+            bytes[3+i] = (u1) str[i];
+        }
+        DBG(printf("JVM_CONSTANT_Utf8: %s ", str));
+        break;
+      }
+      case JVM_CONSTANT_Integer: {
+        jint val = int_at(idx);
+        Bytes::put_Java_u4((address) (bytes+1), *(u4*)&val);
+        break;
+      }
+      case JVM_CONSTANT_Float: {
+        jfloat val = float_at(idx);
+        Bytes::put_Java_u4((address) (bytes+1), *(u4*)&val);
+        break;
+      }
+      case JVM_CONSTANT_Long: {
+        jlong val = long_at(idx);
+        Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
+        idx++;             // Long takes two cpool slots
+        break;
+      }
+      case JVM_CONSTANT_Double: {
+        jdouble val = double_at(idx);
+        Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
+        idx++;             // Double takes two cpool slots
+        break;
+      }
+      case JVM_CONSTANT_Class:
+      case JVM_CONSTANT_UnresolvedClass:
+      case JVM_CONSTANT_UnresolvedClassInError: {
+        *bytes = JVM_CONSTANT_Class;
+        Symbol* sym = klass_name_at(idx);
+        idx1 = tbl->symbol_to_value(sym);
+        assert(idx1 != 0, "Have not found a hashtable entry");
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        DBG(printf("JVM_CONSTANT_Class: idx=#%03hd, %s", idx1, sym->as_utf8()));
+        break;
+      }
+      case JVM_CONSTANT_String: {
+        *bytes = JVM_CONSTANT_String;
+        Symbol* sym = unresolved_string_at(idx);
+        idx1 = tbl->symbol_to_value(sym);
+        assert(idx1 != 0, "Have not found a hashtable entry");
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        DBG(char *str = sym->as_utf8());
+        DBG(printf("JVM_CONSTANT_String: idx=#%03hd, %s", idx1, str));
+        break;
+      }
+      case JVM_CONSTANT_Fieldref:
+      case JVM_CONSTANT_Methodref:
+      case JVM_CONSTANT_InterfaceMethodref: {
+        idx1 = uncached_klass_ref_index_at(idx);
+        idx2 = uncached_name_and_type_ref_index_at(idx);
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        Bytes::put_Java_u2((address) (bytes+3), idx2);
+        DBG(printf("JVM_CONSTANT_Methodref: %hd %hd", idx1, idx2));
+        break;
+      }
+      case JVM_CONSTANT_NameAndType: {
+        idx1 = name_ref_index_at(idx);
+        idx2 = signature_ref_index_at(idx);
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        Bytes::put_Java_u2((address) (bytes+3), idx2);
+        DBG(printf("JVM_CONSTANT_NameAndType: %hd %hd", idx1, idx2));
+        break;
+      }
+      case JVM_CONSTANT_ClassIndex: {
+        *bytes = JVM_CONSTANT_Class;
+        idx1 = klass_index_at(idx);
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        DBG(printf("JVM_CONSTANT_ClassIndex: %hd", idx1));
+        break;
+      }
+      case JVM_CONSTANT_StringIndex: {
+        *bytes = JVM_CONSTANT_String;
+        idx1 = string_index_at(idx);
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        DBG(printf("JVM_CONSTANT_StringIndex: %hd", idx1));
+        break;
+      }
+      case JVM_CONSTANT_MethodHandle:
+      case JVM_CONSTANT_MethodHandleInError: {
+        *bytes = JVM_CONSTANT_MethodHandle;
+        int kind = method_handle_ref_kind_at(idx);
+        idx1 = method_handle_index_at(idx);
+        *(bytes+1) = (unsigned char) kind;
+        Bytes::put_Java_u2((address) (bytes+2), idx1);
+        DBG(printf("JVM_CONSTANT_MethodHandle: %d %hd", kind, idx1));
+        break;
+      }
+      case JVM_CONSTANT_MethodType:
+      case JVM_CONSTANT_MethodTypeInError: {
+        *bytes = JVM_CONSTANT_MethodType;
+        idx1 = method_type_index_at(idx);
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        DBG(printf("JVM_CONSTANT_MethodType: %hd", idx1));
+        break;
+      }
+      case JVM_CONSTANT_InvokeDynamic: {
+        *bytes = tag;
+        idx1 = extract_low_short_from_int(*int_at_addr(idx));
+        idx2 = extract_high_short_from_int(*int_at_addr(idx));
+        assert(idx2 == invoke_dynamic_name_and_type_ref_index_at(idx), "correct half of u4");
+        Bytes::put_Java_u2((address) (bytes+1), idx1);
+        Bytes::put_Java_u2((address) (bytes+3), idx2);
+        DBG(printf("JVM_CONSTANT_InvokeDynamic: %hd %hd", idx1, idx2));
+        break;
+      }
+    }
+    DBG(printf("\n"));
+    bytes += ent_size;
+    size  += ent_size;
+  }
+  assert(size == cpool_size, "Size mismatch");
+
+  // Keep temorarily for debugging until it's stable.
+  DBG(print_cpool_bytes(cnt, start_bytes));
+  return (int)(bytes - start_bytes);
+} /* end copy_cpool_bytes */
+
+
+void ConstantPool::set_on_stack(const bool value) {
+  _on_stack = value;
+  if (value) MetadataOnStackMark::record(this);
+}
+
+// JSR 292 support for patching constant pool oops after the class is linked and
+// the oop array for resolved references are created.
+// We can't do this during classfile parsing, which is how the other indexes are
+// patched.  The other patches are applied early for some error checking
+// so only defer the pseudo_strings.
+void ConstantPool::patch_resolved_references(
+                                            GrowableArray<Handle>* cp_patches) {
+  assert(EnableInvokeDynamic, "");
+  for (int index = 1; index < cp_patches->length(); index++) { // Index 0 is unused
+    Handle patch = cp_patches->at(index);
+    if (patch.not_null()) {
+      assert (tag_at(index).is_string(), "should only be string left");
+      // Patching a string means pre-resolving it.
+      // The spelling in the constant pool is ignored.
+      // The constant reference may be any object whatever.
+      // If it is not a real interned string, the constant is referred
+      // to as a "pseudo-string", and must be presented to the CP
+      // explicitly, because it may require scavenging.
+      int obj_index = cp_to_object_index(index);
+      pseudo_string_at_put(index, obj_index, patch());
+      DEBUG_ONLY(cp_patches->at_put(index, Handle());)
+    }
+  }
+#ifdef ASSERT
+  // Ensure that all the patches have been used.
+  for (int index = 0; index < cp_patches->length(); index++) {
+    assert(cp_patches->at(index).is_null(),
+           err_msg("Unused constant pool patch at %d in class file %s",
+                   index,
+                   InstanceKlass::cast(pool_holder())->external_name()));
+  }
+#endif // ASSERT
+}
+
+#ifndef PRODUCT
+
+// CompileTheWorld support. Preload all classes loaded references in the passed in constantpool
+void ConstantPool::preload_and_initialize_all_classes(ConstantPool* obj, TRAPS) {
+  guarantee(obj->is_constantPool(), "object must be constant pool");
+  constantPoolHandle cp(THREAD, (ConstantPool*)obj);
+  guarantee(cp->pool_holder() != NULL, "must be fully loaded");
+
+  for (int i = 0; i< cp->length();  i++) {
+    if (cp->tag_at(i).is_unresolved_klass()) {
+      // This will force loading of the class
+      Klass* klass = cp->klass_at(i, CHECK);
+      if (klass->oop_is_instance()) {
+        // Force initialization of class
+        InstanceKlass::cast(klass)->initialize(CHECK);
+      }
+    }
+  }
+}
+
+#endif
+
+
+// Printing
+
+void ConstantPool::print_on(outputStream* st) const {
+  EXCEPTION_MARK;
+  assert(is_constantPool(), "must be constantPool");
+  st->print_cr(internal_name());
+  if (flags() != 0) {
+    st->print(" - flags: 0x%x", flags());
+    if (has_pseudo_string()) st->print(" has_pseudo_string");
+    if (has_invokedynamic()) st->print(" has_invokedynamic");
+    if (has_preresolution()) st->print(" has_preresolution");
+    st->cr();
+  }
+  if (pool_holder() != NULL) {
+    st->print_cr(" - holder: " INTPTR_FORMAT, pool_holder());
+  }
+  st->print_cr(" - cache: " INTPTR_FORMAT, cache());
+  st->print_cr(" - resolved_references: " INTPTR_FORMAT, resolved_references());
+  st->print_cr(" - reference_map: " INTPTR_FORMAT, reference_map());
+
+  for (int index = 1; index < length(); index++) {      // Index 0 is unused
+    ((ConstantPool*)this)->print_entry_on(index, st);
+    switch (tag_at(index).value()) {
+      case JVM_CONSTANT_Long :
+      case JVM_CONSTANT_Double :
+        index++;   // Skip entry following eigth-byte constant
+    }
+
+  }
+  st->cr();
+}
+
+// Print one constant pool entry
+void ConstantPool::print_entry_on(const int index, outputStream* st) {
+  EXCEPTION_MARK;
+  st->print(" - %3d : ", index);
+  tag_at(index).print_on(st);
+  st->print(" : ");
+  switch (tag_at(index).value()) {
+    case JVM_CONSTANT_Class :
+      { Klass* k = klass_at(index, CATCH);
+        k->print_value_on(st);
+        st->print(" {0x%lx}", (address)k);
+      }
+      break;
+    case JVM_CONSTANT_Fieldref :
+    case JVM_CONSTANT_Methodref :
+    case JVM_CONSTANT_InterfaceMethodref :
+      st->print("klass_index=%d", uncached_klass_ref_index_at(index));
+      st->print(" name_and_type_index=%d", uncached_name_and_type_ref_index_at(index));
+      break;
+    case JVM_CONSTANT_String :
+      unresolved_string_at(index)->print_value_on(st);
+      break;
+    case JVM_CONSTANT_Object : {
+      oop anObj = object_at(index);
+      anObj->print_value_on(st);
+      st->print(" {0x%lx}", (address)anObj);
+      } break;
+    case JVM_CONSTANT_Integer :
+      st->print("%d", int_at(index));
+      break;
+    case JVM_CONSTANT_Float :
+      st->print("%f", float_at(index));
+      break;
+    case JVM_CONSTANT_Long :
+      st->print_jlong(long_at(index));
+      break;
+    case JVM_CONSTANT_Double :
+      st->print("%lf", double_at(index));
+      break;
+    case JVM_CONSTANT_NameAndType :
+      st->print("name_index=%d", name_ref_index_at(index));
+      st->print(" signature_index=%d", signature_ref_index_at(index));
+      break;
+    case JVM_CONSTANT_Utf8 :
+      symbol_at(index)->print_value_on(st);
+      break;
+    case JVM_CONSTANT_UnresolvedClass :               // fall-through
+    case JVM_CONSTANT_UnresolvedClassInError: {
+      // unresolved_klass_at requires lock or safe world.
+      CPSlot entry = slot_at(index);
+      if (entry.is_resolved()) {
+        entry.get_klass()->print_value_on(st);
+      } else {
+        entry.get_symbol()->print_value_on(st);
+      }
+      }
+      break;
+    case JVM_CONSTANT_MethodHandle :
+    case JVM_CONSTANT_MethodHandleInError :
+      st->print("ref_kind=%d", method_handle_ref_kind_at(index));
+      st->print(" ref_index=%d", method_handle_index_at(index));
+      break;
+    case JVM_CONSTANT_MethodType :
+    case JVM_CONSTANT_MethodTypeInError :
+      st->print("signature_index=%d", method_type_index_at(index));
+      break;
+    case JVM_CONSTANT_InvokeDynamic :
+      {
+        st->print("bootstrap_method_index=%d", invoke_dynamic_bootstrap_method_ref_index_at(index));
+        st->print(" name_and_type_index=%d", invoke_dynamic_name_and_type_ref_index_at(index));
+        int argc = invoke_dynamic_argument_count_at(index);
+        if (argc > 0) {
+          for (int arg_i = 0; arg_i < argc; arg_i++) {
+            int arg = invoke_dynamic_argument_index_at(index, arg_i);
+            st->print((arg_i == 0 ? " arguments={%d" : ", %d"), arg);
+          }
+          st->print("}");
+        }
+      }
+      break;
+    default:
+      ShouldNotReachHere();
+      break;
+  }
+  st->cr();
+}
+
+void ConstantPool::print_value_on(outputStream* st) const {
+  assert(is_constantPool(), "must be constantPool");
+  st->print("constant pool [%d]", length());
+  if (has_pseudo_string()) st->print("/pseudo_string");
+  if (has_invokedynamic()) st->print("/invokedynamic");
+  if (has_preresolution()) st->print("/preresolution");
+  if (operands() != NULL)  st->print("/operands[%d]", operands()->length());
+  print_address_on(st);
+  st->print(" for ");
+  pool_holder()->print_value_on(st);
+  if (pool_holder() != NULL) {
+    bool extra = (InstanceKlass::cast(pool_holder())->constants() != this);
+    if (extra)  st->print(" (extra)");
+  }
+  if (cache() != NULL) {
+    st->print(" cache=" PTR_FORMAT, cache());
+  }
+}
+
+
+// Verification
+
+void ConstantPool::verify_on(outputStream* st) {
+  guarantee(is_constantPool(), "object must be constant pool");
+  for (int i = 0; i< length();  i++) {
+    constantTag tag = tag_at(i);
+    CPSlot entry = slot_at(i);
+    if (tag.is_klass()) {
+      if (entry.is_resolved()) {
+        guarantee(entry.get_klass()->is_metadata(), "should be metadata");
+        guarantee(entry.get_klass()->is_klass(),    "should be klass");
+      }
+    } else if (tag.is_unresolved_klass()) {
+      if (entry.is_resolved()) {
+        guarantee(entry.get_klass()->is_metadata(), "should be metadata");
+        guarantee(entry.get_klass()->is_klass(),    "should be klass");
+      }
+    } else if (tag.is_symbol()) {
+      guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count");
+    } else if (tag.is_string()) {
+      guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count");
+    }
+  }
+  if (cache() != NULL) {
+    // Note: cache() can be NULL before a class is completely setup or
+    // in temporary constant pools used during constant pool merging
+    guarantee(cache()->is_metadata(),          "should be metadata");
+    guarantee(cache()->is_constantPoolCache(), "should be constant pool cache");
+  }
+  if (pool_holder() != NULL) {
+    // Note: pool_holder() can be NULL in temporary constant pools
+    // used during constant pool merging
+    guarantee(pool_holder()->is_metadata(), "should be metadata");
+    guarantee(pool_holder()->is_klass(),    "should be klass");
+  }
+}
+
+
+void SymbolHashMap::add_entry(Symbol* sym, u2 value) {
+  char *str = sym->as_utf8();
+  unsigned int hash = compute_hash(str, sym->utf8_length());
+  unsigned int index = hash % table_size();
+
+  // check if already in map
+  // we prefer the first entry since it is more likely to be what was used in
+  // the class file
+  for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) {
+    assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
+    if (en->hash() == hash && en->symbol() == sym) {
+        return;  // already there
+    }
+  }
+
+  SymbolHashMapEntry* entry = new SymbolHashMapEntry(hash, sym, value);
+  entry->set_next(bucket(index));
+  _buckets[index].set_entry(entry);
+  assert(entry->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
+}
+
+SymbolHashMapEntry* SymbolHashMap::find_entry(Symbol* sym) {
+  assert(sym != NULL, "SymbolHashMap::find_entry - symbol is NULL");
+  char *str = sym->as_utf8();
+  int   len = sym->utf8_length();
+  unsigned int hash = SymbolHashMap::compute_hash(str, len);
+  unsigned int index = hash % table_size();
+  for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) {
+    assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
+    if (en->hash() == hash && en->symbol() == sym) {
+      return en;
+    }
+  }
+  return NULL;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/constantPool.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,933 @@
+/*
+ * 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
+#define SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
+
+#include "oops/arrayOop.hpp"
+#include "oops/cpCache.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/symbol.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "runtime/handles.hpp"
+#include "utilities/constantTag.hpp"
+#ifdef TARGET_ARCH_x86
+# include "bytes_x86.hpp"
+#endif
+#ifdef TARGET_ARCH_sparc
+# include "bytes_sparc.hpp"
+#endif
+#ifdef TARGET_ARCH_zero
+# include "bytes_zero.hpp"
+#endif
+#ifdef TARGET_ARCH_arm
+# include "bytes_arm.hpp"
+#endif
+#ifdef TARGET_ARCH_ppc
+# include "bytes_ppc.hpp"
+#endif
+
+// A constantPool is an array containing class constants as described in the
+// class file.
+//
+// Most of the constant pool entries are written during class parsing, which
+// is safe.  For klass types, the constant pool entry is
+// modified when the entry is resolved.  If a klass constant pool
+// entry is read without a lock, only the resolved state guarantees that
+// the entry in the constant pool is a klass object and not a Symbol*.
+
+class SymbolHashMap;
+
+class CPSlot VALUE_OBJ_CLASS_SPEC {
+  intptr_t _ptr;
+ public:
+  CPSlot(intptr_t ptr): _ptr(ptr) {}
+  CPSlot(Klass* ptr): _ptr((intptr_t)ptr) {}
+  CPSlot(Symbol* ptr): _ptr((intptr_t)ptr | 1) {}
+
+  intptr_t value()   { return _ptr; }
+  bool is_resolved()   { return (_ptr & 1) == 0; }
+  bool is_unresolved() { return (_ptr & 1) == 1; }
+
+  Symbol* get_symbol() {
+    assert(is_unresolved(), "bad call");
+    return (Symbol*)(_ptr & ~1);
+  }
+  Klass* get_klass() {
+    assert(is_resolved(), "bad call");
+    return (Klass*)_ptr;
+  }
+};
+
+class ConstantPool : public Metadata {
+  friend class VMStructs;
+  friend class BytecodeInterpreter;  // Directly extracts an oop in the pool for fast instanceof/checkcast
+  friend class Universe;             // For null constructor
+ private:
+  Array<u1>*           _tags;        // the tag array describing the constant pool's contents
+  ConstantPoolCache* _cache;       // the cache holding interpreter runtime information
+  Klass*               _pool_holder; // the corresponding class
+  Array<u2>*           _operands;    // for variable-sized (InvokeDynamic) nodes, usually empty
+
+  // Array of resolved objects from the constant pool and map from resolved
+  // object index to original constant pool index
+  jobject              _resolved_references;
+  Array<u2>*           _reference_map;
+
+  int                  _flags;         // a few header bits to describe contents for GC
+  int                  _length; // number of elements in the array
+
+  bool                 _on_stack;     // Redefined method still executing refers to this constant pool.
+
+  union {
+    // set for CDS to restore resolved references
+    int                _resolved_reference_length;
+  // only set to non-zero if constant pool is merged by RedefineClasses
+  int                  _orig_length;
+  } _saved;
+
+  Monitor*             _lock;
+
+  void set_tags(Array<u1>* tags)               { _tags = tags; }
+  void tag_at_put(int which, jbyte t)          { tags()->at_put(which, t); }
+  void release_tag_at_put(int which, jbyte t)  { tags()->release_at_put(which, t); }
+
+  void set_operands(Array<u2>* operands)       { _operands = operands; }
+
+  enum FlagBit {
+    FB_has_invokedynamic = 1,
+    FB_has_pseudo_string = 2,
+    FB_has_preresolution = 3
+  };
+
+  int flags() const                         { return _flags; }
+  void set_flags(int f)                     { _flags = f; }
+  bool flag_at(FlagBit fb) const            { return (_flags & (1 << (int)fb)) != 0; }
+  void set_flag_at(FlagBit fb);
+  // no clear_flag_at function; they only increase
+
+ private:
+  intptr_t* base() const { return (intptr_t*) (((char*) this) + sizeof(ConstantPool)); }
+
+  CPSlot slot_at(int which) {
+    assert(is_within_bounds(which), "index out of bounds");
+    // Uses volatile because the klass slot changes without a lock.
+    volatile intptr_t adr = (intptr_t)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which));
+    assert(adr != 0 || which == 0, "cp entry for klass should not be zero");
+    return CPSlot(adr);
+  }
+
+  void slot_at_put(int which, CPSlot s) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    assert(s.value() != 0, "Caught something");
+    *(intptr_t*)&base()[which] = s.value();
+  }
+  intptr_t* obj_at_addr_raw(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (intptr_t*) &base()[which];
+  }
+
+  jint* int_at_addr(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (jint*) &base()[which];
+  }
+
+  jlong* long_at_addr(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (jlong*) &base()[which];
+  }
+
+  jfloat* float_at_addr(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (jfloat*) &base()[which];
+  }
+
+  jdouble* double_at_addr(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (jdouble*) &base()[which];
+  }
+
+  ConstantPool(Array<u1>* tags);
+  ConstantPool() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
+ public:
+  static ConstantPool* allocate(ClassLoaderData* loader_data, int length, TRAPS);
+
+  bool is_constantPool() const volatile     { return true; }
+
+  Array<u1>* tags() const                   { return _tags; }
+  Array<u2>* operands() const               { return _operands; }
+
+  bool has_pseudo_string() const            { return flag_at(FB_has_pseudo_string); }
+  bool has_invokedynamic() const            { return flag_at(FB_has_invokedynamic); }
+  bool has_preresolution() const            { return flag_at(FB_has_preresolution); }
+  void set_pseudo_string()                  {    set_flag_at(FB_has_pseudo_string); }
+  void set_invokedynamic()                  {    set_flag_at(FB_has_invokedynamic); }
+  void set_preresolution()                  {    set_flag_at(FB_has_preresolution); }
+
+  // Redefine classes support.  If a method refering to this constant pool
+  // is on the executing stack, or as a handle in vm code, this constant pool
+  // can't be removed from the set of previous versions saved in the instance
+  // class.
+  bool on_stack() const                     { return _on_stack; }
+  void set_on_stack(const bool value);
+
+  // Klass holding pool
+  Klass* pool_holder() const              { return _pool_holder; }
+  void set_pool_holder(Klass* k)          { _pool_holder = k; }
+  Klass** pool_holder_addr()              { return &_pool_holder; }
+
+  // Interpreter runtime support
+  ConstantPoolCache* cache() const        { return _cache; }
+  void set_cache(ConstantPoolCache* cache){ _cache = cache; }
+
+  // Create object cache in the constant pool
+  void initialize_resolved_references(ClassLoaderData* loader_data,
+                                      intStack reference_map,
+                                      int constant_pool_map_length,
+                                      TRAPS);
+
+  // resolved strings, methodHandles and callsite objects from the constant pool
+  objArrayOop resolved_references()  const;
+  // mapping resolved object array indexes to cp indexes and back.
+  int object_to_cp_index(int index)         { return _reference_map->at(index); }
+  int cp_to_object_index(int index);
+
+  // Invokedynamic indexes.
+  // They must look completely different from normal indexes.
+  // The main reason is that byte swapping is sometimes done on normal indexes.
+  // Finally, it is helpful for debugging to tell the two apart.
+  static bool is_invokedynamic_index(int i) { return (i < 0); }
+  static int  decode_invokedynamic_index(int i) { assert(is_invokedynamic_index(i),  ""); return ~i; }
+  static int  encode_invokedynamic_index(int i) { assert(!is_invokedynamic_index(i), ""); return ~i; }
+
+
+  // The invokedynamic points at a CP cache entry.  This entry points back
+  // at the original CP entry (CONSTANT_InvokeDynamic) and also (via f2) at an entry
+  // in the resolved_references array (which provides the appendix argument).
+  int invokedynamic_cp_cache_index(int index) const {
+    assert (is_invokedynamic_index(index), "should be a invokedynamic index");
+    int cache_index = decode_invokedynamic_index(index);
+    return cache_index;
+  }
+  ConstantPoolCacheEntry* invokedynamic_cp_cache_entry_at(int index) const {
+    // decode index that invokedynamic points to.
+    int cp_cache_index = invokedynamic_cp_cache_index(index);
+    return cache()->entry_at(cp_cache_index);
+  }
+
+  // Assembly code support
+  static int tags_offset_in_bytes()         { return offset_of(ConstantPool, _tags); }
+  static int cache_offset_in_bytes()        { return offset_of(ConstantPool, _cache); }
+  static int pool_holder_offset_in_bytes()  { return offset_of(ConstantPool, _pool_holder); }
+  static int resolved_references_offset_in_bytes() { return offset_of(ConstantPool, _resolved_references); }
+  static int reference_map_offset_in_bytes() { return offset_of(ConstantPool, _reference_map); }
+
+  // Storing constants
+
+  void klass_at_put(int which, Klass* k) {
+    assert(k != NULL, "resolved class shouldn't be null");
+    assert(is_within_bounds(which), "index out of bounds");
+    OrderAccess::release_store_ptr((Klass* volatile *)obj_at_addr_raw(which), k);
+    // The interpreter assumes when the tag is stored, the klass is resolved
+    // and the Klass* is a klass rather than a Symbol*, so we need
+    // hardware store ordering here.
+    release_tag_at_put(which, JVM_CONSTANT_Class);
+  }
+
+  // For temporary use while constructing constant pool
+  void klass_index_at_put(int which, int name_index) {
+    tag_at_put(which, JVM_CONSTANT_ClassIndex);
+    *int_at_addr(which) = name_index;
+  }
+
+  // Temporary until actual use
+  void unresolved_klass_at_put(int which, Symbol* s) {
+    release_tag_at_put(which, JVM_CONSTANT_UnresolvedClass);
+    slot_at_put(which, s);
+  }
+
+  void method_handle_index_at_put(int which, int ref_kind, int ref_index) {
+    tag_at_put(which, JVM_CONSTANT_MethodHandle);
+    *int_at_addr(which) = ((jint) ref_index<<16) | ref_kind;
+  }
+
+  void method_type_index_at_put(int which, int ref_index) {
+    tag_at_put(which, JVM_CONSTANT_MethodType);
+    *int_at_addr(which) = ref_index;
+  }
+
+  void invoke_dynamic_at_put(int which, int bootstrap_specifier_index, int name_and_type_index) {
+    tag_at_put(which, JVM_CONSTANT_InvokeDynamic);
+    *int_at_addr(which) = ((jint) name_and_type_index<<16) | bootstrap_specifier_index;
+  }
+
+  void unresolved_string_at_put(int which, Symbol* s) {
+    release_tag_at_put(which, JVM_CONSTANT_String);
+    *symbol_at_addr(which) = s;
+  }
+
+  void int_at_put(int which, jint i) {
+    tag_at_put(which, JVM_CONSTANT_Integer);
+    *int_at_addr(which) = i;
+  }
+
+  void long_at_put(int which, jlong l) {
+    tag_at_put(which, JVM_CONSTANT_Long);
+    // *long_at_addr(which) = l;
+    Bytes::put_native_u8((address)long_at_addr(which), *((u8*) &l));
+  }
+
+  void float_at_put(int which, jfloat f) {
+    tag_at_put(which, JVM_CONSTANT_Float);
+    *float_at_addr(which) = f;
+  }
+
+  void double_at_put(int which, jdouble d) {
+    tag_at_put(which, JVM_CONSTANT_Double);
+    // *double_at_addr(which) = d;
+    // u8 temp = *(u8*) &d;
+    Bytes::put_native_u8((address) double_at_addr(which), *((u8*) &d));
+  }
+
+  Symbol** symbol_at_addr(int which) const {
+    assert(is_within_bounds(which), "index out of bounds");
+    return (Symbol**) &base()[which];
+  }
+
+  void symbol_at_put(int which, Symbol* s) {
+    assert(s->refcount() != 0, "should have nonzero refcount");
+    tag_at_put(which, JVM_CONSTANT_Utf8);
+    *symbol_at_addr(which) = s;
+  }
+
+  void string_at_put(int which, int obj_index, oop str) {
+    resolved_references()->obj_at_put(obj_index, str);
+  }
+
+  void set_object_tag_at(int which) {
+    release_tag_at_put(which, JVM_CONSTANT_Object);
+    }
+
+  void object_at_put(int which, oop obj) {
+    resolved_references()->obj_at_put(cp_to_object_index(which), obj);
+  }
+
+  // For temporary use while constructing constant pool
+  void string_index_at_put(int which, int string_index) {
+    tag_at_put(which, JVM_CONSTANT_StringIndex);
+    *int_at_addr(which) = string_index;
+  }
+
+  void field_at_put(int which, int class_index, int name_and_type_index) {
+    tag_at_put(which, JVM_CONSTANT_Fieldref);
+    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;
+  }
+
+  void method_at_put(int which, int class_index, int name_and_type_index) {
+    tag_at_put(which, JVM_CONSTANT_Methodref);
+    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;
+  }
+
+  void interface_method_at_put(int which, int class_index, int name_and_type_index) {
+    tag_at_put(which, JVM_CONSTANT_InterfaceMethodref);
+    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;  // Not so nice
+  }
+
+  void name_and_type_at_put(int which, int name_index, int signature_index) {
+    tag_at_put(which, JVM_CONSTANT_NameAndType);
+    *int_at_addr(which) = ((jint) signature_index<<16) | name_index;  // Not so nice
+  }
+
+  // Tag query
+
+  constantTag tag_at(int which) const { return (constantTag)tags()->at_acquire(which); }
+
+  // Fetching constants
+
+  Klass* klass_at(int which, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return klass_at_impl(h_this, which, CHECK_NULL);
+  }
+
+  Symbol* klass_name_at(int which);  // Returns the name, w/o resolving.
+
+  Klass* resolved_klass_at(int which) {  // Used by Compiler
+    guarantee(tag_at(which).is_klass(), "Corrupted constant pool");
+    // Must do an acquire here in case another thread resolved the klass
+    // behind our back, lest we later load stale values thru the oop.
+    return CPSlot((Klass*)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_klass();
+  }
+
+  // This method should only be used with a cpool lock or during parsing or gc
+  Symbol* unresolved_klass_at(int which) {     // Temporary until actual use
+    Symbol* s = CPSlot((Symbol*)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_symbol();
+    // check that the klass is still unresolved.
+    assert(tag_at(which).is_unresolved_klass(), "Corrupted constant pool");
+    return s;
+  }
+
+  // RedefineClasses() API support:
+  Symbol* klass_at_noresolve(int which) { return klass_name_at(which); }
+
+  jint int_at(int which) {
+    assert(tag_at(which).is_int(), "Corrupted constant pool");
+    return *int_at_addr(which);
+  }
+
+  jlong long_at(int which) {
+    assert(tag_at(which).is_long(), "Corrupted constant pool");
+    // return *long_at_addr(which);
+    u8 tmp = Bytes::get_native_u8((address)&base()[which]);
+    return *((jlong*)&tmp);
+  }
+
+  jfloat float_at(int which) {
+    assert(tag_at(which).is_float(), "Corrupted constant pool");
+    return *float_at_addr(which);
+  }
+
+  jdouble double_at(int which) {
+    assert(tag_at(which).is_double(), "Corrupted constant pool");
+    u8 tmp = Bytes::get_native_u8((address)&base()[which]);
+    return *((jdouble*)&tmp);
+  }
+
+  Symbol* symbol_at(int which) {
+    assert(tag_at(which).is_utf8(), "Corrupted constant pool");
+    return *symbol_at_addr(which);
+  }
+
+  oop string_at(int which, int obj_index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return string_at_impl(h_this, which, obj_index, THREAD);
+  }
+  oop string_at(int which, TRAPS) {
+    int obj_index = cp_to_object_index(which);
+    return string_at(which, obj_index, THREAD);
+  }
+
+  // Version that can be used before string oop array is created.
+  oop uncached_string_at(int which, TRAPS);
+
+  oop object_at(int which) {
+    assert(tag_at(which).is_object(), "Corrupted constant pool");
+    int obj_index = cp_to_object_index(which);
+    return resolved_references()->obj_at(obj_index);
+  }
+
+  // A "pseudo-string" is an non-string oop that has found is way into
+  // a String entry.
+  // Under EnableInvokeDynamic this can happen if the user patches a live
+  // object into a CONSTANT_String entry of an anonymous class.
+  // Method oops internally created for method handles may also
+  // use pseudo-strings to link themselves to related metaobjects.
+
+  bool is_pseudo_string_at(int which) {
+    // A pseudo string is a string that doesn't have a symbol in the cpSlot
+    return unresolved_string_at(which) == NULL;
+  }
+
+  oop pseudo_string_at(int which, int obj_index) {
+    assert(tag_at(which).is_string(), "Corrupted constant pool");
+    assert(unresolved_string_at(which) == NULL, "shouldn't have symbol");
+    oop s = resolved_references()->obj_at(obj_index);
+    return s;
+  }
+
+  void pseudo_string_at_put(int which, int obj_index, oop x) {
+    assert(EnableInvokeDynamic, "");
+    set_pseudo_string();        // mark header
+    assert(tag_at(which).is_string(), "Corrupted constant pool");
+    string_at_put(which, obj_index, x);    // this works just fine
+  }
+
+  // only called when we are sure a string entry is already resolved (via an
+  // earlier string_at call.
+  oop resolved_string_at(int which) {
+    assert(tag_at(which).is_string(), "Corrupted constant pool");
+    // Must do an acquire here in case another thread resolved the klass
+    // behind our back, lest we later load stale values thru the oop.
+    // we might want a volatile_obj_at in objArrayKlass.
+    int obj_index = cp_to_object_index(which);
+    return resolved_references()->obj_at(obj_index);
+  }
+
+  Symbol* unresolved_string_at(int which) {
+    assert(tag_at(which).is_string(), "Corrupted constant pool");
+    Symbol* s = *symbol_at_addr(which);
+    return s;
+  }
+
+  // Returns an UTF8 for a CONSTANT_String entry at a given index.
+  // UTF8 char* representation was chosen to avoid conversion of
+  // java_lang_Strings at resolved entries into Symbol*s
+  // or vice versa.
+  // Caller is responsible for checking for pseudo-strings.
+  char* string_at_noresolve(int which);
+
+  jint name_and_type_at(int which) {
+    assert(tag_at(which).is_name_and_type(), "Corrupted constant pool");
+    return *int_at_addr(which);
+  }
+
+  int method_handle_ref_kind_at(int which) {
+    assert(tag_at(which).is_method_handle(), "Corrupted constant pool");
+    return extract_low_short_from_int(*int_at_addr(which));  // mask out unwanted ref_index bits
+  }
+  int method_handle_index_at(int which) {
+    assert(tag_at(which).is_method_handle(), "Corrupted constant pool");
+    return extract_high_short_from_int(*int_at_addr(which));  // shift out unwanted ref_kind bits
+  }
+  int method_type_index_at(int which) {
+    assert(tag_at(which).is_method_type(), "Corrupted constant pool");
+    return *int_at_addr(which);
+  }
+  // Derived queries:
+  Symbol* method_handle_name_ref_at(int which) {
+    int member = method_handle_index_at(which);
+    return impl_name_ref_at(member, true);
+  }
+  Symbol* method_handle_signature_ref_at(int which) {
+    int member = method_handle_index_at(which);
+    return impl_signature_ref_at(member, true);
+  }
+  int method_handle_klass_index_at(int which) {
+    int member = method_handle_index_at(which);
+    return impl_klass_ref_index_at(member, true);
+  }
+  Symbol* method_type_signature_at(int which) {
+    int sym = method_type_index_at(which);
+    return symbol_at(sym);
+  }
+
+  int invoke_dynamic_name_and_type_ref_index_at(int which) {
+    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
+    return extract_high_short_from_int(*int_at_addr(which));
+  }
+  int invoke_dynamic_bootstrap_specifier_index(int which) {
+    assert(tag_at(which).value() == JVM_CONSTANT_InvokeDynamic, "Corrupted constant pool");
+    return extract_low_short_from_int(*int_at_addr(which));
+  }
+  int invoke_dynamic_operand_base(int which) {
+    int bootstrap_specifier_index = invoke_dynamic_bootstrap_specifier_index(which);
+    return operand_offset_at(operands(), bootstrap_specifier_index);
+  }
+  // The first part of the operands array consists of an index into the second part.
+  // Extract a 32-bit index value from the first part.
+  static int operand_offset_at(Array<u2>* operands, int bootstrap_specifier_index) {
+    int n = (bootstrap_specifier_index * 2);
+    assert(n >= 0 && n+2 <= operands->length(), "oob");
+    // The first 32-bit index points to the beginning of the second part
+    // of the operands array.  Make sure this index is in the first part.
+    DEBUG_ONLY(int second_part = build_int_from_shorts(operands->at(0),
+                                                       operands->at(1)));
+    assert(second_part == 0 || n+2 <= second_part, "oob (2)");
+    int offset = build_int_from_shorts(operands->at(n+0),
+                                       operands->at(n+1));
+    // The offset itself must point into the second part of the array.
+    assert(offset == 0 || offset >= second_part && offset <= operands->length(), "oob (3)");
+    return offset;
+  }
+  static void operand_offset_at_put(Array<u2>* operands, int bootstrap_specifier_index, int offset) {
+    int n = bootstrap_specifier_index * 2;
+    assert(n >= 0 && n+2 <= operands->length(), "oob");
+    operands->at_put(n+0, extract_low_short_from_int(offset));
+    operands->at_put(n+1, extract_high_short_from_int(offset));
+  }
+  static int operand_array_length(Array<u2>* operands) {
+    if (operands == NULL || operands->length() == 0)  return 0;
+    int second_part = operand_offset_at(operands, 0);
+    return (second_part / 2);
+  }
+
+#ifdef ASSERT
+  // operand tuples fit together exactly, end to end
+  static int operand_limit_at(Array<u2>* operands, int bootstrap_specifier_index) {
+    int nextidx = bootstrap_specifier_index + 1;
+    if (nextidx == operand_array_length(operands))
+      return operands->length();
+    else
+      return operand_offset_at(operands, nextidx);
+  }
+  int invoke_dynamic_operand_limit(int which) {
+    int bootstrap_specifier_index = invoke_dynamic_bootstrap_specifier_index(which);
+    return operand_limit_at(operands(), bootstrap_specifier_index);
+  }
+#endif //ASSERT
+
+  // layout of InvokeDynamic bootstrap method specifier (in second part of operands array):
+  enum {
+         _indy_bsm_offset  = 0,  // CONSTANT_MethodHandle bsm
+         _indy_argc_offset = 1,  // u2 argc
+         _indy_argv_offset = 2   // u2 argv[argc]
+  };
+  int invoke_dynamic_bootstrap_method_ref_index_at(int which) {
+    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
+    int op_base = invoke_dynamic_operand_base(which);
+    return operands()->at(op_base + _indy_bsm_offset);
+  }
+  int invoke_dynamic_argument_count_at(int which) {
+    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
+    int op_base = invoke_dynamic_operand_base(which);
+    int argc = operands()->at(op_base + _indy_argc_offset);
+    DEBUG_ONLY(int end_offset = op_base + _indy_argv_offset + argc;
+               int next_offset = invoke_dynamic_operand_limit(which));
+    assert(end_offset == next_offset, "matched ending");
+    return argc;
+  }
+  int invoke_dynamic_argument_index_at(int which, int j) {
+    int op_base = invoke_dynamic_operand_base(which);
+    DEBUG_ONLY(int argc = operands()->at(op_base + _indy_argc_offset));
+    assert((uint)j < (uint)argc, "oob");
+    return operands()->at(op_base + _indy_argv_offset + j);
+  }
+
+  // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve,
+  // name_and_type_ref_index_at) all expect to be passed indices obtained
+  // directly from the bytecode.
+  // If the indices are meant to refer to fields or methods, they are
+  // actually rewritten constant pool cache indices.
+  // The routine remap_instruction_operand_from_cache manages the adjustment
+  // of these values back to constant pool indices.
+
+  // There are also "uncached" versions which do not adjust the operand index; see below.
+
+  // FIXME: Consider renaming these with a prefix "cached_" to make the distinction clear.
+  // In a few cases (the verifier) there are uses before a cpcache has been built,
+  // which are handled by a dynamic check in remap_instruction_operand_from_cache.
+  // FIXME: Remove the dynamic check, and adjust all callers to specify the correct mode.
+
+  // Lookup for entries consisting of (klass_index, name_and_type index)
+  Klass* klass_ref_at(int which, TRAPS);
+  Symbol* klass_ref_at_noresolve(int which);
+  Symbol* name_ref_at(int which)                { return impl_name_ref_at(which, false); }
+  Symbol* signature_ref_at(int which)           { return impl_signature_ref_at(which, false); }
+
+  int klass_ref_index_at(int which)               { return impl_klass_ref_index_at(which, false); }
+  int name_and_type_ref_index_at(int which)       { return impl_name_and_type_ref_index_at(which, false); }
+
+  // Lookup for entries consisting of (name_index, signature_index)
+  int name_ref_index_at(int which_nt);            // ==  low-order jshort of name_and_type_at(which_nt)
+  int signature_ref_index_at(int which_nt);       // == high-order jshort of name_and_type_at(which_nt)
+
+  BasicType basic_type_for_signature_at(int which);
+
+  // Resolve string constants (to prevent allocation during compilation)
+  void resolve_string_constants(TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    resolve_string_constants_impl(h_this, CHECK);
+  }
+
+  // CDS support
+  void remove_unshareable_info();
+  void restore_unshareable_info(TRAPS);
+  bool resolve_class_constants(TRAPS);
+  // The ConstantPool vtable is restored by this call when the ConstantPool is
+  // in the shared archive.  See patch_klass_vtables() in metaspaceShared.cpp for
+  // all the gory details.  SA, dtrace and pstack helpers distinguish metadata
+  // by their vtable.
+  void restore_vtable() { guarantee(is_constantPool(), "vtable restored by this call"); }
+
+ private:
+  enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
+ public:
+
+  // Resolve late bound constants.
+  oop resolve_constant_at(int index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return resolve_constant_at_impl(h_this, index, _no_index_sentinel, THREAD);
+  }
+
+  oop resolve_cached_constant_at(int cache_index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return resolve_constant_at_impl(h_this, _no_index_sentinel, cache_index, THREAD);
+  }
+
+  oop resolve_possibly_cached_constant_at(int pool_index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return resolve_constant_at_impl(h_this, pool_index, _possible_index_sentinel, THREAD);
+  }
+
+  oop resolve_bootstrap_specifier_at(int index, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    return resolve_bootstrap_specifier_at_impl(h_this, index, THREAD);
+  }
+
+  // Klass name matches name at offset
+  bool klass_name_at_matches(instanceKlassHandle k, int which);
+
+  // Sizing
+  int length() const                   { return _length; }
+  void set_length(int length)          { _length = length; }
+
+  // Tells whether index is within bounds.
+  bool is_within_bounds(int index) const {
+    return 0 <= index && index < length();
+  }
+
+  static int header_size()             { return sizeof(ConstantPool)/HeapWordSize; }
+  static int size(int length)          { return align_object_size(header_size() + length); }
+  int size() const                     { return size(length()); }
+
+  friend class ClassFileParser;
+  friend class SystemDictionary;
+
+  // Used by compiler to prevent classloading.
+  static Method*         method_at_if_loaded      (constantPoolHandle this_oop, int which);
+  static bool      has_appendix_at_if_loaded      (constantPoolHandle this_oop, int which);
+  static oop           appendix_at_if_loaded      (constantPoolHandle this_oop, int which);
+  static Klass*           klass_at_if_loaded      (constantPoolHandle this_oop, int which);
+  static Klass*       klass_ref_at_if_loaded      (constantPoolHandle this_oop, int which);
+  // Same as above - but does LinkResolving.
+  static Klass*       klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS);
+
+  // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the
+  // future by other Java code. These take constant pool indices rather than
+  // constant pool cache indices as do the peer methods above.
+  Symbol* uncached_klass_ref_at_noresolve(int which);
+  Symbol* uncached_name_ref_at(int which)                 { return impl_name_ref_at(which, true); }
+  Symbol* uncached_signature_ref_at(int which)            { return impl_signature_ref_at(which, true); }
+  int       uncached_klass_ref_index_at(int which)          { return impl_klass_ref_index_at(which, true); }
+  int       uncached_name_and_type_ref_index_at(int which)  { return impl_name_and_type_ref_index_at(which, true); }
+
+  // Sharing
+  int pre_resolve_shared_klasses(TRAPS);
+
+  // Debugging
+  const char* printable_name_at(int which) PRODUCT_RETURN0;
+
+#ifdef ASSERT
+  enum { CPCACHE_INDEX_TAG = 0x10000 };  // helps keep CP cache indices distinct from CP indices
+#else
+  enum { CPCACHE_INDEX_TAG = 0 };        // in product mode, this zero value is a no-op
+#endif //ASSERT
+
+  static int decode_cpcache_index(int raw_index, bool invokedynamic_ok = false) {
+    if (invokedynamic_ok && is_invokedynamic_index(raw_index))
+      return decode_invokedynamic_index(raw_index);
+    else
+      return raw_index - CPCACHE_INDEX_TAG;
+  }
+
+ private:
+
+  void set_resolved_references(jobject s) { _resolved_references = s; }
+  Array<u2>* reference_map() const        { return _reference_map; }
+  void set_reference_map(Array<u2>* o)    { _reference_map = o; }
+
+  // patch JSR 292 resolved references after the class is linked.
+  void patch_resolved_references(GrowableArray<Handle>* cp_patches);
+
+  Symbol* impl_name_ref_at(int which, bool uncached);
+  Symbol* impl_signature_ref_at(int which, bool uncached);
+  int       impl_klass_ref_index_at(int which, bool uncached);
+  int       impl_name_and_type_ref_index_at(int which, bool uncached);
+
+  int remap_instruction_operand_from_cache(int operand);  // operand must be biased by CPCACHE_INDEX_TAG
+
+  // Used while constructing constant pool (only by ClassFileParser)
+  jint klass_index_at(int which) {
+    assert(tag_at(which).is_klass_index(), "Corrupted constant pool");
+    return *int_at_addr(which);
+  }
+
+  jint string_index_at(int which) {
+    assert(tag_at(which).is_string_index(), "Corrupted constant pool");
+    return *int_at_addr(which);
+  }
+
+  // Performs the LinkResolver checks
+  static void verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle klass, TRAPS);
+
+  // Implementation of methods that needs an exposed 'this' pointer, in order to
+  // handle GC while executing the method
+  static Klass* klass_at_impl(constantPoolHandle this_oop, int which, TRAPS);
+  static oop string_at_impl(constantPoolHandle this_oop, int which, int obj_index, TRAPS);
+
+  // Resolve string constants (to prevent allocation during compilation)
+  static void resolve_string_constants_impl(constantPoolHandle this_oop, TRAPS);
+
+  static oop resolve_constant_at_impl(constantPoolHandle this_oop, int index, int cache_index, TRAPS);
+  static void save_and_throw_exception(constantPoolHandle this_oop, int which, int tag_value, TRAPS);
+  static oop resolve_bootstrap_specifier_at_impl(constantPoolHandle this_oop, int index, TRAPS);
+
+ public:
+  // Merging ConstantPool* support:
+  bool compare_entry_to(int index1, constantPoolHandle cp2, int index2, TRAPS);
+  void copy_cp_to(int start_i, int end_i, constantPoolHandle to_cp, int to_i, TRAPS) {
+    constantPoolHandle h_this(THREAD, this);
+    copy_cp_to_impl(h_this, start_i, end_i, to_cp, to_i, THREAD);
+  }
+  static void copy_cp_to_impl(constantPoolHandle from_cp, int start_i, int end_i, constantPoolHandle to_cp, int to_i, TRAPS);
+  static void copy_entry_to(constantPoolHandle from_cp, int from_i, constantPoolHandle to_cp, int to_i, TRAPS);
+  int  find_matching_entry(int pattern_i, constantPoolHandle search_cp, TRAPS);
+  int  orig_length() const                { return _saved._orig_length; }
+  void set_orig_length(int orig_length)   { _saved._orig_length = orig_length; }
+
+  void set_resolved_reference_length(int length) { _saved._resolved_reference_length = length; }
+  int  resolved_reference_length() const  { return _saved._resolved_reference_length; }
+  void set_lock(Monitor* lock)            { _lock = lock; }
+  Monitor* lock()                         { return _lock; }
+
+  // Decrease ref counts of symbols that are in the constant pool
+  // when the holder class is unloaded
+  void unreference_symbols();
+
+  // Deallocate constant pool for RedefineClasses
+  void deallocate_contents(ClassLoaderData* loader_data);
+  void release_C_heap_structures();
+
+  // JVMTI accesss - GetConstantPool, RetransformClasses, ...
+  friend class JvmtiConstantPoolReconstituter;
+
+ private:
+  jint cpool_entry_size(jint idx);
+  jint hash_entries_to(SymbolHashMap *symmap, SymbolHashMap *classmap);
+
+  // Copy cpool bytes into byte array.
+  // Returns:
+  //  int > 0, count of the raw cpool bytes that have been copied
+  //        0, OutOfMemory error
+  //       -1, Internal error
+  int  copy_cpool_bytes(int cpool_size,
+                        SymbolHashMap* tbl,
+                        unsigned char *bytes);
+
+ public:
+  // Verify
+  void verify_on(outputStream* st);
+
+  // Printing
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+  void print_entry_on(int index, outputStream* st);
+
+  const char* internal_name() const { return "{constant pool}"; }
+
+#ifndef PRODUCT
+  // Compile the world support
+  static void preload_and_initialize_all_classes(ConstantPool* constant_pool, TRAPS);
+#endif
+};
+
+class SymbolHashMapEntry : public CHeapObj<mtSymbol> {
+ private:
+  unsigned int        _hash;   // 32-bit hash for item
+  SymbolHashMapEntry* _next;   // Next element in the linked list for this bucket
+  Symbol*             _symbol; // 1-st part of the mapping: symbol => value
+  u2                  _value;  // 2-nd part of the mapping: symbol => value
+
+ public:
+  unsigned   int hash() const             { return _hash;   }
+  void       set_hash(unsigned int hash)  { _hash = hash;   }
+
+  SymbolHashMapEntry* next() const        { return _next;   }
+  void set_next(SymbolHashMapEntry* next) { _next = next;   }
+
+  Symbol*    symbol() const               { return _symbol; }
+  void       set_symbol(Symbol* sym)      { _symbol = sym;  }
+
+  u2         value() const                {  return _value; }
+  void       set_value(u2 value)          { _value = value; }
+
+  SymbolHashMapEntry(unsigned int hash, Symbol* symbol, u2 value)
+    : _hash(hash), _symbol(symbol), _value(value), _next(NULL) {}
+
+}; // End SymbolHashMapEntry class
+
+
+class SymbolHashMapBucket : public CHeapObj<mtSymbol> {
+
+private:
+  SymbolHashMapEntry*    _entry;
+
+public:
+  SymbolHashMapEntry* entry() const         {  return _entry; }
+  void set_entry(SymbolHashMapEntry* entry) { _entry = entry; }
+  void clear()                              { _entry = NULL;  }
+
+}; // End SymbolHashMapBucket class
+
+
+class SymbolHashMap: public CHeapObj<mtSymbol> {
+
+ private:
+  // Default number of entries in the table
+  enum SymbolHashMap_Constants {
+    _Def_HashMap_Size = 256
+  };
+
+  int                   _table_size;
+  SymbolHashMapBucket*  _buckets;
+
+  void initialize_table(int table_size) {
+    _table_size = table_size;
+    _buckets = NEW_C_HEAP_ARRAY(SymbolHashMapBucket, table_size, mtSymbol);
+    for (int index = 0; index < table_size; index++) {
+      _buckets[index].clear();
+    }
+  }
+
+ public:
+
+  int table_size() const        { return _table_size; }
+
+  SymbolHashMap()               { initialize_table(_Def_HashMap_Size); }
+  SymbolHashMap(int table_size) { initialize_table(table_size); }
+
+  // hash P(31) from Kernighan & Ritchie
+  static unsigned int compute_hash(const char* str, int len) {
+    unsigned int hash = 0;
+    while (len-- > 0) {
+      hash = 31*hash + (unsigned) *str;
+      str++;
+    }
+    return hash;
+  }
+
+  SymbolHashMapEntry* bucket(int i) {
+    return _buckets[i].entry();
+  }
+
+  void add_entry(Symbol* sym, u2 value);
+  SymbolHashMapEntry* find_entry(Symbol* sym);
+
+  u2 symbol_to_value(Symbol* sym) {
+    SymbolHashMapEntry *entry = find_entry(sym);
+    return (entry == NULL) ? 0 : entry->value();
+  }
+
+  ~SymbolHashMap() {
+    SymbolHashMapEntry* next;
+    for (int i = 0; i < _table_size; i++) {
+      for (SymbolHashMapEntry* cur = bucket(i); cur != NULL; cur = next) {
+        next = cur->next();
+        delete(cur);
+      }
+    }
+    delete _buckets;
+  }
+}; // End SymbolHashMap class
+
+#endif // SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
--- a/src/share/vm/oops/constantPoolKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,543 +0,0 @@
-/*
- * Copyright (c) 1997, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/oopFactory.hpp"
-#include "memory/permGen.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/constantPoolKlass.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "oops/symbol.hpp"
-#include "runtime/handles.inline.hpp"
-#ifdef TARGET_OS_FAMILY_linux
-# include "thread_linux.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_solaris
-# include "thread_solaris.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_windows
-# include "thread_windows.inline.hpp"
-#endif
-#ifdef TARGET_OS_FAMILY_bsd
-# include "thread_bsd.inline.hpp"
-#endif
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-constantPoolOop constantPoolKlass::allocate(int length, bool is_conc_safe, TRAPS) {
-  int size = constantPoolOopDesc::object_size(length);
-  KlassHandle klass (THREAD, as_klassOop());
-  assert(klass()->is_oop(), "Can't be null, else handlizing of c below won't work");
-  constantPoolHandle pool;
-  {
-    constantPoolOop c =
-      (constantPoolOop)CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
-    assert(c->klass_or_null() != NULL, "Handlizing below won't work");
-    pool = constantPoolHandle(THREAD, c);
-  }
-
-  pool->set_length(length);
-  pool->set_tags(NULL);
-  pool->set_cache(NULL);
-  pool->set_operands(NULL);
-  pool->set_pool_holder(NULL);
-  pool->set_flags(0);
-  // only set to non-zero if constant pool is merged by RedefineClasses
-  pool->set_orig_length(0);
-  // if constant pool may change during RedefineClasses, it is created
-  // unsafe for GC concurrent processing.
-  pool->set_is_conc_safe(is_conc_safe);
-  // all fields are initialized; needed for GC
-
-  // Note: because we may be in this "conc_unsafe" state when allocating
-  // t_oop below, which may in turn cause a GC, it is imperative that our
-  // size be correct, consistent and henceforth stable, at this stage.
-  assert(pool->is_oop() && pool->is_parsable(), "Else size() below is unreliable");
-  assert(size == pool->size(), "size() is wrong");
-
-  // initialize tag array
-  typeArrayOop t_oop = oopFactory::new_permanent_byteArray(length, CHECK_NULL);
-  typeArrayHandle tags (THREAD, t_oop);
-  for (int index = 0; index < length; index++) {
-    tags()->byte_at_put(index, JVM_CONSTANT_Invalid);
-  }
-  pool->set_tags(tags());
-
-  // Check that our size was stable at its old value.
-  assert(size == pool->size(), "size() changed");
-  return pool();
-}
-
-klassOop constantPoolKlass::create_klass(TRAPS) {
-  constantPoolKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-int constantPoolKlass::oop_size(oop obj) const {
-  assert(obj->is_constantPool(), "must be constantPool");
-  return constantPoolOop(obj)->object_size();
-}
-
-
-void constantPoolKlass::oop_follow_contents(oop obj) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  constantPoolOop cp = (constantPoolOop) obj;
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolKlassObj never moves.
-
-  // If the tags array is null we are in the middle of allocating this constant pool
-  if (cp->tags() != NULL) {
-    // gc of constant pool contents
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i < cp->length(); i++) {
-      if (cp->is_pointer_entry(i)) {
-        if (*base != NULL) MarkSweep::mark_and_push(base);
-      }
-      base++;
-    }
-    // gc of constant pool instance variables
-    MarkSweep::mark_and_push(cp->tags_addr());
-    MarkSweep::mark_and_push(cp->cache_addr());
-    MarkSweep::mark_and_push(cp->operands_addr());
-    MarkSweep::mark_and_push(cp->pool_holder_addr());
-  }
-}
-
-#ifndef SERIALGC
-void constantPoolKlass::oop_follow_contents(ParCompactionManager* cm,
-                                            oop obj) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  constantPoolOop cp = (constantPoolOop) obj;
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolKlassObj never moves.
-
-  // If the tags array is null we are in the middle of allocating this constant
-  // pool.
-  if (cp->tags() != NULL) {
-    // gc of constant pool contents
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i < cp->length(); i++) {
-      if (cp->is_pointer_entry(i)) {
-        if (*base != NULL) PSParallelCompact::mark_and_push(cm, base);
-      }
-      base++;
-    }
-    // gc of constant pool instance variables
-    PSParallelCompact::mark_and_push(cm, cp->tags_addr());
-    PSParallelCompact::mark_and_push(cm, cp->cache_addr());
-    PSParallelCompact::mark_and_push(cm, cp->operands_addr());
-    PSParallelCompact::mark_and_push(cm, cp->pool_holder_addr());
-  }
-}
-#endif // SERIALGC
-
-
-int constantPoolKlass::oop_adjust_pointers(oop obj) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  constantPoolOop cp = (constantPoolOop) obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cp->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolKlassObj never moves.
-
-  // If the tags array is null we are in the middle of allocating this constant
-  // pool.
-  if (cp->tags() != NULL) {
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i< cp->length();  i++) {
-      if (cp->is_pointer_entry(i)) {
-        MarkSweep::adjust_pointer(base);
-      }
-      base++;
-    }
-  }
-  MarkSweep::adjust_pointer(cp->tags_addr());
-  MarkSweep::adjust_pointer(cp->cache_addr());
-  MarkSweep::adjust_pointer(cp->operands_addr());
-  MarkSweep::adjust_pointer(cp->pool_holder_addr());
-  return size;
-}
-
-
-int constantPoolKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolKlassObj never moves.
-  constantPoolOop cp = (constantPoolOop) obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cp->object_size();
-
-  // If the tags array is null we are in the middle of allocating this constant
-  // pool.
-  if (cp->tags() != NULL) {
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i < cp->length(); i++) {
-      if (cp->is_pointer_entry(i)) {
-        blk->do_oop(base);
-      }
-      base++;
-    }
-  }
-  blk->do_oop(cp->tags_addr());
-  blk->do_oop(cp->cache_addr());
-  blk->do_oop(cp->operands_addr());
-  blk->do_oop(cp->pool_holder_addr());
-  return size;
-}
-
-
-int constantPoolKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolKlassObj never moves.
-  constantPoolOop cp = (constantPoolOop) obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cp->object_size();
-
-  // If the tags array is null we are in the middle of allocating this constant
-  // pool.
-  if (cp->tags() != NULL) {
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i < cp->length(); i++) {
-      if (mr.contains(base)) {
-        if (cp->is_pointer_entry(i)) {
-          blk->do_oop(base);
-        }
-      }
-      base++;
-    }
-  }
-  oop* addr;
-  addr = cp->tags_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = cp->cache_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = cp->operands_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = cp->pool_holder_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  return size;
-}
-
-bool constantPoolKlass::oop_is_conc_safe(oop obj) const {
-  assert(obj->is_constantPool(), "must be constantPool");
-  return constantPoolOop(obj)->is_conc_safe();
-}
-
-#ifndef SERIALGC
-int constantPoolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert (obj->is_constantPool(), "obj must be constant pool");
-  constantPoolOop cp = (constantPoolOop) obj;
-
-  // If the tags array is null we are in the middle of allocating this constant
-  // pool.
-  if (cp->tags() != NULL) {
-    oop* base = (oop*)cp->base();
-    for (int i = 0; i < cp->length(); ++i, ++base) {
-      if (cp->is_pointer_entry(i)) {
-        PSParallelCompact::adjust_pointer(base);
-      }
-    }
-  }
-  PSParallelCompact::adjust_pointer(cp->tags_addr());
-  PSParallelCompact::adjust_pointer(cp->cache_addr());
-  PSParallelCompact::adjust_pointer(cp->operands_addr());
-  PSParallelCompact::adjust_pointer(cp->pool_holder_addr());
-  return cp->object_size();
-}
-
-void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->is_constantPool(), "should be constant pool");
-  constantPoolOop cp = (constantPoolOop) obj;
-  if (cp->tags() != NULL) {
-    for (int i = 1; i < cp->length(); ++i) {
-      if (cp->is_pointer_entry(i)) {
-        oop* base = cp->obj_at_addr_raw(i);
-        if (PSScavenge::should_scavenge(base)) {
-          pm->claim_or_forward_depth(base);
-        }
-      }
-    }
-  }
-}
-#endif // SERIALGC
-
-// Printing
-
-void constantPoolKlass::oop_print_on(oop obj, outputStream* st) {
-  EXCEPTION_MARK;
-  oop anObj;
-  assert(obj->is_constantPool(), "must be constantPool");
-  Klass::oop_print_on(obj, st);
-  constantPoolOop cp = constantPoolOop(obj);
-  if (cp->flags() != 0) {
-    st->print(" - flags: 0x%x", cp->flags());
-    if (cp->has_pseudo_string()) st->print(" has_pseudo_string");
-    if (cp->has_invokedynamic()) st->print(" has_invokedynamic");
-    if (cp->has_preresolution()) st->print(" has_preresolution");
-    st->cr();
-  }
-  if (cp->pool_holder() != NULL) {
-    bool extra = (instanceKlass::cast(cp->pool_holder())->constants() != cp);
-    st->print_cr(" - holder: " INTPTR_FORMAT "%s", cp->pool_holder(), (extra? " (extra)" : ""));
-  }
-  st->print_cr(" - cache: " INTPTR_FORMAT, cp->cache());
-  for (int index = 1; index < cp->length(); index++) {      // Index 0 is unused
-    st->print(" - %3d : ", index);
-    cp->tag_at(index).print_on(st);
-    st->print(" : ");
-    switch (cp->tag_at(index).value()) {
-      case JVM_CONSTANT_Class :
-        { anObj = cp->klass_at(index, CATCH);
-          anObj->print_value_on(st);
-          st->print(" {0x%lx}", (address)anObj);
-        }
-        break;
-      case JVM_CONSTANT_Fieldref :
-      case JVM_CONSTANT_Methodref :
-      case JVM_CONSTANT_InterfaceMethodref :
-        st->print("klass_index=%d", cp->uncached_klass_ref_index_at(index));
-        st->print(" name_and_type_index=%d", cp->uncached_name_and_type_ref_index_at(index));
-        break;
-      case JVM_CONSTANT_UnresolvedString :
-      case JVM_CONSTANT_String :
-        if (cp->is_pseudo_string_at(index)) {
-          anObj = cp->pseudo_string_at(index);
-        } else {
-          anObj = cp->string_at(index, CATCH);
-        }
-        anObj->print_value_on(st);
-        st->print(" {0x%lx}", (address)anObj);
-        break;
-      case JVM_CONSTANT_Object :
-        anObj = cp->object_at(index);
-        anObj->print_value_on(st);
-        st->print(" {0x%lx}", (address)anObj);
-        break;
-      case JVM_CONSTANT_Integer :
-        st->print("%d", cp->int_at(index));
-        break;
-      case JVM_CONSTANT_Float :
-        st->print("%f", cp->float_at(index));
-        break;
-      case JVM_CONSTANT_Long :
-        st->print_jlong(cp->long_at(index));
-        index++;   // Skip entry following eigth-byte constant
-        break;
-      case JVM_CONSTANT_Double :
-        st->print("%lf", cp->double_at(index));
-        index++;   // Skip entry following eigth-byte constant
-        break;
-      case JVM_CONSTANT_NameAndType :
-        st->print("name_index=%d", cp->name_ref_index_at(index));
-        st->print(" signature_index=%d", cp->signature_ref_index_at(index));
-        break;
-      case JVM_CONSTANT_Utf8 :
-        cp->symbol_at(index)->print_value_on(st);
-        break;
-      case JVM_CONSTANT_UnresolvedClass :               // fall-through
-      case JVM_CONSTANT_UnresolvedClassInError: {
-        // unresolved_klass_at requires lock or safe world.
-        CPSlot entry = cp->slot_at(index);
-        if (entry.is_oop()) {
-          entry.get_oop()->print_value_on(st);
-        } else {
-          entry.get_symbol()->print_value_on(st);
-        }
-        }
-        break;
-      case JVM_CONSTANT_MethodHandle :
-        st->print("ref_kind=%d", cp->method_handle_ref_kind_at(index));
-        st->print(" ref_index=%d", cp->method_handle_index_at(index));
-        break;
-      case JVM_CONSTANT_MethodType :
-        st->print("signature_index=%d", cp->method_type_index_at(index));
-        break;
-      case JVM_CONSTANT_InvokeDynamic :
-        {
-          st->print("bootstrap_method_index=%d", cp->invoke_dynamic_bootstrap_method_ref_index_at(index));
-          st->print(" name_and_type_index=%d", cp->invoke_dynamic_name_and_type_ref_index_at(index));
-          int argc = cp->invoke_dynamic_argument_count_at(index);
-          if (argc > 0) {
-            for (int arg_i = 0; arg_i < argc; arg_i++) {
-              int arg = cp->invoke_dynamic_argument_index_at(index, arg_i);
-              st->print((arg_i == 0 ? " arguments={%d" : ", %d"), arg);
-            }
-            st->print("}");
-          }
-        }
-        break;
-      default:
-        ShouldNotReachHere();
-        break;
-    }
-    st->cr();
-  }
-  st->cr();
-}
-
-void constantPoolKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_constantPool(), "must be constantPool");
-  constantPoolOop cp = constantPoolOop(obj);
-  st->print("constant pool [%d]", cp->length());
-  if (cp->has_pseudo_string()) st->print("/pseudo_string");
-  if (cp->has_invokedynamic()) st->print("/invokedynamic");
-  if (cp->has_preresolution()) st->print("/preresolution");
-  if (cp->operands() != NULL)  st->print("/operands[%d]", cp->operands()->length());
-  cp->print_address_on(st);
-  st->print(" for ");
-  cp->pool_holder()->print_value_on(st);
-  if (cp->pool_holder() != NULL) {
-    bool extra = (instanceKlass::cast(cp->pool_holder())->constants() != cp);
-    if (extra)  st->print(" (extra)");
-  }
-  if (cp->cache() != NULL) {
-    st->print(" cache=" PTR_FORMAT, cp->cache());
-  }
-}
-
-const char* constantPoolKlass::internal_name() const {
-  return "{constant pool}";
-}
-
-// Verification
-
-void constantPoolKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_constantPool(), "object must be constant pool");
-  constantPoolOop cp = constantPoolOop(obj);
-  guarantee(cp->is_perm(), "should be in permspace");
-  if (!cp->partially_loaded()) {
-    for (int i = 0; i< cp->length();  i++) {
-      constantTag tag = cp->tag_at(i);
-      CPSlot entry = cp->slot_at(i);
-      if (tag.is_klass()) {
-        if (entry.is_oop()) {
-          guarantee(entry.get_oop()->is_perm(),     "should be in permspace");
-          guarantee(entry.get_oop()->is_klass(),    "should be klass");
-        }
-      } else if (tag.is_unresolved_klass()) {
-        if (entry.is_oop()) {
-          guarantee(entry.get_oop()->is_perm(),     "should be in permspace");
-          guarantee(entry.get_oop()->is_klass(),    "should be klass");
-        }
-      } else if (tag.is_symbol()) {
-        guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count");
-      } else if (tag.is_unresolved_string()) {
-        if (entry.is_oop()) {
-          guarantee(entry.get_oop()->is_perm(),     "should be in permspace");
-          guarantee(entry.get_oop()->is_instance(), "should be instance");
-        }
-        else {
-          guarantee(entry.get_symbol()->refcount() != 0, "should have nonzero reference count");
-        }
-      } else if (tag.is_string()) {
-        if (!cp->has_pseudo_string()) {
-          if (entry.is_oop()) {
-            guarantee(!JavaObjectsInPerm || entry.get_oop()->is_perm(),
-                      "should be in permspace");
-            guarantee(entry.get_oop()->is_instance(), "should be instance");
-          }
-        } else {
-          // can be non-perm, can be non-instance (array)
-        }
-      } else if (tag.is_object()) {
-        assert(entry.get_oop()->is_oop(), "should be some valid oop");
-      } else {
-        assert(!cp->is_pointer_entry(i), "unhandled oop type in constantPoolKlass::verify_on");
-      }
-    }
-    guarantee(cp->tags()->is_perm(),         "should be in permspace");
-    guarantee(cp->tags()->is_typeArray(),    "should be type array");
-    if (cp->cache() != NULL) {
-      // Note: cache() can be NULL before a class is completely setup or
-      // in temporary constant pools used during constant pool merging
-      guarantee(cp->cache()->is_perm(),              "should be in permspace");
-      guarantee(cp->cache()->is_constantPoolCache(), "should be constant pool cache");
-    }
-    if (cp->operands() != NULL) {
-      guarantee(cp->operands()->is_perm(),  "should be in permspace");
-      guarantee(cp->operands()->is_typeArray(), "should be type array");
-    }
-    if (cp->pool_holder() != NULL) {
-      // Note: pool_holder() can be NULL in temporary constant pools
-      // used during constant pool merging
-      guarantee(cp->pool_holder()->is_perm(),  "should be in permspace");
-      guarantee(cp->pool_holder()->is_klass(), "should be klass");
-    }
-  }
-}
-
-bool constantPoolKlass::oop_partially_loaded(oop obj) const {
-  assert(obj->is_constantPool(), "object must be constant pool");
-  constantPoolOop cp = constantPoolOop(obj);
-  return cp->tags() == NULL || cp->pool_holder() == (klassOop) cp;   // Check whether pool holder points to self
-}
-
-
-void constantPoolKlass::oop_set_partially_loaded(oop obj) {
-  assert(obj->is_constantPool(), "object must be constant pool");
-  constantPoolOop cp = constantPoolOop(obj);
-  assert(cp->pool_holder() == NULL, "just checking");
-  cp->set_pool_holder((klassOop) cp);   // Temporarily set pool holder to point to self
-}
-
-#ifndef PRODUCT
-// CompileTheWorld support. Preload all classes loaded references in the passed in constantpool
-void constantPoolKlass::preload_and_initialize_all_classes(oop obj, TRAPS) {
-  guarantee(obj->is_constantPool(), "object must be constant pool");
-  constantPoolHandle cp(THREAD, (constantPoolOop)obj);
-  guarantee(!cp->partially_loaded(), "must be fully loaded");
-
-  for (int i = 0; i< cp->length();  i++) {
-    if (cp->tag_at(i).is_unresolved_klass()) {
-      // This will force loading of the class
-      klassOop klass = cp->klass_at(i, CHECK);
-      if (klass->klass_part()->oop_is_instance()) {
-        // Force initialization of class
-        instanceKlass::cast(klass)->initialize(CHECK);
-      }
-    }
-  }
-}
-
-#endif
--- a/src/share/vm/oops/constantPoolKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
-#define SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
-
-#include "oops/arrayKlass.hpp"
-#include "oops/instanceKlass.hpp"
-
-// A constantPoolKlass is the klass of a constantPoolOop
-
-class constantPoolKlass : public Klass {
-  juint    _alloc_size;        // allocation profiling support
- public:
-  // Dispatched klass operations
-  bool oop_is_constantPool() const  { return true; }
-  int oop_size(oop obj) const;
-  int klass_oop_size() const        { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(constantPoolKlass);
-  constantPoolOop allocate(int length, bool is_conc_safe, TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Casting from klassOop
-  static constantPoolKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_constantPool(), "cast to constantPoolKlass");
-    return (constantPoolKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()        { return oopDesc::header_size() + sizeof(constantPoolKlass)/HeapWordSize; }
-  int object_size() const        { return align_object_size(header_size()); }
-
-  // Garbage collection
-  // Returns true is the object is safe for GC concurrent processing.
-  virtual bool oop_is_conc_safe(oop obj) const;
-  void oop_follow_contents(oop obj);
-  int oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on(oop obj, outputStream* st);
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-  // tells whether obj is partially constructed (gc during class loading)
-  bool oop_partially_loaded(oop obj) const;
-  void oop_set_partially_loaded(oop obj);
-#ifndef PRODUCT
-  // Compile the world support
-  static void preload_and_initialize_all_classes(oop constant_pool, TRAPS);
-#endif
-};
-
-#endif // SHARE_VM_OOPS_CONSTANTPOOLKLASS_HPP
--- a/src/share/vm/oops/constantPoolOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1814 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "classfile/symbolTable.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "classfile/vmSymbols.hpp"
-#include "interpreter/linkResolver.hpp"
-#include "memory/oopFactory.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/instanceKlass.hpp"
-#include "oops/objArrayKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/fieldType.hpp"
-#include "runtime/init.hpp"
-#include "runtime/signature.hpp"
-#include "runtime/vframe.hpp"
-
-void constantPoolOopDesc::set_flag_at(FlagBit fb) {
-  const int MAX_STATE_CHANGES = 2;
-  for (int i = MAX_STATE_CHANGES + 10; i > 0; i--) {
-    int oflags = _flags;
-    int nflags = oflags | (1 << (int)fb);
-    if (Atomic::cmpxchg(nflags, &_flags, oflags) == oflags)
-      return;
-  }
-  assert(false, "failed to cmpxchg flags");
-  _flags |= (1 << (int)fb);     // better than nothing
-}
-
-klassOop constantPoolOopDesc::klass_at_impl(constantPoolHandle this_oop, int which, TRAPS) {
-  // A resolved constantPool entry will contain a klassOop, otherwise a Symbol*.
-  // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and
-  // tag is not updated atomicly.
-  CPSlot entry = this_oop->slot_at(which);
-  if (entry.is_oop()) {
-    assert(entry.get_oop()->is_klass(), "must be");
-    // Already resolved - return entry.
-    return (klassOop)entry.get_oop();
-  }
-
-  // Acquire lock on constant oop while doing update. After we get the lock, we check if another object
-  // already has updated the object
-  assert(THREAD->is_Java_thread(), "must be a Java thread");
-  bool do_resolve = false;
-  bool in_error = false;
-
-  Symbol* name = NULL;
-  Handle       loader;
-  { ObjectLocker ol(this_oop, THREAD);
-
-    if (this_oop->tag_at(which).is_unresolved_klass()) {
-      if (this_oop->tag_at(which).is_unresolved_klass_in_error()) {
-        in_error = true;
-      } else {
-        do_resolve = true;
-        name   = this_oop->unresolved_klass_at(which);
-        loader = Handle(THREAD, instanceKlass::cast(this_oop->pool_holder())->class_loader());
-      }
-    }
-  } // unlocking constantPool
-
-
-  // The original attempt to resolve this constant pool entry failed so find the
-  // original error and throw it again (JVMS 5.4.3).
-  if (in_error) {
-    Symbol* error = SystemDictionary::find_resolution_error(this_oop, which);
-    guarantee(error != (Symbol*)NULL, "tag mismatch with resolution error table");
-    ResourceMark rm;
-    // exception text will be the class name
-    const char* className = this_oop->unresolved_klass_at(which)->as_C_string();
-    THROW_MSG_0(error, className);
-  }
-
-  if (do_resolve) {
-    // this_oop must be unlocked during resolve_or_fail
-    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
-    Handle h_prot (THREAD, protection_domain);
-    klassOop k_oop = SystemDictionary::resolve_or_fail(name, loader, h_prot, true, THREAD);
-    KlassHandle k;
-    if (!HAS_PENDING_EXCEPTION) {
-      k = KlassHandle(THREAD, k_oop);
-      // Do access check for klasses
-      verify_constant_pool_resolve(this_oop, k, THREAD);
-    }
-
-    // Failed to resolve class. We must record the errors so that subsequent attempts
-    // to resolve this constant pool entry fail with the same error (JVMS 5.4.3).
-    if (HAS_PENDING_EXCEPTION) {
-      ResourceMark rm;
-      Symbol* error = PENDING_EXCEPTION->klass()->klass_part()->name();
-
-      bool throw_orig_error = false;
-      {
-        ObjectLocker ol (this_oop, THREAD);
-
-        // some other thread has beaten us and has resolved the class.
-        if (this_oop->tag_at(which).is_klass()) {
-          CLEAR_PENDING_EXCEPTION;
-          entry = this_oop->resolved_klass_at(which);
-          return (klassOop)entry.get_oop();
-        }
-
-        if (!PENDING_EXCEPTION->
-              is_a(SystemDictionary::LinkageError_klass())) {
-          // Just throw the exception and don't prevent these classes from
-          // being loaded due to virtual machine errors like StackOverflow
-          // and OutOfMemoryError, etc, or if the thread was hit by stop()
-          // Needs clarification to section 5.4.3 of the VM spec (see 6308271)
-        }
-        else if (!this_oop->tag_at(which).is_unresolved_klass_in_error()) {
-          SystemDictionary::add_resolution_error(this_oop, which, error);
-          this_oop->tag_at_put(which, JVM_CONSTANT_UnresolvedClassInError);
-        } else {
-          // some other thread has put the class in error state.
-          error = SystemDictionary::find_resolution_error(this_oop, which);
-          assert(error != NULL, "checking");
-          throw_orig_error = true;
-        }
-      } // unlocked
-
-      if (throw_orig_error) {
-        CLEAR_PENDING_EXCEPTION;
-        ResourceMark rm;
-        const char* className = this_oop->unresolved_klass_at(which)->as_C_string();
-        THROW_MSG_0(error, className);
-      }
-
-      return 0;
-    }
-
-    if (TraceClassResolution && !k()->klass_part()->oop_is_array()) {
-      // skip resolving the constant pool so that this code get's
-      // called the next time some bytecodes refer to this class.
-      ResourceMark rm;
-      int line_number = -1;
-      const char * source_file = NULL;
-      if (JavaThread::current()->has_last_Java_frame()) {
-        // try to identify the method which called this function.
-        vframeStream vfst(JavaThread::current());
-        if (!vfst.at_end()) {
-          line_number = vfst.method()->line_number_from_bci(vfst.bci());
-          Symbol* s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name();
-          if (s != NULL) {
-            source_file = s->as_C_string();
-          }
-        }
-      }
-      if (k() != this_oop->pool_holder()) {
-        // only print something if the classes are different
-        if (source_file != NULL) {
-          tty->print("RESOLVE %s %s %s:%d\n",
-                     instanceKlass::cast(this_oop->pool_holder())->external_name(),
-                     instanceKlass::cast(k())->external_name(), source_file, line_number);
-        } else {
-          tty->print("RESOLVE %s %s\n",
-                     instanceKlass::cast(this_oop->pool_holder())->external_name(),
-                     instanceKlass::cast(k())->external_name());
-        }
-      }
-      return k();
-    } else {
-      ObjectLocker ol (this_oop, THREAD);
-      // Only updated constant pool - if it is resolved.
-      do_resolve = this_oop->tag_at(which).is_unresolved_klass();
-      if (do_resolve) {
-        this_oop->klass_at_put(which, k());
-      }
-    }
-  }
-
-  entry = this_oop->resolved_klass_at(which);
-  assert(entry.is_oop() && entry.get_oop()->is_klass(), "must be resolved at this point");
-  return (klassOop)entry.get_oop();
-}
-
-
-// Does not update constantPoolOop - to avoid any exception throwing. Used
-// by compiler and exception handling.  Also used to avoid classloads for
-// instanceof operations. Returns NULL if the class has not been loaded or
-// if the verification of constant pool failed
-klassOop constantPoolOopDesc::klass_at_if_loaded(constantPoolHandle this_oop, int which) {
-  CPSlot entry = this_oop->slot_at(which);
-  if (entry.is_oop()) {
-    assert(entry.get_oop()->is_klass(), "must be");
-    return (klassOop)entry.get_oop();
-  } else {
-    assert(entry.is_metadata(), "must be either symbol or klass");
-    Thread *thread = Thread::current();
-    Symbol* name = entry.get_symbol();
-    oop loader = instanceKlass::cast(this_oop->pool_holder())->class_loader();
-    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
-    Handle h_prot (thread, protection_domain);
-    Handle h_loader (thread, loader);
-    klassOop k = SystemDictionary::find(name, h_loader, h_prot, thread);
-
-    if (k != NULL) {
-      // Make sure that resolving is legal
-      EXCEPTION_MARK;
-      KlassHandle klass(THREAD, k);
-      // return NULL if verification fails
-      verify_constant_pool_resolve(this_oop, klass, THREAD);
-      if (HAS_PENDING_EXCEPTION) {
-        CLEAR_PENDING_EXCEPTION;
-        return NULL;
-      }
-      return klass();
-    } else {
-      return k;
-    }
-  }
-}
-
-
-klassOop constantPoolOopDesc::klass_ref_at_if_loaded(constantPoolHandle this_oop, int which) {
-  return klass_at_if_loaded(this_oop, this_oop->klass_ref_index_at(which));
-}
-
-
-// This is an interface for the compiler that allows accessing non-resolved entries
-// in the constant pool - but still performs the validations tests. Must be used
-// in a pre-parse of the compiler - to determine what it can do and not do.
-// Note: We cannot update the ConstantPool from the vm_thread.
-klassOop constantPoolOopDesc::klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int index, TRAPS) {
-  int which = this_oop->klass_ref_index_at(index);
-  CPSlot entry = this_oop->slot_at(which);
-  if (entry.is_oop()) {
-    assert(entry.get_oop()->is_klass(), "must be");
-    return (klassOop)entry.get_oop();
-  } else {
-    assert(entry.is_metadata(), "must be either symbol or klass");
-    Symbol*  name  = entry.get_symbol();
-    oop loader = instanceKlass::cast(this_oop->pool_holder())->class_loader();
-    oop protection_domain = Klass::cast(this_oop->pool_holder())->protection_domain();
-    Handle h_loader(THREAD, loader);
-    Handle h_prot  (THREAD, protection_domain);
-    KlassHandle k(THREAD, SystemDictionary::find(name, h_loader, h_prot, THREAD));
-
-    // Do access check for klasses
-    if( k.not_null() ) verify_constant_pool_resolve(this_oop, k, CHECK_NULL);
-    return k();
-  }
-}
-
-
-methodOop constantPoolOopDesc::method_at_if_loaded(constantPoolHandle cpool,
-                                                   int which) {
-  assert(!constantPoolCacheOopDesc::is_secondary_index(which), "no indy instruction here");
-  if (cpool->cache() == NULL)  return NULL;  // nothing to load yet
-  int cache_index = get_cpcache_index(which);
-  if (!(cache_index >= 0 && cache_index < cpool->cache()->length())) {
-    if (PrintMiscellaneous && (Verbose||WizardMode)) {
-      tty->print_cr("bad operand %d in:", which); cpool->print();
-    }
-    return NULL;
-  }
-  ConstantPoolCacheEntry* e = cpool->cache()->entry_at(cache_index);
-  return e->method_if_resolved(cpool);
-}
-
-
-bool constantPoolOopDesc::has_appendix_at_if_loaded(constantPoolHandle cpool, int which) {
-  if (cpool->cache() == NULL)  return false;  // nothing to load yet
-  // XXX Is there a simpler way to get to the secondary entry?
-  ConstantPoolCacheEntry* e;
-  if (constantPoolCacheOopDesc::is_secondary_index(which)) {
-    e = cpool->cache()->secondary_entry_at(which);
-  } else {
-    int cache_index = get_cpcache_index(which);
-    if (!(cache_index >= 0 && cache_index < cpool->cache()->length())) {
-      if (PrintMiscellaneous && (Verbose||WizardMode)) {
-        tty->print_cr("bad operand %d in:", which); cpool->print();
-      }
-      return false;
-    }
-    e = cpool->cache()->entry_at(cache_index);
-  }
-  return e->has_appendix();
-}
-
-
-oop constantPoolOopDesc::appendix_at_if_loaded(constantPoolHandle cpool, int which) {
-  if (cpool->cache() == NULL)  return NULL;  // nothing to load yet
-  // XXX Is there a simpler way to get to the secondary entry?
-  ConstantPoolCacheEntry* e;
-  if (constantPoolCacheOopDesc::is_secondary_index(which)) {
-    e = cpool->cache()->secondary_entry_at(which);
-  } else {
-    int cache_index = get_cpcache_index(which);
-    if (!(cache_index >= 0 && cache_index < cpool->cache()->length())) {
-      if (PrintMiscellaneous && (Verbose||WizardMode)) {
-        tty->print_cr("bad operand %d in:", which); cpool->print();
-      }
-      return NULL;
-    }
-    e = cpool->cache()->entry_at(cache_index);
-  }
-  if (!e->has_appendix()) {
-    return NULL;
-  }
-  return e->f1_as_instance();
-}
-
-
-Symbol* constantPoolOopDesc::impl_name_ref_at(int which, bool uncached) {
-  int name_index = name_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
-  return symbol_at(name_index);
-}
-
-
-Symbol* constantPoolOopDesc::impl_signature_ref_at(int which, bool uncached) {
-  int signature_index = signature_ref_index_at(impl_name_and_type_ref_index_at(which, uncached));
-  return symbol_at(signature_index);
-}
-
-
-int constantPoolOopDesc::impl_name_and_type_ref_index_at(int which, bool uncached) {
-  int i = which;
-  if (!uncached && cache() != NULL) {
-    if (constantPoolCacheOopDesc::is_secondary_index(which)) {
-      // Invokedynamic index.
-      int pool_index = cache()->main_entry_at(which)->constant_pool_index();
-      pool_index = invoke_dynamic_name_and_type_ref_index_at(pool_index);
-      assert(tag_at(pool_index).is_name_and_type(), "");
-      return pool_index;
-    }
-    // change byte-ordering and go via cache
-    i = remap_instruction_operand_from_cache(which);
-  } else {
-    if (tag_at(which).is_invoke_dynamic()) {
-      int pool_index = invoke_dynamic_name_and_type_ref_index_at(which);
-      assert(tag_at(pool_index).is_name_and_type(), "");
-      return pool_index;
-    }
-  }
-  assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
-  assert(!tag_at(i).is_invoke_dynamic(), "Must be handled above");
-  jint ref_index = *int_at_addr(i);
-  return extract_high_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::impl_klass_ref_index_at(int which, bool uncached) {
-  guarantee(!constantPoolCacheOopDesc::is_secondary_index(which),
-            "an invokedynamic instruction does not have a klass");
-  int i = which;
-  if (!uncached && cache() != NULL) {
-    // change byte-ordering and go via cache
-    i = remap_instruction_operand_from_cache(which);
-  }
-  assert(tag_at(i).is_field_or_method(), "Corrupted constant pool");
-  jint ref_index = *int_at_addr(i);
-  return extract_low_short_from_int(ref_index);
-}
-
-
-
-int constantPoolOopDesc::remap_instruction_operand_from_cache(int operand) {
-  int cpc_index = operand;
-  DEBUG_ONLY(cpc_index -= CPCACHE_INDEX_TAG);
-  assert((int)(u2)cpc_index == cpc_index, "clean u2");
-  int member_index = cache()->entry_at(cpc_index)->constant_pool_index();
-  return member_index;
-}
-
-
-void constantPoolOopDesc::verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle k, TRAPS) {
- if (k->oop_is_instance() || k->oop_is_objArray()) {
-    instanceKlassHandle holder (THREAD, this_oop->pool_holder());
-    klassOop elem_oop = k->oop_is_instance() ? k() : objArrayKlass::cast(k())->bottom_klass();
-    KlassHandle element (THREAD, elem_oop);
-
-    // The element type could be a typeArray - we only need the access check if it is
-    // an reference to another class
-    if (element->oop_is_instance()) {
-      LinkResolver::check_klass_accessability(holder, element, CHECK);
-    }
-  }
-}
-
-
-int constantPoolOopDesc::name_ref_index_at(int which_nt) {
-  jint ref_index = name_and_type_at(which_nt);
-  return extract_low_short_from_int(ref_index);
-}
-
-
-int constantPoolOopDesc::signature_ref_index_at(int which_nt) {
-  jint ref_index = name_and_type_at(which_nt);
-  return extract_high_short_from_int(ref_index);
-}
-
-
-klassOop constantPoolOopDesc::klass_ref_at(int which, TRAPS) {
-  return klass_at(klass_ref_index_at(which), CHECK_NULL);
-}
-
-
-Symbol* constantPoolOopDesc::klass_name_at(int which) {
-  assert(tag_at(which).is_unresolved_klass() || tag_at(which).is_klass(),
-         "Corrupted constant pool");
-  // A resolved constantPool entry will contain a klassOop, otherwise a Symbol*.
-  // It is not safe to rely on the tag bit's here, since we don't have a lock, and the entry and
-  // tag is not updated atomicly.
-  CPSlot entry = slot_at(which);
-  if (entry.is_oop()) {
-    // Already resolved - return entry's name.
-    assert(entry.get_oop()->is_klass(), "must be");
-    return klassOop(entry.get_oop())->klass_part()->name();
-  } else {
-    assert(entry.is_metadata(), "must be either symbol or klass");
-    return entry.get_symbol();
-  }
-}
-
-Symbol* constantPoolOopDesc::klass_ref_at_noresolve(int which) {
-  jint ref_index = klass_ref_index_at(which);
-  return klass_at_noresolve(ref_index);
-}
-
-Symbol* constantPoolOopDesc::uncached_klass_ref_at_noresolve(int which) {
-  jint ref_index = uncached_klass_ref_index_at(which);
-  return klass_at_noresolve(ref_index);
-}
-
-char* constantPoolOopDesc::string_at_noresolve(int which) {
-  // Test entry type in case string is resolved while in here.
-  CPSlot entry = slot_at(which);
-  if (entry.is_metadata()) {
-    return (entry.get_symbol())->as_C_string();
-  } else if (java_lang_String::is_instance(entry.get_oop())) {
-    return java_lang_String::as_utf8_string(entry.get_oop());
-  } else {
-    return (char*)"<pseudo-string>";
-  }
-}
-
-
-BasicType constantPoolOopDesc::basic_type_for_signature_at(int which) {
-  return FieldType::basic_type(symbol_at(which));
-}
-
-
-void constantPoolOopDesc::resolve_string_constants_impl(constantPoolHandle this_oop, TRAPS) {
-  for (int index = 1; index < this_oop->length(); index++) { // Index 0 is unused
-    if (this_oop->tag_at(index).is_unresolved_string()) {
-      this_oop->string_at(index, CHECK);
-    }
-  }
-}
-
-// A resolved constant value in the CP cache is represented as a non-null
-// value.  As a special case, this value can be a 'systemObjArray'
-// which masks an exception object to throw.
-// This allows a MethodHandle constant reference to throw a consistent
-// exception every time, if it fails to resolve.
-static oop decode_exception_from_f1(oop result_oop, TRAPS) {
-  if (result_oop->klass() != Universe::systemObjArrayKlassObj())
-    return result_oop;
-
-  // Special cases here:  Masked null, saved exception.
-  objArrayOop sys_array = (objArrayOop) result_oop;
-  assert(sys_array->length() == 1, "bad system array");
-  if (sys_array->length() == 1) {
-    THROW_OOP_(sys_array->obj_at(0), NULL);
-  }
-  return NULL;
-}
-
-oop constantPoolOopDesc::resolve_constant_at_impl(constantPoolHandle this_oop, int index, int cache_index, TRAPS) {
-  oop result_oop = NULL;
-  Handle throw_exception;
-
-  if (cache_index == _possible_index_sentinel) {
-    // It is possible that this constant is one which is cached in the CP cache.
-    // We'll do a linear search.  This should be OK because this usage is rare.
-    assert(index > 0, "valid index");
-    constantPoolCacheOop cache = this_oop()->cache();
-    for (int i = 0, len = cache->length(); i < len; i++) {
-      ConstantPoolCacheEntry* cpc_entry = cache->entry_at(i);
-      if (!cpc_entry->is_secondary_entry() && cpc_entry->constant_pool_index() == index) {
-        // Switch the query to use this CPC entry.
-        cache_index = i;
-        index = _no_index_sentinel;
-        break;
-      }
-    }
-    if (cache_index == _possible_index_sentinel)
-      cache_index = _no_index_sentinel;  // not found
-  }
-  assert(cache_index == _no_index_sentinel || cache_index >= 0, "");
-  assert(index == _no_index_sentinel || index >= 0, "");
-
-  if (cache_index >= 0) {
-    assert(index == _no_index_sentinel, "only one kind of index at a time");
-    ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
-    result_oop = cpc_entry->f1_as_instance();
-    if (result_oop != NULL) {
-      return decode_exception_from_f1(result_oop, THREAD);
-      // That was easy...
-    }
-    index = cpc_entry->constant_pool_index();
-  }
-
-  jvalue prim_value;  // temp used only in a few cases below
-
-  int tag_value = this_oop->tag_at(index).value();
-  switch (tag_value) {
-
-  case JVM_CONSTANT_UnresolvedClass:
-  case JVM_CONSTANT_UnresolvedClassInError:
-  case JVM_CONSTANT_Class:
-    {
-      klassOop resolved = klass_at_impl(this_oop, index, CHECK_NULL);
-      // ldc wants the java mirror.
-      result_oop = resolved->java_mirror();
-      break;
-    }
-
-  case JVM_CONSTANT_String:
-  case JVM_CONSTANT_UnresolvedString:
-    if (this_oop->is_pseudo_string_at(index)) {
-      result_oop = this_oop->pseudo_string_at(index);
-      break;
-    }
-    result_oop = string_at_impl(this_oop, index, CHECK_NULL);
-    break;
-
-  case JVM_CONSTANT_Object:
-    result_oop = this_oop->object_at(index);
-    break;
-
-  case JVM_CONSTANT_MethodHandle:
-    {
-      int ref_kind                 = this_oop->method_handle_ref_kind_at(index);
-      int callee_index             = this_oop->method_handle_klass_index_at(index);
-      Symbol*  name =      this_oop->method_handle_name_ref_at(index);
-      Symbol*  signature = this_oop->method_handle_signature_ref_at(index);
-      if (PrintMiscellaneous)
-        tty->print_cr("resolve JVM_CONSTANT_MethodHandle:%d [%d/%d/%d] %s.%s",
-                      ref_kind, index, this_oop->method_handle_index_at(index),
-                      callee_index, name->as_C_string(), signature->as_C_string());
-      KlassHandle callee;
-      { klassOop k = klass_at_impl(this_oop, callee_index, CHECK_NULL);
-        callee = KlassHandle(THREAD, k);
-      }
-      KlassHandle klass(THREAD, this_oop->pool_holder());
-      Handle value = SystemDictionary::link_method_handle_constant(klass, ref_kind,
-                                                                   callee, name, signature,
-                                                                   THREAD);
-      if (HAS_PENDING_EXCEPTION) {
-        throw_exception = Handle(THREAD, PENDING_EXCEPTION);
-        CLEAR_PENDING_EXCEPTION;
-        break;
-      }
-      result_oop = value();
-      assert(result_oop != NULL, "");
-      break;
-    }
-
-  case JVM_CONSTANT_MethodType:
-    {
-      Symbol*  signature = this_oop->method_type_signature_at(index);
-      if (PrintMiscellaneous)
-        tty->print_cr("resolve JVM_CONSTANT_MethodType [%d/%d] %s",
-                      index, this_oop->method_type_index_at(index),
-                      signature->as_C_string());
-      KlassHandle klass(THREAD, this_oop->pool_holder());
-      Handle value = SystemDictionary::find_method_handle_type(signature, klass, THREAD);
-      if (HAS_PENDING_EXCEPTION) {
-        throw_exception = Handle(THREAD, PENDING_EXCEPTION);
-        CLEAR_PENDING_EXCEPTION;
-        break;
-      }
-      result_oop = value();
-      assert(result_oop != NULL, "");
-      break;
-    }
-
-  case JVM_CONSTANT_Integer:
-    prim_value.i = this_oop->int_at(index);
-    result_oop = java_lang_boxing_object::create(T_INT, &prim_value, CHECK_NULL);
-    break;
-
-  case JVM_CONSTANT_Float:
-    prim_value.f = this_oop->float_at(index);
-    result_oop = java_lang_boxing_object::create(T_FLOAT, &prim_value, CHECK_NULL);
-    break;
-
-  case JVM_CONSTANT_Long:
-    prim_value.j = this_oop->long_at(index);
-    result_oop = java_lang_boxing_object::create(T_LONG, &prim_value, CHECK_NULL);
-    break;
-
-  case JVM_CONSTANT_Double:
-    prim_value.d = this_oop->double_at(index);
-    result_oop = java_lang_boxing_object::create(T_DOUBLE, &prim_value, CHECK_NULL);
-    break;
-
-  default:
-    DEBUG_ONLY( tty->print_cr("*** %p: tag at CP[%d/%d] = %d",
-                              this_oop(), index, cache_index, tag_value) );
-    assert(false, "unexpected constant tag");
-    break;
-  }
-
-  if (cache_index >= 0) {
-    // Cache the oop here also.
-    if (throw_exception.not_null()) {
-      objArrayOop sys_array = oopFactory::new_system_objArray(1, CHECK_NULL);
-      sys_array->obj_at_put(0, throw_exception());
-      result_oop = sys_array;
-      throw_exception = Handle();  // be tidy
-    }
-    Handle result_handle(THREAD, result_oop);
-    result_oop = NULL;  // safety
-    ObjectLocker ol(this_oop, THREAD);
-    ConstantPoolCacheEntry* cpc_entry = this_oop->cache()->entry_at(cache_index);
-    result_oop = cpc_entry->f1_as_instance();
-    // Benign race condition:  f1 may already be filled in while we were trying to lock.
-    // The important thing here is that all threads pick up the same result.
-    // It doesn't matter which racing thread wins, as long as only one
-    // result is used by all threads, and all future queries.
-    // That result may be either a resolved constant or a failure exception.
-    if (result_oop == NULL) {
-      result_oop = result_handle();
-      cpc_entry->set_f1(result_oop);
-    }
-    return decode_exception_from_f1(result_oop, THREAD);
-  } else {
-    if (throw_exception.not_null()) {
-      THROW_HANDLE_(throw_exception, NULL);
-    }
-    return result_oop;
-  }
-}
-
-
-oop constantPoolOopDesc::resolve_bootstrap_specifier_at_impl(constantPoolHandle this_oop, int index, TRAPS) {
-  assert(this_oop->tag_at(index).is_invoke_dynamic(), "Corrupted constant pool");
-
-  Handle bsm;
-  int argc;
-  {
-    // JVM_CONSTANT_InvokeDynamic is an ordered pair of [bootm, name&type], plus optional arguments
-    // The bootm, being a JVM_CONSTANT_MethodHandle, has its own cache entry.
-    // It is accompanied by the optional arguments.
-    int bsm_index = this_oop->invoke_dynamic_bootstrap_method_ref_index_at(index);
-    oop bsm_oop = this_oop->resolve_possibly_cached_constant_at(bsm_index, CHECK_NULL);
-    if (!java_lang_invoke_MethodHandle::is_instance(bsm_oop)) {
-      THROW_MSG_NULL(vmSymbols::java_lang_LinkageError(), "BSM not an MethodHandle");
-    }
-
-    // Extract the optional static arguments.
-    argc = this_oop->invoke_dynamic_argument_count_at(index);
-    if (argc == 0)  return bsm_oop;
-
-    bsm = Handle(THREAD, bsm_oop);
-  }
-
-  objArrayHandle info;
-  {
-    objArrayOop info_oop = oopFactory::new_objArray(SystemDictionary::Object_klass(), 1+argc, CHECK_NULL);
-    info = objArrayHandle(THREAD, info_oop);
-  }
-
-  info->obj_at_put(0, bsm());
-  for (int i = 0; i < argc; i++) {
-    int arg_index = this_oop->invoke_dynamic_argument_index_at(index, i);
-    oop arg_oop = this_oop->resolve_possibly_cached_constant_at(arg_index, CHECK_NULL);
-    info->obj_at_put(1+i, arg_oop);
-  }
-
-  return info();
-}
-
-oop constantPoolOopDesc::string_at_impl(constantPoolHandle this_oop, int which, TRAPS) {
-  oop str = NULL;
-  CPSlot entry = this_oop->slot_at(which);
-  if (entry.is_metadata()) {
-    ObjectLocker ol(this_oop, THREAD);
-    if (this_oop->tag_at(which).is_unresolved_string()) {
-      // Intern string
-      Symbol* sym = this_oop->unresolved_string_at(which);
-      str = StringTable::intern(sym, CHECK_(constantPoolOop(NULL)));
-      this_oop->string_at_put(which, str);
-    } else {
-      // Another thread beat us and interned string, read string from constant pool
-      str = this_oop->resolved_string_at(which);
-    }
-  } else {
-    str = entry.get_oop();
-  }
-  assert(java_lang_String::is_instance(str), "must be string");
-  return str;
-}
-
-
-bool constantPoolOopDesc::is_pseudo_string_at(int which) {
-  CPSlot entry = slot_at(which);
-  if (entry.is_metadata())
-    // Not yet resolved, but it will resolve to a string.
-    return false;
-  else if (java_lang_String::is_instance(entry.get_oop()))
-    return false; // actually, it might be a non-interned or non-perm string
-  else
-    // truly pseudo
-    return true;
-}
-
-
-bool constantPoolOopDesc::klass_name_at_matches(instanceKlassHandle k,
-                                                int which) {
-  // Names are interned, so we can compare Symbol*s directly
-  Symbol* cp_name = klass_name_at(which);
-  return (cp_name == k->name());
-}
-
-
-int constantPoolOopDesc::pre_resolve_shared_klasses(TRAPS) {
-  ResourceMark rm;
-  int count = 0;
-  for (int index = 1; index < tags()->length(); index++) { // Index 0 is unused
-    if (tag_at(index).is_unresolved_string()) {
-      // Intern string
-      Symbol* sym = unresolved_string_at(index);
-      oop entry = StringTable::intern(sym, CHECK_(-1));
-      string_at_put(index, entry);
-    }
-  }
-  return count;
-}
-
-// Iterate over symbols and decrement ones which are Symbol*s.
-// This is done during GC so do not need to lock constantPool unless we
-// have per-thread safepoints.
-// Only decrement the UTF8 symbols. Unresolved classes and strings point to
-// these symbols but didn't increment the reference count.
-void constantPoolOopDesc::unreference_symbols() {
-  for (int index = 1; index < length(); index++) { // Index 0 is unused
-    constantTag tag = tag_at(index);
-    if (tag.is_symbol()) {
-      symbol_at(index)->decrement_refcount();
-    }
-  }
-}
-
-// Iterate over symbols which are used as class, field, method names and
-// signatures (in preparation for writing to the shared archive).
-
-void constantPoolOopDesc::shared_symbols_iterate(SymbolClosure* closure) {
-  for (int index = 1; index < length(); index++) { // Index 0 is unused
-    switch (tag_at(index).value()) {
-
-    case JVM_CONSTANT_UnresolvedClass:
-    case JVM_CONSTANT_UnresolvedString:
-    case JVM_CONSTANT_Utf8:
-      assert(slot_at(index).is_metadata(), "must be symbol");
-      closure->do_symbol(symbol_at_addr(index));
-      break;
-
-    case JVM_CONSTANT_NameAndType:
-      {
-        int i = *int_at_addr(index);
-        closure->do_symbol(symbol_at_addr((unsigned)i >> 16));
-        closure->do_symbol(symbol_at_addr((unsigned)i & 0xffff));
-      }
-      break;
-
-    case JVM_CONSTANT_Class:
-    case JVM_CONSTANT_InterfaceMethodref:
-    case JVM_CONSTANT_Fieldref:
-    case JVM_CONSTANT_Methodref:
-    case JVM_CONSTANT_Integer:
-    case JVM_CONSTANT_Float:
-      // Do nothing!  Not an oop.
-      // These constant types do not reference symbols at this point.
-      break;
-
-    case JVM_CONSTANT_String:
-      // Do nothing!  Not a symbol.
-      break;
-
-    case JVM_CONSTANT_Long:
-    case JVM_CONSTANT_Double:
-      // Do nothing!  Not an oop. (But takes two pool entries.)
-      ++index;
-      break;
-
-    default:
-      ShouldNotReachHere();
-      break;
-    }
-  }
-}
-
-
-// Iterate over the [one] tags array (in preparation for writing to the
-// shared archive).
-
-void constantPoolOopDesc::shared_tags_iterate(OopClosure* closure) {
-  closure->do_oop(tags_addr());
-  closure->do_oop(operands_addr());
-}
-
-
-// Iterate over String objects (in preparation for writing to the shared
-// archive).
-
-void constantPoolOopDesc::shared_strings_iterate(OopClosure* closure) {
-  for (int index = 1; index < length(); index++) { // Index 0 is unused
-    switch (tag_at(index).value()) {
-
-    case JVM_CONSTANT_UnresolvedClass:
-    case JVM_CONSTANT_NameAndType:
-      // Do nothing!  Not a String.
-      break;
-
-    case JVM_CONSTANT_Class:
-    case JVM_CONSTANT_InterfaceMethodref:
-    case JVM_CONSTANT_Fieldref:
-    case JVM_CONSTANT_Methodref:
-    case JVM_CONSTANT_Integer:
-    case JVM_CONSTANT_Float:
-      // Do nothing!  Not an oop.
-      // These constant types do not reference symbols at this point.
-      break;
-
-    case JVM_CONSTANT_String:
-      closure->do_oop(obj_at_addr_raw(index));
-      break;
-
-    case JVM_CONSTANT_UnresolvedString:
-    case JVM_CONSTANT_Utf8:
-      // These constants are symbols, but unless these symbols are
-      // actually to be used for something, we don't want to mark them.
-      break;
-
-    case JVM_CONSTANT_Long:
-    case JVM_CONSTANT_Double:
-      // Do nothing!  Not an oop. (But takes two pool entries.)
-      ++index;
-      break;
-
-    default:
-      ShouldNotReachHere();
-      break;
-    }
-  }
-}
-
-
-// Compare this constant pool's entry at index1 to the constant pool
-// cp2's entry at index2.
-bool constantPoolOopDesc::compare_entry_to(int index1, constantPoolHandle cp2,
-       int index2, TRAPS) {
-
-  jbyte t1 = tag_at(index1).value();
-  jbyte t2 = cp2->tag_at(index2).value();
-
-
-  // JVM_CONSTANT_UnresolvedClassInError is equal to JVM_CONSTANT_UnresolvedClass
-  // when comparing
-  if (t1 == JVM_CONSTANT_UnresolvedClassInError) {
-    t1 = JVM_CONSTANT_UnresolvedClass;
-  }
-  if (t2 == JVM_CONSTANT_UnresolvedClassInError) {
-    t2 = JVM_CONSTANT_UnresolvedClass;
-  }
-
-  if (t1 != t2) {
-    // Not the same entry type so there is nothing else to check. Note
-    // that this style of checking will consider resolved/unresolved
-    // class pairs and resolved/unresolved string pairs as different.
-    // From the constantPoolOop API point of view, this is correct
-    // behavior. See constantPoolKlass::merge() to see how this plays
-    // out in the context of constantPoolOop merging.
-    return false;
-  }
-
-  switch (t1) {
-  case JVM_CONSTANT_Class:
-  {
-    klassOop k1 = klass_at(index1, CHECK_false);
-    klassOop k2 = cp2->klass_at(index2, CHECK_false);
-    if (k1 == k2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_ClassIndex:
-  {
-    int recur1 = klass_index_at(index1);
-    int recur2 = cp2->klass_index_at(index2);
-    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-    if (match) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_Double:
-  {
-    jdouble d1 = double_at(index1);
-    jdouble d2 = cp2->double_at(index2);
-    if (d1 == d2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_Fieldref:
-  case JVM_CONSTANT_InterfaceMethodref:
-  case JVM_CONSTANT_Methodref:
-  {
-    int recur1 = uncached_klass_ref_index_at(index1);
-    int recur2 = cp2->uncached_klass_ref_index_at(index2);
-    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-    if (match) {
-      recur1 = uncached_name_and_type_ref_index_at(index1);
-      recur2 = cp2->uncached_name_and_type_ref_index_at(index2);
-      match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-      if (match) {
-        return true;
-      }
-    }
-  } break;
-
-  case JVM_CONSTANT_Float:
-  {
-    jfloat f1 = float_at(index1);
-    jfloat f2 = cp2->float_at(index2);
-    if (f1 == f2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_Integer:
-  {
-    jint i1 = int_at(index1);
-    jint i2 = cp2->int_at(index2);
-    if (i1 == i2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_Long:
-  {
-    jlong l1 = long_at(index1);
-    jlong l2 = cp2->long_at(index2);
-    if (l1 == l2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_NameAndType:
-  {
-    int recur1 = name_ref_index_at(index1);
-    int recur2 = cp2->name_ref_index_at(index2);
-    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-    if (match) {
-      recur1 = signature_ref_index_at(index1);
-      recur2 = cp2->signature_ref_index_at(index2);
-      match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-      if (match) {
-        return true;
-      }
-    }
-  } break;
-
-  case JVM_CONSTANT_String:
-  {
-    oop s1 = string_at(index1, CHECK_false);
-    oop s2 = cp2->string_at(index2, CHECK_false);
-    if (s1 == s2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_StringIndex:
-  {
-    int recur1 = string_index_at(index1);
-    int recur2 = cp2->string_index_at(index2);
-    bool match = compare_entry_to(recur1, cp2, recur2, CHECK_false);
-    if (match) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_UnresolvedClass:
-  {
-    Symbol* k1 = unresolved_klass_at(index1);
-    Symbol* k2 = cp2->unresolved_klass_at(index2);
-    if (k1 == k2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_MethodType:
-  {
-    int k1 = method_type_index_at(index1);
-    int k2 = cp2->method_type_index_at(index2);
-    bool match = compare_entry_to(k1, cp2, k2, CHECK_false);
-    if (match) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_MethodHandle:
-  {
-    int k1 = method_handle_ref_kind_at(index1);
-    int k2 = cp2->method_handle_ref_kind_at(index2);
-    if (k1 == k2) {
-      int i1 = method_handle_index_at(index1);
-      int i2 = cp2->method_handle_index_at(index2);
-      bool match = compare_entry_to(i1, cp2, i2, CHECK_false);
-      if (match) {
-        return true;
-      }
-    }
-  } break;
-
-  case JVM_CONSTANT_InvokeDynamic:
-  {
-    int k1 = invoke_dynamic_bootstrap_method_ref_index_at(index1);
-    int k2 = cp2->invoke_dynamic_bootstrap_method_ref_index_at(index2);
-    bool match = compare_entry_to(k1, cp2, k2, CHECK_false);
-    if (!match)  return false;
-    k1 = invoke_dynamic_name_and_type_ref_index_at(index1);
-    k2 = cp2->invoke_dynamic_name_and_type_ref_index_at(index2);
-    match = compare_entry_to(k1, cp2, k2, CHECK_false);
-    if (!match)  return false;
-    int argc = invoke_dynamic_argument_count_at(index1);
-    if (argc == cp2->invoke_dynamic_argument_count_at(index2)) {
-      for (int j = 0; j < argc; j++) {
-        k1 = invoke_dynamic_argument_index_at(index1, j);
-        k2 = cp2->invoke_dynamic_argument_index_at(index2, j);
-        match = compare_entry_to(k1, cp2, k2, CHECK_false);
-        if (!match)  return false;
-      }
-      return true;           // got through loop; all elements equal
-    }
-  } break;
-
-  case JVM_CONSTANT_UnresolvedString:
-  {
-    Symbol* s1 = unresolved_string_at(index1);
-    Symbol* s2 = cp2->unresolved_string_at(index2);
-    if (s1 == s2) {
-      return true;
-    }
-  } break;
-
-  case JVM_CONSTANT_Utf8:
-  {
-    Symbol* s1 = symbol_at(index1);
-    Symbol* s2 = cp2->symbol_at(index2);
-    if (s1 == s2) {
-      return true;
-    }
-  } break;
-
-  // Invalid is used as the tag for the second constant pool entry
-  // occupied by JVM_CONSTANT_Double or JVM_CONSTANT_Long. It should
-  // not be seen by itself.
-  case JVM_CONSTANT_Invalid: // fall through
-
-  default:
-    ShouldNotReachHere();
-    break;
-  }
-
-  return false;
-} // end compare_entry_to()
-
-
-// Copy this constant pool's entries at start_i to end_i (inclusive)
-// to the constant pool to_cp's entries starting at to_i. A total of
-// (end_i - start_i) + 1 entries are copied.
-void constantPoolOopDesc::copy_cp_to_impl(constantPoolHandle from_cp, int start_i, int end_i,
-       constantPoolHandle to_cp, int to_i, TRAPS) {
-
-  int dest_i = to_i;  // leave original alone for debug purposes
-
-  for (int src_i = start_i; src_i <= end_i; /* see loop bottom */ ) {
-    copy_entry_to(from_cp, src_i, to_cp, dest_i, CHECK);
-
-    switch (from_cp->tag_at(src_i).value()) {
-    case JVM_CONSTANT_Double:
-    case JVM_CONSTANT_Long:
-      // double and long take two constant pool entries
-      src_i += 2;
-      dest_i += 2;
-      break;
-
-    default:
-      // all others take one constant pool entry
-      src_i++;
-      dest_i++;
-      break;
-    }
-  }
-
-  int from_oplen = operand_array_length(from_cp->operands());
-  int old_oplen  = operand_array_length(to_cp->operands());
-  if (from_oplen != 0) {
-    // append my operands to the target's operands array
-    if (old_oplen == 0) {
-      to_cp->set_operands(from_cp->operands());  // reuse; do not merge
-    } else {
-      int old_len  = to_cp->operands()->length();
-      int from_len = from_cp->operands()->length();
-      int old_off  = old_oplen * sizeof(u2);
-      int from_off = from_oplen * sizeof(u2);
-      typeArrayHandle new_operands = oopFactory::new_permanent_shortArray(old_len + from_len, CHECK);
-      int fillp = 0, len = 0;
-      // first part of dest
-      Copy::conjoint_memory_atomic(to_cp->operands()->short_at_addr(0),
-                                   new_operands->short_at_addr(fillp),
-                                   (len = old_off) * sizeof(u2));
-      fillp += len;
-      // first part of src
-      Copy::conjoint_memory_atomic(to_cp->operands()->short_at_addr(0),
-                                   new_operands->short_at_addr(fillp),
-                                   (len = from_off) * sizeof(u2));
-      fillp += len;
-      // second part of dest
-      Copy::conjoint_memory_atomic(to_cp->operands()->short_at_addr(old_off),
-                                   new_operands->short_at_addr(fillp),
-                                   (len = old_len - old_off) * sizeof(u2));
-      fillp += len;
-      // second part of src
-      Copy::conjoint_memory_atomic(to_cp->operands()->short_at_addr(from_off),
-                                   new_operands->short_at_addr(fillp),
-                                   (len = from_len - from_off) * sizeof(u2));
-      fillp += len;
-      assert(fillp == new_operands->length(), "");
-
-      // Adjust indexes in the first part of the copied operands array.
-      for (int j = 0; j < from_oplen; j++) {
-        int offset = operand_offset_at(new_operands(), old_oplen + j);
-        assert(offset == operand_offset_at(from_cp->operands(), j), "correct copy");
-        offset += old_len;  // every new tuple is preceded by old_len extra u2's
-        operand_offset_at_put(new_operands(), old_oplen + j, offset);
-      }
-
-      // replace target operands array with combined array
-      to_cp->set_operands(new_operands());
-    }
-  }
-
-} // end copy_cp_to()
-
-
-// Copy this constant pool's entry at from_i to the constant pool
-// to_cp's entry at to_i.
-void constantPoolOopDesc::copy_entry_to(constantPoolHandle from_cp, int from_i,
-                                        constantPoolHandle to_cp, int to_i,
-                                        TRAPS) {
-
-  int tag = from_cp->tag_at(from_i).value();
-  switch (tag) {
-  case JVM_CONSTANT_Class:
-  {
-    klassOop k = from_cp->klass_at(from_i, CHECK);
-    to_cp->klass_at_put(to_i, k);
-  } break;
-
-  case JVM_CONSTANT_ClassIndex:
-  {
-    jint ki = from_cp->klass_index_at(from_i);
-    to_cp->klass_index_at_put(to_i, ki);
-  } break;
-
-  case JVM_CONSTANT_Double:
-  {
-    jdouble d = from_cp->double_at(from_i);
-    to_cp->double_at_put(to_i, d);
-    // double takes two constant pool entries so init second entry's tag
-    to_cp->tag_at_put(to_i + 1, JVM_CONSTANT_Invalid);
-  } break;
-
-  case JVM_CONSTANT_Fieldref:
-  {
-    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
-    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
-    to_cp->field_at_put(to_i, class_index, name_and_type_index);
-  } break;
-
-  case JVM_CONSTANT_Float:
-  {
-    jfloat f = from_cp->float_at(from_i);
-    to_cp->float_at_put(to_i, f);
-  } break;
-
-  case JVM_CONSTANT_Integer:
-  {
-    jint i = from_cp->int_at(from_i);
-    to_cp->int_at_put(to_i, i);
-  } break;
-
-  case JVM_CONSTANT_InterfaceMethodref:
-  {
-    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
-    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
-    to_cp->interface_method_at_put(to_i, class_index, name_and_type_index);
-  } break;
-
-  case JVM_CONSTANT_Long:
-  {
-    jlong l = from_cp->long_at(from_i);
-    to_cp->long_at_put(to_i, l);
-    // long takes two constant pool entries so init second entry's tag
-    to_cp->tag_at_put(to_i + 1, JVM_CONSTANT_Invalid);
-  } break;
-
-  case JVM_CONSTANT_Methodref:
-  {
-    int class_index = from_cp->uncached_klass_ref_index_at(from_i);
-    int name_and_type_index = from_cp->uncached_name_and_type_ref_index_at(from_i);
-    to_cp->method_at_put(to_i, class_index, name_and_type_index);
-  } break;
-
-  case JVM_CONSTANT_NameAndType:
-  {
-    int name_ref_index = from_cp->name_ref_index_at(from_i);
-    int signature_ref_index = from_cp->signature_ref_index_at(from_i);
-    to_cp->name_and_type_at_put(to_i, name_ref_index, signature_ref_index);
-  } break;
-
-  case JVM_CONSTANT_String:
-  {
-    oop s = from_cp->string_at(from_i, CHECK);
-    to_cp->string_at_put(to_i, s);
-  } break;
-
-  case JVM_CONSTANT_StringIndex:
-  {
-    jint si = from_cp->string_index_at(from_i);
-    to_cp->string_index_at_put(to_i, si);
-  } break;
-
-  case JVM_CONSTANT_UnresolvedClass:
-  {
-    // Can be resolved after checking tag, so check the slot first.
-    CPSlot entry = from_cp->slot_at(from_i);
-    if (entry.is_oop()) {
-      assert(entry.get_oop()->is_klass(), "must be");
-      // Already resolved
-      to_cp->klass_at_put(to_i, (klassOop)entry.get_oop());
-    } else {
-      to_cp->unresolved_klass_at_put(to_i, entry.get_symbol());
-    }
-  } break;
-
-  case JVM_CONSTANT_UnresolvedClassInError:
-  {
-    Symbol* k = from_cp->unresolved_klass_at(from_i);
-    to_cp->unresolved_klass_at_put(to_i, k);
-    to_cp->tag_at_put(to_i, JVM_CONSTANT_UnresolvedClassInError);
-  } break;
-
-
-  case JVM_CONSTANT_UnresolvedString:
-  {
-    // Can be resolved after checking tag, so check the slot first.
-    CPSlot entry = from_cp->slot_at(from_i);
-    if (entry.is_oop()) {
-      // Already resolved (either string or pseudo-string)
-      to_cp->string_at_put(to_i, entry.get_oop());
-    } else {
-      to_cp->unresolved_string_at_put(to_i, entry.get_symbol());
-    }
-  } break;
-
-  case JVM_CONSTANT_Utf8:
-  {
-    Symbol* s = from_cp->symbol_at(from_i);
-    to_cp->symbol_at_put(to_i, s);
-    // This constantPool has the same lifetime as the original, so don't
-    // increase reference counts for the copy.
-  } break;
-
-  case JVM_CONSTANT_MethodType:
-  {
-    jint k = from_cp->method_type_index_at(from_i);
-    to_cp->method_type_index_at_put(to_i, k);
-  } break;
-
-  case JVM_CONSTANT_MethodHandle:
-  {
-    int k1 = from_cp->method_handle_ref_kind_at(from_i);
-    int k2 = from_cp->method_handle_index_at(from_i);
-    to_cp->method_handle_index_at_put(to_i, k1, k2);
-  } break;
-
-  case JVM_CONSTANT_InvokeDynamic:
-  {
-    int k1 = from_cp->invoke_dynamic_bootstrap_specifier_index(from_i);
-    int k2 = from_cp->invoke_dynamic_name_and_type_ref_index_at(from_i);
-    k1 += operand_array_length(to_cp->operands());  // to_cp might already have operands
-    to_cp->invoke_dynamic_at_put(to_i, k1, k2);
-  } break;
-
-  // Invalid is used as the tag for the second constant pool entry
-  // occupied by JVM_CONSTANT_Double or JVM_CONSTANT_Long. It should
-  // not be seen by itself.
-  case JVM_CONSTANT_Invalid: // fall through
-
-  default:
-  {
-    ShouldNotReachHere();
-  } break;
-  }
-} // end copy_entry_to()
-
-
-// Search constant pool search_cp for an entry that matches this
-// constant pool's entry at pattern_i. Returns the index of a
-// matching entry or zero (0) if there is no matching entry.
-int constantPoolOopDesc::find_matching_entry(int pattern_i,
-      constantPoolHandle search_cp, TRAPS) {
-
-  // index zero (0) is not used
-  for (int i = 1; i < search_cp->length(); i++) {
-    bool found = compare_entry_to(pattern_i, search_cp, i, CHECK_0);
-    if (found) {
-      return i;
-    }
-  }
-
-  return 0;  // entry not found; return unused index zero (0)
-} // end find_matching_entry()
-
-
-#ifndef PRODUCT
-
-const char* constantPoolOopDesc::printable_name_at(int which) {
-
-  constantTag tag = tag_at(which);
-
-  if (tag.is_unresolved_string() || tag.is_string()) {
-    return string_at_noresolve(which);
-  } else if (tag.is_klass() || tag.is_unresolved_klass()) {
-    return klass_name_at(which)->as_C_string();
-  } else if (tag.is_symbol()) {
-    return symbol_at(which)->as_C_string();
-  }
-  return "";
-}
-
-#endif // PRODUCT
-
-
-// JVMTI GetConstantPool support
-
-// For temporary use until code is stable.
-#define DBG(code)
-
-static const char* WARN_MSG = "Must not be such entry!";
-
-static void print_cpool_bytes(jint cnt, u1 *bytes) {
-  jint size = 0;
-  u2   idx1, idx2;
-
-  for (jint idx = 1; idx < cnt; idx++) {
-    jint ent_size = 0;
-    u1   tag  = *bytes++;
-    size++;                       // count tag
-
-    printf("const #%03d, tag: %02d ", idx, tag);
-    switch(tag) {
-      case JVM_CONSTANT_Invalid: {
-        printf("Invalid");
-        break;
-      }
-      case JVM_CONSTANT_Unicode: {
-        printf("Unicode      %s", WARN_MSG);
-        break;
-      }
-      case JVM_CONSTANT_Utf8: {
-        u2 len = Bytes::get_Java_u2(bytes);
-        char str[128];
-        if (len > 127) {
-           len = 127;
-        }
-        strncpy(str, (char *) (bytes+2), len);
-        str[len] = '\0';
-        printf("Utf8          \"%s\"", str);
-        ent_size = 2 + len;
-        break;
-      }
-      case JVM_CONSTANT_Integer: {
-        u4 val = Bytes::get_Java_u4(bytes);
-        printf("int          %d", *(int *) &val);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_Float: {
-        u4 val = Bytes::get_Java_u4(bytes);
-        printf("float        %5.3ff", *(float *) &val);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_Long: {
-        u8 val = Bytes::get_Java_u8(bytes);
-        printf("long         "INT64_FORMAT, (int64_t) *(jlong *) &val);
-        ent_size = 8;
-        idx++; // Long takes two cpool slots
-        break;
-      }
-      case JVM_CONSTANT_Double: {
-        u8 val = Bytes::get_Java_u8(bytes);
-        printf("double       %5.3fd", *(jdouble *)&val);
-        ent_size = 8;
-        idx++; // Double takes two cpool slots
-        break;
-      }
-      case JVM_CONSTANT_Class: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        printf("class        #%03d", idx1);
-        ent_size = 2;
-        break;
-      }
-      case JVM_CONSTANT_String: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        printf("String       #%03d", idx1);
-        ent_size = 2;
-        break;
-      }
-      case JVM_CONSTANT_Fieldref: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        idx2 = Bytes::get_Java_u2(bytes+2);
-        printf("Field        #%03d, #%03d", (int) idx1, (int) idx2);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_Methodref: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        idx2 = Bytes::get_Java_u2(bytes+2);
-        printf("Method       #%03d, #%03d", idx1, idx2);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_InterfaceMethodref: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        idx2 = Bytes::get_Java_u2(bytes+2);
-        printf("InterfMethod #%03d, #%03d", idx1, idx2);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_NameAndType: {
-        idx1 = Bytes::get_Java_u2(bytes);
-        idx2 = Bytes::get_Java_u2(bytes+2);
-        printf("NameAndType  #%03d, #%03d", idx1, idx2);
-        ent_size = 4;
-        break;
-      }
-      case JVM_CONSTANT_ClassIndex: {
-        printf("ClassIndex  %s", WARN_MSG);
-        break;
-      }
-      case JVM_CONSTANT_UnresolvedClass: {
-        printf("UnresolvedClass: %s", WARN_MSG);
-        break;
-      }
-      case JVM_CONSTANT_UnresolvedClassInError: {
-        printf("UnresolvedClassInErr: %s", WARN_MSG);
-        break;
-      }
-      case JVM_CONSTANT_StringIndex: {
-        printf("StringIndex: %s", WARN_MSG);
-        break;
-      }
-      case JVM_CONSTANT_UnresolvedString: {
-        printf("UnresolvedString: %s", WARN_MSG);
-        break;
-      }
-    }
-    printf(";\n");
-    bytes += ent_size;
-    size  += ent_size;
-  }
-  printf("Cpool size: %d\n", size);
-  fflush(0);
-  return;
-} /* end print_cpool_bytes */
-
-
-// Returns size of constant pool entry.
-jint constantPoolOopDesc::cpool_entry_size(jint idx) {
-  switch(tag_at(idx).value()) {
-    case JVM_CONSTANT_Invalid:
-    case JVM_CONSTANT_Unicode:
-      return 1;
-
-    case JVM_CONSTANT_Utf8:
-      return 3 + symbol_at(idx)->utf8_length();
-
-    case JVM_CONSTANT_Class:
-    case JVM_CONSTANT_String:
-    case JVM_CONSTANT_ClassIndex:
-    case JVM_CONSTANT_UnresolvedClass:
-    case JVM_CONSTANT_UnresolvedClassInError:
-    case JVM_CONSTANT_StringIndex:
-    case JVM_CONSTANT_UnresolvedString:
-    case JVM_CONSTANT_MethodType:
-      return 3;
-
-    case JVM_CONSTANT_MethodHandle:
-      return 4; //tag, ref_kind, ref_index
-
-    case JVM_CONSTANT_Integer:
-    case JVM_CONSTANT_Float:
-    case JVM_CONSTANT_Fieldref:
-    case JVM_CONSTANT_Methodref:
-    case JVM_CONSTANT_InterfaceMethodref:
-    case JVM_CONSTANT_NameAndType:
-      return 5;
-
-    case JVM_CONSTANT_InvokeDynamic:
-      // u1 tag, u2 bsm, u2 nt
-      return 5;
-
-    case JVM_CONSTANT_Long:
-    case JVM_CONSTANT_Double:
-      return 9;
-  }
-  assert(false, "cpool_entry_size: Invalid constant pool entry tag");
-  return 1;
-} /* end cpool_entry_size */
-
-
-// SymbolHashMap is used to find a constant pool index from a string.
-// This function fills in SymbolHashMaps, one for utf8s and one for
-// class names, returns size of the cpool raw bytes.
-jint constantPoolOopDesc::hash_entries_to(SymbolHashMap *symmap,
-                                          SymbolHashMap *classmap) {
-  jint size = 0;
-
-  for (u2 idx = 1; idx < length(); idx++) {
-    u2 tag = tag_at(idx).value();
-    size += cpool_entry_size(idx);
-
-    switch(tag) {
-      case JVM_CONSTANT_Utf8: {
-        Symbol* sym = symbol_at(idx);
-        symmap->add_entry(sym, idx);
-        DBG(printf("adding symbol entry %s = %d\n", sym->as_utf8(), idx));
-        break;
-      }
-      case JVM_CONSTANT_Class:
-      case JVM_CONSTANT_UnresolvedClass:
-      case JVM_CONSTANT_UnresolvedClassInError: {
-        Symbol* sym = klass_name_at(idx);
-        classmap->add_entry(sym, idx);
-        DBG(printf("adding class entry %s = %d\n", sym->as_utf8(), idx));
-        break;
-      }
-      case JVM_CONSTANT_Long:
-      case JVM_CONSTANT_Double: {
-        idx++; // Both Long and Double take two cpool slots
-        break;
-      }
-    }
-  }
-  return size;
-} /* end hash_utf8_entries_to */
-
-
-// Copy cpool bytes.
-// Returns:
-//    0, in case of OutOfMemoryError
-//   -1, in case of internal error
-//  > 0, count of the raw cpool bytes that have been copied
-int constantPoolOopDesc::copy_cpool_bytes(int cpool_size,
-                                          SymbolHashMap* tbl,
-                                          unsigned char *bytes) {
-  u2   idx1, idx2;
-  jint size  = 0;
-  jint cnt   = length();
-  unsigned char *start_bytes = bytes;
-
-  for (jint idx = 1; idx < cnt; idx++) {
-    u1   tag      = tag_at(idx).value();
-    jint ent_size = cpool_entry_size(idx);
-
-    assert(size + ent_size <= cpool_size, "Size mismatch");
-
-    *bytes = tag;
-    DBG(printf("#%03hd tag=%03hd, ", idx, tag));
-    switch(tag) {
-      case JVM_CONSTANT_Invalid: {
-        DBG(printf("JVM_CONSTANT_Invalid"));
-        break;
-      }
-      case JVM_CONSTANT_Unicode: {
-        assert(false, "Wrong constant pool tag: JVM_CONSTANT_Unicode");
-        DBG(printf("JVM_CONSTANT_Unicode"));
-        break;
-      }
-      case JVM_CONSTANT_Utf8: {
-        Symbol* sym = symbol_at(idx);
-        char*     str = sym->as_utf8();
-        // Warning! It's crashing on x86 with len = sym->utf8_length()
-        int       len = (int) strlen(str);
-        Bytes::put_Java_u2((address) (bytes+1), (u2) len);
-        for (int i = 0; i < len; i++) {
-            bytes[3+i] = (u1) str[i];
-        }
-        DBG(printf("JVM_CONSTANT_Utf8: %s ", str));
-        break;
-      }
-      case JVM_CONSTANT_Integer: {
-        jint val = int_at(idx);
-        Bytes::put_Java_u4((address) (bytes+1), *(u4*)&val);
-        break;
-      }
-      case JVM_CONSTANT_Float: {
-        jfloat val = float_at(idx);
-        Bytes::put_Java_u4((address) (bytes+1), *(u4*)&val);
-        break;
-      }
-      case JVM_CONSTANT_Long: {
-        jlong val = long_at(idx);
-        Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
-        idx++;             // Long takes two cpool slots
-        break;
-      }
-      case JVM_CONSTANT_Double: {
-        jdouble val = double_at(idx);
-        Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
-        idx++;             // Double takes two cpool slots
-        break;
-      }
-      case JVM_CONSTANT_Class:
-      case JVM_CONSTANT_UnresolvedClass:
-      case JVM_CONSTANT_UnresolvedClassInError: {
-        *bytes = JVM_CONSTANT_Class;
-        Symbol* sym = klass_name_at(idx);
-        idx1 = tbl->symbol_to_value(sym);
-        assert(idx1 != 0, "Have not found a hashtable entry");
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(printf("JVM_CONSTANT_Class: idx=#%03hd, %s", idx1, sym->as_utf8()));
-        break;
-      }
-      case JVM_CONSTANT_String: {
-        unsigned int hash;
-        char *str = string_at_noresolve(idx);
-        TempNewSymbol sym = SymbolTable::lookup_only(str, (int) strlen(str), hash);
-        if (sym == NULL) {
-          // sym can be NULL if string refers to incorrectly encoded JVM_CONSTANT_Utf8
-          // this can happen with JVM TI; see CR 6839599 for more details
-          oop string = *(obj_at_addr_raw(idx));
-          assert(java_lang_String::is_instance(string),"Not a String");
-          DBG(printf("Error #%03hd tag=%03hd\n", idx, tag));
-          idx1 = 0;
-          for (int j = 0; j < tbl->table_size() && idx1 == 0; j++) {
-            for (SymbolHashMapEntry* cur = tbl->bucket(j); cur != NULL; cur = cur->next()) {
-              int length;
-              Symbol* s = cur->symbol();
-              jchar* chars = s->as_unicode(length);
-              if (java_lang_String::equals(string, chars, length)) {
-                idx1 = cur->value();
-                DBG(printf("Index found: %d\n",idx1));
-                break;
-              }
-            }
-          }
-        } else {
-          idx1 = tbl->symbol_to_value(sym);
-        }
-        assert(idx1 != 0, "Have not found a hashtable entry");
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(printf("JVM_CONSTANT_String: idx=#%03hd, %s", idx1, str));
-        break;
-      }
-      case JVM_CONSTANT_UnresolvedString: {
-        *bytes = JVM_CONSTANT_String;
-        Symbol* sym = unresolved_string_at(idx);
-        idx1 = tbl->symbol_to_value(sym);
-        assert(idx1 != 0, "Have not found a hashtable entry");
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(char *str = sym->as_utf8());
-        DBG(printf("JVM_CONSTANT_UnresolvedString: idx=#%03hd, %s", idx1, str));
-        break;
-      }
-      case JVM_CONSTANT_Fieldref:
-      case JVM_CONSTANT_Methodref:
-      case JVM_CONSTANT_InterfaceMethodref: {
-        idx1 = uncached_klass_ref_index_at(idx);
-        idx2 = uncached_name_and_type_ref_index_at(idx);
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        Bytes::put_Java_u2((address) (bytes+3), idx2);
-        DBG(printf("JVM_CONSTANT_Methodref: %hd %hd", idx1, idx2));
-        break;
-      }
-      case JVM_CONSTANT_NameAndType: {
-        idx1 = name_ref_index_at(idx);
-        idx2 = signature_ref_index_at(idx);
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        Bytes::put_Java_u2((address) (bytes+3), idx2);
-        DBG(printf("JVM_CONSTANT_NameAndType: %hd %hd", idx1, idx2));
-        break;
-      }
-      case JVM_CONSTANT_ClassIndex: {
-        *bytes = JVM_CONSTANT_Class;
-        idx1 = klass_index_at(idx);
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(printf("JVM_CONSTANT_ClassIndex: %hd", idx1));
-        break;
-      }
-      case JVM_CONSTANT_StringIndex: {
-        *bytes = JVM_CONSTANT_String;
-        idx1 = string_index_at(idx);
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(printf("JVM_CONSTANT_StringIndex: %hd", idx1));
-        break;
-      }
-      case JVM_CONSTANT_MethodHandle: {
-        *bytes = JVM_CONSTANT_MethodHandle;
-        int kind = method_handle_ref_kind_at(idx);
-        idx1 = method_handle_index_at(idx);
-        *(bytes+1) = (unsigned char) kind;
-        Bytes::put_Java_u2((address) (bytes+2), idx1);
-        DBG(printf("JVM_CONSTANT_MethodHandle: %d %hd", kind, idx1));
-        break;
-      }
-      case JVM_CONSTANT_MethodType: {
-        *bytes = JVM_CONSTANT_MethodType;
-        idx1 = method_type_index_at(idx);
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        DBG(printf("JVM_CONSTANT_MethodType: %hd", idx1));
-        break;
-      }
-      case JVM_CONSTANT_InvokeDynamic: {
-        *bytes = tag;
-        idx1 = extract_low_short_from_int(*int_at_addr(idx));
-        idx2 = extract_high_short_from_int(*int_at_addr(idx));
-        assert(idx2 == invoke_dynamic_name_and_type_ref_index_at(idx), "correct half of u4");
-        Bytes::put_Java_u2((address) (bytes+1), idx1);
-        Bytes::put_Java_u2((address) (bytes+3), idx2);
-        DBG(printf("JVM_CONSTANT_InvokeDynamic: %hd %hd", idx1, idx2));
-        break;
-      }
-    }
-    DBG(printf("\n"));
-    bytes += ent_size;
-    size  += ent_size;
-  }
-  assert(size == cpool_size, "Size mismatch");
-
-  // Keep temorarily for debugging until it's stable.
-  DBG(print_cpool_bytes(cnt, start_bytes));
-  return (int)(bytes - start_bytes);
-} /* end copy_cpool_bytes */
-
-
-void SymbolHashMap::add_entry(Symbol* sym, u2 value) {
-  char *str = sym->as_utf8();
-  unsigned int hash = compute_hash(str, sym->utf8_length());
-  unsigned int index = hash % table_size();
-
-  // check if already in map
-  // we prefer the first entry since it is more likely to be what was used in
-  // the class file
-  for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) {
-    assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
-    if (en->hash() == hash && en->symbol() == sym) {
-        return;  // already there
-    }
-  }
-
-  SymbolHashMapEntry* entry = new SymbolHashMapEntry(hash, sym, value);
-  entry->set_next(bucket(index));
-  _buckets[index].set_entry(entry);
-  assert(entry->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
-}
-
-SymbolHashMapEntry* SymbolHashMap::find_entry(Symbol* sym) {
-  assert(sym != NULL, "SymbolHashMap::find_entry - symbol is NULL");
-  char *str = sym->as_utf8();
-  int   len = sym->utf8_length();
-  unsigned int hash = SymbolHashMap::compute_hash(str, len);
-  unsigned int index = hash % table_size();
-  for (SymbolHashMapEntry *en = bucket(index); en != NULL; en = en->next()) {
-    assert(en->symbol() != NULL, "SymbolHashMapEntry symbol is NULL");
-    if (en->hash() == hash && en->symbol() == sym) {
-      return en;
-    }
-  }
-  return NULL;
-}
--- a/src/share/vm/oops/constantPoolOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,875 +0,0 @@
-/*
- * Copyright (c) 1997, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
-#define SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
-
-#include "oops/arrayOop.hpp"
-#include "oops/cpCacheOop.hpp"
-#include "oops/symbol.hpp"
-#include "oops/typeArrayOop.hpp"
-#include "utilities/constantTag.hpp"
-#ifdef TARGET_ARCH_x86
-# include "bytes_x86.hpp"
-#endif
-#ifdef TARGET_ARCH_sparc
-# include "bytes_sparc.hpp"
-#endif
-#ifdef TARGET_ARCH_zero
-# include "bytes_zero.hpp"
-#endif
-#ifdef TARGET_ARCH_arm
-# include "bytes_arm.hpp"
-#endif
-#ifdef TARGET_ARCH_ppc
-# include "bytes_ppc.hpp"
-#endif
-
-// A constantPool is an array containing class constants as described in the
-// class file.
-//
-// Most of the constant pool entries are written during class parsing, which
-// is safe.  For klass and string types, the constant pool entry is
-// modified when the entry is resolved.  If a klass or string constant pool
-// entry is read without a lock, only the resolved state guarantees that
-// the entry in the constant pool is a klass or String object and
-// not a Symbol*.
-
-class SymbolHashMap;
-
-class CPSlot VALUE_OBJ_CLASS_SPEC {
-  intptr_t _ptr;
- public:
-  CPSlot(intptr_t ptr): _ptr(ptr) {}
-  CPSlot(void* ptr): _ptr((intptr_t)ptr) {}
-  CPSlot(oop ptr): _ptr((intptr_t)ptr) {}
-  CPSlot(Symbol* ptr): _ptr((intptr_t)ptr | 1) {}
-
-  intptr_t value()   { return _ptr; }
-  bool is_oop()      { return (_ptr & 1) == 0; }
-  bool is_metadata() { return (_ptr & 1) == 1; }
-
-  oop get_oop() {
-    assert(is_oop(), "bad call");
-    return oop(_ptr);
-  }
-  Symbol* get_symbol() {
-    assert(is_metadata(), "bad call");
-    return (Symbol*)(_ptr & ~1);
-  }
-};
-
-class constantPoolOopDesc : public oopDesc {
-  friend class VMStructs;
-  friend class BytecodeInterpreter;  // Directly extracts an oop in the pool for fast instanceof/checkcast
- private:
-  typeArrayOop         _tags; // the tag array describing the constant pool's contents
-  constantPoolCacheOop _cache;         // the cache holding interpreter runtime information
-  klassOop             _pool_holder;   // the corresponding class
-  typeArrayOop         _operands;      // for variable-sized (InvokeDynamic) nodes, usually empty
-  int                  _flags;         // a few header bits to describe contents for GC
-  int                  _length; // number of elements in the array
-  volatile bool        _is_conc_safe; // if true, safe for concurrent
-                                      // GC processing
-  // only set to non-zero if constant pool is merged by RedefineClasses
-  int                  _orig_length;
-
-  void set_tags(typeArrayOop tags)             { oop_store_without_check((oop*)&_tags, tags); }
-  void tag_at_put(int which, jbyte t)          { tags()->byte_at_put(which, t); }
-  void release_tag_at_put(int which, jbyte t)  { tags()->release_byte_at_put(which, t); }
-
-  void set_operands(typeArrayOop operands)     { oop_store_without_check((oop*)&_operands, operands); }
-
-  enum FlagBit {
-    FB_has_invokedynamic = 1,
-    FB_has_pseudo_string = 2,
-    FB_has_preresolution = 3
-  };
-
-  int flags() const                         { return _flags; }
-  void set_flags(int f)                     { _flags = f; }
-  bool flag_at(FlagBit fb) const            { return (_flags & (1 << (int)fb)) != 0; }
-  void set_flag_at(FlagBit fb);
-  // no clear_flag_at function; they only increase
-
- private:
-  intptr_t* base() const { return (intptr_t*) (((char*) this) + sizeof(constantPoolOopDesc)); }
-  oop* tags_addr()       { return (oop*)&_tags; }
-  oop* cache_addr()      { return (oop*)&_cache; }
-  oop* operands_addr()   { return (oop*)&_operands; }
-
-  CPSlot slot_at(int which) {
-    assert(is_within_bounds(which), "index out of bounds");
-    // There's a transitional value of zero when converting from
-    // Symbol->0->Klass for G1 when resolving classes and strings.
-    // wait for the value to be non-zero (this is temporary)
-    volatile intptr_t adr = (intptr_t)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which));
-    if (adr == 0 && which != 0) {
-      constantTag t = tag_at(which);
-      if (t.is_unresolved_klass() || t.is_klass() ||
-          t.is_unresolved_string() || t.is_string()) {
-        while ((adr = (intptr_t)OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))) == 0);
-      }
-    }
-    return CPSlot(adr);
-  }
-
-  void slot_at_put(int which, CPSlot s) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    *(intptr_t*)&base()[which] = s.value();
-  }
-  oop* obj_at_addr_raw(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (oop*) &base()[which];
-  }
-
-  void obj_at_put_without_check(int which, oop o) {
-    assert(is_within_bounds(which), "index out of bounds");
-    oop_store_without_check((volatile oop *)obj_at_addr_raw(which), o);
-  }
-
-  void obj_at_put(int which, oop o) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    oop_store((volatile oop*)obj_at_addr_raw(which), o);
-  }
-
-  jint* int_at_addr(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (jint*) &base()[which];
-  }
-
-  jlong* long_at_addr(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (jlong*) &base()[which];
-  }
-
-  jfloat* float_at_addr(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (jfloat*) &base()[which];
-  }
-
-  jdouble* double_at_addr(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (jdouble*) &base()[which];
-  }
-
- public:
-  typeArrayOop tags() const                 { return _tags; }
-  typeArrayOop operands() const             { return _operands; }
-
-  bool has_pseudo_string() const            { return flag_at(FB_has_pseudo_string); }
-  bool has_invokedynamic() const            { return flag_at(FB_has_invokedynamic); }
-  bool has_preresolution() const            { return flag_at(FB_has_preresolution); }
-  void set_pseudo_string()                  {    set_flag_at(FB_has_pseudo_string); }
-  void set_invokedynamic()                  {    set_flag_at(FB_has_invokedynamic); }
-  void set_preresolution()                  {    set_flag_at(FB_has_preresolution); }
-
-  // Klass holding pool
-  klassOop pool_holder() const              { return _pool_holder; }
-  void set_pool_holder(klassOop k)          { oop_store_without_check((oop*)&_pool_holder, (oop) k); }
-  oop* pool_holder_addr()                   { return (oop*)&_pool_holder; }
-
-  // Interpreter runtime support
-  constantPoolCacheOop cache() const        { return _cache; }
-  void set_cache(constantPoolCacheOop cache){ oop_store((oop*)&_cache, cache); }
-
-  // Assembly code support
-  static int tags_offset_in_bytes()         { return offset_of(constantPoolOopDesc, _tags); }
-  static int cache_offset_in_bytes()        { return offset_of(constantPoolOopDesc, _cache); }
-  static int operands_offset_in_bytes()     { return offset_of(constantPoolOopDesc, _operands); }
-  static int pool_holder_offset_in_bytes()  { return offset_of(constantPoolOopDesc, _pool_holder); }
-
-  // Storing constants
-
-  void klass_at_put(int which, klassOop k) {
-    // Overwrite the old index with a GC friendly value so
-    // that if G1 looks during the transition during oop_store it won't
-    // assert the symbol is not an oop.
-    *obj_at_addr_raw(which) = NULL;
-    assert(k != NULL, "resolved class shouldn't be null");
-    obj_at_put_without_check(which, k);
-    // The interpreter assumes when the tag is stored, the klass is resolved
-    // and the klassOop is a klass rather than a Symbol*, so we need
-    // hardware store ordering here.
-    release_tag_at_put(which, JVM_CONSTANT_Class);
-    if (UseConcMarkSweepGC) {
-      // In case the earlier card-mark was consumed by a concurrent
-      // marking thread before the tag was updated, redirty the card.
-      obj_at_put_without_check(which, k);
-    }
-  }
-
-  // For temporary use while constructing constant pool
-  void klass_index_at_put(int which, int name_index) {
-    tag_at_put(which, JVM_CONSTANT_ClassIndex);
-    *int_at_addr(which) = name_index;
-  }
-
-  // Temporary until actual use
-  void unresolved_klass_at_put(int which, Symbol* s) {
-    release_tag_at_put(which, JVM_CONSTANT_UnresolvedClass);
-    slot_at_put(which, s);
-  }
-
-  void method_handle_index_at_put(int which, int ref_kind, int ref_index) {
-    tag_at_put(which, JVM_CONSTANT_MethodHandle);
-    *int_at_addr(which) = ((jint) ref_index<<16) | ref_kind;
-  }
-
-  void method_type_index_at_put(int which, int ref_index) {
-    tag_at_put(which, JVM_CONSTANT_MethodType);
-    *int_at_addr(which) = ref_index;
-  }
-
-  void invoke_dynamic_at_put(int which, int bootstrap_specifier_index, int name_and_type_index) {
-    tag_at_put(which, JVM_CONSTANT_InvokeDynamic);
-    *int_at_addr(which) = ((jint) name_and_type_index<<16) | bootstrap_specifier_index;
-  }
-
-  // Temporary until actual use
-  void unresolved_string_at_put(int which, Symbol* s) {
-    release_tag_at_put(which, JVM_CONSTANT_UnresolvedString);
-    slot_at_put(which, s);
-  }
-
-  void int_at_put(int which, jint i) {
-    tag_at_put(which, JVM_CONSTANT_Integer);
-    *int_at_addr(which) = i;
-  }
-
-  void long_at_put(int which, jlong l) {
-    tag_at_put(which, JVM_CONSTANT_Long);
-    // *long_at_addr(which) = l;
-    Bytes::put_native_u8((address)long_at_addr(which), *((u8*) &l));
-  }
-
-  void float_at_put(int which, jfloat f) {
-    tag_at_put(which, JVM_CONSTANT_Float);
-    *float_at_addr(which) = f;
-  }
-
-  void double_at_put(int which, jdouble d) {
-    tag_at_put(which, JVM_CONSTANT_Double);
-    // *double_at_addr(which) = d;
-    // u8 temp = *(u8*) &d;
-    Bytes::put_native_u8((address) double_at_addr(which), *((u8*) &d));
-  }
-
-  Symbol** symbol_at_addr(int which) const {
-    assert(is_within_bounds(which), "index out of bounds");
-    return (Symbol**) &base()[which];
-  }
-
-  void symbol_at_put(int which, Symbol* s) {
-    assert(s->refcount() != 0, "should have nonzero refcount");
-    tag_at_put(which, JVM_CONSTANT_Utf8);
-    slot_at_put(which, s);
-  }
-
-  void string_at_put(int which, oop str) {
-    // Overwrite the old index with a GC friendly value so
-    // that if G1 looks during the transition during oop_store it won't
-    // assert the symbol is not an oop.
-    *obj_at_addr_raw(which) = NULL;
-    assert(str != NULL, "resolved string shouldn't be null");
-    obj_at_put(which, str);
-    release_tag_at_put(which, JVM_CONSTANT_String);
-    if (UseConcMarkSweepGC) {
-      // In case the earlier card-mark was consumed by a concurrent
-      // marking thread before the tag was updated, redirty the card.
-      obj_at_put_without_check(which, str);
-    }
-  }
-
-  void object_at_put(int which, oop str) {
-    obj_at_put(which, str);
-    release_tag_at_put(which, JVM_CONSTANT_Object);
-    if (UseConcMarkSweepGC) {
-      // In case the earlier card-mark was consumed by a concurrent
-      // marking thread before the tag was updated, redirty the card.
-      obj_at_put_without_check(which, str);
-    }
-  }
-
-  // For temporary use while constructing constant pool
-  void string_index_at_put(int which, int string_index) {
-    tag_at_put(which, JVM_CONSTANT_StringIndex);
-    *int_at_addr(which) = string_index;
-  }
-
-  void field_at_put(int which, int class_index, int name_and_type_index) {
-    tag_at_put(which, JVM_CONSTANT_Fieldref);
-    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;
-  }
-
-  void method_at_put(int which, int class_index, int name_and_type_index) {
-    tag_at_put(which, JVM_CONSTANT_Methodref);
-    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;
-  }
-
-  void interface_method_at_put(int which, int class_index, int name_and_type_index) {
-    tag_at_put(which, JVM_CONSTANT_InterfaceMethodref);
-    *int_at_addr(which) = ((jint) name_and_type_index<<16) | class_index;  // Not so nice
-  }
-
-  void name_and_type_at_put(int which, int name_index, int signature_index) {
-    tag_at_put(which, JVM_CONSTANT_NameAndType);
-    *int_at_addr(which) = ((jint) signature_index<<16) | name_index;  // Not so nice
-  }
-
-  // Tag query
-
-  constantTag tag_at(int which) const { return (constantTag)tags()->byte_at_acquire(which); }
-
-  // Whether the entry is a pointer that must be GC'd.
-  bool is_pointer_entry(int which) {
-    constantTag tag = tag_at(which);
-    return tag.is_klass() ||
-      tag.is_string() ||
-      tag.is_object();
-  }
-
-  // Whether the entry points to an object for ldc (resolved or not)
-  bool is_object_entry(int which) {
-    constantTag tag = tag_at(which);
-    return is_pointer_entry(which) ||
-      tag.is_unresolved_klass() ||
-      tag.is_unresolved_string() ||
-      tag.is_symbol();
-  }
-
-  // Fetching constants
-
-  klassOop klass_at(int which, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return klass_at_impl(h_this, which, CHECK_NULL);
-  }
-
-  Symbol* klass_name_at(int which);  // Returns the name, w/o resolving.
-
-  klassOop resolved_klass_at(int which) {  // Used by Compiler
-    guarantee(tag_at(which).is_klass(), "Corrupted constant pool");
-    // Must do an acquire here in case another thread resolved the klass
-    // behind our back, lest we later load stale values thru the oop.
-    return klassOop(CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_oop());
-  }
-
-  // This method should only be used with a cpool lock or during parsing or gc
-  Symbol* unresolved_klass_at(int which) {     // Temporary until actual use
-    Symbol* s = CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_symbol();
-    // check that the klass is still unresolved.
-    assert(tag_at(which).is_unresolved_klass(), "Corrupted constant pool");
-    return s;
-  }
-
-  // RedefineClasses() API support:
-  Symbol* klass_at_noresolve(int which) { return klass_name_at(which); }
-
-  jint int_at(int which) {
-    assert(tag_at(which).is_int(), "Corrupted constant pool");
-    return *int_at_addr(which);
-  }
-
-  jlong long_at(int which) {
-    assert(tag_at(which).is_long(), "Corrupted constant pool");
-    // return *long_at_addr(which);
-    u8 tmp = Bytes::get_native_u8((address)&base()[which]);
-    return *((jlong*)&tmp);
-  }
-
-  jfloat float_at(int which) {
-    assert(tag_at(which).is_float(), "Corrupted constant pool");
-    return *float_at_addr(which);
-  }
-
-  jdouble double_at(int which) {
-    assert(tag_at(which).is_double(), "Corrupted constant pool");
-    u8 tmp = Bytes::get_native_u8((address)&base()[which]);
-    return *((jdouble*)&tmp);
-  }
-
-  Symbol* symbol_at(int which) {
-    assert(tag_at(which).is_utf8(), "Corrupted constant pool");
-    return slot_at(which).get_symbol();
-  }
-
-  oop string_at(int which, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return string_at_impl(h_this, which, CHECK_NULL);
-  }
-
-  oop object_at(int which) {
-    assert(tag_at(which).is_object(), "Corrupted constant pool");
-    return slot_at(which).get_oop();
-  }
-
-  // A "pseudo-string" is an non-string oop that has found is way into
-  // a String entry.
-  // Under EnableInvokeDynamic this can happen if the user patches a live
-  // object into a CONSTANT_String entry of an anonymous class.
-  // Method oops internally created for method handles may also
-  // use pseudo-strings to link themselves to related metaobjects.
-
-  bool is_pseudo_string_at(int which);
-
-  oop pseudo_string_at(int which) {
-    assert(tag_at(which).is_string(), "Corrupted constant pool");
-    return slot_at(which).get_oop();
-  }
-
-  void pseudo_string_at_put(int which, oop x) {
-    assert(EnableInvokeDynamic, "");
-    set_pseudo_string();        // mark header
-    assert(tag_at(which).is_string() || tag_at(which).is_unresolved_string(), "Corrupted constant pool");
-    string_at_put(which, x);    // this works just fine
-  }
-
-  // only called when we are sure a string entry is already resolved (via an
-  // earlier string_at call.
-  oop resolved_string_at(int which) {
-    assert(tag_at(which).is_string(), "Corrupted constant pool");
-    // Must do an acquire here in case another thread resolved the klass
-    // behind our back, lest we later load stale values thru the oop.
-    return CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_oop();
-  }
-
-  // This method should only be used with a cpool lock or during parsing or gc
-  Symbol* unresolved_string_at(int which) {    // Temporary until actual use
-    Symbol* s = CPSlot(OrderAccess::load_ptr_acquire(obj_at_addr_raw(which))).get_symbol();
-    // check that the string is still unresolved.
-    assert(tag_at(which).is_unresolved_string(), "Corrupted constant pool");
-    return s;
-  }
-
-  // Returns an UTF8 for a CONSTANT_String entry at a given index.
-  // UTF8 char* representation was chosen to avoid conversion of
-  // java_lang_Strings at resolved entries into Symbol*s
-  // or vice versa.
-  // Caller is responsible for checking for pseudo-strings.
-  char* string_at_noresolve(int which);
-
-  jint name_and_type_at(int which) {
-    assert(tag_at(which).is_name_and_type(), "Corrupted constant pool");
-    return *int_at_addr(which);
-  }
-
-  int method_handle_ref_kind_at(int which) {
-    assert(tag_at(which).is_method_handle(), "Corrupted constant pool");
-    return extract_low_short_from_int(*int_at_addr(which));  // mask out unwanted ref_index bits
-  }
-  int method_handle_index_at(int which) {
-    assert(tag_at(which).is_method_handle(), "Corrupted constant pool");
-    return extract_high_short_from_int(*int_at_addr(which));  // shift out unwanted ref_kind bits
-  }
-  int method_type_index_at(int which) {
-    assert(tag_at(which).is_method_type(), "Corrupted constant pool");
-    return *int_at_addr(which);
-  }
-  // Derived queries:
-  Symbol* method_handle_name_ref_at(int which) {
-    int member = method_handle_index_at(which);
-    return impl_name_ref_at(member, true);
-  }
-  Symbol* method_handle_signature_ref_at(int which) {
-    int member = method_handle_index_at(which);
-    return impl_signature_ref_at(member, true);
-  }
-  int method_handle_klass_index_at(int which) {
-    int member = method_handle_index_at(which);
-    return impl_klass_ref_index_at(member, true);
-  }
-  Symbol* method_type_signature_at(int which) {
-    int sym = method_type_index_at(which);
-    return symbol_at(sym);
-  }
-
-  int invoke_dynamic_name_and_type_ref_index_at(int which) {
-    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
-    return extract_high_short_from_int(*int_at_addr(which));
-  }
-  int invoke_dynamic_bootstrap_specifier_index(int which) {
-    assert(tag_at(which).value() == JVM_CONSTANT_InvokeDynamic, "Corrupted constant pool");
-    return extract_low_short_from_int(*int_at_addr(which));
-  }
-  int invoke_dynamic_operand_base(int which) {
-    int bootstrap_specifier_index = invoke_dynamic_bootstrap_specifier_index(which);
-    return operand_offset_at(operands(), bootstrap_specifier_index);
-  }
-  // The first part of the operands array consists of an index into the second part.
-  // Extract a 32-bit index value from the first part.
-  static int operand_offset_at(typeArrayOop operands, int bootstrap_specifier_index) {
-    int n = (bootstrap_specifier_index * 2);
-    assert(n >= 0 && n+2 <= operands->length(), "oob");
-    // The first 32-bit index points to the beginning of the second part
-    // of the operands array.  Make sure this index is in the first part.
-    DEBUG_ONLY(int second_part = build_int_from_shorts(operands->short_at(0),
-                                                       operands->short_at(1)));
-    assert(second_part == 0 || n+2 <= second_part, "oob (2)");
-    int offset = build_int_from_shorts(operands->short_at(n+0),
-                                       operands->short_at(n+1));
-    // The offset itself must point into the second part of the array.
-    assert(offset == 0 || offset >= second_part && offset <= operands->length(), "oob (3)");
-    return offset;
-  }
-  static void operand_offset_at_put(typeArrayOop operands, int bootstrap_specifier_index, int offset) {
-    int n = bootstrap_specifier_index * 2;
-    assert(n >= 0 && n+2 <= operands->length(), "oob");
-    operands->short_at_put(n+0, extract_low_short_from_int(offset));
-    operands->short_at_put(n+1, extract_high_short_from_int(offset));
-  }
-  static int operand_array_length(typeArrayOop operands) {
-    if (operands == NULL || operands->length() == 0)  return 0;
-    int second_part = operand_offset_at(operands, 0);
-    return (second_part / 2);
-  }
-
-#ifdef ASSERT
-  // operand tuples fit together exactly, end to end
-  static int operand_limit_at(typeArrayOop operands, int bootstrap_specifier_index) {
-    int nextidx = bootstrap_specifier_index + 1;
-    if (nextidx == operand_array_length(operands))
-      return operands->length();
-    else
-      return operand_offset_at(operands, nextidx);
-  }
-  int invoke_dynamic_operand_limit(int which) {
-    int bootstrap_specifier_index = invoke_dynamic_bootstrap_specifier_index(which);
-    return operand_limit_at(operands(), bootstrap_specifier_index);
-  }
-#endif //ASSERT
-
-  // layout of InvokeDynamic bootstrap method specifier (in second part of operands array):
-  enum {
-         _indy_bsm_offset  = 0,  // CONSTANT_MethodHandle bsm
-         _indy_argc_offset = 1,  // u2 argc
-         _indy_argv_offset = 2   // u2 argv[argc]
-  };
-  int invoke_dynamic_bootstrap_method_ref_index_at(int which) {
-    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
-    int op_base = invoke_dynamic_operand_base(which);
-    return operands()->short_at(op_base + _indy_bsm_offset);
-  }
-  int invoke_dynamic_argument_count_at(int which) {
-    assert(tag_at(which).is_invoke_dynamic(), "Corrupted constant pool");
-    int op_base = invoke_dynamic_operand_base(which);
-    int argc = operands()->short_at(op_base + _indy_argc_offset);
-    DEBUG_ONLY(int end_offset = op_base + _indy_argv_offset + argc;
-               int next_offset = invoke_dynamic_operand_limit(which));
-    assert(end_offset == next_offset, "matched ending");
-    return argc;
-  }
-  int invoke_dynamic_argument_index_at(int which, int j) {
-    int op_base = invoke_dynamic_operand_base(which);
-    DEBUG_ONLY(int argc = operands()->short_at(op_base + _indy_argc_offset));
-    assert((uint)j < (uint)argc, "oob");
-    return operands()->short_at(op_base + _indy_argv_offset + j);
-  }
-
-  // The following methods (name/signature/klass_ref_at, klass_ref_at_noresolve,
-  // name_and_type_ref_index_at) all expect to be passed indices obtained
-  // directly from the bytecode.
-  // If the indices are meant to refer to fields or methods, they are
-  // actually rewritten constant pool cache indices.
-  // The routine remap_instruction_operand_from_cache manages the adjustment
-  // of these values back to constant pool indices.
-
-  // There are also "uncached" versions which do not adjust the operand index; see below.
-
-  // FIXME: Consider renaming these with a prefix "cached_" to make the distinction clear.
-  // In a few cases (the verifier) there are uses before a cpcache has been built,
-  // which are handled by a dynamic check in remap_instruction_operand_from_cache.
-  // FIXME: Remove the dynamic check, and adjust all callers to specify the correct mode.
-
-  // Lookup for entries consisting of (klass_index, name_and_type index)
-  klassOop klass_ref_at(int which, TRAPS);
-  Symbol* klass_ref_at_noresolve(int which);
-  Symbol* name_ref_at(int which)                { return impl_name_ref_at(which, false); }
-  Symbol* signature_ref_at(int which)           { return impl_signature_ref_at(which, false); }
-
-  int klass_ref_index_at(int which)               { return impl_klass_ref_index_at(which, false); }
-  int name_and_type_ref_index_at(int which)       { return impl_name_and_type_ref_index_at(which, false); }
-
-  // Lookup for entries consisting of (name_index, signature_index)
-  int name_ref_index_at(int which_nt);            // ==  low-order jshort of name_and_type_at(which_nt)
-  int signature_ref_index_at(int which_nt);       // == high-order jshort of name_and_type_at(which_nt)
-
-  BasicType basic_type_for_signature_at(int which);
-
-  // Resolve string constants (to prevent allocation during compilation)
-  void resolve_string_constants(TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    resolve_string_constants_impl(h_this, CHECK);
-  }
-
- private:
-  enum { _no_index_sentinel = -1, _possible_index_sentinel = -2 };
- public:
-
-  // Resolve late bound constants.
-  oop resolve_constant_at(int index, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return resolve_constant_at_impl(h_this, index, _no_index_sentinel, THREAD);
-  }
-
-  oop resolve_cached_constant_at(int cache_index, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return resolve_constant_at_impl(h_this, _no_index_sentinel, cache_index, THREAD);
-  }
-
-  oop resolve_possibly_cached_constant_at(int pool_index, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return resolve_constant_at_impl(h_this, pool_index, _possible_index_sentinel, THREAD);
-  }
-
-  oop resolve_bootstrap_specifier_at(int index, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    return resolve_bootstrap_specifier_at_impl(h_this, index, THREAD);
-  }
-
-  // Klass name matches name at offset
-  bool klass_name_at_matches(instanceKlassHandle k, int which);
-
-  // Sizing
-  int length() const                   { return _length; }
-  void set_length(int length)          { _length = length; }
-
-  // Tells whether index is within bounds.
-  bool is_within_bounds(int index) const {
-    return 0 <= index && index < length();
-  }
-
-  static int header_size()             { return sizeof(constantPoolOopDesc)/HeapWordSize; }
-  static int object_size(int length)   { return align_object_size(header_size() + length); }
-  int object_size()                    { return object_size(length()); }
-
-  bool is_conc_safe()                  { return _is_conc_safe; }
-  void set_is_conc_safe(bool v)        { _is_conc_safe = v; }
-
-  friend class constantPoolKlass;
-  friend class ClassFileParser;
-  friend class SystemDictionary;
-
-  // Used by compiler to prevent classloading.
-  static methodOop       method_at_if_loaded      (constantPoolHandle this_oop, int which);
-  static bool      has_appendix_at_if_loaded      (constantPoolHandle this_oop, int which);
-  static oop           appendix_at_if_loaded      (constantPoolHandle this_oop, int which);
-  static klassOop         klass_at_if_loaded      (constantPoolHandle this_oop, int which);
-  static klassOop     klass_ref_at_if_loaded      (constantPoolHandle this_oop, int which);
-  // Same as above - but does LinkResolving.
-  static klassOop     klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS);
-
-  // Routines currently used for annotations (only called by jvm.cpp) but which might be used in the
-  // future by other Java code. These take constant pool indices rather than
-  // constant pool cache indices as do the peer methods above.
-  Symbol* uncached_klass_ref_at_noresolve(int which);
-  Symbol* uncached_name_ref_at(int which)                 { return impl_name_ref_at(which, true); }
-  Symbol* uncached_signature_ref_at(int which)            { return impl_signature_ref_at(which, true); }
-  int       uncached_klass_ref_index_at(int which)          { return impl_klass_ref_index_at(which, true); }
-  int       uncached_name_and_type_ref_index_at(int which)  { return impl_name_and_type_ref_index_at(which, true); }
-
-  // Sharing
-  int pre_resolve_shared_klasses(TRAPS);
-  void shared_symbols_iterate(SymbolClosure* closure0);
-  void shared_tags_iterate(OopClosure* closure0);
-  void shared_strings_iterate(OopClosure* closure0);
-
-  // Debugging
-  const char* printable_name_at(int which) PRODUCT_RETURN0;
-
-#ifdef ASSERT
-  enum { CPCACHE_INDEX_TAG = 0x10000 };  // helps keep CP cache indices distinct from CP indices
-#else
-  enum { CPCACHE_INDEX_TAG = 0 };        // in product mode, this zero value is a no-op
-#endif //ASSERT
-
-  static int get_cpcache_index(int index) { return index - CPCACHE_INDEX_TAG; }
-
- private:
-
-  Symbol* impl_name_ref_at(int which, bool uncached);
-  Symbol* impl_signature_ref_at(int which, bool uncached);
-  int       impl_klass_ref_index_at(int which, bool uncached);
-  int       impl_name_and_type_ref_index_at(int which, bool uncached);
-
-  int remap_instruction_operand_from_cache(int operand);  // operand must be biased by CPCACHE_INDEX_TAG
-
-  // Used while constructing constant pool (only by ClassFileParser)
-  jint klass_index_at(int which) {
-    assert(tag_at(which).is_klass_index(), "Corrupted constant pool");
-    return *int_at_addr(which);
-  }
-
-  jint string_index_at(int which) {
-    assert(tag_at(which).is_string_index(), "Corrupted constant pool");
-    return *int_at_addr(which);
-  }
-
-  // Performs the LinkResolver checks
-  static void verify_constant_pool_resolve(constantPoolHandle this_oop, KlassHandle klass, TRAPS);
-
-  // Implementation of methods that needs an exposed 'this' pointer, in order to
-  // handle GC while executing the method
-  static klassOop klass_at_impl(constantPoolHandle this_oop, int which, TRAPS);
-  static oop string_at_impl(constantPoolHandle this_oop, int which, TRAPS);
-
-  // Resolve string constants (to prevent allocation during compilation)
-  static void resolve_string_constants_impl(constantPoolHandle this_oop, TRAPS);
-
-  static oop resolve_constant_at_impl(constantPoolHandle this_oop, int index, int cache_index, TRAPS);
-  static oop resolve_bootstrap_specifier_at_impl(constantPoolHandle this_oop, int index, TRAPS);
-
- public:
-  // Merging constantPoolOop support:
-  bool compare_entry_to(int index1, constantPoolHandle cp2, int index2, TRAPS);
-  void copy_cp_to(int start_i, int end_i, constantPoolHandle to_cp, int to_i, TRAPS) {
-    constantPoolHandle h_this(THREAD, this);
-    copy_cp_to_impl(h_this, start_i, end_i, to_cp, to_i, THREAD);
-  }
-  static void copy_cp_to_impl(constantPoolHandle from_cp, int start_i, int end_i, constantPoolHandle to_cp, int to_i, TRAPS);
-  static void copy_entry_to(constantPoolHandle from_cp, int from_i, constantPoolHandle to_cp, int to_i, TRAPS);
-  int  find_matching_entry(int pattern_i, constantPoolHandle search_cp, TRAPS);
-  int  orig_length() const                { return _orig_length; }
-  void set_orig_length(int orig_length)   { _orig_length = orig_length; }
-
-  // Decrease ref counts of symbols that are in the constant pool
-  // when the holder class is unloaded
-  void unreference_symbols();
-
-  // JVMTI accesss - GetConstantPool, RetransformClasses, ...
-  friend class JvmtiConstantPoolReconstituter;
-
- private:
-  jint cpool_entry_size(jint idx);
-  jint hash_entries_to(SymbolHashMap *symmap, SymbolHashMap *classmap);
-
-  // Copy cpool bytes into byte array.
-  // Returns:
-  //  int > 0, count of the raw cpool bytes that have been copied
-  //        0, OutOfMemory error
-  //       -1, Internal error
-  int  copy_cpool_bytes(int cpool_size,
-                        SymbolHashMap* tbl,
-                        unsigned char *bytes);
-};
-
-class SymbolHashMapEntry : public CHeapObj<mtSymbol> {
- private:
-  unsigned int        _hash;   // 32-bit hash for item
-  SymbolHashMapEntry* _next;   // Next element in the linked list for this bucket
-  Symbol*             _symbol; // 1-st part of the mapping: symbol => value
-  u2                  _value;  // 2-nd part of the mapping: symbol => value
-
- public:
-  unsigned   int hash() const             { return _hash;   }
-  void       set_hash(unsigned int hash)  { _hash = hash;   }
-
-  SymbolHashMapEntry* next() const        { return _next;   }
-  void set_next(SymbolHashMapEntry* next) { _next = next;   }
-
-  Symbol*    symbol() const               { return _symbol; }
-  void       set_symbol(Symbol* sym)      { _symbol = sym;  }
-
-  u2         value() const                {  return _value; }
-  void       set_value(u2 value)          { _value = value; }
-
-  SymbolHashMapEntry(unsigned int hash, Symbol* symbol, u2 value)
-    : _hash(hash), _symbol(symbol), _value(value), _next(NULL) {}
-
-}; // End SymbolHashMapEntry class
-
-
-class SymbolHashMapBucket : public CHeapObj<mtSymbol> {
-
-private:
-  SymbolHashMapEntry*    _entry;
-
-public:
-  SymbolHashMapEntry* entry() const         {  return _entry; }
-  void set_entry(SymbolHashMapEntry* entry) { _entry = entry; }
-  void clear()                              { _entry = NULL;  }
-
-}; // End SymbolHashMapBucket class
-
-
-class SymbolHashMap: public CHeapObj<mtSymbol> {
-
- private:
-  // Default number of entries in the table
-  enum SymbolHashMap_Constants {
-    _Def_HashMap_Size = 256
-  };
-
-  int                   _table_size;
-  SymbolHashMapBucket*  _buckets;
-
-  void initialize_table(int table_size) {
-    _table_size = table_size;
-    _buckets = NEW_C_HEAP_ARRAY(SymbolHashMapBucket, table_size, mtSymbol);
-    for (int index = 0; index < table_size; index++) {
-      _buckets[index].clear();
-    }
-  }
-
- public:
-
-  int table_size() const        { return _table_size; }
-
-  SymbolHashMap()               { initialize_table(_Def_HashMap_Size); }
-  SymbolHashMap(int table_size) { initialize_table(table_size); }
-
-  // hash P(31) from Kernighan & Ritchie
-  static unsigned int compute_hash(const char* str, int len) {
-    unsigned int hash = 0;
-    while (len-- > 0) {
-      hash = 31*hash + (unsigned) *str;
-      str++;
-    }
-    return hash;
-  }
-
-  SymbolHashMapEntry* bucket(int i) {
-    return _buckets[i].entry();
-  }
-
-  void add_entry(Symbol* sym, u2 value);
-  SymbolHashMapEntry* find_entry(Symbol* sym);
-
-  u2 symbol_to_value(Symbol* sym) {
-    SymbolHashMapEntry *entry = find_entry(sym);
-    return (entry == NULL) ? 0 : entry->value();
-  }
-
-  ~SymbolHashMap() {
-    SymbolHashMapEntry* next;
-    for (int i = 0; i < _table_size; i++) {
-      for (SymbolHashMapEntry* cur = bucket(i); cur != NULL; cur = next) {
-        next = cur->next();
-        delete(cur);
-      }
-    }
-    delete _buckets;
-  }
-}; // End SymbolHashMap class
-
-#endif // SHARE_VM_OOPS_CONSTANTPOOLOOP_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/cpCache.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,602 @@
+/*
+ * Copyright (c) 1998, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/rewriter.hpp"
+#include "memory/universe.inline.hpp"
+#include "oops/cpCache.hpp"
+#include "oops/objArrayOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "prims/jvmtiRedefineClassesTrace.hpp"
+#include "prims/methodHandles.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+# include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#endif
+
+
+// Implememtation of ConstantPoolCacheEntry
+
+void ConstantPoolCacheEntry::initialize_entry(int index) {
+  assert(0 < index && index < 0x10000, "sanity check");
+  _indices = index;
+  assert(constant_pool_index() == index, "");
+}
+
+int ConstantPoolCacheEntry::make_flags(TosState state,
+                                       int option_bits,
+                                       int field_index_or_method_params) {
+  assert(state < number_of_states, "Invalid state in make_flags");
+  int f = ((int)state << tos_state_shift) | option_bits | field_index_or_method_params;
+  // Preserve existing flag bit values
+  // The low bits are a field offset, or else the method parameter size.
+#ifdef ASSERT
+  TosState old_state = flag_state();
+  assert(old_state == (TosState)0 || old_state == state,
+         "inconsistent cpCache flags state");
+#endif
+  return (_flags | f) ;
+}
+
+void ConstantPoolCacheEntry::set_bytecode_1(Bytecodes::Code code) {
+#ifdef ASSERT
+  // Read once.
+  volatile Bytecodes::Code c = bytecode_1();
+  assert(c == 0 || c == code || code == 0, "update must be consistent");
+#endif
+  // Need to flush pending stores here before bytecode is written.
+  OrderAccess::release_store_ptr(&_indices, _indices | ((u_char)code << bytecode_1_shift));
+}
+
+void ConstantPoolCacheEntry::set_bytecode_2(Bytecodes::Code code) {
+#ifdef ASSERT
+  // Read once.
+  volatile Bytecodes::Code c = bytecode_2();
+  assert(c == 0 || c == code || code == 0, "update must be consistent");
+#endif
+  // Need to flush pending stores here before bytecode is written.
+  OrderAccess::release_store_ptr(&_indices, _indices | ((u_char)code << bytecode_2_shift));
+}
+
+// Sets f1, ordering with previous writes.
+void ConstantPoolCacheEntry::release_set_f1(Metadata* f1) {
+  assert(f1 != NULL, "");
+  OrderAccess::release_store_ptr((HeapWord*) &_f1, f1);
+}
+
+// Sets flags, but only if the value was previously zero.
+bool ConstantPoolCacheEntry::init_flags_atomic(intptr_t flags) {
+  intptr_t result = Atomic::cmpxchg_ptr(flags, &_flags, 0);
+  return (result == 0);
+}
+
+// Note that concurrent update of both bytecodes can leave one of them
+// reset to zero.  This is harmless; the interpreter will simply re-resolve
+// the damaged entry.  More seriously, the memory synchronization is needed
+// to flush other fields (f1, f2) completely to memory before the bytecodes
+// are updated, lest other processors see a non-zero bytecode but zero f1/f2.
+void ConstantPoolCacheEntry::set_field(Bytecodes::Code get_code,
+                                       Bytecodes::Code put_code,
+                                       KlassHandle field_holder,
+                                       int field_index,
+                                       int field_offset,
+                                       TosState field_type,
+                                       bool is_final,
+                                       bool is_volatile,
+                                       Klass* root_klass) {
+  set_f1(field_holder());
+  set_f2(field_offset);
+  assert((field_index & field_index_mask) == field_index,
+         "field index does not fit in low flag bits");
+  set_field_flags(field_type,
+                  ((is_volatile ? 1 : 0) << is_volatile_shift) |
+                  ((is_final    ? 1 : 0) << is_final_shift),
+                  field_index);
+  set_bytecode_1(get_code);
+  set_bytecode_2(put_code);
+  NOT_PRODUCT(verify(tty));
+}
+
+void ConstantPoolCacheEntry::set_parameter_size(int value) {
+  // This routine is called only in corner cases where the CPCE is not yet initialized.
+  // See AbstractInterpreter::deopt_continue_after_entry.
+  assert(_flags == 0 || parameter_size() == 0 || parameter_size() == value,
+         err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value));
+  // Setting the parameter size by itself is only safe if the
+  // current value of _flags is 0, otherwise another thread may have
+  // updated it and we don't want to overwrite that value.  Don't
+  // bother trying to update it once it's nonzero but always make
+  // sure that the final parameter size agrees with what was passed.
+  if (_flags == 0) {
+    Atomic::cmpxchg_ptr((value & parameter_size_mask), &_flags, 0);
+  }
+  guarantee(parameter_size() == value,
+            err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value));
+}
+
+void ConstantPoolCacheEntry::set_method(Bytecodes::Code invoke_code,
+                                        methodHandle method,
+                                        int vtable_index) {
+  assert(method->interpreter_entry() != NULL, "should have been set at this point");
+  assert(!method->is_obsolete(),  "attempt to write obsolete method to cpCache");
+
+  int byte_no = -1;
+  bool change_to_virtual = false;
+
+  switch (invoke_code) {
+    case Bytecodes::_invokeinterface:
+      // We get here from InterpreterRuntime::resolve_invoke when an invokeinterface
+      // instruction somehow links to a non-interface method (in Object).
+      // In that case, the method has no itable index and must be invoked as a virtual.
+      // Set a flag to keep track of this corner case.
+      change_to_virtual = true;
+
+      // ...and fall through as if we were handling invokevirtual:
+    case Bytecodes::_invokevirtual:
+      {
+        if (method->can_be_statically_bound()) {
+          // set_f2_as_vfinal_method checks if is_vfinal flag is true.
+          set_method_flags(as_TosState(method->result_type()),
+                           (                             1      << is_vfinal_shift) |
+                           ((method->is_final_method() ? 1 : 0) << is_final_shift)  |
+                           ((change_to_virtual         ? 1 : 0) << is_forced_virtual_shift),
+                           method()->size_of_parameters());
+          set_f2_as_vfinal_method(method());
+        } else {
+          assert(vtable_index >= 0, "valid index");
+          assert(!method->is_final_method(), "sanity");
+          set_method_flags(as_TosState(method->result_type()),
+                           ((change_to_virtual ? 1 : 0) << is_forced_virtual_shift),
+                           method()->size_of_parameters());
+          set_f2(vtable_index);
+        }
+        byte_no = 2;
+        break;
+      }
+
+    case Bytecodes::_invokespecial:
+    case Bytecodes::_invokestatic:
+      // Note:  Read and preserve the value of the is_vfinal flag on any
+      // invokevirtual bytecode shared with this constant pool cache entry.
+      // It is cheap and safe to consult is_vfinal() at all times.
+      // Once is_vfinal is set, it must stay that way, lest we get a dangling oop.
+      set_method_flags(as_TosState(method->result_type()),
+                       ((is_vfinal()               ? 1 : 0) << is_vfinal_shift) |
+                       ((method->is_final_method() ? 1 : 0) << is_final_shift),
+                       method()->size_of_parameters());
+      set_f1(method());
+      byte_no = 1;
+      break;
+    default:
+      ShouldNotReachHere();
+      break;
+  }
+
+  // Note:  byte_no also appears in TemplateTable::resolve.
+  if (byte_no == 1) {
+    assert(invoke_code != Bytecodes::_invokevirtual &&
+           invoke_code != Bytecodes::_invokeinterface, "");
+    set_bytecode_1(invoke_code);
+  } else if (byte_no == 2)  {
+    if (change_to_virtual) {
+      assert(invoke_code == Bytecodes::_invokeinterface, "");
+      // NOTE: THIS IS A HACK - BE VERY CAREFUL!!!
+      //
+      // Workaround for the case where we encounter an invokeinterface, but we
+      // should really have an _invokevirtual since the resolved method is a
+      // virtual method in java.lang.Object. This is a corner case in the spec
+      // but is presumably legal. javac does not generate this code.
+      //
+      // We set bytecode_1() to _invokeinterface, because that is the
+      // bytecode # used by the interpreter to see if it is resolved.
+      // We set bytecode_2() to _invokevirtual.
+      // See also interpreterRuntime.cpp. (8/25/2000)
+      // Only set resolved for the invokeinterface case if method is public.
+      // Otherwise, the method needs to be reresolved with caller for each
+      // interface call.
+      if (method->is_public()) set_bytecode_1(invoke_code);
+    } else {
+      assert(invoke_code == Bytecodes::_invokevirtual, "");
+    }
+    // set up for invokevirtual, even if linking for invokeinterface also:
+    set_bytecode_2(Bytecodes::_invokevirtual);
+  } else {
+    ShouldNotReachHere();
+  }
+  NOT_PRODUCT(verify(tty));
+}
+
+
+void ConstantPoolCacheEntry::set_interface_call(methodHandle method, int index) {
+  Klass* interf = method->method_holder();
+  assert(InstanceKlass::cast(interf)->is_interface(), "must be an interface");
+  assert(!method->is_final_method(), "interfaces do not have final methods; cannot link to one here");
+  set_f1(interf);
+  set_f2(index);
+  set_method_flags(as_TosState(method->result_type()),
+                   0,  // no option bits
+                   method()->size_of_parameters());
+  set_bytecode_1(Bytecodes::_invokeinterface);
+}
+
+
+void ConstantPoolCacheEntry::set_method_handle(constantPoolHandle cpool,
+                                               methodHandle adapter, Handle appendix,
+                                               objArrayHandle resolved_references) {
+  set_method_handle_common(cpool, Bytecodes::_invokehandle, adapter, appendix, resolved_references);
+}
+
+void ConstantPoolCacheEntry::set_dynamic_call(constantPoolHandle cpool,
+                                              methodHandle adapter, Handle appendix,
+                                              objArrayHandle resolved_references) {
+  set_method_handle_common(cpool, Bytecodes::_invokedynamic, adapter, appendix, resolved_references);
+}
+
+void ConstantPoolCacheEntry::set_method_handle_common(constantPoolHandle cpool,
+                                                      Bytecodes::Code invoke_code,
+                                                      methodHandle adapter,
+                                                      Handle appendix,
+                                                      objArrayHandle resolved_references) {
+  // NOTE: This CPCE can be the subject of data races.
+  // There are three words to update: flags, refs[f2], f1 (in that order).
+  // Writers must store all other values before f1.
+  // Readers must test f1 first for non-null before reading other fields.
+  // Competing writers must acquire exclusive access via a lock.
+  // A losing writer waits on the lock until the winner writes f1 and leaves
+  // the lock, so that when the losing writer returns, he can use the linked
+  // cache entry.
+
+  MonitorLockerEx ml(cpool->lock());
+  if (!is_f1_null()) {
+    return;
+  }
+
+  bool has_appendix = appendix.not_null();
+
+  // Write the flags.
+  set_method_flags(as_TosState(adapter->result_type()),
+                   ((has_appendix ?  1 : 0) << has_appendix_shift) |
+                   (                 1      << is_final_shift),
+                   adapter->size_of_parameters());
+
+  if (TraceInvokeDynamic) {
+    tty->print_cr("set_method_handle bc=%d appendix="PTR_FORMAT"%s method="PTR_FORMAT" ",
+                  invoke_code,
+                  (intptr_t)appendix(), (has_appendix ? "" : " (unused)"),
+                  (intptr_t)adapter());
+    adapter->print();
+    if (has_appendix)  appendix()->print();
+  }
+
+  // Method handle invokes and invokedynamic sites use both cp cache words.
+  // refs[f2], if not null, contains a value passed as a trailing argument to the adapter.
+  // In the general case, this could be the call site's MethodType,
+  // for use with java.lang.Invokers.checkExactType, or else a CallSite object.
+  // f1 contains the adapter method which manages the actual call.
+  // In the general case, this is a compiled LambdaForm.
+  // (The Java code is free to optimize these calls by binding other
+  // sorts of methods and appendices to call sites.)
+  // JVM-level linking is via f1, as if for invokespecial, and signatures are erased.
+  // The appendix argument (if any) is added to the signature, and is counted in the parameter_size bits.
+  // Even with the appendix, the method will never take more than 255 parameter slots.
+  //
+  // This means that given a call site like (List)mh.invoke("foo"),
+  // the f1 method has signature '(Ljl/Object;Ljl/invoke/MethodType;)Ljl/Object;',
+  // not '(Ljava/lang/String;)Ljava/util/List;'.
+  // The fact that String and List are involved is encoded in the MethodType in refs[f2].
+  // This allows us to create fewer method oops, while keeping type safety.
+  //
+
+  if (has_appendix) {
+    int ref_index = f2_as_index();
+    assert(ref_index >= 0 && ref_index < resolved_references->length(), "oob");
+    assert(resolved_references->obj_at(ref_index) == NULL, "init just once");
+    resolved_references->obj_at_put(ref_index, appendix());
+  }
+
+  release_set_f1(adapter());  // This must be the last one to set (see NOTE above)!
+
+    // The interpreter assembly code does not check byte_2,
+    // but it is used by is_resolved, method_if_resolved, etc.
+  set_bytecode_1(invoke_code);
+  NOT_PRODUCT(verify(tty));
+  if (TraceInvokeDynamic) {
+    this->print(tty, 0);
+  }
+}
+
+Method* ConstantPoolCacheEntry::method_if_resolved(constantPoolHandle cpool) {
+  // Decode the action of set_method and set_interface_call
+  Bytecodes::Code invoke_code = bytecode_1();
+  if (invoke_code != (Bytecodes::Code)0) {
+    Metadata* f1 = (Metadata*)_f1;
+    if (f1 != NULL) {
+      switch (invoke_code) {
+      case Bytecodes::_invokeinterface:
+        assert(f1->is_klass(), "");
+        return klassItable::method_for_itable_index((Klass*)f1, f2_as_index());
+      case Bytecodes::_invokestatic:
+      case Bytecodes::_invokespecial:
+        assert(!has_appendix(), "");
+      case Bytecodes::_invokehandle:
+      case Bytecodes::_invokedynamic:
+        assert(f1->is_method(), "");
+        return (Method*)f1;
+      }
+    }
+  }
+  invoke_code = bytecode_2();
+  if (invoke_code != (Bytecodes::Code)0) {
+    switch (invoke_code) {
+    case Bytecodes::_invokevirtual:
+      if (is_vfinal()) {
+        // invokevirtual
+        Method* m = f2_as_vfinal_method();
+        assert(m->is_method(), "");
+        return m;
+      } else {
+        int holder_index = cpool->uncached_klass_ref_index_at(constant_pool_index());
+        if (cpool->tag_at(holder_index).is_klass()) {
+          Klass* klass = cpool->resolved_klass_at(holder_index);
+          if (!Klass::cast(klass)->oop_is_instance())
+            klass = SystemDictionary::Object_klass();
+          return InstanceKlass::cast(klass)->method_at_vtable(f2_as_index());
+        }
+      }
+      break;
+    }
+  }
+  return NULL;
+}
+
+
+oop ConstantPoolCacheEntry::appendix_if_resolved(constantPoolHandle cpool) {
+  if (is_f1_null() || !has_appendix())
+    return NULL;
+  int ref_index = f2_as_index();
+  objArrayOop resolved_references = cpool->resolved_references();
+  return resolved_references->obj_at(ref_index);
+}
+
+
+// RedefineClasses() API support:
+// If this constantPoolCacheEntry refers to old_method then update it
+// to refer to new_method.
+bool ConstantPoolCacheEntry::adjust_method_entry(Method* old_method,
+       Method* new_method, bool * trace_name_printed) {
+
+  if (is_vfinal()) {
+    // virtual and final so _f2 contains method ptr instead of vtable index
+    if (f2_as_vfinal_method() == old_method) {
+      // match old_method so need an update
+      // NOTE: can't use set_f2_as_vfinal_method as it asserts on different values
+      _f2 = (intptr_t)new_method;
+      if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) {
+        if (!(*trace_name_printed)) {
+          // RC_TRACE_MESG macro has an embedded ResourceMark
+          RC_TRACE_MESG(("adjust: name=%s",
+            Klass::cast(old_method->method_holder())->external_name()));
+          *trace_name_printed = true;
+        }
+        // RC_TRACE macro has an embedded ResourceMark
+        RC_TRACE(0x00400000, ("cpc vf-entry update: %s(%s)",
+          new_method->name()->as_C_string(),
+          new_method->signature()->as_C_string()));
+      }
+
+      return true;
+    }
+
+    // f1() is not used with virtual entries so bail out
+    return false;
+  }
+
+  if (_f1 == NULL) {
+    // NULL f1() means this is a virtual entry so bail out
+    // We are assuming that the vtable index does not need change.
+    return false;
+  }
+
+  if (_f1 == old_method) {
+    _f1 = new_method;
+    if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) {
+      if (!(*trace_name_printed)) {
+        // RC_TRACE_MESG macro has an embedded ResourceMark
+        RC_TRACE_MESG(("adjust: name=%s",
+          Klass::cast(old_method->method_holder())->external_name()));
+        *trace_name_printed = true;
+      }
+      // RC_TRACE macro has an embedded ResourceMark
+      RC_TRACE(0x00400000, ("cpc entry update: %s(%s)",
+        new_method->name()->as_C_string(),
+        new_method->signature()->as_C_string()));
+    }
+
+    return true;
+  }
+
+  return false;
+}
+
+#ifndef PRODUCT
+bool ConstantPoolCacheEntry::check_no_old_entries() {
+  if (is_vfinal()) {
+    Metadata* f2 = (Metadata*)_f2;
+    return (f2->is_valid() && f2->is_method() && !((Method*)f2)->is_old());
+  } else {
+    return (_f1 == NULL || (_f1->is_valid() && _f1->is_method() && !((Method*)_f1)->is_old()));
+  }
+}
+#endif
+
+bool ConstantPoolCacheEntry::is_interesting_method_entry(Klass* k) {
+  if (!is_method_entry()) {
+    // not a method entry so not interesting by default
+    return false;
+  }
+
+  Method* m = NULL;
+  if (is_vfinal()) {
+    // virtual and final so _f2 contains method ptr instead of vtable index
+    m = f2_as_vfinal_method();
+  } else if (is_f1_null()) {
+    // NULL _f1 means this is a virtual entry so also not interesting
+    return false;
+  } else {
+    if (!(_f1->is_method())) {
+      // _f1 can also contain a Klass* for an interface
+      return false;
+    }
+    m = f1_as_method();
+  }
+
+  assert(m != NULL && m->is_method(), "sanity check");
+  if (m == NULL || !m->is_method() || (k != NULL && m->method_holder() != k)) {
+    // robustness for above sanity checks or method is not in
+    // the interesting class
+    return false;
+  }
+
+  // the method is in the interesting class so the entry is interesting
+  return true;
+}
+
+void ConstantPoolCacheEntry::print(outputStream* st, int index) const {
+  // print separator
+  if (index == 0) st->print_cr("                 -------------");
+  // print entry
+  st->print("%3d  ("PTR_FORMAT")  ", index, (intptr_t)this);
+    st->print_cr("[%02x|%02x|%5d]", bytecode_2(), bytecode_1(), constant_pool_index());
+  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)_f1);
+  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)_f2);
+  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)_flags);
+  st->print_cr("                 -------------");
+}
+
+void ConstantPoolCacheEntry::verify(outputStream* st) const {
+  // not implemented yet
+}
+
+// Implementation of ConstantPoolCache
+
+ConstantPoolCache* ConstantPoolCache::allocate(ClassLoaderData* loader_data, int length, TRAPS) {
+  int size = ConstantPoolCache::size(length);
+
+  return new (loader_data, size, false, THREAD) ConstantPoolCache(length);
+}
+
+void ConstantPoolCache::initialize(intArray& inverse_index_map, intArray& invokedynamic_references_map) {
+  assert(inverse_index_map.length() == length(), "inverse index map must have same length as cache");
+  for (int i = 0; i < length(); i++) {
+    ConstantPoolCacheEntry* e = entry_at(i);
+    int original_index = inverse_index_map[i];
+      e->initialize_entry(original_index);
+    assert(entry_at(i) == e, "sanity");
+    }
+  for (int ref = 0; ref < invokedynamic_references_map.length(); ref++) {
+    int cpci = invokedynamic_references_map[ref];
+    if (cpci >= 0)
+      entry_at(cpci)->initialize_resolved_reference_index(ref);
+  }
+}
+
+// RedefineClasses() API support:
+// If any entry of this constantPoolCache points to any of
+// old_methods, replace it with the corresponding new_method.
+void ConstantPoolCache::adjust_method_entries(Method** old_methods, Method** new_methods,
+                                                     int methods_length, bool * trace_name_printed) {
+
+  if (methods_length == 0) {
+    // nothing to do if there are no methods
+    return;
+  }
+
+  // get shorthand for the interesting class
+  Klass* old_holder = old_methods[0]->method_holder();
+
+  for (int i = 0; i < length(); i++) {
+    if (!entry_at(i)->is_interesting_method_entry(old_holder)) {
+      // skip uninteresting methods
+      continue;
+    }
+
+    // The constantPoolCache contains entries for several different
+    // things, but we only care about methods. In fact, we only care
+    // about methods in the same class as the one that contains the
+    // old_methods. At this point, we have an interesting entry.
+
+    for (int j = 0; j < methods_length; j++) {
+      Method* old_method = old_methods[j];
+      Method* new_method = new_methods[j];
+
+      if (entry_at(i)->adjust_method_entry(old_method, new_method,
+          trace_name_printed)) {
+        // current old_method matched this entry and we updated it so
+        // break out and get to the next interesting entry if there one
+        break;
+      }
+    }
+  }
+}
+
+#ifndef PRODUCT
+bool ConstantPoolCache::check_no_old_entries() {
+  for (int i = 1; i < length(); i++) {
+    if (entry_at(i)->is_interesting_method_entry(NULL) &&
+       !entry_at(i)->check_no_old_entries()) {
+      return false;
+    }
+  }
+  return true;
+}
+#endif // PRODUCT
+
+
+// Printing
+
+void ConstantPoolCache::print_on(outputStream* st) const {
+  assert(is_constantPoolCache(), "obj must be constant pool cache");
+  st->print_cr(internal_name());
+  // print constant pool cache entries
+  for (int i = 0; i < length(); i++) entry_at(i)->print(st, i);
+}
+
+void ConstantPoolCache::print_value_on(outputStream* st) const {
+  assert(is_constantPoolCache(), "obj must be constant pool cache");
+  st->print("cache [%d]", length());
+  print_address_on(st);
+  st->print(" for ");
+  constant_pool()->print_value_on(st);
+}
+
+
+// Verification
+
+void ConstantPoolCache::verify_on(outputStream* st) {
+  guarantee(is_constantPoolCache(), "obj must be constant pool cache");
+  // print constant pool cache entries
+  for (int i = 0; i < length(); i++) entry_at(i)->verify(st);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/cpCache.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,442 @@
+/*
+ * Copyright (c) 1998, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_CPCACHEOOP_HPP
+#define SHARE_VM_OOPS_CPCACHEOOP_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/allocation.hpp"
+#include "utilities/array.hpp"
+
+class PSPromotionManager;
+
+// A ConstantPoolCacheEntry describes an individual entry of the constant
+// pool cache. There's 2 principal kinds of entries: field entries for in-
+// stance & static field access, and method entries for invokes. Some of
+// the entry layout is shared and looks as follows:
+//
+// bit number |31                0|
+// bit length |-8--|-8--|---16----|
+// --------------------------------
+// _indices   [ b2 | b1 |  index  ]  index = constant_pool_index
+// _f1        [  entry specific   ]  metadata ptr (method or klass)
+// _f2        [  entry specific   ]  vtable or res_ref index, or vfinal method ptr
+// _flags     [tos|0|F=1|0|0|f|v|0 |00000|field_index] (for field entries)
+// bit length [ 4 |1| 1 |1|1|1|1|1 |--5--|----16-----]
+// _flags     [tos|0|F=0|A|I|f|0|vf|00000|00000|psize] (for method entries)
+// bit length [ 4 |1| 1 |1|1|1|1|1 |--5--|--8--|--8--]
+
+// --------------------------------
+//
+// with:
+// index  = original constant pool index
+// b1     = bytecode 1
+// b2     = bytecode 2
+// psize  = parameters size (method entries only)
+// field_index = index into field information in holder InstanceKlass
+//          The index max is 0xffff (max number of fields in constant pool)
+//          and is multiplied by (InstanceKlass::next_offset) when accessing.
+// tos    = TosState
+// F      = the entry is for a field (or F=0 for a method)
+// A      = call site has an appendix argument (loaded from resolved references)
+// I      = interface call is forced virtual (must use a vtable index or vfinal)
+// f      = field or method is final
+// v      = field is volatile
+// vf     = virtual but final (method entries only: is_vfinal())
+//
+// The flags after TosState have the following interpretation:
+// bit 27: 0 for fields, 1 for methods
+// f  flag true if field is marked final
+// v  flag true if field is volatile (only for fields)
+// f2 flag true if f2 contains an oop (e.g., virtual final method)
+// fv flag true if invokeinterface used for method in class Object
+//
+// The flags 31, 30, 29, 28 together build a 4 bit number 0 to 8 with the
+// following mapping to the TosState states:
+//
+// btos: 0
+// ctos: 1
+// stos: 2
+// itos: 3
+// ltos: 4
+// ftos: 5
+// dtos: 6
+// atos: 7
+// vtos: 8
+//
+// Entry specific: field entries:
+// _indices = get (b1 section) and put (b2 section) bytecodes, original constant pool index
+// _f1      = field holder (as a java.lang.Class, not a Klass*)
+// _f2      = field offset in bytes
+// _flags   = field type information, original FieldInfo index in field holder
+//            (field_index section)
+//
+// Entry specific: method entries:
+// _indices = invoke code for f1 (b1 section), invoke code for f2 (b2 section),
+//            original constant pool index
+// _f1      = Method* for non-virtual calls, unused by virtual calls.
+//            for interface calls, which are essentially virtual but need a klass,
+//            contains Klass* for the corresponding interface.
+//            for invokedynamic, f1 contains a site-specific CallSite object (as an appendix)
+//            for invokehandle, f1 contains a site-specific MethodType object (as an appendix)
+//            (upcoming metadata changes will move the appendix to a separate array)
+// _f2      = vtable/itable index (or final Method*) for virtual calls only,
+//            unused by non-virtual.  The is_vfinal flag indicates this is a
+//            method pointer for a final method, not an index.
+// _flags   = method type info (t section),
+//            virtual final bit (vfinal),
+//            parameter size (psize section)
+//
+// Note: invokevirtual & invokespecial bytecodes can share the same constant
+//       pool entry and thus the same constant pool cache entry. All invoke
+//       bytecodes but invokevirtual use only _f1 and the corresponding b1
+//       bytecode, while invokevirtual uses only _f2 and the corresponding
+//       b2 bytecode.  The value of _flags is shared for both types of entries.
+//
+// The fields are volatile so that they are stored in the order written in the
+// source code.  The _indices field with the bytecode must be written last.
+
+class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
+  friend class VMStructs;
+  friend class constantPoolCacheKlass;
+  friend class ConstantPool;
+  friend class InterpreterRuntime;
+
+ private:
+  volatile intx     _indices;  // constant pool index & rewrite bytecodes
+  volatile Metadata*   _f1;       // entry specific metadata field
+  volatile intx        _f2;       // entry specific int/metadata field
+  volatile intx     _flags;    // flags
+
+
+  void set_bytecode_1(Bytecodes::Code code);
+  void set_bytecode_2(Bytecodes::Code code);
+  void set_f1(Metadata* f1)                            {
+    Metadata* existing_f1 = (Metadata*)_f1; // read once
+    assert(existing_f1 == NULL || existing_f1 == f1, "illegal field change");
+    _f1 = f1;
+  }
+  void release_set_f1(Metadata* f1);
+  void set_f2(intx f2)                           { assert(_f2 == 0 || _f2 == f2,            "illegal field change"); _f2 = f2; }
+  void set_f2_as_vfinal_method(Method* f2)     { assert(_f2 == 0 || _f2 == (intptr_t) f2, "illegal field change"); assert(is_vfinal(), "flags must be set"); _f2 = (intptr_t) f2; }
+  int make_flags(TosState state, int option_bits, int field_index_or_method_params);
+  void set_flags(intx flags)                     { _flags = flags; }
+  bool init_flags_atomic(intx flags);
+  void set_field_flags(TosState field_type, int option_bits, int field_index) {
+    assert((field_index & field_index_mask) == field_index, "field_index in range");
+    set_flags(make_flags(field_type, option_bits | (1 << is_field_entry_shift), field_index));
+  }
+  void set_method_flags(TosState return_type, int option_bits, int method_params) {
+    assert((method_params & parameter_size_mask) == method_params, "method_params in range");
+    set_flags(make_flags(return_type, option_bits, method_params));
+  }
+  bool init_method_flags_atomic(TosState return_type, int option_bits, int method_params) {
+    assert((method_params & parameter_size_mask) == method_params, "method_params in range");
+    return init_flags_atomic(make_flags(return_type, option_bits, method_params));
+  }
+
+ public:
+  // specific bit definitions for the flags field:
+  // (Note: the interpreter must use these definitions to access the CP cache.)
+  enum {
+    // high order bits are the TosState corresponding to field type or method return type
+    tos_state_bits             = 4,
+    tos_state_mask             = right_n_bits(tos_state_bits),
+    tos_state_shift            = BitsPerInt - tos_state_bits,  // see verify_tos_state_shift below
+    // misc. option bits; can be any bit position in [16..27]
+    is_field_entry_shift       = 26,  // (F) is it a field or a method?
+    has_appendix_shift         = 25,  // (A) does the call site have an appendix argument?
+    is_forced_virtual_shift    = 24,  // (I) is the interface reference forced to virtual mode?
+    is_final_shift             = 23,  // (f) is the field or method final?
+    is_volatile_shift          = 22,  // (v) is the field volatile?
+    is_vfinal_shift            = 21,  // (vf) did the call resolve to a final method?
+    // low order bits give field index (for FieldInfo) or method parameter size:
+    field_index_bits           = 16,
+    field_index_mask           = right_n_bits(field_index_bits),
+    parameter_size_bits        = 8,  // subset of field_index_mask, range is 0..255
+    parameter_size_mask        = right_n_bits(parameter_size_bits),
+    option_bits_mask           = ~(((-1) << tos_state_shift) | (field_index_mask | parameter_size_mask))
+  };
+
+  // specific bit definitions for the indices field:
+  enum {
+    cp_index_bits              = 2*BitsPerByte,
+    cp_index_mask              = right_n_bits(cp_index_bits),
+    bytecode_1_shift           = cp_index_bits,
+    bytecode_1_mask            = right_n_bits(BitsPerByte), // == (u1)0xFF
+    bytecode_2_shift           = cp_index_bits + BitsPerByte,
+    bytecode_2_mask            = right_n_bits(BitsPerByte)  // == (u1)0xFF
+  };
+
+
+  // Initialization
+  void initialize_entry(int original_index);     // initialize primary entry
+  void initialize_resolved_reference_index(int ref_index) {
+    assert(_f2 == 0, "set once");  // note: ref_index might be zero also
+    _f2 = ref_index;
+  }
+
+  void set_field(                                // sets entry to resolved field state
+    Bytecodes::Code get_code,                    // the bytecode used for reading the field
+    Bytecodes::Code put_code,                    // the bytecode used for writing the field
+    KlassHandle     field_holder,                // the object/klass holding the field
+    int             orig_field_index,            // the original field index in the field holder
+    int             field_offset,                // the field offset in words in the field holder
+    TosState        field_type,                  // the (machine) field type
+    bool            is_final,                     // the field is final
+    bool            is_volatile,                 // the field is volatile
+    Klass*          root_klass                   // needed by the GC to dirty the klass
+  );
+
+  void set_method(                               // sets entry to resolved method entry
+    Bytecodes::Code invoke_code,                 // the bytecode used for invoking the method
+    methodHandle    method,                      // the method/prototype if any (NULL, otherwise)
+    int             vtable_index                 // the vtable index if any, else negative
+  );
+
+  void set_interface_call(
+    methodHandle method,                         // Resolved method
+    int index                                    // Method index into interface
+  );
+
+  void set_method_handle(
+    constantPoolHandle cpool,                    // holding constant pool (required for locking)
+    methodHandle method,                         // adapter for invokeExact, etc.
+    Handle appendix,                             // stored in refs[f2]; could be a java.lang.invoke.MethodType
+    objArrayHandle resolved_references
+  );
+
+  void set_dynamic_call(
+    constantPoolHandle cpool,                    // holding constant pool (required for locking)
+    methodHandle method,                         // adapter for this call site
+    Handle appendix,                             // stored in refs[f2]; could be a java.lang.invoke.CallSite
+    objArrayHandle resolved_references
+  );
+
+  // Common code for invokedynamic and MH invocations.
+
+  // The "appendix" is an optional call-site-specific parameter which is
+  // pushed by the JVM at the end of the argument list.  This argument may
+  // be a MethodType for the MH.invokes and a CallSite for an invokedynamic
+  // instruction.  However, its exact type and use depends on the Java upcall,
+  // which simply returns a compiled LambdaForm along with any reference
+  // that LambdaForm needs to complete the call.  If the upcall returns a
+  // null appendix, the argument is not passed at all.
+  //
+  // The appendix is *not* represented in the signature of the symbolic
+  // reference for the call site, but (if present) it *is* represented in
+  // the Method* bound to the site.  This means that static and dynamic
+  // resolution logic needs to make slightly different assessments about the
+  // number and types of arguments.
+  void set_method_handle_common(
+    constantPoolHandle cpool,                    // holding constant pool (required for locking)
+    Bytecodes::Code invoke_code,                 // _invokehandle or _invokedynamic
+    methodHandle adapter,                        // invoker method (f1)
+    Handle appendix,                             // appendix such as CallSite, MethodType, etc. (refs[f2])
+    objArrayHandle resolved_references
+  );
+
+  Method* method_if_resolved(constantPoolHandle cpool);
+  oop appendix_if_resolved(constantPoolHandle cpool);
+
+  void set_parameter_size(int value);
+
+  // Which bytecode number (1 or 2) in the index field is valid for this bytecode?
+  // Returns -1 if neither is valid.
+  static int bytecode_number(Bytecodes::Code code) {
+    switch (code) {
+      case Bytecodes::_getstatic       :    // fall through
+      case Bytecodes::_getfield        :    // fall through
+      case Bytecodes::_invokespecial   :    // fall through
+      case Bytecodes::_invokestatic    :    // fall through
+      case Bytecodes::_invokeinterface : return 1;
+      case Bytecodes::_putstatic       :    // fall through
+      case Bytecodes::_putfield        :    // fall through
+      case Bytecodes::_invokehandle    :    // fall through
+      case Bytecodes::_invokedynamic   :    // fall through
+      case Bytecodes::_invokevirtual   : return 2;
+      default                          : break;
+    }
+    return -1;
+  }
+
+  // Has this bytecode been resolved? Only valid for invokes and get/put field/static.
+  bool is_resolved(Bytecodes::Code code) const {
+    switch (bytecode_number(code)) {
+      case 1:  return (bytecode_1() == code);
+      case 2:  return (bytecode_2() == code);
+    }
+    return false;      // default: not resolved
+  }
+
+  // Accessors
+  int indices() const                            { return _indices; }
+  int constant_pool_index() const                { return (indices() & cp_index_mask); }
+  Bytecodes::Code bytecode_1() const             { return Bytecodes::cast((indices() >> bytecode_1_shift) & bytecode_1_mask); }
+  Bytecodes::Code bytecode_2() const             { return Bytecodes::cast((indices() >> bytecode_2_shift) & bytecode_2_mask); }
+  Method* f1_as_method() const                   { Metadata* f1 = (Metadata*)_f1; assert(f1 == NULL || f1->is_method(), ""); return (Method*)f1; }
+  Klass*    f1_as_klass() const                  { Metadata* f1 = (Metadata*)_f1; assert(f1 == NULL || f1->is_klass(), ""); return (Klass*)f1; }
+  bool      is_f1_null() const                   { Metadata* f1 = (Metadata*)_f1; return f1 == NULL; }  // classifies a CPC entry as unbound
+  int       f2_as_index() const                  { assert(!is_vfinal(), ""); return (int) _f2; }
+  Method* f2_as_vfinal_method() const            { assert(is_vfinal(), ""); return (Method*)_f2; }
+  int  field_index() const                       { assert(is_field_entry(),  ""); return (_flags & field_index_mask); }
+  int  parameter_size() const                    { assert(is_method_entry(), ""); return (_flags & parameter_size_mask); }
+  bool is_volatile() const                       { return (_flags & (1 << is_volatile_shift))       != 0; }
+  bool is_final() const                          { return (_flags & (1 << is_final_shift))          != 0; }
+  bool is_forced_virtual() const                 { return (_flags & (1 << is_forced_virtual_shift)) != 0; }
+  bool is_vfinal() const                         { return (_flags & (1 << is_vfinal_shift))         != 0; }
+  bool has_appendix() const                      { return (_flags & (1 << has_appendix_shift))      != 0; }
+  bool is_method_entry() const                   { return (_flags & (1 << is_field_entry_shift))    == 0; }
+  bool is_field_entry() const                    { return (_flags & (1 << is_field_entry_shift))    != 0; }
+  bool is_byte() const                           { return flag_state() == btos; }
+  bool is_char() const                           { return flag_state() == ctos; }
+  bool is_short() const                          { return flag_state() == stos; }
+  bool is_int() const                            { return flag_state() == itos; }
+  bool is_long() const                           { return flag_state() == ltos; }
+  bool is_float() const                          { return flag_state() == ftos; }
+  bool is_double() const                         { return flag_state() == dtos; }
+  bool is_object() const                         { return flag_state() == atos; }
+  TosState flag_state() const                    { assert((uint)number_of_states <= (uint)tos_state_mask+1, "");
+                                                   return (TosState)((_flags >> tos_state_shift) & tos_state_mask); }
+
+  // Code generation support
+  static WordSize size()                         { return in_WordSize(sizeof(ConstantPoolCacheEntry) / HeapWordSize); }
+  static ByteSize size_in_bytes()                { return in_ByteSize(sizeof(ConstantPoolCacheEntry)); }
+  static ByteSize indices_offset()               { return byte_offset_of(ConstantPoolCacheEntry, _indices); }
+  static ByteSize f1_offset()                    { return byte_offset_of(ConstantPoolCacheEntry, _f1); }
+  static ByteSize f2_offset()                    { return byte_offset_of(ConstantPoolCacheEntry, _f2); }
+  static ByteSize flags_offset()                 { return byte_offset_of(ConstantPoolCacheEntry, _flags); }
+
+  // RedefineClasses() API support:
+  // If this constantPoolCacheEntry refers to old_method then update it
+  // to refer to new_method.
+  // trace_name_printed is set to true if the current call has
+  // printed the klass name so that other routines in the adjust_*
+  // group don't print the klass name.
+  bool adjust_method_entry(Method* old_method, Method* new_method,
+         bool * trace_name_printed);
+  NOT_PRODUCT(bool check_no_old_entries();)
+  bool is_interesting_method_entry(Klass* k);
+
+  // Debugging & Printing
+  void print (outputStream* st, int index) const;
+  void verify(outputStream* st) const;
+
+  static void verify_tos_state_shift() {
+    // When shifting flags as a 32-bit int, make sure we don't need an extra mask for tos_state:
+    assert((((u4)-1 >> tos_state_shift) & ~tos_state_mask) == 0, "no need for tos_state mask");
+  }
+};
+
+
+// A constant pool cache is a runtime data structure set aside to a constant pool. The cache
+// holds interpreter runtime information for all field access and invoke bytecodes. The cache
+// is created and initialized before a class is actively used (i.e., initialized), the indivi-
+// dual cache entries are filled at resolution (i.e., "link") time (see also: rewriter.*).
+
+class ConstantPoolCache: public MetaspaceObj {
+  friend class VMStructs;
+  friend class MetadataFactory;
+ private:
+  int             _length;
+  ConstantPool* _constant_pool;                // the corresponding constant pool
+
+  // Sizing
+  debug_only(friend class ClassVerifier;)
+
+  // Constructor
+  ConstantPoolCache(int length) : _length(length), _constant_pool(NULL) {
+    for (int i = 0; i < length; i++) {
+      assert(entry_at(i)->is_f1_null(), "Failed to clear?");
+    }
+  }
+
+ public:
+  static ConstantPoolCache* allocate(ClassLoaderData* loader_data, int length, TRAPS);
+  bool is_constantPoolCache() const { return true; }
+
+  int length() const                             { return _length; }
+ private:
+  void set_length(int length)                    { _length = length; }
+
+  static int header_size()                       { return sizeof(ConstantPoolCache) / HeapWordSize; }
+  static int size(int length)                    { return align_object_size(header_size() + length * in_words(ConstantPoolCacheEntry::size())); }
+ public:
+  int size() const                               { return size(length()); }
+ private:
+
+  // Helpers
+  ConstantPool**        constant_pool_addr()   { return &_constant_pool; }
+  ConstantPoolCacheEntry* base() const           { return (ConstantPoolCacheEntry*)((address)this + in_bytes(base_offset())); }
+
+  friend class constantPoolCacheKlass;
+  friend class ConstantPoolCacheEntry;
+
+ public:
+  // Initialization
+  void initialize(intArray& inverse_index_map, intArray& invokedynamic_references_map);
+
+  // Accessors
+  void set_constant_pool(ConstantPool* pool)   { _constant_pool = pool; }
+  ConstantPool* constant_pool() const          { return _constant_pool; }
+  // Fetches the entry at the given index.
+  // In either case the index must not be encoded or byte-swapped in any way.
+  ConstantPoolCacheEntry* entry_at(int i) const {
+    assert(0 <= i && i < length(), "index out of bounds");
+    return base() + i;
+  }
+
+  // Code generation
+  static ByteSize base_offset()                  { return in_ByteSize(sizeof(ConstantPoolCache)); }
+  static ByteSize entry_offset(int raw_index) {
+    int index = raw_index;
+    return (base_offset() + ConstantPoolCacheEntry::size_in_bytes() * index);
+  }
+
+  // RedefineClasses() API support:
+  // If any entry of this constantPoolCache points to any of
+  // old_methods, replace it with the corresponding new_method.
+  // trace_name_printed is set to true if the current call has
+  // printed the klass name so that other routines in the adjust_*
+  // group don't print the klass name.
+  void adjust_method_entries(Method** old_methods, Method** new_methods,
+                             int methods_length, bool * trace_name_printed);
+  NOT_PRODUCT(bool check_no_old_entries();)
+
+  // Deallocate - no fields to deallocate
+  DEBUG_ONLY(bool on_stack() { return false; })
+  void deallocate_contents(ClassLoaderData* data) {}
+  bool is_klass() const { return false; }
+
+  // Printing
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
+  const char* internal_name() const { return "{constant pool cache}"; }
+
+  // Verify
+  void verify_on(outputStream* st);
+};
+
+#endif // SHARE_VM_OOPS_CPCACHEOOP_HPP
--- a/src/share/vm/oops/cpCacheKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) 1998, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.hpp"
-#include "interpreter/bytecodes.hpp"
-#include "memory/genOopClosures.inline.hpp"
-#include "memory/permGen.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/cpCacheKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/handles.inline.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-
-int constantPoolCacheKlass::oop_size(oop obj) const {
-  assert(obj->is_constantPoolCache(), "must be constantPool");
-  return constantPoolCacheOop(obj)->object_size();
-}
-
-
-constantPoolCacheOop constantPoolCacheKlass::allocate(int length,
-                                                      TRAPS) {
-  // allocate memory
-  int size = constantPoolCacheOopDesc::object_size(length);
-
-  KlassHandle klass (THREAD, as_klassOop());
-
-  // Commented out below is the original code.  The code from
-  // permanent_obj_allocate() was in-lined so that we could
-  // set the _length field, necessary to correctly compute its
-  // size(), before setting its klass word further below.
-  // constantPoolCacheOop cache = (constantPoolCacheOop)
-  //   CollectedHeap::permanent_obj_allocate(klass, size, CHECK_NULL);
-
-  oop obj = CollectedHeap::permanent_obj_allocate_no_klass_install(klass, size, CHECK_NULL);
-#ifndef PRODUCT
-  const size_t hs = oopDesc::header_size();
-  Universe::heap()->check_for_bad_heap_word_value(((HeapWord*) obj)+hs, size-hs);
-#endif
-  constantPoolCacheOop cache = (constantPoolCacheOop) obj;
-  assert(!UseConcMarkSweepGC || obj->klass_or_null() == NULL,
-         "klass should be NULL here when using CMS");
-  cache->set_length(length);  // should become visible before klass is set below.
-  cache->set_constant_pool(NULL);
-
-  OrderAccess::storestore();
-  obj->set_klass(klass());
-  assert(cache->size() == size, "Incorrect cache->size()");
-  return cache;
-}
-
-klassOop constantPoolCacheKlass::create_klass(TRAPS) {
-  constantPoolCacheKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-
-void constantPoolCacheKlass::oop_follow_contents(oop obj) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolCacheKlassObj never moves.
-  // gc of constant pool cache instance variables
-  MarkSweep::mark_and_push((oop*)cache->constant_pool_addr());
-  // gc of constant pool cache entries
-  int i = cache->length();
-  while (i-- > 0) cache->entry_at(i)->follow_contents();
-}
-
-#ifndef SERIALGC
-void constantPoolCacheKlass::oop_follow_contents(ParCompactionManager* cm,
-                                                 oop obj) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolCacheKlassObj never moves.
-  // gc of constant pool cache instance variables
-  PSParallelCompact::mark_and_push(cm, (oop*)cache->constant_pool_addr());
-  // gc of constant pool cache entries
-  int i = cache->length();
-  while (i-- > 0) cache->entry_at(i)->follow_contents(cm);
-}
-#endif // SERIALGC
-
-
-int constantPoolCacheKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cache->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolCacheKlassObj never moves.
-  // iteration over constant pool cache instance variables
-  blk->do_oop((oop*)cache->constant_pool_addr());
-  // iteration over constant pool cache entries
-  for (int i = 0; i < cache->length(); i++) cache->entry_at(i)->oop_iterate(blk);
-  return size;
-}
-
-
-int constantPoolCacheKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cache->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolCacheKlassObj never moves.
-  // iteration over constant pool cache instance variables
-  oop* addr = (oop*)cache->constant_pool_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  // iteration over constant pool cache entries
-  for (int i = 0; i < cache->length(); i++) cache->entry_at(i)->oop_iterate_m(blk, mr);
-  return size;
-}
-
-int constantPoolCacheKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = cache->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::constantPoolCacheKlassObj never moves.
-  // Iteration over constant pool cache instance variables
-  MarkSweep::adjust_pointer((oop*)cache->constant_pool_addr());
-  // iteration over constant pool cache entries
-  for (int i = 0; i < cache->length(); i++)
-    cache->entry_at(i)->adjust_pointers();
-  return size;
-}
-
-#ifndef SERIALGC
-void constantPoolCacheKlass::oop_push_contents(PSPromotionManager* pm,
-                                               oop obj) {
-  assert(obj->is_constantPoolCache(), "should be constant pool");
-  if (ScavengeRootsInCode) {
-    constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-    // during a scavenge, it is safe to inspect my pool, since it is perm
-    constantPoolOop pool = cache->constant_pool();
-    assert(pool->is_constantPool(), "should be constant pool");
-    for (int i = 0; i < cache->length(); i++) {
-      ConstantPoolCacheEntry* e = cache->entry_at(i);
-      oop* p = (oop*)&e->_f1;
-      if (PSScavenge::should_scavenge(p))
-        pm->claim_or_forward_depth(p);
-      assert(!(e->is_vfinal() && PSScavenge::should_scavenge((oop*)&e->_f2)),
-             "no live oops here");
-    }
-  }
-}
-
-int
-constantPoolCacheKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-
-  // Iteration over constant pool cache instance variables
-  PSParallelCompact::adjust_pointer((oop*)cache->constant_pool_addr());
-
-  // iteration over constant pool cache entries
-  for (int i = 0; i < cache->length(); ++i) {
-    cache->entry_at(i)->update_pointers();
-  }
-
-  return cache->object_size();
-}
-#endif // SERIALGC
-
-void constantPoolCacheKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // super print
-  Klass::oop_print_on(obj, st);
-  // print constant pool cache entries
-  for (int i = 0; i < cache->length(); i++) cache->entry_at(i)->print(st, i);
-}
-
-void constantPoolCacheKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  st->print("cache [%d]", cache->length());
-  cache->print_address_on(st);
-  st->print(" for ");
-  cache->constant_pool()->print_value_on(st);
-}
-
-void constantPoolCacheKlass::oop_verify_on(oop obj, outputStream* st) {
-  guarantee(obj->is_constantPoolCache(), "obj must be constant pool cache");
-  constantPoolCacheOop cache = (constantPoolCacheOop)obj;
-  // super verify
-  Klass::oop_verify_on(obj, st);
-  // print constant pool cache entries
-  for (int i = 0; i < cache->length(); i++) cache->entry_at(i)->verify(st);
-}
-
-
-const char* constantPoolCacheKlass::internal_name() const {
-  return "{constant pool cache}";
-}
--- a/src/share/vm/oops/cpCacheKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 1998, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CPCACHEKLASS_HPP
-#define SHARE_VM_OOPS_CPCACHEKLASS_HPP
-
-#include "oops/arrayKlass.hpp"
-#include "oops/cpCacheOop.hpp"
-#include "oops/instanceKlass.hpp"
-
-class constantPoolCacheKlass: public Klass {
-  juint    _alloc_size;        // allocation profiling support
- public:
-  // Dispatched klass operations
-  bool oop_is_constantPoolCache() const          { return true; }
-  int  oop_size(oop obj) const;
-  int  klass_oop_size() const                    { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(constantPoolCacheKlass);
-  constantPoolCacheOop allocate(int length, TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Casting from klassOop
-  static constantPoolCacheKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_constantPoolCache(), "cast to constantPoolCacheKlass");
-    return (constantPoolCacheKlass*)k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()       { return oopDesc::header_size() + sizeof(constantPoolCacheKlass)/HeapWordSize; }
-  int object_size() const        { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on(oop obj, outputStream* st);
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-};
-
-#endif // SHARE_VM_OOPS_CPCACHEKLASS_HPP
--- a/src/share/vm/oops/cpCacheOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,645 +0,0 @@
-/*
- * Copyright (c) 1998, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "interpreter/interpreter.hpp"
-#include "interpreter/rewriter.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/cpCacheOop.hpp"
-#include "oops/objArrayOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "prims/jvmtiRedefineClassesTrace.hpp"
-#include "prims/methodHandles.hpp"
-#include "runtime/handles.inline.hpp"
-
-
-// Implememtation of ConstantPoolCacheEntry
-
-void ConstantPoolCacheEntry::initialize_entry(int index) {
-  assert(0 < index && index < 0x10000, "sanity check");
-  _indices = index;
-  assert(constant_pool_index() == index, "");
-}
-
-void ConstantPoolCacheEntry::initialize_secondary_entry(int main_index) {
-  assert(0 <= main_index && main_index < 0x10000, "sanity check");
-  _indices = (main_index << main_cp_index_bits);
-  assert(main_entry_index() == main_index, "");
-}
-
-int ConstantPoolCacheEntry::make_flags(TosState state,
-                                       int option_bits,
-                                       int field_index_or_method_params) {
-  assert(state < number_of_states, "Invalid state in make_flags");
-  int f = ((int)state << tos_state_shift) | option_bits | field_index_or_method_params;
-  // Preserve existing flag bit values
-  // The low bits are a field offset, or else the method parameter size.
-#ifdef ASSERT
-  TosState old_state = flag_state();
-  assert(old_state == (TosState)0 || old_state == state,
-         "inconsistent cpCache flags state");
-#endif
-  return (_flags | f) ;
-}
-
-void ConstantPoolCacheEntry::set_bytecode_1(Bytecodes::Code code) {
-  assert(!is_secondary_entry(), "must not overwrite main_entry_index");
-#ifdef ASSERT
-  // Read once.
-  volatile Bytecodes::Code c = bytecode_1();
-  assert(c == 0 || c == code || code == 0, "update must be consistent");
-#endif
-  // Need to flush pending stores here before bytecode is written.
-  OrderAccess::release_store_ptr(&_indices, _indices | ((u_char)code << bytecode_1_shift));
-}
-
-void ConstantPoolCacheEntry::set_bytecode_2(Bytecodes::Code code) {
-  assert(!is_secondary_entry(), "must not overwrite main_entry_index");
-#ifdef ASSERT
-  // Read once.
-  volatile Bytecodes::Code c = bytecode_2();
-  assert(c == 0 || c == code || code == 0, "update must be consistent");
-#endif
-  // Need to flush pending stores here before bytecode is written.
-  OrderAccess::release_store_ptr(&_indices, _indices | ((u_char)code << bytecode_2_shift));
-}
-
-// Sets f1, ordering with previous writes.
-void ConstantPoolCacheEntry::release_set_f1(oop f1) {
-  // Use barriers as in oop_store
-  assert(f1 != NULL, "");
-  oop* f1_addr = (oop*) &_f1;
-  update_barrier_set_pre(f1_addr, f1);
-  OrderAccess::release_store_ptr((intptr_t*)f1_addr, f1);
-  update_barrier_set((void*) f1_addr, f1);
-}
-
-// Sets flags, but only if the value was previously zero.
-bool ConstantPoolCacheEntry::init_flags_atomic(intptr_t flags) {
-  intptr_t result = Atomic::cmpxchg_ptr(flags, &_flags, 0);
-  return (result == 0);
-}
-
-#ifdef ASSERT
-// It is possible to have two different dummy methodOops created
-// when the resolve code for invoke interface executes concurrently
-// Hence the assertion below is weakened a bit for the invokeinterface
-// case.
-bool ConstantPoolCacheEntry::same_methodOop(oop cur_f1, oop f1) {
-  return (cur_f1 == f1 || ((methodOop)cur_f1)->name() ==
-         ((methodOop)f1)->name() || ((methodOop)cur_f1)->signature() ==
-         ((methodOop)f1)->signature());
-}
-#endif
-
-// Note that concurrent update of both bytecodes can leave one of them
-// reset to zero.  This is harmless; the interpreter will simply re-resolve
-// the damaged entry.  More seriously, the memory synchronization is needed
-// to flush other fields (f1, f2) completely to memory before the bytecodes
-// are updated, lest other processors see a non-zero bytecode but zero f1/f2.
-void ConstantPoolCacheEntry::set_field(Bytecodes::Code get_code,
-                                       Bytecodes::Code put_code,
-                                       KlassHandle field_holder,
-                                       int field_index,
-                                       int field_offset,
-                                       TosState field_type,
-                                       bool is_final,
-                                       bool is_volatile) {
-  set_f1(field_holder()->java_mirror());
-  set_f2(field_offset);
-  assert((field_index & field_index_mask) == field_index,
-         "field index does not fit in low flag bits");
-  set_field_flags(field_type,
-                  ((is_volatile ? 1 : 0) << is_volatile_shift) |
-                  ((is_final    ? 1 : 0) << is_final_shift),
-                  field_index);
-  set_bytecode_1(get_code);
-  set_bytecode_2(put_code);
-  NOT_PRODUCT(verify(tty));
-}
-
-void ConstantPoolCacheEntry::set_parameter_size(int value) {
-  // This routine is called only in corner cases where the CPCE is not yet initialized.
-  // See AbstractInterpreter::deopt_continue_after_entry.
-  assert(_flags == 0 || parameter_size() == 0 || parameter_size() == value,
-         err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value));
-  // Setting the parameter size by itself is only safe if the
-  // current value of _flags is 0, otherwise another thread may have
-  // updated it and we don't want to overwrite that value.  Don't
-  // bother trying to update it once it's nonzero but always make
-  // sure that the final parameter size agrees with what was passed.
-  if (_flags == 0) {
-    Atomic::cmpxchg_ptr((value & parameter_size_mask), &_flags, 0);
-  }
-  guarantee(parameter_size() == value,
-            err_msg("size must not change: parameter_size=%d, value=%d", parameter_size(), value));
-}
-
-void ConstantPoolCacheEntry::set_method(Bytecodes::Code invoke_code,
-                                        methodHandle method,
-                                        int vtable_index) {
-  assert(!is_secondary_entry(), "");
-  assert(method->interpreter_entry() != NULL, "should have been set at this point");
-  assert(!method->is_obsolete(),  "attempt to write obsolete method to cpCache");
-
-  int byte_no = -1;
-  bool change_to_virtual = false;
-
-  switch (invoke_code) {
-    case Bytecodes::_invokeinterface:
-      // We get here from InterpreterRuntime::resolve_invoke when an invokeinterface
-      // instruction somehow links to a non-interface method (in Object).
-      // In that case, the method has no itable index and must be invoked as a virtual.
-      // Set a flag to keep track of this corner case.
-      change_to_virtual = true;
-
-      // ...and fall through as if we were handling invokevirtual:
-    case Bytecodes::_invokevirtual:
-      {
-        if (method->can_be_statically_bound()) {
-          // set_f2_as_vfinal_method checks if is_vfinal flag is true.
-          set_method_flags(as_TosState(method->result_type()),
-                           (                             1      << is_vfinal_shift) |
-                           ((method->is_final_method() ? 1 : 0) << is_final_shift)  |
-                           ((change_to_virtual         ? 1 : 0) << is_forced_virtual_shift),
-                           method()->size_of_parameters());
-          set_f2_as_vfinal_method(method());
-        } else {
-          assert(vtable_index >= 0, "valid index");
-          assert(!method->is_final_method(), "sanity");
-          set_method_flags(as_TosState(method->result_type()),
-                           ((change_to_virtual ? 1 : 0) << is_forced_virtual_shift),
-                           method()->size_of_parameters());
-          set_f2(vtable_index);
-        }
-        byte_no = 2;
-        break;
-      }
-
-    case Bytecodes::_invokespecial:
-    case Bytecodes::_invokestatic:
-      // Note:  Read and preserve the value of the is_vfinal flag on any
-      // invokevirtual bytecode shared with this constant pool cache entry.
-      // It is cheap and safe to consult is_vfinal() at all times.
-      // Once is_vfinal is set, it must stay that way, lest we get a dangling oop.
-      set_method_flags(as_TosState(method->result_type()),
-                       ((is_vfinal()               ? 1 : 0) << is_vfinal_shift) |
-                       ((method->is_final_method() ? 1 : 0) << is_final_shift),
-                       method()->size_of_parameters());
-      set_f1(method());
-      byte_no = 1;
-      break;
-    default:
-      ShouldNotReachHere();
-      break;
-  }
-
-  // Note:  byte_no also appears in TemplateTable::resolve.
-  if (byte_no == 1) {
-    assert(invoke_code != Bytecodes::_invokevirtual &&
-           invoke_code != Bytecodes::_invokeinterface, "");
-    set_bytecode_1(invoke_code);
-  } else if (byte_no == 2)  {
-    if (change_to_virtual) {
-      assert(invoke_code == Bytecodes::_invokeinterface, "");
-      // NOTE: THIS IS A HACK - BE VERY CAREFUL!!!
-      //
-      // Workaround for the case where we encounter an invokeinterface, but we
-      // should really have an _invokevirtual since the resolved method is a
-      // virtual method in java.lang.Object. This is a corner case in the spec
-      // but is presumably legal. javac does not generate this code.
-      //
-      // We set bytecode_1() to _invokeinterface, because that is the
-      // bytecode # used by the interpreter to see if it is resolved.
-      // We set bytecode_2() to _invokevirtual.
-      // See also interpreterRuntime.cpp. (8/25/2000)
-      // Only set resolved for the invokeinterface case if method is public.
-      // Otherwise, the method needs to be reresolved with caller for each
-      // interface call.
-      if (method->is_public()) set_bytecode_1(invoke_code);
-    } else {
-      assert(invoke_code == Bytecodes::_invokevirtual, "");
-    }
-    // set up for invokevirtual, even if linking for invokeinterface also:
-    set_bytecode_2(Bytecodes::_invokevirtual);
-  } else {
-    ShouldNotReachHere();
-  }
-  NOT_PRODUCT(verify(tty));
-}
-
-
-void ConstantPoolCacheEntry::set_interface_call(methodHandle method, int index) {
-  assert(!is_secondary_entry(), "");
-  klassOop interf = method->method_holder();
-  assert(instanceKlass::cast(interf)->is_interface(), "must be an interface");
-  assert(!method->is_final_method(), "interfaces do not have final methods; cannot link to one here");
-  set_f1(interf);
-  set_f2(index);
-  set_method_flags(as_TosState(method->result_type()),
-                   0,  // no option bits
-                   method()->size_of_parameters());
-  set_bytecode_1(Bytecodes::_invokeinterface);
-}
-
-
-void ConstantPoolCacheEntry::set_method_handle(methodHandle adapter, Handle appendix) {
-  assert(!is_secondary_entry(), "");
-  set_method_handle_common(Bytecodes::_invokehandle, adapter, appendix);
-}
-
-void ConstantPoolCacheEntry::set_dynamic_call(methodHandle adapter, Handle appendix) {
-  assert(is_secondary_entry(), "");
-  set_method_handle_common(Bytecodes::_invokedynamic, adapter, appendix);
-}
-
-void ConstantPoolCacheEntry::set_method_handle_common(Bytecodes::Code invoke_code, methodHandle adapter, Handle appendix) {
-  // NOTE: This CPCE can be the subject of data races.
-  // There are three words to update: flags, f2, f1 (in that order).
-  // Writers must store all other values before f1.
-  // Readers must test f1 first for non-null before reading other fields.
-  // Competing writers must acquire exclusive access on the first
-  // write, to flags, using a compare/exchange.
-  // A losing writer must spin until the winner writes f1,
-  // so that when he returns, he can use the linked cache entry.
-
-  bool has_appendix = appendix.not_null();
-  if (!has_appendix) {
-    // The extra argument is not used, but we need a non-null value to signify linkage state.
-    // Set it to something benign that will never leak memory.
-    appendix = Universe::void_mirror();
-  }
-
-  bool owner =
-    init_method_flags_atomic(as_TosState(adapter->result_type()),
-                   ((has_appendix ?  1 : 0) << has_appendix_shift) |
-                   (                 1      << is_vfinal_shift)    |
-                   (                 1      << is_final_shift),
-                   adapter->size_of_parameters());
-  if (!owner) {
-    while (is_f1_null()) {
-      // Pause momentarily on a low-level lock, to allow racing thread to win.
-      MutexLockerEx mu(Patching_lock, Mutex::_no_safepoint_check_flag);
-      os::yield();
-    }
-    return;
-  }
-
-  if (TraceInvokeDynamic) {
-    tty->print_cr("set_method_handle bc=%d appendix="PTR_FORMAT"%s method="PTR_FORMAT" ",
-                  invoke_code,
-                  (intptr_t)appendix(), (has_appendix ? "" : " (unused)"),
-                  (intptr_t)adapter());
-    adapter->print();
-    if (has_appendix)  appendix()->print();
-  }
-
-  // Method handle invokes and invokedynamic sites use both cp cache words.
-  // f1, if not null, contains a value passed as a trailing argument to the adapter.
-  // In the general case, this could be the call site's MethodType,
-  // for use with java.lang.Invokers.checkExactType, or else a CallSite object.
-  // f2 contains the adapter method which manages the actual call.
-  // In the general case, this is a compiled LambdaForm.
-  // (The Java code is free to optimize these calls by binding other
-  // sorts of methods and appendices to call sites.)
-  // JVM-level linking is via f2, as if for invokevfinal, and signatures are erased.
-  // The appendix argument (if any) is added to the signature, and is counted in the parameter_size bits.
-  // In principle this means that the method (with appendix) could take up to 256 parameter slots.
-  //
-  // This means that given a call site like (List)mh.invoke("foo"),
-  // the f2 method has signature '(Ljl/Object;Ljl/invoke/MethodType;)Ljl/Object;',
-  // not '(Ljava/lang/String;)Ljava/util/List;'.
-  // The fact that String and List are involved is encoded in the MethodType in f1.
-  // This allows us to create fewer method oops, while keeping type safety.
-  //
-  set_f2_as_vfinal_method(adapter());
-  assert(appendix.not_null(), "needed for linkage state");
-  release_set_f1(appendix());  // This must be the last one to set (see NOTE above)!
-  if (!is_secondary_entry()) {
-    // The interpreter assembly code does not check byte_2,
-    // but it is used by is_resolved, method_if_resolved, etc.
-    set_bytecode_2(invoke_code);
-  }
-  NOT_PRODUCT(verify(tty));
-  if (TraceInvokeDynamic) {
-    this->print(tty, 0);
-  }
-}
-
-methodOop ConstantPoolCacheEntry::method_if_resolved(constantPoolHandle cpool) {
-  if (is_secondary_entry()) {
-    if (!is_f1_null())
-      return f2_as_vfinal_method();
-    return NULL;
-  }
-  // Decode the action of set_method and set_interface_call
-  Bytecodes::Code invoke_code = bytecode_1();
-  if (invoke_code != (Bytecodes::Code)0) {
-    oop f1 = _f1;
-    if (f1 != NULL) {
-      switch (invoke_code) {
-      case Bytecodes::_invokeinterface:
-        assert(f1->is_klass(), "");
-        return klassItable::method_for_itable_index(klassOop(f1), f2_as_index());
-      case Bytecodes::_invokestatic:
-      case Bytecodes::_invokespecial:
-        assert(!has_appendix(), "");
-        assert(f1->is_method(), "");
-        return methodOop(f1);
-      }
-    }
-  }
-  invoke_code = bytecode_2();
-  if (invoke_code != (Bytecodes::Code)0) {
-    switch (invoke_code) {
-    case Bytecodes::_invokevirtual:
-      if (is_vfinal()) {
-        // invokevirtual
-        methodOop m = f2_as_vfinal_method();
-        assert(m->is_method(), "");
-        return m;
-      } else {
-        int holder_index = cpool->uncached_klass_ref_index_at(constant_pool_index());
-        if (cpool->tag_at(holder_index).is_klass()) {
-          klassOop klass = cpool->resolved_klass_at(holder_index);
-          if (!Klass::cast(klass)->oop_is_instance())
-            klass = SystemDictionary::Object_klass();
-          return instanceKlass::cast(klass)->method_at_vtable(f2_as_index());
-        }
-      }
-      break;
-    case Bytecodes::_invokehandle:
-    case Bytecodes::_invokedynamic:
-      return f2_as_vfinal_method();
-    }
-  }
-  return NULL;
-}
-
-
-class LocalOopClosure: public OopClosure {
- private:
-  void (*_f)(oop*);
-
- public:
-  LocalOopClosure(void f(oop*))        { _f = f; }
-  virtual void do_oop(oop* o)          { _f(o); }
-  virtual void do_oop(narrowOop *o)    { ShouldNotReachHere(); }
-};
-
-
-void ConstantPoolCacheEntry::oops_do(void f(oop*)) {
-  LocalOopClosure blk(f);
-  oop_iterate(&blk);
-}
-
-
-void ConstantPoolCacheEntry::oop_iterate(OopClosure* blk) {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  blk->do_oop((oop*)&_f1);
-  if (is_vfinal()) {
-    blk->do_oop((oop*)&_f2);
-  }
-}
-
-
-void ConstantPoolCacheEntry::oop_iterate_m(OopClosure* blk, MemRegion mr) {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  if (mr.contains((oop *)&_f1)) blk->do_oop((oop*)&_f1);
-  if (is_vfinal()) {
-    if (mr.contains((oop *)&_f2)) blk->do_oop((oop*)&_f2);
-  }
-}
-
-
-void ConstantPoolCacheEntry::follow_contents() {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  MarkSweep::mark_and_push((oop*)&_f1);
-  if (is_vfinal()) {
-    MarkSweep::mark_and_push((oop*)&_f2);
-  }
-}
-
-#ifndef SERIALGC
-void ConstantPoolCacheEntry::follow_contents(ParCompactionManager* cm) {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  PSParallelCompact::mark_and_push(cm, (oop*)&_f1);
-  if (is_vfinal()) {
-    PSParallelCompact::mark_and_push(cm, (oop*)&_f2);
-  }
-}
-#endif // SERIALGC
-
-void ConstantPoolCacheEntry::adjust_pointers() {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  MarkSweep::adjust_pointer((oop*)&_f1);
-  if (is_vfinal()) {
-    MarkSweep::adjust_pointer((oop*)&_f2);
-  }
-}
-
-#ifndef SERIALGC
-void ConstantPoolCacheEntry::update_pointers() {
-  assert(in_words(size()) == 4, "check code below - may need adjustment");
-  // field[1] is always oop or NULL
-  PSParallelCompact::adjust_pointer((oop*)&_f1);
-  if (is_vfinal()) {
-    PSParallelCompact::adjust_pointer((oop*)&_f2);
-  }
-}
-#endif // SERIALGC
-
-// RedefineClasses() API support:
-// If this constantPoolCacheEntry refers to old_method then update it
-// to refer to new_method.
-bool ConstantPoolCacheEntry::adjust_method_entry(methodOop old_method,
-       methodOop new_method, bool * trace_name_printed) {
-
-  if (is_vfinal()) {
-    // virtual and final so _f2 contains method ptr instead of vtable index
-    if (f2_as_vfinal_method() == old_method) {
-      // match old_method so need an update
-      // NOTE: can't use set_f2_as_vfinal_method as it asserts on different values
-      _f2 = (intptr_t)new_method;
-      if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) {
-        if (!(*trace_name_printed)) {
-          // RC_TRACE_MESG macro has an embedded ResourceMark
-          RC_TRACE_MESG(("adjust: name=%s",
-            Klass::cast(old_method->method_holder())->external_name()));
-          *trace_name_printed = true;
-        }
-        // RC_TRACE macro has an embedded ResourceMark
-        RC_TRACE(0x00400000, ("cpc vf-entry update: %s(%s)",
-          new_method->name()->as_C_string(),
-          new_method->signature()->as_C_string()));
-      }
-
-      return true;
-    }
-
-    // f1() is not used with virtual entries so bail out
-    return false;
-  }
-
-  if ((oop)_f1 == NULL) {
-    // NULL f1() means this is a virtual entry so bail out
-    // We are assuming that the vtable index does not need change.
-    return false;
-  }
-
-  if ((oop)_f1 == old_method) {
-    _f1 = new_method;
-    if (RC_TRACE_IN_RANGE(0x00100000, 0x00400000)) {
-      if (!(*trace_name_printed)) {
-        // RC_TRACE_MESG macro has an embedded ResourceMark
-        RC_TRACE_MESG(("adjust: name=%s",
-          Klass::cast(old_method->method_holder())->external_name()));
-        *trace_name_printed = true;
-      }
-      // RC_TRACE macro has an embedded ResourceMark
-      RC_TRACE(0x00400000, ("cpc entry update: %s(%s)",
-        new_method->name()->as_C_string(),
-        new_method->signature()->as_C_string()));
-    }
-
-    return true;
-  }
-
-  return false;
-}
-
-bool ConstantPoolCacheEntry::is_interesting_method_entry(klassOop k) {
-  if (!is_method_entry()) {
-    // not a method entry so not interesting by default
-    return false;
-  }
-
-  methodOop m = NULL;
-  if (is_vfinal()) {
-    // virtual and final so _f2 contains method ptr instead of vtable index
-    m = f2_as_vfinal_method();
-  } else if (is_f1_null()) {
-    // NULL _f1 means this is a virtual entry so also not interesting
-    return false;
-  } else {
-    oop f1 = _f1;  // _f1 is volatile
-    if (!f1->is_method()) {
-      // _f1 can also contain a klassOop for an interface
-      return false;
-    }
-    m = f1_as_method();
-  }
-
-  assert(m != NULL && m->is_method(), "sanity check");
-  if (m == NULL || !m->is_method() || m->method_holder() != k) {
-    // robustness for above sanity checks or method is not in
-    // the interesting class
-    return false;
-  }
-
-  // the method is in the interesting class so the entry is interesting
-  return true;
-}
-
-void ConstantPoolCacheEntry::print(outputStream* st, int index) const {
-  // print separator
-  if (index == 0) st->print_cr("                 -------------");
-  // print entry
-  st->print("%3d  ("PTR_FORMAT")  ", index, (intptr_t)this);
-  if (is_secondary_entry())
-    st->print_cr("[%5d|secondary]", main_entry_index());
-  else
-    st->print_cr("[%02x|%02x|%5d]", bytecode_2(), bytecode_1(), constant_pool_index());
-  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)(oop)_f1);
-  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)_f2);
-  st->print_cr("                 [   "PTR_FORMAT"]", (intptr_t)_flags);
-  st->print_cr("                 -------------");
-}
-
-void ConstantPoolCacheEntry::verify(outputStream* st) const {
-  // not implemented yet
-}
-
-// Implementation of ConstantPoolCache
-
-void constantPoolCacheOopDesc::initialize(intArray& inverse_index_map) {
-  assert(inverse_index_map.length() == length(), "inverse index map must have same length as cache");
-  for (int i = 0; i < length(); i++) {
-    ConstantPoolCacheEntry* e = entry_at(i);
-    int original_index = inverse_index_map[i];
-    if ((original_index & Rewriter::_secondary_entry_tag) != 0) {
-      int main_index = (original_index - Rewriter::_secondary_entry_tag);
-      assert(!entry_at(main_index)->is_secondary_entry(), "valid main index");
-      e->initialize_secondary_entry(main_index);
-    } else {
-      e->initialize_entry(original_index);
-    }
-    assert(entry_at(i) == e, "sanity");
-  }
-}
-
-// RedefineClasses() API support:
-// If any entry of this constantPoolCache points to any of
-// old_methods, replace it with the corresponding new_method.
-void constantPoolCacheOopDesc::adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
-                                                     int methods_length, bool * trace_name_printed) {
-
-  if (methods_length == 0) {
-    // nothing to do if there are no methods
-    return;
-  }
-
-  // get shorthand for the interesting class
-  klassOop old_holder = old_methods[0]->method_holder();
-
-  for (int i = 0; i < length(); i++) {
-    if (!entry_at(i)->is_interesting_method_entry(old_holder)) {
-      // skip uninteresting methods
-      continue;
-    }
-
-    // The constantPoolCache contains entries for several different
-    // things, but we only care about methods. In fact, we only care
-    // about methods in the same class as the one that contains the
-    // old_methods. At this point, we have an interesting entry.
-
-    for (int j = 0; j < methods_length; j++) {
-      methodOop old_method = old_methods[j];
-      methodOop new_method = new_methods[j];
-
-      if (entry_at(i)->adjust_method_entry(old_method, new_method,
-          trace_name_printed)) {
-        // current old_method matched this entry and we updated it so
-        // break out and get to the next interesting entry if there one
-        break;
-      }
-    }
-  }
-}
--- a/src/share/vm/oops/cpCacheOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,464 +0,0 @@
-/*
- * Copyright (c) 1998, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_CPCACHEOOP_HPP
-#define SHARE_VM_OOPS_CPCACHEOOP_HPP
-
-#include "interpreter/bytecodes.hpp"
-#include "memory/allocation.hpp"
-#include "oops/arrayOop.hpp"
-#include "utilities/array.hpp"
-
-// A ConstantPoolCacheEntry describes an individual entry of the constant
-// pool cache. There's 2 principal kinds of entries: field entries for in-
-// stance & static field access, and method entries for invokes. Some of
-// the entry layout is shared and looks as follows:
-//
-// bit number |31                0|
-// bit length |-8--|-8--|---16----|
-// --------------------------------
-// _indices   [ b2 | b1 |  index  ]  index = constant_pool_index (!= 0, normal entries only)
-// _indices   [  index  |  00000  ]  index = main_entry_index (secondary entries only)
-// _f1        [  entry specific   ]  method, klass, or oop (MethodType or CallSite)
-// _f2        [  entry specific   ]  vtable index or vfinal method
-// _flags     [tos|0|00|00|00|f|v|f2|unused|field_index] (for field entries)
-// bit length [ 4 |1|1 |1 | 1|1|1| 1|---5--|----16-----]
-// _flags     [tos|M|vf|fv|ea|f|0|f2|unused|00000|psize] (for method entries)
-// bit length [ 4 |1|1 |1 | 1|1|1| 1|---5--|--8--|--8--]
-
-// --------------------------------
-//
-// with:
-// index  = original constant pool index
-// b1     = bytecode 1
-// b2     = bytecode 2
-// psize  = parameters size (method entries only)
-// field_index = index into field information in holder instanceKlass
-//          The index max is 0xffff (max number of fields in constant pool)
-//          and is multiplied by (instanceKlass::next_offset) when accessing.
-// t      = TosState (see below)
-// f      = field is marked final (see below)
-// f2     = virtual but final (method entries only: is_vfinal())
-// v      = field is volatile (see below)
-// m      = invokeinterface used for method in class Object (see below)
-// h      = RedefineClasses/Hotswap bit (see below)
-//
-// The flags after TosState have the following interpretation:
-// bit 27: 0 for fields, 1 for methods
-// f  flag true if field is marked final
-// v  flag true if field is volatile (only for fields)
-// f2 flag true if f2 contains an oop (e.g., virtual final method)
-// fv flag true if invokeinterface used for method in class Object
-//
-// The flags 31, 30, 29, 28 together build a 4 bit number 0 to 8 with the
-// following mapping to the TosState states:
-//
-// btos: 0
-// ctos: 1
-// stos: 2
-// itos: 3
-// ltos: 4
-// ftos: 5
-// dtos: 6
-// atos: 7
-// vtos: 8
-//
-// Entry specific: field entries:
-// _indices = get (b1 section) and put (b2 section) bytecodes, original constant pool index
-// _f1      = field holder (as a java.lang.Class, not a klassOop)
-// _f2      = field offset in bytes
-// _flags   = field type information, original FieldInfo index in field holder
-//            (field_index section)
-//
-// Entry specific: method entries:
-// _indices = invoke code for f1 (b1 section), invoke code for f2 (b2 section),
-//            original constant pool index
-// _f1      = methodOop for non-virtual calls, unused by virtual calls.
-//            for interface calls, which are essentially virtual but need a klass,
-//            contains klassOop for the corresponding interface.
-//            for invokedynamic, f1 contains a site-specific CallSite object (as an appendix)
-//            for invokehandle, f1 contains a site-specific MethodType object (as an appendix)
-//            (upcoming metadata changes will move the appendix to a separate array)
-// _f2      = vtable/itable index (or final methodOop) for virtual calls only,
-//            unused by non-virtual.  The is_vfinal flag indicates this is a
-//            method pointer for a final method, not an index.
-// _flags   = method type info (t section),
-//            virtual final bit (vfinal),
-//            parameter size (psize section)
-//
-// Note: invokevirtual & invokespecial bytecodes can share the same constant
-//       pool entry and thus the same constant pool cache entry. All invoke
-//       bytecodes but invokevirtual use only _f1 and the corresponding b1
-//       bytecode, while invokevirtual uses only _f2 and the corresponding
-//       b2 bytecode.  The value of _flags is shared for both types of entries.
-//
-// The fields are volatile so that they are stored in the order written in the
-// source code.  The _indices field with the bytecode must be written last.
-
-class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
-  friend class VMStructs;
-  friend class constantPoolCacheKlass;
-  friend class constantPoolOopDesc;  //resolve_constant_at_impl => set_f1
-
- private:
-  volatile intx     _indices;  // constant pool index & rewrite bytecodes
-  volatile oop      _f1;       // entry specific oop field
-  volatile intx     _f2;       // entry specific int/oop field
-  volatile intx     _flags;    // flags
-
-
-#ifdef ASSERT
-  bool same_methodOop(oop cur_f1, oop f1);
-#endif
-
-  void set_bytecode_1(Bytecodes::Code code);
-  void set_bytecode_2(Bytecodes::Code code);
-  void set_f1(oop f1)                            {
-    oop existing_f1 = _f1; // read once
-    assert(existing_f1 == NULL || existing_f1 == f1, "illegal field change");
-    oop_store(&_f1, f1);
-  }
-  void release_set_f1(oop f1);
-  void set_f2(intx f2)                           { assert(_f2 == 0 || _f2 == f2,            "illegal field change"); _f2 = f2; }
-  void set_f2_as_vfinal_method(methodOop f2)     { assert(_f2 == 0 || _f2 == (intptr_t) f2, "illegal field change"); assert(is_vfinal(), "flags must be set"); _f2 = (intptr_t) f2; }
-  int make_flags(TosState state, int option_bits, int field_index_or_method_params);
-  void set_flags(intx flags)                     { _flags = flags; }
-  bool init_flags_atomic(intx flags);
-  void set_field_flags(TosState field_type, int option_bits, int field_index) {
-    assert((field_index & field_index_mask) == field_index, "field_index in range");
-    set_flags(make_flags(field_type, option_bits | (1 << is_field_entry_shift), field_index));
-  }
-  void set_method_flags(TosState return_type, int option_bits, int method_params) {
-    assert((method_params & parameter_size_mask) == method_params, "method_params in range");
-    set_flags(make_flags(return_type, option_bits, method_params));
-  }
-  bool init_method_flags_atomic(TosState return_type, int option_bits, int method_params) {
-    assert((method_params & parameter_size_mask) == method_params, "method_params in range");
-    return init_flags_atomic(make_flags(return_type, option_bits, method_params));
-  }
-
- public:
-  // specific bit definitions for the flags field:
-  // (Note: the interpreter must use these definitions to access the CP cache.)
-  enum {
-    // high order bits are the TosState corresponding to field type or method return type
-    tos_state_bits             = 4,
-    tos_state_mask             = right_n_bits(tos_state_bits),
-    tos_state_shift            = BitsPerInt - tos_state_bits,  // see verify_tos_state_shift below
-    // misc. option bits; can be any bit position in [16..27]
-    is_vfinal_shift            = 21,
-    is_volatile_shift          = 22,
-    is_final_shift             = 23,
-    has_appendix_shift         = 24,
-    is_forced_virtual_shift    = 25,
-    is_field_entry_shift       = 26,
-    // low order bits give field index (for FieldInfo) or method parameter size:
-    field_index_bits           = 16,
-    field_index_mask           = right_n_bits(field_index_bits),
-    parameter_size_bits        = 8,  // subset of field_index_mask, range is 0..255
-    parameter_size_mask        = right_n_bits(parameter_size_bits),
-    option_bits_mask           = ~(((-1) << tos_state_shift) | (field_index_mask | parameter_size_mask))
-  };
-
-  // specific bit definitions for the indices field:
-  enum {
-    main_cp_index_bits         = 2*BitsPerByte,
-    main_cp_index_mask         = right_n_bits(main_cp_index_bits),
-    bytecode_1_shift           = main_cp_index_bits,
-    bytecode_1_mask            = right_n_bits(BitsPerByte), // == (u1)0xFF
-    bytecode_2_shift           = main_cp_index_bits + BitsPerByte,
-    bytecode_2_mask            = right_n_bits(BitsPerByte), // == (u1)0xFF
-    // the secondary cp index overlaps with bytecodes 1 and 2:
-    secondary_cp_index_shift   = bytecode_1_shift,
-    secondary_cp_index_bits    = BitsPerInt - main_cp_index_bits
-  };
-
-
-  // Initialization
-  void initialize_entry(int original_index);     // initialize primary entry
-  void initialize_secondary_entry(int main_index); // initialize secondary entry
-
-  void set_field(                                // sets entry to resolved field state
-    Bytecodes::Code get_code,                    // the bytecode used for reading the field
-    Bytecodes::Code put_code,                    // the bytecode used for writing the field
-    KlassHandle     field_holder,                // the object/klass holding the field
-    int             orig_field_index,            // the original field index in the field holder
-    int             field_offset,                // the field offset in words in the field holder
-    TosState        field_type,                  // the (machine) field type
-    bool            is_final,                     // the field is final
-    bool            is_volatile                  // the field is volatile
-  );
-
-  void set_method(                               // sets entry to resolved method entry
-    Bytecodes::Code invoke_code,                 // the bytecode used for invoking the method
-    methodHandle    method,                      // the method/prototype if any (NULL, otherwise)
-    int             vtable_index                 // the vtable index if any, else negative
-  );
-
-  void set_interface_call(
-    methodHandle method,                         // Resolved method
-    int index                                    // Method index into interface
-  );
-
-  void set_method_handle(
-    methodHandle method,                         // adapter for invokeExact, etc.
-    Handle appendix                              // stored in f1; could be a java.lang.invoke.MethodType
-  );
-
-  void set_dynamic_call(
-    methodHandle method,                         // adapter for this call site
-    Handle appendix                              // stored in f1; could be a java.lang.invoke.CallSite
-  );
-
-  // Common code for invokedynamic and MH invocations.
-
-  // The "appendix" is an optional call-site-specific parameter which is
-  // pushed by the JVM at the end of the argument list.  This argument may
-  // be a MethodType for the MH.invokes and a CallSite for an invokedynamic
-  // instruction.  However, its exact type and use depends on the Java upcall,
-  // which simply returns a compiled LambdaForm along with any reference
-  // that LambdaForm needs to complete the call.  If the upcall returns a
-  // null appendix, the argument is not passed at all.
-  //
-  // The appendix is *not* represented in the signature of the symbolic
-  // reference for the call site, but (if present) it *is* represented in
-  // the methodOop bound to the site.  This means that static and dynamic
-  // resolution logic needs to make slightly different assessments about the
-  // number and types of arguments.
-  void set_method_handle_common(
-    Bytecodes::Code invoke_code,                 // _invokehandle or _invokedynamic
-    methodHandle adapter,                        // invoker method (f2)
-    Handle appendix                              // appendix such as CallSite, MethodType, etc. (f1)
-  );
-
-  methodOop method_if_resolved(constantPoolHandle cpool);
-
-  void set_parameter_size(int value);
-
-  // Which bytecode number (1 or 2) in the index field is valid for this bytecode?
-  // Returns -1 if neither is valid.
-  static int bytecode_number(Bytecodes::Code code) {
-    switch (code) {
-      case Bytecodes::_getstatic       :    // fall through
-      case Bytecodes::_getfield        :    // fall through
-      case Bytecodes::_invokespecial   :    // fall through
-      case Bytecodes::_invokestatic    :    // fall through
-      case Bytecodes::_invokeinterface : return 1;
-      case Bytecodes::_putstatic       :    // fall through
-      case Bytecodes::_putfield        :    // fall through
-      case Bytecodes::_invokehandle    :    // fall through
-      case Bytecodes::_invokedynamic   :    // fall through
-      case Bytecodes::_invokevirtual   : return 2;
-      default                          : break;
-    }
-    return -1;
-  }
-
-  // Has this bytecode been resolved? Only valid for invokes and get/put field/static.
-  bool is_resolved(Bytecodes::Code code) const {
-    switch (bytecode_number(code)) {
-      case 1:  return (bytecode_1() == code);
-      case 2:  return (bytecode_2() == code);
-    }
-    return false;      // default: not resolved
-  }
-
-  // Accessors
-  bool is_secondary_entry() const                { return (_indices & main_cp_index_mask) == 0; }
-  int main_entry_index() const                   { assert(is_secondary_entry(), "must be secondary entry");
-                                                   return ((uintx)_indices >> secondary_cp_index_shift); }
-  int primary_entry_indices() const              { assert(!is_secondary_entry(), "must be main entry");
-                                                   return _indices; }
-  int constant_pool_index() const                { return (primary_entry_indices() & main_cp_index_mask); }
-  Bytecodes::Code bytecode_1() const             { return Bytecodes::cast((primary_entry_indices() >> bytecode_1_shift)
-                                                                          & bytecode_1_mask); }
-  Bytecodes::Code bytecode_2() const             { return Bytecodes::cast((primary_entry_indices() >> bytecode_2_shift)
-                                                                          & bytecode_2_mask); }
-  methodOop f1_as_method() const                 { oop f1 = _f1; assert(f1 == NULL || f1->is_method(), ""); return methodOop(f1); }
-  klassOop  f1_as_klass() const                  { oop f1 = _f1; assert(f1 == NULL || f1->is_klass(), ""); return klassOop(f1); }
-  oop       f1_as_klass_mirror() const           { oop f1 = f1_as_instance(); return f1; }  // i.e., return a java_mirror
-  oop       f1_as_instance() const               { oop f1 = _f1; assert(f1 == NULL || f1->is_instance() || f1->is_array(), ""); return f1; }
-  oop       f1_appendix() const                  { assert(has_appendix(), ""); return f1_as_instance(); }
-  bool      is_f1_null() const                   { oop f1 = _f1; return f1 == NULL; }  // classifies a CPC entry as unbound
-  int       f2_as_index() const                  { assert(!is_vfinal(), ""); return (int) _f2; }
-  methodOop f2_as_vfinal_method() const          { assert(is_vfinal(), ""); return methodOop(_f2); }
-  int  field_index() const                       { assert(is_field_entry(),  ""); return (_flags & field_index_mask); }
-  int  parameter_size() const                    { assert(is_method_entry(), ""); return (_flags & parameter_size_mask); }
-  bool is_volatile() const                       { return (_flags & (1 << is_volatile_shift))       != 0; }
-  bool is_final() const                          { return (_flags & (1 << is_final_shift))          != 0; }
-  bool has_appendix() const                      { return (_flags & (1 << has_appendix_shift))     != 0; }
-  bool is_forced_virtual() const                 { return (_flags & (1 << is_forced_virtual_shift)) != 0; }
-  bool is_vfinal() const                         { return (_flags & (1 << is_vfinal_shift))         != 0; }
-  bool is_method_entry() const                   { return (_flags & (1 << is_field_entry_shift))    == 0; }
-  bool is_field_entry() const                    { return (_flags & (1 << is_field_entry_shift))    != 0; }
-  bool is_byte() const                           { return flag_state() == btos; }
-  bool is_char() const                           { return flag_state() == ctos; }
-  bool is_short() const                          { return flag_state() == stos; }
-  bool is_int() const                            { return flag_state() == itos; }
-  bool is_long() const                           { return flag_state() == ltos; }
-  bool is_float() const                          { return flag_state() == ftos; }
-  bool is_double() const                         { return flag_state() == dtos; }
-  bool is_object() const                         { return flag_state() == atos; }
-  TosState flag_state() const                    { assert((uint)number_of_states <= (uint)tos_state_mask+1, "");
-                                                   return (TosState)((_flags >> tos_state_shift) & tos_state_mask); }
-
-  // Code generation support
-  static WordSize size()                         { return in_WordSize(sizeof(ConstantPoolCacheEntry) / HeapWordSize); }
-  static ByteSize size_in_bytes()                { return in_ByteSize(sizeof(ConstantPoolCacheEntry)); }
-  static ByteSize indices_offset()               { return byte_offset_of(ConstantPoolCacheEntry, _indices); }
-  static ByteSize f1_offset()                    { return byte_offset_of(ConstantPoolCacheEntry, _f1); }
-  static ByteSize f2_offset()                    { return byte_offset_of(ConstantPoolCacheEntry, _f2); }
-  static ByteSize flags_offset()                 { return byte_offset_of(ConstantPoolCacheEntry, _flags); }
-
-  // GC Support
-  void oops_do(void f(oop*));
-  void oop_iterate(OopClosure* blk);
-  void oop_iterate_m(OopClosure* blk, MemRegion mr);
-  void follow_contents();
-  void adjust_pointers();
-
-#ifndef SERIALGC
-  // Parallel Old
-  void follow_contents(ParCompactionManager* cm);
-#endif // SERIALGC
-
-  void update_pointers();
-
-  // RedefineClasses() API support:
-  // If this constantPoolCacheEntry refers to old_method then update it
-  // to refer to new_method.
-  // trace_name_printed is set to true if the current call has
-  // printed the klass name so that other routines in the adjust_*
-  // group don't print the klass name.
-  bool adjust_method_entry(methodOop old_method, methodOop new_method,
-         bool * trace_name_printed);
-  bool is_interesting_method_entry(klassOop k);
-
-  // Debugging & Printing
-  void print (outputStream* st, int index) const;
-  void verify(outputStream* st) const;
-
-  static void verify_tos_state_shift() {
-    // When shifting flags as a 32-bit int, make sure we don't need an extra mask for tos_state:
-    assert((((u4)-1 >> tos_state_shift) & ~tos_state_mask) == 0, "no need for tos_state mask");
-  }
-};
-
-
-// A constant pool cache is a runtime data structure set aside to a constant pool. The cache
-// holds interpreter runtime information for all field access and invoke bytecodes. The cache
-// is created and initialized before a class is actively used (i.e., initialized), the indivi-
-// dual cache entries are filled at resolution (i.e., "link") time (see also: rewriter.*).
-
-class constantPoolCacheOopDesc: public oopDesc {
-  friend class VMStructs;
- private:
-  int             _length;
-  constantPoolOop _constant_pool;                // the corresponding constant pool
-
-  // Sizing
-  debug_only(friend class ClassVerifier;)
- public:
-  int length() const                             { return _length; }
- private:
-  void set_length(int length)                    { _length = length; }
-
-  static int header_size()                       { return sizeof(constantPoolCacheOopDesc) / HeapWordSize; }
-  static int object_size(int length)             { return align_object_size(header_size() + length * in_words(ConstantPoolCacheEntry::size())); }
-  int object_size()                              { return object_size(length()); }
-
-  // Helpers
-  constantPoolOop*        constant_pool_addr()   { return &_constant_pool; }
-  ConstantPoolCacheEntry* base() const           { return (ConstantPoolCacheEntry*)((address)this + in_bytes(base_offset())); }
-
-  friend class constantPoolCacheKlass;
-  friend class ConstantPoolCacheEntry;
-
- public:
-  // Initialization
-  void initialize(intArray& inverse_index_map);
-
-  // Secondary indexes.
-  // They must look completely different from normal indexes.
-  // The main reason is that byte swapping is sometimes done on normal indexes.
-  // Also, some of the CP accessors do different things for secondary indexes.
-  // Finally, it is helpful for debugging to tell the two apart.
-  static bool is_secondary_index(int i) { return (i < 0); }
-  static int  decode_secondary_index(int i) { assert(is_secondary_index(i),  ""); return ~i; }
-  static int  encode_secondary_index(int i) { assert(!is_secondary_index(i), ""); return ~i; }
-
-  // Accessors
-  void set_constant_pool(constantPoolOop pool)   { oop_store_without_check((oop*)&_constant_pool, (oop)pool); }
-  constantPoolOop constant_pool() const          { return _constant_pool; }
-  // Fetches the entry at the given index.
-  // The entry may be either primary or secondary.
-  // In either case the index must not be encoded or byte-swapped in any way.
-  ConstantPoolCacheEntry* entry_at(int i) const {
-    assert(0 <= i && i < length(), "index out of bounds");
-    return base() + i;
-  }
-  // Fetches the secondary entry referred to by index.
-  // The index may be a secondary index, and must not be byte-swapped.
-  ConstantPoolCacheEntry* secondary_entry_at(int i) const {
-    int raw_index = i;
-    if (is_secondary_index(i)) {  // correct these on the fly
-      raw_index = decode_secondary_index(i);
-    }
-    assert(entry_at(raw_index)->is_secondary_entry(), "not a secondary entry");
-    return entry_at(raw_index);
-  }
-  // Given a primary or secondary index, fetch the corresponding primary entry.
-  // Indirect through the secondary entry, if the index is encoded as a secondary index.
-  // The index must not be byte-swapped.
-  ConstantPoolCacheEntry* main_entry_at(int i) const {
-    int primary_index = i;
-    if (is_secondary_index(i)) {
-      // run through an extra level of indirection:
-      int raw_index = decode_secondary_index(i);
-      primary_index = entry_at(raw_index)->main_entry_index();
-    }
-    assert(!entry_at(primary_index)->is_secondary_entry(), "only one level of indirection");
-    return entry_at(primary_index);
-  }
-
-  // Code generation
-  static ByteSize base_offset()                  { return in_ByteSize(sizeof(constantPoolCacheOopDesc)); }
-  static ByteSize entry_offset(int raw_index) {
-    int index = raw_index;
-    if (is_secondary_index(raw_index))
-      index = decode_secondary_index(raw_index);
-    return (base_offset() + ConstantPoolCacheEntry::size_in_bytes() * index);
-  }
-
-  // RedefineClasses() API support:
-  // If any entry of this constantPoolCache points to any of
-  // old_methods, replace it with the corresponding new_method.
-  // trace_name_printed is set to true if the current call has
-  // printed the klass name so that other routines in the adjust_*
-  // group don't print the klass name.
-  void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
-                             int methods_length, bool * trace_name_printed);
-};
-
-#endif // SHARE_VM_OOPS_CPCACHEOOP_HPP
--- a/src/share/vm/oops/fieldInfo.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/fieldInfo.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -25,14 +25,15 @@
 #ifndef SHARE_VM_OOPS_FIELDINFO_HPP
 #define SHARE_VM_OOPS_FIELDINFO_HPP
 
+#include "oops/constantPool.hpp"
 #include "oops/typeArrayOop.hpp"
 #include "classfile/vmSymbols.hpp"
 
 // This class represents the field information contained in the fields
-// array of an instanceKlass.  Currently it's laid on top an array of
+// array of an InstanceKlass.  Currently it's laid on top an array of
 // Java shorts but in the future it could simply be used as a real
 // array type.  FieldInfo generally shouldn't be used directly.
-// Fields should be queried either through instanceKlass or through
+// Fields should be queried either through InstanceKlass or through
 // the various FieldStreams.
 class FieldInfo VALUE_OBJ_CLASS_SPEC {
   friend class fieldDescriptor;
@@ -65,8 +66,8 @@
   u2 initval_index() const                       { return _shorts[initval_index_offset];     }
 
  public:
-  static FieldInfo* from_field_array(typeArrayOop fields, int index) {
-    return ((FieldInfo*)fields->short_at_addr(index * field_slots));
+  static FieldInfo* from_field_array(Array<u2>* fields, int index) {
+    return ((FieldInfo*)fields->adr_at(index * field_slots));
   }
   static FieldInfo* from_field_array(u2* fields, int index) {
     return ((FieldInfo*)(fields + index * field_slots));
--- a/src/share/vm/oops/fieldStreams.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/fieldStreams.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -38,13 +38,13 @@
 // cases.
 class FieldStreamBase : public StackObj {
  protected:
-  typeArrayHandle     _fields;
+  Array<u2>*          _fields;
   constantPoolHandle  _constants;
   int                 _index;
   int                 _limit;
   int                 _generic_signature_slot;
 
-  FieldInfo* field() const { return FieldInfo::from_field_array(_fields(), _index); }
+  FieldInfo* field() const { return FieldInfo::from_field_array(_fields, _index); }
 
   int init_generic_signature_start_slot() {
     int length = _fields->length();
@@ -55,7 +55,7 @@
     /* Scan from 0 to the current _index. Count the number of generic
        signature slots for field[0] to field[_index - 1]. */
     for (int i = 0; i < _index; i++) {
-      fi = FieldInfo::from_field_array(_fields(), i);
+      fi = FieldInfo::from_field_array(_fields, i);
       flags.set_flags(fi->access_flags());
       if (flags.field_has_generic_signature()) {
         length --;
@@ -64,7 +64,7 @@
     }
     /* Scan from the current _index. */
     for (int i = _index; i*FieldInfo::field_slots < length; i++) {
-      fi = FieldInfo::from_field_array(_fields(), i);
+      fi = FieldInfo::from_field_array(_fields, i);
       flags.set_flags(fi->access_flags());
       if (flags.field_has_generic_signature()) {
         length --;
@@ -76,7 +76,7 @@
     return num_fields;
   }
 
-  FieldStreamBase(typeArrayHandle fields, constantPoolHandle constants, int start, int limit) {
+  FieldStreamBase(Array<u2>* fields, constantPoolHandle constants, int start, int limit) {
     _fields = fields;
     _constants = constants;
     _index = start;
@@ -88,7 +88,7 @@
     }
   }
 
-  FieldStreamBase(typeArrayHandle fields, constantPoolHandle constants) {
+  FieldStreamBase(Array<u2>* fields, constantPoolHandle constants) {
     _fields = fields;
     _constants = constants;
     _index = 0;
@@ -96,7 +96,7 @@
   }
 
  public:
-  FieldStreamBase(instanceKlass* klass) {
+  FieldStreamBase(InstanceKlass* klass) {
     _fields = klass->fields();
     _constants = klass->constants();
     _index = 0;
@@ -149,7 +149,7 @@
   Symbol* generic_signature() const {
     if (access_flags().field_has_generic_signature()) {
       assert(_generic_signature_slot < _fields->length(), "out of bounds");
-      int index = _fields->short_at(_generic_signature_slot);
+      int index = _fields->at(_generic_signature_slot);
       return _constants->symbol_at(index);
     } else {
       return NULL;
@@ -168,7 +168,6 @@
 // Iterate over only the internal fields
 class JavaFieldStream : public FieldStreamBase {
  public:
-  JavaFieldStream(instanceKlass* k):      FieldStreamBase(k->fields(), k->constants(), 0, k->java_fields_count()) {}
   JavaFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants(), 0, k->java_fields_count()) {}
 
   int name_index() const {
@@ -191,7 +190,7 @@
     assert(!field()->is_internal(), "regular only");
     if (access_flags().field_has_generic_signature()) {
       assert(_generic_signature_slot < _fields->length(), "out of bounds");
-      return _fields->short_at(_generic_signature_slot);
+      return _fields->at(_generic_signature_slot);
     } else {
       return 0;
     }
@@ -200,7 +199,7 @@
     assert(!field()->is_internal(), "regular only");
     if (access_flags().field_has_generic_signature()) {
       assert(_generic_signature_slot < _fields->length(), "out of bounds");
-      _fields->short_at_put(_generic_signature_slot, index);
+      _fields->at_put(_generic_signature_slot, index);
     }
   }
   int initval_index() const {
@@ -217,15 +216,15 @@
 // Iterate over only the internal fields
 class InternalFieldStream : public FieldStreamBase {
  public:
-  InternalFieldStream(instanceKlass* k):      FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {}
+  InternalFieldStream(InstanceKlass* k):      FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {}
   InternalFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants(), k->java_fields_count(), 0) {}
 };
 
 
 class AllFieldStream : public FieldStreamBase {
  public:
-  AllFieldStream(typeArrayHandle fields, constantPoolHandle constants): FieldStreamBase(fields, constants) {}
-  AllFieldStream(instanceKlass* k):      FieldStreamBase(k->fields(), k->constants()) {}
+  AllFieldStream(Array<u2>* fields, constantPoolHandle constants): FieldStreamBase(fields, constants) {}
+  AllFieldStream(InstanceKlass* k):      FieldStreamBase(k->fields(), k->constants()) {}
   AllFieldStream(instanceKlassHandle k): FieldStreamBase(k->fields(), k->constants()) {}
 };
 
--- a/src/share/vm/oops/generateOopMap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/generateOopMap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1272,7 +1272,7 @@
       case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2_cpcache();
-        constantPoolOop cp    = method()->constants();
+        ConstantPool* cp      = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
         Symbol* signature     = cp->symbol_at(signatureIdx);
@@ -1304,7 +1304,7 @@
       case Bytecodes::_invokedynamic:
       case Bytecodes::_invokeinterface:
         int idx = currentBC->has_index_u4() ? currentBC->get_index_u4() : currentBC->get_index_u2_cpcache();
-        constantPoolOop cp    = method()->constants();
+        ConstantPool* cp      = method()->constants();
         int nameAndTypeIdx    = cp->name_and_type_ref_index_at(idx);
         int signatureIdx      = cp->signature_ref_index_at(nameAndTypeIdx);
         Symbol* signature     = cp->symbol_at(signatureIdx);
@@ -1846,14 +1846,22 @@
 
 void GenerateOopMap::do_ldc(int bci) {
   Bytecode_loadconstant ldc(method(), bci);
-  constantPoolOop cp  = method()->constants();
+  ConstantPool* cp  = method()->constants();
+  constantTag tag = cp->tag_at(ldc.pool_index()); // idx is index in resolved_references
   BasicType       bt  = ldc.result_type();
-  CellTypeState   cts = (bt == T_OBJECT) ? CellTypeState::make_line_ref(bci) : valCTS;
-  // Make sure bt==T_OBJECT is the same as old code (is_pointer_entry).
-  // Note that CONSTANT_MethodHandle entries are u2 index pairs, not pointer-entries,
-  // and they are processed by _fast_aldc and the CP cache.
-  assert((ldc.has_cache_index() || cp->is_object_entry(ldc.pool_index()))
-         ? (bt == T_OBJECT) : true, "expected object type");
+  CellTypeState   cts;
+  if (tag.is_klass() ||
+      tag.is_unresolved_klass() ||
+      tag.is_string() ||
+      tag.is_object() ||
+      tag.is_method_handle() ||
+      tag.is_method_type()) {
+    assert(bt == T_OBJECT, "Guard is incorrect");
+    cts = CellTypeState::make_line_ref(bci);
+  } else {
+    assert(bt != T_OBJECT, "Guard is incorrect");
+    cts = valCTS;
+  }
   ppush1(cts);
 }
 
@@ -1889,7 +1897,7 @@
 
 void GenerateOopMap::do_field(int is_get, int is_static, int idx, int bci) {
   // Dig up signature for field in constant pool
-  constantPoolOop cp     = method()->constants();
+  ConstantPool* cp     = method()->constants();
   int nameAndTypeIdx     = cp->name_and_type_ref_index_at(idx);
   int signatureIdx       = cp->signature_ref_index_at(nameAndTypeIdx);
   Symbol* signature      = cp->symbol_at(signatureIdx);
@@ -1919,7 +1927,7 @@
 
 void GenerateOopMap::do_method(int is_static, int is_interface, int idx, int bci) {
  // Dig up signature for field in constant pool
-  constantPoolOop cp  = _method->constants();
+  ConstantPool* cp  = _method->constants();
   Symbol* signature   = cp->signature_ref_at(idx);
 
   // Parse method signature
@@ -2302,7 +2310,9 @@
     BytecodeStream bcs(_method);
     startOver = false;
 
-    while( bcs.next() >=0 && !startOver && !_got_error) {
+    while( !startOver && !_got_error &&
+           // test bcs in case method changed and it became invalid
+           bcs.next() >=0) {
       startOver = rewrite_refval_conflict_inst(&bcs, from, to);
     }
   } while (startOver && !_got_error);
@@ -2383,7 +2393,7 @@
     bcp = _method->bcp_from(bcs->bci());
   }
 
-  // Patch either directly in methodOop or in temp. buffer
+  // Patch either directly in Method* or in temp. buffer
   if (newIlen == 1) {
     assert(varNo < 4, "varNo too large");
     *bcp = bc0 + varNo;
--- a/src/share/vm/oops/generateOopMap.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/generateOopMap.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,12 +28,11 @@
 #include "interpreter/bytecodeStream.hpp"
 #include "memory/allocation.inline.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oopsHierarchy.hpp"
 #include "runtime/signature.hpp"
 
 // Forward definition
-class MethodOopMap;
 class GenerateOopMap;
 class BasicBlock;
 class CellTypeState;
@@ -286,7 +285,7 @@
 //
 //  GenerateOopMap
 //
-// Main class used to compute the pointer-maps in a MethodOop
+// Main class used to compute the pointer-maps in a Method
 //
 class GenerateOopMap VALUE_OBJ_CLASS_SPEC {
  protected:
@@ -471,7 +470,7 @@
 
   // Query
   int max_locals() const                           { return _max_locals; }
-  methodOop method() const                         { return _method(); }
+  Method* method() const                           { return _method(); }
   methodHandle method_as_handle() const            { return _method; }
 
   bool did_rewriting()                             { return _did_rewriting; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/instanceClassLoaderKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/genOopClosures.inline.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/instanceClassLoaderKlass.hpp"
+#include "oops/instanceMirrorKlass.hpp"
+#include "oops/instanceOop.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbol.hpp"
+#include "runtime/handles.inline.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
+#include "oops/oop.pcgc.inline.hpp"
+#endif
+
+#define if_do_metadata_checked(closure, nv_suffix)                    \
+  /* Make sure the non-virtual and the virtual versions match. */     \
+  assert(closure->do_metadata##nv_suffix() == closure->do_metadata(), \
+      "Inconsistency in do_metadata");                                \
+  if (closure->do_metadata##nv_suffix())
+
+// Macro to define InstanceClassLoaderKlass::oop_oop_iterate for virtual/nonvirtual for
+// all closures.  Macros calling macros above for each oop size.
+// Since ClassLoader objects have only a pointer to the loader_data, they are not
+// compressed nor does the pointer move.
+
+#define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)\
+                                                                                \
+int InstanceClassLoaderKlass::                                                  \
+oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {                  \
+  /* Get size before changing pointers */                                       \
+  SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
+  int size = InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure);           \
+                                                                                \
+  if_do_metadata_checked(closure, nv_suffix) {                                  \
+    ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj);             \
+    /* cld can be null if we have a non-registered class loader. */             \
+    if (cld != NULL) {                                                          \
+      closure->do_class_loader_data(cld);                                       \
+    }                                                                           \
+  }                                                                             \
+                                                                                \
+  return size;                                                                  \
+}
+
+#ifndef SERIALGC
+#define InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
+                                                                                \
+int InstanceClassLoaderKlass::                                                  \
+oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {        \
+  /* Get size before changing pointers */                                       \
+  SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
+  int size = InstanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure); \
+  return size;                                                                  \
+}
+#endif // !SERIALGC
+
+
+#define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m(OopClosureType, nv_suffix)      \
+                                                                                \
+int InstanceClassLoaderKlass::                                                  \
+oop_oop_iterate##nv_suffix##_m(oop obj,                                         \
+                               OopClosureType* closure,                         \
+                               MemRegion mr) {                                  \
+  SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
+                                                                                \
+  int size = InstanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);   \
+                                                                                \
+  if_do_metadata_checked(closure, nv_suffix) {                                  \
+    if (mr.contains(obj)) {                                                     \
+      ClassLoaderData* cld = java_lang_ClassLoader::loader_data(obj);           \
+      /* cld can be null if we have a non-registered class loader. */           \
+      if (cld != NULL) {                                                        \
+        closure->do_class_loader_data(cld);                                     \
+      }                                                                         \
+    }                                                                           \
+  }                                                                             \
+                                                                                \
+  return size;                                                                  \
+}
+
+ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN)
+ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN)
+#ifndef SERIALGC
+ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN)
+ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN)
+#endif // SERIALGC
+ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m)
+ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DEFN_m)
+
+void InstanceClassLoaderKlass::oop_follow_contents(oop obj) {
+  InstanceKlass::oop_follow_contents(obj);
+  ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
+
+  // We must NULL check here, since the class loader
+  // can be found before the loader data has been set up.
+  if(loader_data != NULL) {
+    MarkSweep::follow_class_loader(loader_data);
+  }
+}
+
+#ifndef SERIALGC
+void InstanceClassLoaderKlass::oop_follow_contents(ParCompactionManager* cm,
+        oop obj) {
+  InstanceKlass::oop_follow_contents(cm, obj);
+  ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
+  if (loader_data != NULL) {
+    PSParallelCompact::follow_class_loader(cm, loader_data);
+  }
+}
+
+void InstanceClassLoaderKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
+  InstanceKlass::oop_push_contents(pm, obj);
+
+  // This is called by the young collector. It will already have taken care of
+  // all class loader data. So, we don't have to follow the class loader ->
+  // class loader data link.
+}
+
+int InstanceClassLoaderKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
+  InstanceKlass::oop_update_pointers(cm, obj);
+  ClassLoaderData * const loader_data = java_lang_ClassLoader::loader_data(obj);
+  if (loader_data != NULL) {
+    PSParallelCompact::adjust_class_loader(cm, loader_data);
+  }
+  return size_helper();
+}
+#endif // SERIALGC
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/instanceClassLoaderKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
+#define SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
+
+#include "oops/instanceKlass.hpp"
+
+// An InstanceClassLoaderKlass is a specialization of the InstanceKlass. It does
+// not add any field.  It is added to walk the dependencies for the class loader
+// key that this class loader points to.  This is how the loader_data graph is
+// walked and dependant class loaders are kept alive.  I thought we walked
+// the list later?
+
+class InstanceClassLoaderKlass: public InstanceKlass {
+  friend class VMStructs;
+  friend class InstanceKlass;
+
+  // Constructor
+  InstanceClassLoaderKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags, bool is_anonymous)
+    : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
+
+public:
+  virtual bool oop_is_instanceClassLoader() const { return true; }
+
+  InstanceClassLoaderKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
+
+  // Iterators
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
+    return oop_oop_iterate_v(obj, blk);
+  }
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
+    return oop_oop_iterate_v_m(obj, blk, mr);
+  }
+
+#define InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                \
+  int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);                         \
+  int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
+
+  ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
+  ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_DECL)
+
+#ifndef SERIALGC
+#define InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix)      \
+  int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
+
+  ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
+  ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceClassLoaderKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
+#endif // !SERIALGC
+
+    // Garbage collection
+  void oop_follow_contents(oop obj);
+
+  // Parallel Scavenge and Parallel Old
+  PARALLEL_GC_DECLS
+};
+
+#endif // SHARE_VM_OOPS_INSTANCECLASSLOADERKLASS_HPP
--- a/src/share/vm/oops/instanceKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,14 +34,15 @@
 #include "interpreter/rewriter.hpp"
 #include "jvmtifiles/jvmti.h"
 #include "memory/genOopClosures.inline.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
-#include "memory/permGen.hpp"
 #include "oops/fieldStreams.hpp"
+#include "oops/instanceClassLoaderKlass.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
-#include "oops/objArrayKlassKlass.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
 #include "prims/jvmtiExport.hpp"
@@ -65,11 +66,13 @@
 # include "thread_bsd.inline.hpp"
 #endif
 #ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
 #include "gc_implementation/g1/g1RemSet.inline.hpp"
 #include "gc_implementation/g1/heapRegionSeq.inline.hpp"
 #include "gc_implementation/parNew/parOopClosures.inline.hpp"
+#include "gc_implementation/parallelScavenge/parallelScavengeHeap.inline.hpp"
 #include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
 #include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
 #include "oops/oop.pcgc.inline.hpp"
@@ -168,19 +171,242 @@
 
 #endif //  ndef DTRACE_ENABLED
 
-bool instanceKlass::should_be_initialized() const {
+Klass* InstanceKlass::allocate_instance_klass(ClassLoaderData* loader_data,
+                                                int vtable_len,
+                                                int itable_len,
+                                                int static_field_size,
+                                                int nonstatic_oop_map_size,
+                                                ReferenceType rt,
+                                                AccessFlags access_flags,
+                                                Symbol* name,
+                                              Klass* super_klass,
+                                                KlassHandle host_klass,
+                                                TRAPS) {
+
+  int size = InstanceKlass::size(vtable_len, itable_len, nonstatic_oop_map_size,
+                                 access_flags.is_interface(),
+                                 !host_klass.is_null());
+
+  // Allocation
+  InstanceKlass* ik;
+  if (rt == REF_NONE) {
+    if (name == vmSymbols::java_lang_Class()) {
+      ik = new (loader_data, size, THREAD) InstanceMirrorKlass(
+        vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
+        access_flags, !host_klass.is_null());
+    } else if (name == vmSymbols::java_lang_ClassLoader() ||
+          (SystemDictionary::ClassLoader_klass_loaded() &&
+          super_klass != NULL &&
+          super_klass->is_subtype_of(SystemDictionary::ClassLoader_klass()))) {
+      ik = new (loader_data, size, THREAD) InstanceClassLoaderKlass(
+        vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
+        access_flags, !host_klass.is_null());
+    } else {
+      // normal class
+      ik = new (loader_data, size, THREAD) InstanceKlass(
+        vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
+        access_flags, !host_klass.is_null());
+    }
+  } else {
+    // reference klass
+    ik = new (loader_data, size, THREAD) InstanceRefKlass(
+        vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt,
+        access_flags, !host_klass.is_null());
+  }
+
+  return ik;
+}
+
+InstanceKlass::InstanceKlass(int vtable_len,
+                             int itable_len,
+                             int static_field_size,
+                             int nonstatic_oop_map_size,
+                             ReferenceType rt,
+                             AccessFlags access_flags,
+                             bool is_anonymous) {
+  No_Safepoint_Verifier no_safepoint; // until k becomes parsable
+
+  int size = InstanceKlass::size(vtable_len, itable_len, nonstatic_oop_map_size,
+                                 access_flags.is_interface(), is_anonymous);
+
+  // The sizes of these these three variables are used for determining the
+  // size of the instanceKlassOop. It is critical that these are set to the right
+  // sizes before the first GC, i.e., when we allocate the mirror.
+  this->set_vtable_length(vtable_len);
+  this->set_itable_length(itable_len);
+  this->set_static_field_size(static_field_size);
+  this->set_nonstatic_oop_map_size(nonstatic_oop_map_size);
+  this->set_access_flags(access_flags);
+  this->set_is_anonymous(is_anonymous);
+  assert(this->size() == size, "wrong size for object");
+
+  this->set_array_klasses(NULL);
+  this->set_methods(NULL);
+  this->set_method_ordering(NULL);
+  this->set_local_interfaces(NULL);
+  this->set_transitive_interfaces(NULL);
+  this->init_implementor();
+  this->set_fields(NULL, 0);
+  this->set_constants(NULL);
+  this->set_class_loader_data(NULL);
+  this->set_protection_domain(NULL);
+  this->set_signers(NULL);
+  this->set_source_file_name(NULL);
+  this->set_source_debug_extension(NULL, 0);
+  this->set_array_name(NULL);
+  this->set_inner_classes(NULL);
+  this->set_static_oop_field_count(0);
+  this->set_nonstatic_field_size(0);
+  this->set_is_marked_dependent(false);
+  this->set_init_state(InstanceKlass::allocated);
+  this->set_init_thread(NULL);
+  this->set_init_lock(NULL);
+  this->set_reference_type(rt);
+  this->set_oop_map_cache(NULL);
+  this->set_jni_ids(NULL);
+  this->set_osr_nmethods_head(NULL);
+  this->set_breakpoints(NULL);
+  this->init_previous_versions();
+  this->set_generic_signature(NULL);
+  this->release_set_methods_jmethod_ids(NULL);
+  this->release_set_methods_cached_itable_indices(NULL);
+  this->set_annotations(NULL);
+  this->set_jvmti_cached_class_field_map(NULL);
+  this->set_initial_method_idnum(0);
+
+  // initialize the non-header words to zero
+  intptr_t* p = (intptr_t*)this;
+  for (int index = InstanceKlass::header_size(); index < size; index++) {
+    p[index] = NULL_WORD;
+  }
+
+  // Set temporary value until parseClassFile updates it with the real instance
+  // size.
+  this->set_layout_helper(Klass::instance_layout_helper(0, true));
+}
+
+
+// This function deallocates the metadata and C heap pointers that the
+// InstanceKlass points to.
+void InstanceKlass::deallocate_contents(ClassLoaderData* loader_data) {
+
+  // Orphan the mirror first, CMS thinks it's still live.
+  java_lang_Class::set_klass(java_mirror(), NULL);
+
+  // Need to take this class off the class loader data list.
+  loader_data->remove_class(this);
+
+  // The array_klass for this class is created later, after error handling.
+  // For class redefinition, we keep the original class so this scratch class
+  // doesn't have an array class.  Either way, assert that there is nothing
+  // to deallocate.
+  assert(array_klasses() == NULL, "array classes shouldn't be created for this class yet");
+
+  // Release C heap allocated data that this might point to, which includes
+  // reference counting symbol names.
+  release_C_heap_structures();
+
+  Array<Method*>* ms = methods();
+  if (ms != Universe::the_empty_method_array()) {
+    for (int i = 0; i <= methods()->length() -1 ; i++) {
+      Method* method = methods()->at(i);
+      // Only want to delete methods that are not executing for RedefineClasses.
+      // The previous version will point to them so they're not totally dangling
+      assert (!method->on_stack(), "shouldn't be called with methods on stack");
+      MetadataFactory::free_metadata(loader_data, method);
+    }
+    MetadataFactory::free_array<Method*>(loader_data, methods());
+  }
+  set_methods(NULL);
+
+  if (method_ordering() != Universe::the_empty_int_array()) {
+    MetadataFactory::free_array<int>(loader_data, method_ordering());
+  }
+  set_method_ordering(NULL);
+
+  // This array is in Klass, but remove it with the InstanceKlass since
+  // this place would be the only caller and it can share memory with transitive
+  // interfaces.
+  if (secondary_supers() != Universe::the_empty_klass_array() &&
+      secondary_supers() != transitive_interfaces()) {
+    MetadataFactory::free_array<Klass*>(loader_data, secondary_supers());
+  }
+  set_secondary_supers(NULL);
+
+  // Only deallocate transitive interfaces if not empty, same as super class
+  // or same as local interfaces.   See code in parseClassFile.
+  Array<Klass*>* ti = transitive_interfaces();
+  if (ti != Universe::the_empty_klass_array() && ti != local_interfaces()) {
+    // check that the interfaces don't come from super class
+    Array<Klass*>* sti = (super() == NULL) ? NULL :
+       InstanceKlass::cast(super())->transitive_interfaces();
+    if (ti != sti) {
+      MetadataFactory::free_array<Klass*>(loader_data, ti);
+    }
+  }
+  set_transitive_interfaces(NULL);
+
+  // local interfaces can be empty
+  Array<Klass*>* li = local_interfaces();
+  if (li != Universe::the_empty_klass_array()) {
+    MetadataFactory::free_array<Klass*>(loader_data, li);
+  }
+  set_local_interfaces(NULL);
+
+  MetadataFactory::free_array<jushort>(loader_data, fields());
+  set_fields(NULL, 0);
+
+  // If a method from a redefined class is using this constant pool, don't
+  // delete it, yet.  The new class's previous version will point to this.
+  assert (!constants()->on_stack(), "shouldn't be called if anything is onstack");
+  MetadataFactory::free_metadata(loader_data, constants());
+  set_constants(NULL);
+
+  if (inner_classes() != Universe::the_empty_short_array()) {
+    MetadataFactory::free_array<jushort>(loader_data, inner_classes());
+  }
+  set_inner_classes(NULL);
+
+  // Null out Java heap objects, although these won't be walked to keep
+  // alive once this InstanceKlass is deallocated.
+  set_protection_domain(NULL);
+  set_signers(NULL);
+  set_init_lock(NULL);
+  set_annotations(NULL);
+}
+
+volatile oop InstanceKlass::init_lock() const {
+  volatile oop lock = _init_lock;  // read once
+  assert((oop)lock != NULL || !is_not_initialized(), // initialized or in_error state
+         "only fully initialized state can have a null lock");
+  return lock;
+}
+
+// Set the initialization lock to null so the object can be GC'ed.  Any racing
+// threads to get this lock will see a null lock and will not lock.
+// That's okay because they all check for initialized state after getting
+// the lock and return.
+void InstanceKlass::fence_and_clear_init_lock() {
+  // make sure previous stores are all done, notably the init_state.
+  OrderAccess::storestore();
+  klass_oop_store(&_init_lock, NULL);
+  assert(!is_not_initialized(), "class must be initialized now");
+}
+
+
+bool InstanceKlass::should_be_initialized() const {
   return !is_initialized();
 }
 
-klassVtable* instanceKlass::vtable() const {
-  return new klassVtable(as_klassOop(), start_of_vtable(), vtable_length() / vtableEntry::size());
+klassVtable* InstanceKlass::vtable() const {
+  return new klassVtable(this, start_of_vtable(), vtable_length() / vtableEntry::size());
 }
 
-klassItable* instanceKlass::itable() const {
-  return new klassItable(as_klassOop());
+klassItable* InstanceKlass::itable() const {
+  return new klassItable(instanceKlassHandle(this));
 }
 
-void instanceKlass::eager_initialize(Thread *thread) {
+void InstanceKlass::eager_initialize(Thread *thread) {
   if (!EagerInitialization) return;
 
   if (this->is_not_initialized()) {
@@ -188,22 +414,23 @@
     if (this->class_initializer() != NULL) return;
 
     // abort if it is java.lang.Object (initialization is handled in genesis)
-    klassOop super = this->super();
+    Klass* super = this->super();
     if (super == NULL) return;
 
     // abort if the super class should be initialized
-    if (!instanceKlass::cast(super)->is_initialized()) return;
+    if (!InstanceKlass::cast(super)->is_initialized()) return;
 
     // call body to expose the this pointer
-    instanceKlassHandle this_oop(thread, this->as_klassOop());
+    instanceKlassHandle this_oop(thread, this);
     eager_initialize_impl(this_oop);
   }
 }
 
 
-void instanceKlass::eager_initialize_impl(instanceKlassHandle this_oop) {
+void InstanceKlass::eager_initialize_impl(instanceKlassHandle this_oop) {
   EXCEPTION_MARK;
-  ObjectLocker ol(this_oop, THREAD);
+  volatile oop init_lock = this_oop->init_lock();
+  ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
 
   // abort if someone beat us to the initialization
   if (!this_oop->is_not_initialized()) return;  // note: not equivalent to is_initialized()
@@ -222,6 +449,7 @@
   } else {
     // linking successfull, mark class as initialized
     this_oop->set_init_state (fully_initialized);
+    this_oop->fence_and_clear_init_lock();
     // trace
     if (TraceClassInitialization) {
       ResourceMark rm(THREAD);
@@ -234,10 +462,10 @@
 // See "The Virtual Machine Specification" section 2.16.5 for a detailed explanation of the class initialization
 // process. The step comments refers to the procedure described in that section.
 // Note: implementation moved to static method to expose the this pointer.
-void instanceKlass::initialize(TRAPS) {
+void InstanceKlass::initialize(TRAPS) {
   if (this->should_be_initialized()) {
     HandleMark hm(THREAD);
-    instanceKlassHandle this_oop(THREAD, this->as_klassOop());
+    instanceKlassHandle this_oop(THREAD, this);
     initialize_impl(this_oop, CHECK);
     // Note: at this point the class may be initialized
     //       OR it may be in the state of being initialized
@@ -248,7 +476,7 @@
 }
 
 
-bool instanceKlass::verify_code(
+bool InstanceKlass::verify_code(
     instanceKlassHandle this_oop, bool throw_verifyerror, TRAPS) {
   // 1) Verify the bytecodes
   Verifier::Mode mode =
@@ -260,31 +488,33 @@
 // Used exclusively by the shared spaces dump mechanism to prevent
 // classes mapped into the shared regions in new VMs from appearing linked.
 
-void instanceKlass::unlink_class() {
+void InstanceKlass::unlink_class() {
   assert(is_linked(), "must be linked");
   _init_state = loaded;
 }
 
-void instanceKlass::link_class(TRAPS) {
+void InstanceKlass::link_class(TRAPS) {
   assert(is_loaded(), "must be loaded");
   if (!is_linked()) {
-    instanceKlassHandle this_oop(THREAD, this->as_klassOop());
+    HandleMark hm(THREAD);
+    instanceKlassHandle this_oop(THREAD, this);
     link_class_impl(this_oop, true, CHECK);
   }
 }
 
 // Called to verify that a class can link during initialization, without
 // throwing a VerifyError.
-bool instanceKlass::link_class_or_fail(TRAPS) {
+bool InstanceKlass::link_class_or_fail(TRAPS) {
   assert(is_loaded(), "must be loaded");
   if (!is_linked()) {
-    instanceKlassHandle this_oop(THREAD, this->as_klassOop());
+    HandleMark hm(THREAD);
+    instanceKlassHandle this_oop(THREAD, this);
     link_class_impl(this_oop, false, CHECK_false);
   }
   return is_linked();
 }
 
-bool instanceKlass::link_class_impl(
+bool InstanceKlass::link_class_impl(
     instanceKlassHandle this_oop, bool throw_verifyerror, TRAPS) {
   // check for error state
   if (this_oop->is_in_error_state()) {
@@ -321,11 +551,11 @@
   }
 
   // link all interfaces implemented by this class before linking this class
-  objArrayHandle interfaces (THREAD, this_oop->local_interfaces());
+  Array<Klass*>* interfaces = this_oop->local_interfaces();
   int num_interfaces = interfaces->length();
   for (int index = 0; index < num_interfaces; index++) {
     HandleMark hm(THREAD);
-    instanceKlassHandle ih(THREAD, klassOop(interfaces->obj_at(index)));
+    instanceKlassHandle ih(THREAD, interfaces->at(index));
     link_class_impl(ih, throw_verifyerror, CHECK_false);
   }
 
@@ -345,10 +575,12 @@
 
   // verification & rewriting
   {
-    ObjectLocker ol(this_oop, THREAD);
+    volatile oop init_lock = this_oop->init_lock();
+    ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
     // rewritten will have been set if loader constraint error found
     // on an earlier link attempt
     // don't verify or rewrite if already rewritten
+
     if (!this_oop->is_linked()) {
       if (!this_oop->is_rewritten()) {
         {
@@ -382,7 +614,7 @@
 
       // Initialize the vtable and interface table after
       // methods have been rewritten since rewrite may
-      // fabricate new methodOops.
+      // fabricate new Method*s.
       // also does loader constraint checking
       if (!this_oop()->is_shared()) {
         ResourceMark rm(THREAD);
@@ -412,9 +644,9 @@
 // Rewrite the byte codes of all of the methods of a class.
 // The rewriter must be called exactly once. Rewriting must happen after
 // verification but before the first method of the class is executed.
-void instanceKlass::rewrite_class(TRAPS) {
+void InstanceKlass::rewrite_class(TRAPS) {
   assert(is_loaded(), "must be loaded");
-  instanceKlassHandle this_oop(THREAD, this->as_klassOop());
+  instanceKlassHandle this_oop(THREAD, this);
   if (this_oop->is_rewritten()) {
     assert(this_oop()->is_shared(), "rewriting an unshared class?");
     return;
@@ -426,25 +658,27 @@
 // Now relocate and link method entry points after class is rewritten.
 // This is outside is_rewritten flag. In case of an exception, it can be
 // executed more than once.
-void instanceKlass::relocate_and_link_methods(TRAPS) {
+void InstanceKlass::relocate_and_link_methods(TRAPS) {
   assert(is_loaded(), "must be loaded");
-  instanceKlassHandle this_oop(THREAD, this->as_klassOop());
+  instanceKlassHandle this_oop(THREAD, this);
   Rewriter::relocate_and_link(this_oop, CHECK);
 }
 
 
-void instanceKlass::initialize_impl(instanceKlassHandle this_oop, TRAPS) {
+void InstanceKlass::initialize_impl(instanceKlassHandle this_oop, TRAPS) {
   // Make sure klass is linked (verified) before initialization
   // A class could already be verified, since it has been reflected upon.
   this_oop->link_class(CHECK);
 
-  DTRACE_CLASSINIT_PROBE(required, instanceKlass::cast(this_oop()), -1);
+  DTRACE_CLASSINIT_PROBE(required, InstanceKlass::cast(this_oop()), -1);
 
   bool wait = false;
 
   // refer to the JVM book page 47 for description of steps
   // Step 1
-  { ObjectLocker ol(this_oop, THREAD);
+  {
+    volatile oop init_lock = this_oop->init_lock();
+    ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
 
     Thread *self = THREAD; // it's passed the current thread
 
@@ -459,19 +693,19 @@
 
     // Step 3
     if (this_oop->is_being_initialized() && this_oop->is_reentrant_initialization(self)) {
-      DTRACE_CLASSINIT_PROBE_WAIT(recursive, instanceKlass::cast(this_oop()), -1,wait);
+      DTRACE_CLASSINIT_PROBE_WAIT(recursive, InstanceKlass::cast(this_oop()), -1,wait);
       return;
     }
 
     // Step 4
     if (this_oop->is_initialized()) {
-      DTRACE_CLASSINIT_PROBE_WAIT(concurrent, instanceKlass::cast(this_oop()), -1,wait);
+      DTRACE_CLASSINIT_PROBE_WAIT(concurrent, InstanceKlass::cast(this_oop()), -1,wait);
       return;
     }
 
     // Step 5
     if (this_oop->is_in_error_state()) {
-      DTRACE_CLASSINIT_PROBE_WAIT(erroneous, instanceKlass::cast(this_oop()), -1,wait);
+      DTRACE_CLASSINIT_PROBE_WAIT(erroneous, InstanceKlass::cast(this_oop()), -1,wait);
       ResourceMark rm(THREAD);
       const char* desc = "Could not initialize class ";
       const char* className = this_oop->external_name();
@@ -492,7 +726,7 @@
   }
 
   // Step 7
-  klassOop super_klass = this_oop->super();
+  Klass* super_klass = this_oop->super();
   if (super_klass != NULL && !this_oop->is_interface() && Klass::cast(super_klass)->should_be_initialized()) {
     Klass::cast(super_klass)->initialize(THREAD);
 
@@ -504,7 +738,7 @@
         this_oop->set_initialization_state_and_notify(initialization_error, THREAD); // Locks object, set state, and notify all waiting threads
         CLEAR_PENDING_EXCEPTION;   // ignore any exception thrown, superclass initialization error is thrown below
       }
-      DTRACE_CLASSINIT_PROBE_WAIT(super__failed, instanceKlass::cast(this_oop()), -1,wait);
+      DTRACE_CLASSINIT_PROBE_WAIT(super__failed, InstanceKlass::cast(this_oop()), -1,wait);
       THROW_OOP(e());
     }
   }
@@ -513,7 +747,7 @@
   {
     assert(THREAD->is_Java_thread(), "non-JavaThread in initialize_impl");
     JavaThread* jt = (JavaThread*)THREAD;
-    DTRACE_CLASSINIT_PROBE_WAIT(clinit, instanceKlass::cast(this_oop()), -1,wait);
+    DTRACE_CLASSINIT_PROBE_WAIT(clinit, InstanceKlass::cast(this_oop()), -1,wait);
     // Timer includes any side effects of class initialization (resolution,
     // etc), but not recursive entry into call_class_initializer().
     PerfClassTraceTime timer(ClassLoader::perf_class_init_time(),
@@ -541,7 +775,7 @@
       this_oop->set_initialization_state_and_notify(initialization_error, THREAD);
       CLEAR_PENDING_EXCEPTION;   // ignore any exception thrown, class initialization error is thrown below
     }
-    DTRACE_CLASSINIT_PROBE_WAIT(error, instanceKlass::cast(this_oop()), -1,wait);
+    DTRACE_CLASSINIT_PROBE_WAIT(error, InstanceKlass::cast(this_oop()), -1,wait);
     if (e->is_a(SystemDictionary::Error_klass())) {
       THROW_OOP(e());
     } else {
@@ -551,108 +785,116 @@
                 &args);
     }
   }
-  DTRACE_CLASSINIT_PROBE_WAIT(end, instanceKlass::cast(this_oop()), -1,wait);
+  DTRACE_CLASSINIT_PROBE_WAIT(end, InstanceKlass::cast(this_oop()), -1,wait);
 }
 
 
 // Note: implementation moved to static method to expose the this pointer.
-void instanceKlass::set_initialization_state_and_notify(ClassState state, TRAPS) {
-  instanceKlassHandle kh(THREAD, this->as_klassOop());
+void InstanceKlass::set_initialization_state_and_notify(ClassState state, TRAPS) {
+  instanceKlassHandle kh(THREAD, this);
   set_initialization_state_and_notify_impl(kh, state, CHECK);
 }
 
-void instanceKlass::set_initialization_state_and_notify_impl(instanceKlassHandle this_oop, ClassState state, TRAPS) {
-  ObjectLocker ol(this_oop, THREAD);
+void InstanceKlass::set_initialization_state_and_notify_impl(instanceKlassHandle this_oop, ClassState state, TRAPS) {
+  volatile oop init_lock = this_oop->init_lock();
+  ObjectLocker ol(init_lock, THREAD, init_lock != NULL);
   this_oop->set_init_state(state);
+  this_oop->fence_and_clear_init_lock();
   ol.notify_all(CHECK);
 }
 
 // The embedded _implementor field can only record one implementor.
 // When there are more than one implementors, the _implementor field
-// is set to the interface klassOop itself. Following are the possible
+// is set to the interface Klass* itself. Following are the possible
 // values for the _implementor field:
 //   NULL                  - no implementor
-//   implementor klassOop  - one implementor
+//   implementor Klass*    - one implementor
 //   self                  - more than one implementor
 //
 // The _implementor field only exists for interfaces.
-void instanceKlass::add_implementor(klassOop k) {
+void InstanceKlass::add_implementor(Klass* k) {
   assert(Compile_lock->owned_by_self(), "");
   assert(is_interface(), "not interface");
   // Filter out my subinterfaces.
   // (Note: Interfaces are never on the subklass list.)
-  if (instanceKlass::cast(k)->is_interface()) return;
+  if (InstanceKlass::cast(k)->is_interface()) return;
 
   // Filter out subclasses whose supers already implement me.
   // (Note: CHA must walk subclasses of direct implementors
   // in order to locate indirect implementors.)
-  klassOop sk = instanceKlass::cast(k)->super();
-  if (sk != NULL && instanceKlass::cast(sk)->implements_interface(as_klassOop()))
+  Klass* sk = InstanceKlass::cast(k)->super();
+  if (sk != NULL && InstanceKlass::cast(sk)->implements_interface(this))
     // We only need to check one immediate superclass, since the
     // implements_interface query looks at transitive_interfaces.
     // Any supers of the super have the same (or fewer) transitive_interfaces.
     return;
 
-  klassOop ik = implementor();
+  Klass* ik = implementor();
   if (ik == NULL) {
     set_implementor(k);
-  } else if (ik != this->as_klassOop()) {
+  } else if (ik != this) {
     // There is already an implementor. Use itself as an indicator of
     // more than one implementors.
-    set_implementor(this->as_klassOop());
+    set_implementor(this);
   }
 
   // The implementor also implements the transitive_interfaces
   for (int index = 0; index < local_interfaces()->length(); index++) {
-    instanceKlass::cast(klassOop(local_interfaces()->obj_at(index)))->add_implementor(k);
+    InstanceKlass::cast(local_interfaces()->at(index))->add_implementor(k);
   }
 }
 
-void instanceKlass::init_implementor() {
+void InstanceKlass::init_implementor() {
   if (is_interface()) {
     set_implementor(NULL);
   }
 }
 
 
-void instanceKlass::process_interfaces(Thread *thread) {
+void InstanceKlass::process_interfaces(Thread *thread) {
   // link this class into the implementors list of every interface it implements
-  KlassHandle this_as_oop (thread, this->as_klassOop());
+  Klass* this_as_klass_oop = this;
   for (int i = local_interfaces()->length() - 1; i >= 0; i--) {
-    assert(local_interfaces()->obj_at(i)->is_klass(), "must be a klass");
-    instanceKlass* interf = instanceKlass::cast(klassOop(local_interfaces()->obj_at(i)));
+    assert(local_interfaces()->at(i)->is_klass(), "must be a klass");
+    InstanceKlass* interf = InstanceKlass::cast(local_interfaces()->at(i));
     assert(interf->is_interface(), "expected interface");
-    interf->add_implementor(this_as_oop());
+    interf->add_implementor(this_as_klass_oop);
   }
 }
 
-bool instanceKlass::can_be_primary_super_slow() const {
+bool InstanceKlass::can_be_primary_super_slow() const {
   if (is_interface())
     return false;
   else
     return Klass::can_be_primary_super_slow();
 }
 
-objArrayOop instanceKlass::compute_secondary_supers(int num_extra_slots, TRAPS) {
+GrowableArray<Klass*>* InstanceKlass::compute_secondary_supers(int num_extra_slots) {
   // The secondaries are the implemented interfaces.
-  instanceKlass* ik = instanceKlass::cast(as_klassOop());
-  objArrayHandle interfaces (THREAD, ik->transitive_interfaces());
+  InstanceKlass* ik = InstanceKlass::cast(this);
+  Array<Klass*>* interfaces = ik->transitive_interfaces();
   int num_secondaries = num_extra_slots + interfaces->length();
   if (num_secondaries == 0) {
-    return Universe::the_empty_system_obj_array();
+    // Must share this for correct bootstrapping!
+    set_secondary_supers(Universe::the_empty_klass_array());
+    return NULL;
   } else if (num_extra_slots == 0) {
-    return interfaces();
+    // The secondary super list is exactly the same as the transitive interfaces.
+    // Redefine classes has to be careful not to delete this!
+    set_secondary_supers(interfaces);
+    return NULL;
   } else {
-    // a mix of both
-    objArrayOop secondaries = oopFactory::new_system_objArray(num_secondaries, CHECK_NULL);
+    // Copy transitive interfaces to a temporary growable array to be constructed
+    // into the secondary super list with extra slots.
+    GrowableArray<Klass*>* secondaries = new GrowableArray<Klass*>(interfaces->length());
     for (int i = 0; i < interfaces->length(); i++) {
-      secondaries->obj_at_put(num_extra_slots+i, interfaces->obj_at(i));
+      secondaries->push(interfaces->at(i));
     }
     return secondaries;
   }
 }
 
-bool instanceKlass::compute_is_subtype_of(klassOop k) {
+bool InstanceKlass::compute_is_subtype_of(Klass* k) {
   if (Klass::cast(k)->is_interface()) {
     return implements_interface(k);
   } else {
@@ -660,18 +902,18 @@
   }
 }
 
-bool instanceKlass::implements_interface(klassOop k) const {
-  if (as_klassOop() == k) return true;
+bool InstanceKlass::implements_interface(Klass* k) const {
+  if (this == k) return true;
   assert(Klass::cast(k)->is_interface(), "should be an interface class");
   for (int i = 0; i < transitive_interfaces()->length(); i++) {
-    if (transitive_interfaces()->obj_at(i) == k) {
+    if (transitive_interfaces()->at(i) == k) {
       return true;
     }
   }
   return false;
 }
 
-objArrayOop instanceKlass::allocate_objArray(int n, int length, TRAPS) {
+objArrayOop InstanceKlass::allocate_objArray(int n, int length, TRAPS) {
   if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
   if (length > arrayOopDesc::max_array_length(T_OBJECT)) {
     report_java_out_of_memory("Requested array size exceeds VM limit");
@@ -679,14 +921,14 @@
     THROW_OOP_0(Universe::out_of_memory_error_array_size());
   }
   int size = objArrayOopDesc::object_size(length);
-  klassOop ak = array_klass(n, CHECK_NULL);
+  Klass* ak = array_klass(n, CHECK_NULL);
   KlassHandle h_ak (THREAD, ak);
   objArrayOop o =
     (objArrayOop)CollectedHeap::array_allocate(h_ak, size, length, CHECK_NULL);
   return o;
 }
 
-instanceOop instanceKlass::register_finalizer(instanceOop i, TRAPS) {
+instanceOop InstanceKlass::register_finalizer(instanceOop i, TRAPS) {
   if (TraceFinalizerRegistration) {
     tty->print("Registered ");
     i->print_value_on(tty);
@@ -701,12 +943,11 @@
   return h_i();
 }
 
-instanceOop instanceKlass::allocate_instance(TRAPS) {
-  assert(!oop_is_instanceMirror(), "wrong allocation path");
+instanceOop InstanceKlass::allocate_instance(TRAPS) {
   bool has_finalizer_flag = has_finalizer(); // Query before possible GC
   int size = size_helper();  // Query before forming handle.
 
-  KlassHandle h_k(THREAD, as_klassOop());
+  KlassHandle h_k(THREAD, this);
 
   instanceOop i;
 
@@ -717,39 +958,25 @@
   return i;
 }
 
-instanceOop instanceKlass::allocate_permanent_instance(TRAPS) {
-  // Finalizer registration occurs in the Object.<init> constructor
-  // and constructors normally aren't run when allocating perm
-  // instances so simply disallow finalizable perm objects.  This can
-  // be relaxed if a need for it is found.
-  assert(!has_finalizer(), "perm objects not allowed to have finalizers");
-  assert(!oop_is_instanceMirror(), "wrong allocation path");
-  int size = size_helper();  // Query before forming handle.
-  KlassHandle h_k(THREAD, as_klassOop());
-  instanceOop i = (instanceOop)
-    CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL);
-  return i;
-}
-
-void instanceKlass::check_valid_for_instantiation(bool throwError, TRAPS) {
+void InstanceKlass::check_valid_for_instantiation(bool throwError, TRAPS) {
   if (is_interface() || is_abstract()) {
     ResourceMark rm(THREAD);
     THROW_MSG(throwError ? vmSymbols::java_lang_InstantiationError()
               : vmSymbols::java_lang_InstantiationException(), external_name());
   }
-  if (as_klassOop() == SystemDictionary::Class_klass()) {
+  if (this == SystemDictionary::Class_klass()) {
     ResourceMark rm(THREAD);
     THROW_MSG(throwError ? vmSymbols::java_lang_IllegalAccessError()
               : vmSymbols::java_lang_IllegalAccessException(), external_name());
   }
 }
 
-klassOop instanceKlass::array_klass_impl(bool or_null, int n, TRAPS) {
-  instanceKlassHandle this_oop(THREAD, as_klassOop());
+Klass* InstanceKlass::array_klass_impl(bool or_null, int n, TRAPS) {
+  instanceKlassHandle this_oop(THREAD, this);
   return array_klass_impl(this_oop, or_null, n, THREAD);
 }
 
-klassOop instanceKlass::array_klass_impl(instanceKlassHandle this_oop, bool or_null, int n, TRAPS) {
+Klass* InstanceKlass::array_klass_impl(instanceKlassHandle this_oop, bool or_null, int n, TRAPS) {
   if (this_oop->array_klasses() == NULL) {
     if (or_null) return NULL;
 
@@ -762,35 +989,32 @@
 
       // Check if update has already taken place
       if (this_oop->array_klasses() == NULL) {
-        objArrayKlassKlass* oakk =
-          (objArrayKlassKlass*)Universe::objArrayKlassKlassObj()->klass_part();
-
-        klassOop  k = oakk->allocate_objArray_klass(1, this_oop, CHECK_NULL);
+        Klass*    k = objArrayKlass::allocate_objArray_klass(this_oop->class_loader_data(), 1, this_oop, CHECK_NULL);
         this_oop->set_array_klasses(k);
       }
     }
   }
   // _this will always be set at this point
-  objArrayKlass* oak = (objArrayKlass*)this_oop->array_klasses()->klass_part();
+  objArrayKlass* oak = (objArrayKlass*)this_oop->array_klasses();
   if (or_null) {
     return oak->array_klass_or_null(n);
   }
   return oak->array_klass(n, CHECK_NULL);
 }
 
-klassOop instanceKlass::array_klass_impl(bool or_null, TRAPS) {
+Klass* InstanceKlass::array_klass_impl(bool or_null, TRAPS) {
   return array_klass_impl(or_null, 1, THREAD);
 }
 
-void instanceKlass::call_class_initializer(TRAPS) {
-  instanceKlassHandle ik (THREAD, as_klassOop());
+void InstanceKlass::call_class_initializer(TRAPS) {
+  instanceKlassHandle ik (THREAD, this);
   call_class_initializer_impl(ik, THREAD);
 }
 
 static int call_class_initializer_impl_counter = 0;   // for debugging
 
-methodOop instanceKlass::class_initializer() {
-  methodOop clinit = find_method(
+Method* InstanceKlass::class_initializer() {
+  Method* clinit = find_method(
       vmSymbols::class_initializer_name(), vmSymbols::void_method_signature());
   if (clinit != NULL && clinit->has_valid_initializer_flags()) {
     return clinit;
@@ -798,7 +1022,7 @@
   return NULL;
 }
 
-void instanceKlass::call_class_initializer_impl(instanceKlassHandle this_oop, TRAPS) {
+void InstanceKlass::call_class_initializer_impl(instanceKlassHandle this_oop, TRAPS) {
   methodHandle h_method(THREAD, this_oop->class_initializer());
   assert(!this_oop->is_initialized(), "we cannot initialize twice");
   if (TraceClassInitialization) {
@@ -814,7 +1038,7 @@
 }
 
 
-void instanceKlass::mask_for(methodHandle method, int bci,
+void InstanceKlass::mask_for(methodHandle method, int bci,
   InterpreterOopMap* entry_for) {
   // Dirty read, then double-check under a lock.
   if (_oop_map_cache == NULL) {
@@ -830,12 +1054,12 @@
 }
 
 
-bool instanceKlass::find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
-  for (JavaFieldStream fs(as_klassOop()); !fs.done(); fs.next()) {
+bool InstanceKlass::find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
+  for (JavaFieldStream fs(this); !fs.done(); fs.next()) {
     Symbol* f_name = fs.name();
     Symbol* f_sig  = fs.signature();
     if (f_name == name && f_sig == sig) {
-      fd->initialize(as_klassOop(), fs.index());
+      fd->initialize(const_cast<InstanceKlass*>(this), fs.index());
       return true;
     }
   }
@@ -843,32 +1067,18 @@
 }
 
 
-void instanceKlass::shared_symbols_iterate(SymbolClosure* closure) {
-  Klass::shared_symbols_iterate(closure);
-  closure->do_symbol(&_generic_signature);
-  closure->do_symbol(&_source_file_name);
-
-  for (JavaFieldStream fs(this); !fs.done(); fs.next()) {
-    int name_index = fs.name_index();
-    closure->do_symbol(constants()->symbol_at_addr(name_index));
-    int sig_index  = fs.signature_index();
-    closure->do_symbol(constants()->symbol_at_addr(sig_index));
-  }
-}
-
-
-klassOop instanceKlass::find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
+Klass* InstanceKlass::find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
   const int n = local_interfaces()->length();
   for (int i = 0; i < n; i++) {
-    klassOop intf1 = klassOop(local_interfaces()->obj_at(i));
+    Klass* intf1 = local_interfaces()->at(i);
     assert(Klass::cast(intf1)->is_interface(), "just checking type");
     // search for field in current interface
-    if (instanceKlass::cast(intf1)->find_local_field(name, sig, fd)) {
+    if (InstanceKlass::cast(intf1)->find_local_field(name, sig, fd)) {
       assert(fd->is_static(), "interface field must be static");
       return intf1;
     }
     // search for field in direct superinterfaces
-    klassOop intf2 = instanceKlass::cast(intf1)->find_interface_field(name, sig, fd);
+    Klass* intf2 = InstanceKlass::cast(intf1)->find_interface_field(name, sig, fd);
     if (intf2 != NULL) return intf2;
   }
   // otherwise field lookup fails
@@ -876,49 +1086,49 @@
 }
 
 
-klassOop instanceKlass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
+Klass* InstanceKlass::find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const {
   // search order according to newest JVM spec (5.4.3.2, p.167).
   // 1) search for field in current klass
   if (find_local_field(name, sig, fd)) {
-    return as_klassOop();
+    return const_cast<InstanceKlass*>(this);
   }
   // 2) search for field recursively in direct superinterfaces
-  { klassOop intf = find_interface_field(name, sig, fd);
+  { Klass* intf = find_interface_field(name, sig, fd);
     if (intf != NULL) return intf;
   }
   // 3) apply field lookup recursively if superclass exists
-  { klassOop supr = super();
-    if (supr != NULL) return instanceKlass::cast(supr)->find_field(name, sig, fd);
+  { Klass* supr = super();
+    if (supr != NULL) return InstanceKlass::cast(supr)->find_field(name, sig, fd);
   }
   // 4) otherwise field lookup fails
   return NULL;
 }
 
 
-klassOop instanceKlass::find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const {
+Klass* InstanceKlass::find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const {
   // search order according to newest JVM spec (5.4.3.2, p.167).
   // 1) search for field in current klass
   if (find_local_field(name, sig, fd)) {
-    if (fd->is_static() == is_static) return as_klassOop();
+    if (fd->is_static() == is_static) return const_cast<InstanceKlass*>(this);
   }
   // 2) search for field recursively in direct superinterfaces
   if (is_static) {
-    klassOop intf = find_interface_field(name, sig, fd);
+    Klass* intf = find_interface_field(name, sig, fd);
     if (intf != NULL) return intf;
   }
   // 3) apply field lookup recursively if superclass exists
-  { klassOop supr = super();
-    if (supr != NULL) return instanceKlass::cast(supr)->find_field(name, sig, is_static, fd);
+  { Klass* supr = super();
+    if (supr != NULL) return InstanceKlass::cast(supr)->find_field(name, sig, is_static, fd);
   }
   // 4) otherwise field lookup fails
   return NULL;
 }
 
 
-bool instanceKlass::find_local_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const {
-  for (JavaFieldStream fs(as_klassOop()); !fs.done(); fs.next()) {
+bool InstanceKlass::find_local_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const {
+  for (JavaFieldStream fs(this); !fs.done(); fs.next()) {
     if (fs.offset() == offset) {
-      fd->initialize(as_klassOop(), fs.index());
+      fd->initialize(const_cast<InstanceKlass*>(this), fs.index());
       if (fd->is_static() == is_static) return true;
     }
   }
@@ -926,10 +1136,10 @@
 }
 
 
-bool instanceKlass::find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const {
-  klassOop klass = as_klassOop();
+bool InstanceKlass::find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const {
+  Klass* klass = const_cast<InstanceKlass*>(this);
   while (klass != NULL) {
-    if (instanceKlass::cast(klass)->find_local_field_from_offset(offset, is_static, fd)) {
+    if (InstanceKlass::cast(klass)->find_local_field_from_offset(offset, is_static, fd)) {
       return true;
     }
     klass = Klass::cast(klass)->super();
@@ -938,34 +1148,34 @@
 }
 
 
-void instanceKlass::methods_do(void f(methodOop method)) {
+void InstanceKlass::methods_do(void f(Method* method)) {
   int len = methods()->length();
   for (int index = 0; index < len; index++) {
-    methodOop m = methodOop(methods()->obj_at(index));
+    Method* m = methods()->at(index);
     assert(m->is_method(), "must be method");
     f(m);
   }
 }
 
 
-void instanceKlass::do_local_static_fields(FieldClosure* cl) {
+void InstanceKlass::do_local_static_fields(FieldClosure* cl) {
   for (JavaFieldStream fs(this); !fs.done(); fs.next()) {
     if (fs.access_flags().is_static()) {
       fieldDescriptor fd;
-      fd.initialize(as_klassOop(), fs.index());
+      fd.initialize(this, fs.index());
       cl->do_field(&fd);
     }
   }
 }
 
 
-void instanceKlass::do_local_static_fields(void f(fieldDescriptor*, TRAPS), TRAPS) {
-  instanceKlassHandle h_this(THREAD, as_klassOop());
+void InstanceKlass::do_local_static_fields(void f(fieldDescriptor*, TRAPS), TRAPS) {
+  instanceKlassHandle h_this(THREAD, this);
   do_local_static_fields_impl(h_this, f, CHECK);
 }
 
 
-void instanceKlass::do_local_static_fields_impl(instanceKlassHandle this_oop, void f(fieldDescriptor* fd, TRAPS), TRAPS) {
+void InstanceKlass::do_local_static_fields_impl(instanceKlassHandle this_oop, void f(fieldDescriptor* fd, TRAPS), TRAPS) {
   for (JavaFieldStream fs(this_oop()); !fs.done(); fs.next()) {
     if (fs.access_flags().is_static()) {
       fieldDescriptor fd;
@@ -980,8 +1190,8 @@
   return a[0] - b[0];
 }
 
-void instanceKlass::do_nonstatic_fields(FieldClosure* cl) {
-  instanceKlass* super = superklass();
+void InstanceKlass::do_nonstatic_fields(FieldClosure* cl) {
+  InstanceKlass* super = superklass();
   if (super != NULL) {
     super->do_nonstatic_fields(cl);
   }
@@ -991,7 +1201,7 @@
   int* fields_sorted = NEW_C_HEAP_ARRAY(int, 2*(length+1), mtClass);
   int j = 0;
   for (int i = 0; i < length; i += 1) {
-    fd.initialize(as_klassOop(), i);
+    fd.initialize(this, i);
     if (!fd.is_static()) {
       fields_sorted[j + 0] = fd.offset();
       fields_sorted[j + 1] = i;
@@ -1003,7 +1213,7 @@
     // _sort_Fn is defined in growableArray.hpp.
     qsort(fields_sorted, length/2, 2*sizeof(int), (_sort_Fn)compare_fields_by_offset);
     for (int i = 0; i < length; i += 2) {
-      fd.initialize(as_klassOop(), fields_sorted[i + 1]);
+      fd.initialize(this, fields_sorted[i + 1]);
       assert(!fd.is_static() && fd.offset() == fields_sorted[i], "only nonstatic fields");
       cl->do_field(&fd);
     }
@@ -1012,22 +1222,27 @@
 }
 
 
-void instanceKlass::array_klasses_do(void f(klassOop k)) {
+void InstanceKlass::array_klasses_do(void f(Klass* k, TRAPS), TRAPS) {
+  if (array_klasses() != NULL)
+    arrayKlass::cast(array_klasses())->array_klasses_do(f, THREAD);
+}
+
+void InstanceKlass::array_klasses_do(void f(Klass* k)) {
   if (array_klasses() != NULL)
     arrayKlass::cast(array_klasses())->array_klasses_do(f);
 }
 
 
-void instanceKlass::with_array_klasses_do(void f(klassOop k)) {
-  f(as_klassOop());
+void InstanceKlass::with_array_klasses_do(void f(Klass* k)) {
+  f(this);
   array_klasses_do(f);
 }
 
 #ifdef ASSERT
-static int linear_search(objArrayOop methods, Symbol* name, Symbol* signature) {
+static int linear_search(Array<Method*>* methods, Symbol* name, Symbol* signature) {
   int len = methods->length();
   for (int index = 0; index < len; index++) {
-    methodOop m = (methodOop)(methods->obj_at(index));
+    Method* m = methods->at(index);
     assert(m->is_method(), "must be method");
     if (m->signature() == signature && m->name() == name) {
        return index;
@@ -1037,18 +1252,18 @@
 }
 #endif
 
-methodOop instanceKlass::find_method(Symbol* name, Symbol* signature) const {
-  return instanceKlass::find_method(methods(), name, signature);
+Method* InstanceKlass::find_method(Symbol* name, Symbol* signature) const {
+  return InstanceKlass::find_method(methods(), name, signature);
 }
 
-methodOop instanceKlass::find_method(objArrayOop methods, Symbol* name, Symbol* signature) {
+Method* InstanceKlass::find_method(Array<Method*>* methods, Symbol* name, Symbol* signature) {
   int len = methods->length();
   // methods are sorted, so do binary search
   int l = 0;
   int h = len - 1;
   while (l <= h) {
     int mid = (l + h) >> 1;
-    methodOop m = (methodOop)methods->obj_at(mid);
+    Method* m = methods->at(mid);
     assert(m->is_method(), "must be method");
     int res = m->name()->fast_compare(name);
     if (res == 0) {
@@ -1058,14 +1273,14 @@
       // search downwards through overloaded methods
       int i;
       for (i = mid - 1; i >= l; i--) {
-        methodOop m = (methodOop)methods->obj_at(i);
+        Method* m = methods->at(i);
         assert(m->is_method(), "must be method");
         if (m->name() != name) break;
         if (m->signature() == signature) return m;
       }
       // search upwards
       for (i = mid + 1; i <= h; i++) {
-        methodOop m = (methodOop)methods->obj_at(i);
+        Method* m = methods->at(i);
         assert(m->is_method(), "must be method");
         if (m->name() != name) break;
         if (m->signature() == signature) return m;
@@ -1089,25 +1304,25 @@
   return NULL;
 }
 
-methodOop instanceKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
-  klassOop klass = as_klassOop();
+Method* InstanceKlass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
+  Klass* klass = const_cast<InstanceKlass*>(this);
   while (klass != NULL) {
-    methodOop method = instanceKlass::cast(klass)->find_method(name, signature);
+    Method* method = InstanceKlass::cast(klass)->find_method(name, signature);
     if (method != NULL) return method;
-    klass = instanceKlass::cast(klass)->super();
+    klass = InstanceKlass::cast(klass)->super();
   }
   return NULL;
 }
 
 // lookup a method in all the interfaces that this class implements
-methodOop instanceKlass::lookup_method_in_all_interfaces(Symbol* name,
+Method* InstanceKlass::lookup_method_in_all_interfaces(Symbol* name,
                                                          Symbol* signature) const {
-  objArrayOop all_ifs = instanceKlass::cast(as_klassOop())->transitive_interfaces();
+  Array<Klass*>* all_ifs = transitive_interfaces();
   int num_ifs = all_ifs->length();
-  instanceKlass *ik = NULL;
+  InstanceKlass *ik = NULL;
   for (int i = 0; i < num_ifs; i++) {
-    ik = instanceKlass::cast(klassOop(all_ifs->obj_at(i)));
-    methodOop m = ik->lookup_method(name, signature);
+    ik = InstanceKlass::cast(all_ifs->at(i));
+    Method* m = ik->lookup_method(name, signature);
     if (m != NULL) {
       return m;
     }
@@ -1116,13 +1331,13 @@
 }
 
 /* jni_id_for_impl for jfieldIds only */
-JNIid* instanceKlass::jni_id_for_impl(instanceKlassHandle this_oop, int offset) {
+JNIid* InstanceKlass::jni_id_for_impl(instanceKlassHandle this_oop, int offset) {
   MutexLocker ml(JfieldIdCreation_lock);
   // Retry lookup after we got the lock
   JNIid* probe = this_oop->jni_ids() == NULL ? NULL : this_oop->jni_ids()->find(offset);
   if (probe == NULL) {
     // Slow case, allocate new static field identifier
-    probe = new JNIid(this_oop->as_klassOop(), offset, this_oop->jni_ids());
+    probe = new JNIid(this_oop(), offset, this_oop->jni_ids());
     this_oop->set_jni_ids(probe);
   }
   return probe;
@@ -1130,16 +1345,16 @@
 
 
 /* jni_id_for for jfieldIds only */
-JNIid* instanceKlass::jni_id_for(int offset) {
+JNIid* InstanceKlass::jni_id_for(int offset) {
   JNIid* probe = jni_ids() == NULL ? NULL : jni_ids()->find(offset);
   if (probe == NULL) {
-    probe = jni_id_for_impl(this->as_klassOop(), offset);
+    probe = jni_id_for_impl(this, offset);
   }
   return probe;
 }
 
-u2 instanceKlass::enclosing_method_data(int offset) {
-  typeArrayOop inner_class_list = inner_classes();
+u2 InstanceKlass::enclosing_method_data(int offset) {
+  Array<jushort>* inner_class_list = inner_classes();
   if (inner_class_list == NULL) {
     return 0;
   }
@@ -1148,23 +1363,21 @@
     return 0;
   } else {
     int index = length - enclosing_method_attribute_size;
-    typeArrayHandle inner_class_list_h(inner_class_list);
     assert(offset < enclosing_method_attribute_size, "invalid offset");
-    return inner_class_list_h->ushort_at(index + offset);
+    return inner_class_list->at(index + offset);
   }
 }
 
-void instanceKlass::set_enclosing_method_indices(u2 class_index,
+void InstanceKlass::set_enclosing_method_indices(u2 class_index,
                                                  u2 method_index) {
-  typeArrayOop inner_class_list = inner_classes();
+  Array<jushort>* inner_class_list = inner_classes();
   assert (inner_class_list != NULL, "_inner_classes list is not set up");
   int length = inner_class_list->length();
   if (length % inner_class_next_offset == enclosing_method_attribute_size) {
     int index = length - enclosing_method_attribute_size;
-    typeArrayHandle inner_class_list_h(inner_class_list);
-    inner_class_list_h->ushort_at_put(
+    inner_class_list->at_put(
       index + enclosing_method_class_index_offset, class_index);
-    inner_class_list_h->ushort_at_put(
+    inner_class_list->at_put(
       index + enclosing_method_method_index_offset, method_index);
   }
 }
@@ -1174,7 +1387,7 @@
 // locking has to be done very carefully to avoid deadlocks
 // and/or other cache consistency problems.
 //
-jmethodID instanceKlass::get_jmethod_id(instanceKlassHandle ik_h, methodHandle method_h) {
+jmethodID InstanceKlass::get_jmethod_id(instanceKlassHandle ik_h, methodHandle method_h) {
   size_t idnum = (size_t)method_h->method_idnum();
   jmethodID* jmeths = ik_h->methods_jmethod_ids_acquire();
   size_t length = 0;
@@ -1245,14 +1458,13 @@
     jmethodID new_id = NULL;
     if (method_h->is_old() && !method_h->is_obsolete()) {
       // The method passed in is old (but not obsolete), we need to use the current version
-      methodOop current_method = ik_h->method_with_idnum((int)idnum);
+      Method* current_method = ik_h->method_with_idnum((int)idnum);
       assert(current_method != NULL, "old and but not obsolete, so should exist");
-      methodHandle current_method_h(current_method == NULL? method_h() : current_method);
-      new_id = JNIHandles::make_jmethod_id(current_method_h);
+      new_id = Method::make_jmethod_id(ik_h->class_loader_data(), current_method);
     } else {
       // It is the current version of the method or an obsolete method,
       // use the version passed in
-      new_id = JNIHandles::make_jmethod_id(method_h);
+      new_id = Method::make_jmethod_id(ik_h->class_loader_data(), method_h());
     }
 
     if (Threads::number_of_threads() == 0 ||
@@ -1273,7 +1485,7 @@
     }
     // free up the new ID since it wasn't needed
     if (to_dealloc_id != NULL) {
-      JNIHandles::destroy_jmethod_id(to_dealloc_id);
+      Method::destroy_jmethod_id(ik_h->class_loader_data(), to_dealloc_id);
     }
   }
   return id;
@@ -1285,7 +1497,7 @@
 // that causes the caller to go to a safepoint or we can deadlock with
 // the VMThread or have cache consistency issues.
 //
-jmethodID instanceKlass::get_jmethod_id_fetch_or_update(
+jmethodID InstanceKlass::get_jmethod_id_fetch_or_update(
             instanceKlassHandle ik_h, size_t idnum, jmethodID new_id,
             jmethodID* new_jmeths, jmethodID* to_dealloc_id_p,
             jmethodID** to_dealloc_jmeths_p) {
@@ -1337,7 +1549,7 @@
 // Common code to get the jmethodID cache length and the jmethodID
 // value at index idnum if there is one.
 //
-void instanceKlass::get_jmethod_id_length_value(jmethodID* cache,
+void InstanceKlass::get_jmethod_id_length_value(jmethodID* cache,
        size_t idnum, size_t *length_p, jmethodID* id_p) {
   assert(cache != NULL, "sanity check");
   assert(length_p != NULL, "sanity check");
@@ -1354,7 +1566,7 @@
 
 
 // Lookup a jmethodID, NULL if not found.  Do no blocking, no allocations, no handles
-jmethodID instanceKlass::jmethod_id_or_null(methodOop method) {
+jmethodID InstanceKlass::jmethod_id_or_null(Method* method) {
   size_t idnum = (size_t)method->method_idnum();
   jmethodID* jmeths = methods_jmethod_ids_acquire();
   size_t length;                                // length assigned as debugging crumb
@@ -1368,7 +1580,7 @@
 
 
 // Cache an itable index
-void instanceKlass::set_cached_itable_index(size_t idnum, int index) {
+void InstanceKlass::set_cached_itable_index(size_t idnum, int index) {
   int* indices = methods_cached_itable_indices_acquire();
   int* to_dealloc_indices = NULL;
 
@@ -1438,7 +1650,7 @@
 
 
 // Retrieve a cached itable index
-int instanceKlass::cached_itable_index(size_t idnum) {
+int InstanceKlass::cached_itable_index(size_t idnum) {
   int* indices = methods_cached_itable_indices_acquire();
   if (indices != NULL && ((size_t)indices[0]) > idnum) {
      // indices exist and are long enough, retrieve possible cached
@@ -1453,7 +1665,7 @@
 // are dependent on the changes that were passed in and mark them for
 // deoptimization.  Returns the number of nmethods found.
 //
-int instanceKlass::mark_dependent_nmethods(DepChange& changes) {
+int InstanceKlass::mark_dependent_nmethods(DepChange& changes) {
   assert_locked_or_safepoint(CodeCache_lock);
   int found = 0;
   nmethodBucket* b = _dependencies;
@@ -1485,7 +1697,7 @@
 // so a count is kept for each bucket to guarantee that creation and
 // deletion of dependencies is consistent.
 //
-void instanceKlass::add_dependent_nmethod(nmethod* nm) {
+void InstanceKlass::add_dependent_nmethod(nmethod* nm) {
   assert_locked_or_safepoint(CodeCache_lock);
   nmethodBucket* b = _dependencies;
   nmethodBucket* last = NULL;
@@ -1506,7 +1718,7 @@
 // find a corresponding bucket otherwise there's a bug in the
 // recording of dependecies.
 //
-void instanceKlass::remove_dependent_nmethod(nmethod* nm) {
+void InstanceKlass::remove_dependent_nmethod(nmethod* nm) {
   assert_locked_or_safepoint(CodeCache_lock);
   nmethodBucket* b = _dependencies;
   nmethodBucket* last = NULL;
@@ -1534,7 +1746,7 @@
 
 
 #ifndef PRODUCT
-void instanceKlass::print_dependent_nmethods(bool verbose) {
+void InstanceKlass::print_dependent_nmethods(bool verbose) {
   nmethodBucket* b = _dependencies;
   int idx = 0;
   while (b != NULL) {
@@ -1553,7 +1765,7 @@
 }
 
 
-bool instanceKlass::is_dependent_nmethod(nmethod* nm) {
+bool InstanceKlass::is_dependent_nmethod(nmethod* nm) {
   nmethodBucket* b = _dependencies;
   while (b != NULL) {
     if (nm == b->get_nmethod()) {
@@ -1566,6 +1778,18 @@
 #endif //PRODUCT
 
 
+// Garbage collection
+
+void InstanceKlass::oops_do(OopClosure* cl) {
+  Klass::oops_do(cl);
+
+  cl->do_oop(adr_protection_domain());
+  cl->do_oop(adr_signers());
+  cl->do_oop(adr_init_lock());
+
+  // Don't walk the arrays since they are walked from the ClassLoaderData objects.
+}
+
 #ifdef ASSERT
 template <class T> void assert_is_in(T *p) {
   T heap_oop = oopDesc::load_heap_oop(p);
@@ -1578,7 +1802,8 @@
   T heap_oop = oopDesc::load_heap_oop(p);
   if (!oopDesc::is_null(heap_oop)) {
     oop o = oopDesc::decode_heap_oop_not_null(heap_oop);
-    assert(Universe::heap()->is_in_closed_subset(o), "should be in closed");
+    assert(Universe::heap()->is_in_closed_subset(o),
+           err_msg("should be in closed *p " INTPTR_FORMAT " " INTPTR_FORMAT, (address)p, (address)o));
   }
 }
 template <class T> void assert_is_in_reserved(T *p) {
@@ -1732,9 +1957,9 @@
   }                                                                      \
 }
 
-void instanceKlass::oop_follow_contents(oop obj) {
+void InstanceKlass::oop_follow_contents(oop obj) {
   assert(obj != NULL, "can't follow the content of NULL object");
-  obj->follow_header();
+  MarkSweep::follow_klass(obj->klass());
   InstanceKlass_OOP_MAP_ITERATE( \
     obj, \
     MarkSweep::mark_and_push(p), \
@@ -1742,10 +1967,12 @@
 }
 
 #ifndef SERIALGC
-void instanceKlass::oop_follow_contents(ParCompactionManager* cm,
+void InstanceKlass::oop_follow_contents(ParCompactionManager* cm,
                                         oop obj) {
   assert(obj != NULL, "can't follow the content of NULL object");
-  obj->follow_header(cm);
+  PSParallelCompact::follow_klass(cm, obj->klass());
+  // Only mark the header and let the scan of the meta-data mark
+  // everything else.
   InstanceKlass_OOP_MAP_ITERATE( \
     obj, \
     PSParallelCompact::mark_and_push(cm, p), \
@@ -1753,16 +1980,22 @@
 }
 #endif // SERIALGC
 
-// closure's do_header() method dicates whether the given closure should be
+// closure's do_metadata() method dictates whether the given closure should be
 // applied to the klass ptr in the object header.
 
+#define if_do_metadata_checked(closure, nv_suffix)                    \
+  /* Make sure the non-virtual and the virtual versions match. */     \
+  assert(closure->do_metadata##nv_suffix() == closure->do_metadata(), \
+      "Inconsistency in do_metadata");                                \
+  if (closure->do_metadata##nv_suffix())
+
 #define InstanceKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)        \
                                                                              \
-int instanceKlass::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \
+int InstanceKlass::oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) { \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::ik);\
   /* header */                                                          \
-  if (closure->do_header()) {                                           \
-    obj->oop_iterate_header(closure);                                   \
+  if_do_metadata_checked(closure, nv_suffix) {                          \
+    closure->do_klass##nv_suffix(obj->klass());                         \
   }                                                                     \
   InstanceKlass_OOP_MAP_ITERATE(                                        \
     obj,                                                                \
@@ -1776,12 +2009,12 @@
 #ifndef SERIALGC
 #define InstanceKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
                                                                                 \
-int instanceKlass::oop_oop_iterate_backwards##nv_suffix(oop obj,                \
+int InstanceKlass::oop_oop_iterate_backwards##nv_suffix(oop obj,                \
                                               OopClosureType* closure) {        \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::ik); \
   /* header */                                                                  \
-  if (closure->do_header()) {                                                   \
-    obj->oop_iterate_header(closure);                                           \
+  if_do_metadata_checked(closure, nv_suffix) {                                  \
+    closure->do_klass##nv_suffix(obj->klass());                                 \
   }                                                                             \
   /* instance variables */                                                      \
   InstanceKlass_OOP_MAP_REVERSE_ITERATE(                                        \
@@ -1795,12 +2028,14 @@
 
 #define InstanceKlass_OOP_OOP_ITERATE_DEFN_m(OopClosureType, nv_suffix) \
                                                                         \
-int instanceKlass::oop_oop_iterate##nv_suffix##_m(oop obj,              \
+int InstanceKlass::oop_oop_iterate##nv_suffix##_m(oop obj,              \
                                                   OopClosureType* closure, \
                                                   MemRegion mr) {          \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::ik);\
-  if (closure->do_header()) {                                            \
-    obj->oop_iterate_header(closure, mr);                                \
+  if_do_metadata_checked(closure, nv_suffix) {                           \
+    if (mr.contains(obj)) {                                              \
+      closure->do_klass##nv_suffix(obj->klass());                        \
+    }                                                                    \
   }                                                                      \
   InstanceKlass_BOUNDED_OOP_MAP_ITERATE(                                 \
     obj, mr.start(), mr.end(),                                           \
@@ -1818,18 +2053,18 @@
 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN)
 #endif // !SERIALGC
 
-int instanceKlass::oop_adjust_pointers(oop obj) {
+int InstanceKlass::oop_adjust_pointers(oop obj) {
   int size = size_helper();
   InstanceKlass_OOP_MAP_ITERATE( \
     obj, \
     MarkSweep::adjust_pointer(p), \
     assert_is_in)
-  obj->adjust_header();
+  MarkSweep::adjust_klass(obj->klass());
   return size;
 }
 
 #ifndef SERIALGC
-void instanceKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
+void InstanceKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
   InstanceKlass_OOP_MAP_REVERSE_ITERATE( \
     obj, \
     if (PSScavenge::should_scavenge(p)) { \
@@ -1838,51 +2073,130 @@
     assert_nothing )
 }
 
-int instanceKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
+int InstanceKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
+  int size = size_helper();
   InstanceKlass_OOP_MAP_ITERATE( \
     obj, \
     PSParallelCompact::adjust_pointer(p), \
-    assert_nothing)
-  return size_helper();
+    assert_is_in)
+  obj->update_header(cm);
+  return size;
 }
 
 #endif // SERIALGC
 
-// This klass is alive but the implementor link is not followed/updated.
-// Subklass and sibling links are handled by Klass::follow_weak_klass_links
-
-void instanceKlass::follow_weak_klass_links(
-  BoolObjectClosure* is_alive, OopClosure* keep_alive) {
-  assert(is_alive->do_object_b(as_klassOop()), "this oop should be live");
-
+void InstanceKlass::clean_implementors_list(BoolObjectClosure* is_alive) {
+  assert(is_loader_alive(is_alive), "this klass should be live");
   if (is_interface()) {
     if (ClassUnloading) {
-      klassOop impl = implementor();
+      Klass* impl = implementor();
       if (impl != NULL) {
-        if (!is_alive->do_object_b(impl)) {
+        if (!impl->is_loader_alive(is_alive)) {
           // remove this guy
           *adr_implementor() = NULL;
         }
       }
-    } else {
-      assert(adr_implementor() != NULL, "just checking");
-      keep_alive->do_oop(adr_implementor());
+    }
+  }
+}
+
+void InstanceKlass::clean_method_data(BoolObjectClosure* is_alive) {
+#ifdef COMPILER2
+  // Currently only used by C2.
+  for (int m = 0; m < methods()->length(); m++) {
+    MethodData* mdo = methods()->at(m)->method_data();
+    if (mdo != NULL) {
+      for (ProfileData* data = mdo->first_data();
+           mdo->is_valid(data);
+           data = mdo->next_data(data)) {
+        data->clean_weak_klass_links(is_alive);
+      }
     }
   }
-
-  Klass::follow_weak_klass_links(is_alive, keep_alive);
+#else
+#ifdef ASSERT
+  // Verify that we haven't started to use MDOs for C1.
+  for (int m = 0; m < methods()->length(); m++) {
+    MethodData* mdo = methods()->at(m)->method_data();
+    assert(mdo == NULL, "Didn't expect C1 to use MDOs");
+  }
+#endif // ASSERT
+#endif // !COMPILER2
+}
+
+
+static void remove_unshareable_in_class(Klass* k) {
+  // remove klass's unshareable info
+  k->remove_unshareable_info();
+}
+
+void InstanceKlass::remove_unshareable_info() {
+  Klass::remove_unshareable_info();
+  // Unlink the class
+  if (is_linked()) {
+    unlink_class();
+  }
+  init_implementor();
+
+  constants()->remove_unshareable_info();
+
+  for (int i = 0; i < methods()->length(); i++) {
+    Method* m = methods()->at(i);
+    m->remove_unshareable_info();
+  }
+
+  // Need to reinstate when reading back the class.
+  set_init_lock(NULL);
+
+  // do array classes also.
+  array_klasses_do(remove_unshareable_in_class);
 }
 
-void instanceKlass::remove_unshareable_info() {
-  Klass::remove_unshareable_info();
-  init_implementor();
+void restore_unshareable_in_class(Klass* k, TRAPS) {
+  k->restore_unshareable_info(CHECK);
 }
 
-static void clear_all_breakpoints(methodOop m) {
+void InstanceKlass::restore_unshareable_info(TRAPS) {
+  Klass::restore_unshareable_info(CHECK);
+  instanceKlassHandle ik(THREAD, this);
+
+  Array<Method*>* methods = ik->methods();
+  int num_methods = methods->length();
+  for (int index2 = 0; index2 < num_methods; ++index2) {
+    methodHandle m(THREAD, methods->at(index2));
+    m()->link_method(m, CHECK);
+    // restore method's vtable by calling a virtual function
+    m->restore_vtable();
+  }
+  if (JvmtiExport::has_redefined_a_class()) {
+    // Reinitialize vtable because RedefineClasses may have changed some
+    // entries in this vtable for super classes so the CDS vtable might
+    // point to old or obsolete entries.  RedefineClasses doesn't fix up
+    // vtables in the shared system dictionary, only the main one.
+    // It also redefines the itable too so fix that too.
+    ResourceMark rm(THREAD);
+    ik->vtable()->initialize_vtable(false, CHECK);
+    ik->itable()->initialize_itable(false, CHECK);
+  }
+
+  // Allocate a simple java object for a lock.
+  // This needs to be a java object because during class initialization
+  // it can be held across a java call.
+  typeArrayOop r = oopFactory::new_typeArray(T_INT, 0, CHECK);
+  Handle h(THREAD, (oop)r);
+  ik->set_init_lock(h());
+
+  // restore constant pool resolved references
+  ik->constants()->restore_unshareable_info(CHECK);
+
+  ik->array_klasses_do(restore_unshareable_in_class, CHECK);
+}
+
+static void clear_all_breakpoints(Method* m) {
   m->clear_all_breakpoints();
 }
 
-void instanceKlass::release_C_heap_structures() {
+void InstanceKlass::release_C_heap_structures() {
   // Deallocate oop map cache
   if (_oop_map_cache != NULL) {
     delete _oop_map_cache;
@@ -1943,18 +2257,15 @@
   // class can't be referenced anymore).
   if (_array_name != NULL)  _array_name->decrement_refcount();
   if (_source_file_name != NULL) _source_file_name->decrement_refcount();
-  // walk constant pool and decrement symbol reference counts
-  _constants->unreference_symbols();
-
   if (_source_debug_extension != NULL) FREE_C_HEAP_ARRAY(char, _source_debug_extension, mtClass);
 }
 
-void instanceKlass::set_source_file_name(Symbol* n) {
+void InstanceKlass::set_source_file_name(Symbol* n) {
   _source_file_name = n;
   if (_source_file_name != NULL) _source_file_name->increment_refcount();
 }
 
-void instanceKlass::set_source_debug_extension(char* array, int length) {
+void InstanceKlass::set_source_debug_extension(char* array, int length) {
   if (array == NULL) {
     _source_debug_extension = NULL;
   } else {
@@ -1972,12 +2283,12 @@
   }
 }
 
-address instanceKlass::static_field_addr(int offset) {
-  return (address)(offset + instanceMirrorKlass::offset_of_static_fields() + (intptr_t)java_mirror());
+address InstanceKlass::static_field_addr(int offset) {
+  return (address)(offset + InstanceMirrorKlass::offset_of_static_fields() + (intptr_t)java_mirror());
 }
 
 
-const char* instanceKlass::signature_name() const {
+const char* InstanceKlass::signature_name() const {
   const char* src = (const char*) (name()->as_C_string());
   const int src_length = (int)strlen(src);
   char* dest = NEW_RESOURCE_ARRAY(char, src_length + 3);
@@ -1993,9 +2304,9 @@
 }
 
 // different verisons of is_same_class_package
-bool instanceKlass::is_same_class_package(klassOop class2) {
-  klassOop class1 = as_klassOop();
-  oop classloader1 = instanceKlass::cast(class1)->class_loader();
+bool InstanceKlass::is_same_class_package(Klass* class2) {
+  Klass* class1 = this;
+  oop classloader1 = InstanceKlass::cast(class1)->class_loader();
   Symbol* classname1 = Klass::cast(class1)->name();
 
   if (Klass::cast(class2)->oop_is_objArray()) {
@@ -2003,29 +2314,29 @@
   }
   oop classloader2;
   if (Klass::cast(class2)->oop_is_instance()) {
-    classloader2 = instanceKlass::cast(class2)->class_loader();
+    classloader2 = InstanceKlass::cast(class2)->class_loader();
   } else {
     assert(Klass::cast(class2)->oop_is_typeArray(), "should be type array");
     classloader2 = NULL;
   }
   Symbol* classname2 = Klass::cast(class2)->name();
 
-  return instanceKlass::is_same_class_package(classloader1, classname1,
+  return InstanceKlass::is_same_class_package(classloader1, classname1,
                                               classloader2, classname2);
 }
 
-bool instanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) {
-  klassOop class1 = as_klassOop();
-  oop classloader1 = instanceKlass::cast(class1)->class_loader();
+bool InstanceKlass::is_same_class_package(oop classloader2, Symbol* classname2) {
+  Klass* class1 = this;
+  oop classloader1 = InstanceKlass::cast(class1)->class_loader();
   Symbol* classname1 = Klass::cast(class1)->name();
 
-  return instanceKlass::is_same_class_package(classloader1, classname1,
+  return InstanceKlass::is_same_class_package(classloader1, classname1,
                                               classloader2, classname2);
 }
 
 // return true if two classes are in the same package, classloader
 // and classname information is enough to determine a class's package
-bool instanceKlass::is_same_class_package(oop class_loader1, Symbol* class_name1,
+bool InstanceKlass::is_same_class_package(oop class_loader1, Symbol* class_name1,
                                           oop class_loader2, Symbol* class_name2) {
   if (class_loader1 != class_loader2) {
     return false;
@@ -2080,9 +2391,9 @@
 // Returns true iff super_method can be overridden by a method in targetclassname
 // See JSL 3rd edition 8.4.6.1
 // Assumes name-signature match
-// "this" is instanceKlass of super_method which must exist
-// note that the instanceKlass of the method in the targetclassname has not always been created yet
-bool instanceKlass::is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS) {
+// "this" is InstanceKlass of super_method which must exist
+// note that the InstanceKlass of the method in the targetclassname has not always been created yet
+bool InstanceKlass::is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS) {
    // Private methods can not be overridden
    if (super_method->is_private()) {
      return false;
@@ -2098,16 +2409,16 @@
 }
 
 /* defined for now in jvm.cpp, for historical reasons *--
-klassOop instanceKlass::compute_enclosing_class_impl(instanceKlassHandle self,
+Klass* InstanceKlass::compute_enclosing_class_impl(instanceKlassHandle self,
                                                      Symbol*& simple_name_result, TRAPS) {
   ...
 }
 */
 
 // tell if two classes have the same enclosing class (at package level)
-bool instanceKlass::is_same_package_member_impl(instanceKlassHandle class1,
-                                                klassOop class2_oop, TRAPS) {
-  if (class2_oop == class1->as_klassOop())          return true;
+bool InstanceKlass::is_same_package_member_impl(instanceKlassHandle class1,
+                                                Klass* class2_oop, TRAPS) {
+  if (class2_oop == class1())                       return true;
   if (!Klass::cast(class2_oop)->oop_is_instance())  return false;
   instanceKlassHandle class2(THREAD, class2_oop);
 
@@ -2123,7 +2434,7 @@
     // Eventually, the walks will terminate as outer1 stops
     // at the top-level class around the original class.
     bool ignore_inner_is_member;
-    klassOop next = outer1->compute_enclosing_class(&ignore_inner_is_member,
+    Klass* next = outer1->compute_enclosing_class(&ignore_inner_is_member,
                                                     CHECK_false);
     if (next == NULL)  break;
     if (next == class2())  return true;
@@ -2134,7 +2445,7 @@
   instanceKlassHandle outer2 = class2;
   for (;;) {
     bool ignore_inner_is_member;
-    klassOop next = outer2->compute_enclosing_class(&ignore_inner_is_member,
+    Klass* next = outer2->compute_enclosing_class(&ignore_inner_is_member,
                                                     CHECK_false);
     if (next == NULL)  break;
     // Might as well check the new outer against all available values.
@@ -2149,12 +2460,11 @@
 }
 
 
-jint instanceKlass::compute_modifier_flags(TRAPS) const {
-  klassOop k = as_klassOop();
+jint InstanceKlass::compute_modifier_flags(TRAPS) const {
   jint access = access_flags().as_int();
 
   // But check if it happens to be member class.
-  instanceKlassHandle ik(THREAD, k);
+  instanceKlassHandle ik(THREAD, this);
   InnerClassesIterator iter(ik);
   for (; !iter.done(); iter.next()) {
     int ioff = iter.inner_class_info_index();
@@ -2175,7 +2485,7 @@
   return (access & (~JVM_ACC_SUPER)) & JVM_ACC_WRITTEN_FLAGS;
 }
 
-jint instanceKlass::jvmti_class_status() const {
+jint InstanceKlass::jvmti_class_status() const {
   jint result = 0;
 
   if (is_linked()) {
@@ -2192,7 +2502,7 @@
   return result;
 }
 
-methodOop instanceKlass::method_at_itable(klassOop holder, int index, TRAPS) {
+Method* InstanceKlass::method_at_itable(Klass* holder, int index, TRAPS) {
   itableOffsetEntry* ioe = (itableOffsetEntry*)start_of_itable();
   int method_table_offset_in_words = ioe->offset()/wordSize;
   int nof_interfaces = (method_table_offset_in_words - itable_offset_in_words())
@@ -2202,23 +2512,23 @@
     // If the interface isn't implemented by the receiver class,
     // the VM should throw IncompatibleClassChangeError.
     if (cnt >= nof_interfaces) {
-      THROW_0(vmSymbols::java_lang_IncompatibleClassChangeError());
+      THROW_NULL(vmSymbols::java_lang_IncompatibleClassChangeError());
     }
 
-    klassOop ik = ioe->interface_klass();
+    Klass* ik = ioe->interface_klass();
     if (ik == holder) break;
   }
 
-  itableMethodEntry* ime = ioe->first_method_entry(as_klassOop());
-  methodOop m = ime[index].method();
+  itableMethodEntry* ime = ioe->first_method_entry(this);
+  Method* m = ime[index].method();
   if (m == NULL) {
-    THROW_0(vmSymbols::java_lang_AbstractMethodError());
+    THROW_NULL(vmSymbols::java_lang_AbstractMethodError());
   }
   return m;
 }
 
 // On-stack replacement stuff
-void instanceKlass::add_osr_nmethod(nmethod* n) {
+void InstanceKlass::add_osr_nmethod(nmethod* n) {
   // only one compilation can be active
   NEEDS_CLEANUP
   // This is a short non-blocking critical region, so the no safepoint check is ok.
@@ -2228,7 +2538,7 @@
   set_osr_nmethods_head(n);
   // Raise the highest osr level if necessary
   if (TieredCompilation) {
-    methodOop m = n->method();
+    Method* m = n->method();
     m->set_highest_osr_comp_level(MAX2(m->highest_osr_comp_level(), n->comp_level()));
   }
   // Remember to unlock again
@@ -2246,14 +2556,14 @@
 }
 
 
-void instanceKlass::remove_osr_nmethod(nmethod* n) {
+void InstanceKlass::remove_osr_nmethod(nmethod* n) {
   // This is a short non-blocking critical region, so the no safepoint check is ok.
   OsrList_lock->lock_without_safepoint_check();
   assert(n->is_osr_method(), "wrong kind of nmethod");
   nmethod* last = NULL;
   nmethod* cur  = osr_nmethods_head();
   int max_level = CompLevel_none;  // Find the max comp level excluding n
-  methodOop m = n->method();
+  Method* m = n->method();
   // Search for match
   while(cur != NULL && cur != n) {
     if (TieredCompilation) {
@@ -2287,7 +2597,7 @@
   OsrList_lock->unlock();
 }
 
-nmethod* instanceKlass::lookup_osr_nmethod(const methodOop m, int bci, int comp_level, bool match_level) const {
+nmethod* InstanceKlass::lookup_osr_nmethod(Method* const m, int bci, int comp_level, bool match_level) const {
   // This is a short non-blocking critical region, so the no safepoint check is ok.
   OsrList_lock->lock_without_safepoint_check();
   nmethod* osr = osr_nmethods_head();
@@ -2329,12 +2639,135 @@
 }
 
 // -----------------------------------------------------------------------------------------------------
+// Printing
+
 #ifndef PRODUCT
 
-// Printing
-
 #define BULLET  " - "
 
+static const char* state_names[] = {
+  "allocated", "loaded", "linked", "being_initialized", "fully_initialized", "initialization_error"
+};
+
+void InstanceKlass::print_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+  Klass::print_on(st);
+
+  st->print(BULLET"instance size:     %d", size_helper());                        st->cr();
+  st->print(BULLET"klass size:        %d", size());                               st->cr();
+  st->print(BULLET"access:            "); access_flags().print_on(st);            st->cr();
+  st->print(BULLET"state:             "); st->print_cr(state_names[_init_state]);
+  st->print(BULLET"name:              "); name()->print_value_on(st);             st->cr();
+  st->print(BULLET"super:             "); super()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"sub:               ");
+  Klass* sub = subklass();
+  int n;
+  for (n = 0; sub != NULL; n++, sub = sub->next_sibling()) {
+    if (n < MaxSubklassPrintSize) {
+      sub->print_value_on(st);
+      st->print("   ");
+    }
+  }
+  if (n >= MaxSubklassPrintSize) st->print("(%d more klasses...)", n - MaxSubklassPrintSize);
+  st->cr();
+
+  if (is_interface()) {
+    st->print_cr(BULLET"nof implementors:  %d", nof_implementors());
+    if (nof_implementors() == 1) {
+      st->print_cr(BULLET"implementor:    ");
+      st->print("   ");
+      implementor()->print_value_on(st);
+      st->cr();
+    }
+  }
+
+  st->print(BULLET"arrays:            "); array_klasses()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"methods:           "); methods()->print_value_on(st);                  st->cr();
+  if (Verbose) {
+    Array<Method*>* method_array = methods();
+    for(int i = 0; i < method_array->length(); i++) {
+      st->print("%d : ", i); method_array->at(i)->print_value(); st->cr();
+    }
+  }
+  st->print(BULLET"method ordering:   "); method_ordering()->print_value_on(st);       st->cr();
+  st->print(BULLET"local interfaces:  "); local_interfaces()->print_value_on(st);      st->cr();
+  st->print(BULLET"trans. interfaces: "); transitive_interfaces()->print_value_on(st); st->cr();
+  st->print(BULLET"constants:         "); constants()->print_value_on(st);         st->cr();
+  if (class_loader_data() != NULL) {
+    st->print(BULLET"class loader data:  ");
+    class_loader_data()->print_value_on(st);
+    st->cr();
+  }
+  st->print(BULLET"protection domain: "); ((InstanceKlass*)this)->protection_domain()->print_value_on(st); st->cr();
+  st->print(BULLET"host class:        "); host_klass()->print_value_on_maybe_null(st); st->cr();
+  st->print(BULLET"signers:           "); signers()->print_value_on(st);               st->cr();
+  st->print(BULLET"init_lock:         "); ((oop)init_lock())->print_value_on(st);             st->cr();
+  if (source_file_name() != NULL) {
+    st->print(BULLET"source file:       ");
+    source_file_name()->print_value_on(st);
+    st->cr();
+  }
+  if (source_debug_extension() != NULL) {
+    st->print(BULLET"source debug extension:       ");
+    st->print("%s", source_debug_extension());
+    st->cr();
+  }
+  st->print(BULLET"annotations:       "); annotations()->print_value_on(st); st->cr();
+  {
+    ResourceMark rm;
+    // PreviousVersionInfo objects returned via PreviousVersionWalker
+    // contain a GrowableArray of handles. We have to clean up the
+    // GrowableArray _after_ the PreviousVersionWalker destructor
+    // has destroyed the handles.
+    {
+      bool have_pv = false;
+      PreviousVersionWalker pvw((InstanceKlass*)this);
+      for (PreviousVersionInfo * pv_info = pvw.next_previous_version();
+           pv_info != NULL; pv_info = pvw.next_previous_version()) {
+        if (!have_pv)
+          st->print(BULLET"previous version:  ");
+        have_pv = true;
+        pv_info->prev_constant_pool_handle()()->print_value_on(st);
+      }
+      if (have_pv)  st->cr();
+    } // pvw is cleaned up
+  } // rm is cleaned up
+
+  if (generic_signature() != NULL) {
+    st->print(BULLET"generic signature: ");
+    generic_signature()->print_value_on(st);
+    st->cr();
+  }
+  st->print(BULLET"inner classes:     "); inner_classes()->print_value_on(st);     st->cr();
+  st->print(BULLET"java mirror:       "); java_mirror()->print_value_on(st);       st->cr();
+  st->print(BULLET"vtable length      %d  (start addr: " INTPTR_FORMAT ")", vtable_length(), start_of_vtable());  st->cr();
+  st->print(BULLET"itable length      %d (start addr: " INTPTR_FORMAT ")", itable_length(), start_of_itable()); st->cr();
+  st->print_cr(BULLET"---- static fields (%d words):", static_field_size());
+  FieldPrinter print_static_field(st);
+  ((InstanceKlass*)this)->do_local_static_fields(&print_static_field);
+  st->print_cr(BULLET"---- non-static fields (%d words):", nonstatic_field_size());
+  FieldPrinter print_nonstatic_field(st);
+  ((InstanceKlass*)this)->do_nonstatic_fields(&print_nonstatic_field);
+
+  st->print(BULLET"non-static oop maps: ");
+  OopMapBlock* map     = start_of_nonstatic_oop_maps();
+  OopMapBlock* end_map = map + nonstatic_oop_map_count();
+  while (map < end_map) {
+    st->print("%d-%d ", map->offset(), map->offset() + heapOopSize*(map->count() - 1));
+    map++;
+  }
+  st->cr();
+}
+
+#endif //PRODUCT
+
+void InstanceKlass::print_value_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+  name()->print_value_on(st);
+}
+
+#ifndef PRODUCT
+
 void FieldPrinter::do_field(fieldDescriptor* fd) {
   _st->print(BULLET);
    if (_obj == NULL) {
@@ -2347,10 +2780,10 @@
 }
 
 
-void instanceKlass::oop_print_on(oop obj, outputStream* st) {
+void InstanceKlass::oop_print_on(oop obj, outputStream* st) {
   Klass::oop_print_on(obj, st);
 
-  if (as_klassOop() == SystemDictionary::String_klass()) {
+  if (this == SystemDictionary::String_klass()) {
     typeArrayOop value  = java_lang_String::value(obj);
     juint        offset = java_lang_String::offset(obj);
     juint        length = java_lang_String::length(obj);
@@ -2370,29 +2803,29 @@
   FieldPrinter print_field(st, obj);
   do_nonstatic_fields(&print_field);
 
-  if (as_klassOop() == SystemDictionary::Class_klass()) {
+  if (this == SystemDictionary::Class_klass()) {
     st->print(BULLET"signature: ");
     java_lang_Class::print_signature(obj, st);
     st->cr();
-    klassOop mirrored_klass = java_lang_Class::as_klassOop(obj);
+    Klass* mirrored_klass = java_lang_Class::as_Klass(obj);
     st->print(BULLET"fake entry for mirror: ");
-    mirrored_klass->print_value_on(st);
+    mirrored_klass->print_value_on_maybe_null(st);
     st->cr();
     st->print(BULLET"fake entry resolved_constructor: ");
-    methodOop ctor = java_lang_Class::resolved_constructor(obj);
-    ctor->print_value_on(st);
-    klassOop array_klass = java_lang_Class::array_klass(obj);
+    Method* ctor = java_lang_Class::resolved_constructor(obj);
+    ctor->print_value_on_maybe_null(st);
+    Klass* array_klass = java_lang_Class::array_klass(obj);
     st->cr();
     st->print(BULLET"fake entry for array: ");
-    array_klass->print_value_on(st);
+    array_klass->print_value_on_maybe_null(st);
     st->cr();
     st->print_cr(BULLET"fake entry for oop_size: %d", java_lang_Class::oop_size(obj));
     st->print_cr(BULLET"fake entry for static_oop_field_count: %d", java_lang_Class::static_oop_field_count(obj));
-    klassOop real_klass = java_lang_Class::as_klassOop(obj);
-    if (real_klass != NULL && real_klass->klass_part()->oop_is_instance()) {
-      instanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
+    Klass* real_klass = java_lang_Class::as_Klass(obj);
+    if (real_klass != NULL && real_klass->oop_is_instance()) {
+      InstanceKlass::cast(real_klass)->do_local_static_fields(&print_field);
     }
-  } else if (as_klassOop() == SystemDictionary::MethodType_klass()) {
+  } else if (this == SystemDictionary::MethodType_klass()) {
     st->print(BULLET"signature: ");
     java_lang_invoke_MethodType::print_signature(obj, st);
     st->cr();
@@ -2401,11 +2834,11 @@
 
 #endif //PRODUCT
 
-void instanceKlass::oop_print_value_on(oop obj, outputStream* st) {
+void InstanceKlass::oop_print_value_on(oop obj, outputStream* st) {
   st->print("a ");
   name()->print_value_on(st);
   obj->print_address_on(st);
-  if (as_klassOop() == SystemDictionary::String_klass()
+  if (this == SystemDictionary::String_klass()
       && java_lang_String::value(obj) != NULL) {
     ResourceMark rm;
     int len = java_lang_String::length(obj);
@@ -2414,8 +2847,8 @@
     st->print(" = \"%s\"", str);
     if (len > plen)
       st->print("...[%d]", len);
-  } else if (as_klassOop() == SystemDictionary::Class_klass()) {
-    klassOop k = java_lang_Class::as_klassOop(obj);
+  } else if (this == SystemDictionary::Class_klass()) {
+    Klass* k = java_lang_Class::as_Klass(obj);
     st->print(" = ");
     if (k != NULL) {
       k->print_value_on(st);
@@ -2423,20 +2856,20 @@
       const char* tname = type2name(java_lang_Class::primitive_type(obj));
       st->print("%s", tname ? tname : "type?");
     }
-  } else if (as_klassOop() == SystemDictionary::MethodType_klass()) {
+  } else if (this == SystemDictionary::MethodType_klass()) {
     st->print(" = ");
     java_lang_invoke_MethodType::print_signature(obj, st);
   } else if (java_lang_boxing_object::is_instance(obj)) {
     st->print(" = ");
     java_lang_boxing_object::print(obj, st);
-  } else if (as_klassOop() == SystemDictionary::LambdaForm_klass()) {
+  } else if (this == SystemDictionary::LambdaForm_klass()) {
     oop vmentry = java_lang_invoke_LambdaForm::vmentry(obj);
     if (vmentry != NULL) {
       st->print(" => ");
       vmentry->print_value_on(st);
     }
-  } else if (as_klassOop() == SystemDictionary::MemberName_klass()) {
-    oop vmtarget = java_lang_invoke_MemberName::vmtarget(obj);
+  } else if (this == SystemDictionary::MemberName_klass()) {
+    Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(obj);
     if (vmtarget != NULL) {
       st->print(" = ");
       vmtarget->print_value_on(st);
@@ -2448,7 +2881,7 @@
   }
 }
 
-const char* instanceKlass::internal_name() const {
+const char* InstanceKlass::internal_name() const {
   return external_name();
 }
 
@@ -2457,7 +2890,6 @@
 class VerifyFieldClosure: public OopClosure {
  protected:
   template <class T> void do_oop_work(T* p) {
-    guarantee(Universe::heap()->is_in_closed_subset(p), "should be in heap");
     oop obj = oopDesc::load_decode_heap_oop(p);
     if (!obj->is_oop_or_null()) {
       tty->print_cr("Failed: " PTR_FORMAT " -> " PTR_FORMAT, p, (address)obj);
@@ -2470,17 +2902,151 @@
   virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
 };
 
-void instanceKlass::oop_verify_on(oop obj, outputStream* st) {
+void InstanceKlass::verify_on(outputStream* st) {
+  Klass::verify_on(st);
+  Thread *thread = Thread::current();
+
+#ifndef PRODUCT
+  // Avoid redundant verifies
+  if (_verify_count == Universe::verify_count()) return;
+  _verify_count = Universe::verify_count();
+#endif
+  // Verify that klass is present in SystemDictionary
+  if (is_loaded() && !is_anonymous()) {
+    Symbol* h_name = name();
+    SystemDictionary::verify_obj_klass_present(h_name, class_loader_data());
+  }
+
+  // Verify static fields
+  VerifyFieldClosure blk;
+
+  // Verify vtables
+  if (is_linked()) {
+    ResourceMark rm(thread);
+    // $$$ This used to be done only for m/s collections.  Doing it
+    // always seemed a valid generalization.  (DLD -- 6/00)
+    vtable()->verify(st);
+  }
+
+  // Verify first subklass
+  if (subklass_oop() != NULL) {
+    guarantee(subklass_oop()->is_metadata(), "should be in metaspace");
+    guarantee(subklass_oop()->is_klass(), "should be klass");
+  }
+
+  // Verify siblings
+  Klass* super = this->super();
+  Klass* sib = next_sibling();
+  if (sib != NULL) {
+    if (sib == this) {
+      fatal(err_msg("subclass points to itself " PTR_FORMAT, sib));
+    }
+
+    guarantee(sib->is_metadata(), "should be in metaspace");
+    guarantee(sib->is_klass(), "should be klass");
+    guarantee(sib->super() == super, "siblings should have same superklass");
+  }
+
+  // Verify implementor fields
+  Klass* im = implementor();
+  if (im != NULL) {
+    guarantee(is_interface(), "only interfaces should have implementor set");
+    guarantee(im->is_klass(), "should be klass");
+    guarantee(!Klass::cast(im)->is_interface() || im == this,
+      "implementors cannot be interfaces");
+  }
+
+  // Verify local interfaces
+  if (local_interfaces()) {
+    Array<Klass*>* local_interfaces = this->local_interfaces();
+    for (int j = 0; j < local_interfaces->length(); j++) {
+      Klass* e = local_interfaces->at(j);
+      guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid local interface");
+    }
+  }
+
+  // Verify transitive interfaces
+  if (transitive_interfaces() != NULL) {
+    Array<Klass*>* transitive_interfaces = this->transitive_interfaces();
+    for (int j = 0; j < transitive_interfaces->length(); j++) {
+      Klass* e = transitive_interfaces->at(j);
+      guarantee(e->is_klass() && Klass::cast(e)->is_interface(), "invalid transitive interface");
+    }
+  }
+
+  // Verify methods
+  if (methods() != NULL) {
+    Array<Method*>* methods = this->methods();
+    for (int j = 0; j < methods->length(); j++) {
+      guarantee(methods->at(j)->is_metadata(), "should be in metaspace");
+      guarantee(methods->at(j)->is_method(), "non-method in methods array");
+    }
+    for (int j = 0; j < methods->length() - 1; j++) {
+      Method* m1 = methods->at(j);
+      Method* m2 = methods->at(j + 1);
+      guarantee(m1->name()->fast_compare(m2->name()) <= 0, "methods not sorted correctly");
+    }
+  }
+
+  // Verify method ordering
+  if (method_ordering() != NULL) {
+    Array<int>* method_ordering = this->method_ordering();
+    int length = method_ordering->length();
+    if (JvmtiExport::can_maintain_original_method_order() ||
+        (UseSharedSpaces && length != 0)) {
+      guarantee(length == methods()->length(), "invalid method ordering length");
+      jlong sum = 0;
+      for (int j = 0; j < length; j++) {
+        int original_index = method_ordering->at(j);
+        guarantee(original_index >= 0, "invalid method ordering index");
+        guarantee(original_index < length, "invalid method ordering index");
+        sum += original_index;
+      }
+      // Verify sum of indices 0,1,...,length-1
+      guarantee(sum == ((jlong)length*(length-1))/2, "invalid method ordering sum");
+    } else {
+      guarantee(length == 0, "invalid method ordering length");
+    }
+  }
+
+  // Verify JNI static field identifiers
+  if (jni_ids() != NULL) {
+    jni_ids()->verify(this);
+  }
+
+  // Verify other fields
+  if (array_klasses() != NULL) {
+    guarantee(array_klasses()->is_metadata(), "should be in metaspace");
+    guarantee(array_klasses()->is_klass(), "should be klass");
+  }
+  if (constants() != NULL) {
+    guarantee(constants()->is_metadata(), "should be in metaspace");
+    guarantee(constants()->is_constantPool(), "should be constant pool");
+  }
+  if (protection_domain() != NULL) {
+    guarantee(protection_domain()->is_oop(), "should be oop");
+  }
+  if (host_klass() != NULL) {
+    guarantee(host_klass()->is_metadata(), "should be in metaspace");
+    guarantee(host_klass()->is_klass(), "should be klass");
+  }
+  if (signers() != NULL) {
+    guarantee(signers()->is_objArray(), "should be obj array");
+  }
+}
+
+void InstanceKlass::oop_verify_on(oop obj, outputStream* st) {
   Klass::oop_verify_on(obj, st);
   VerifyFieldClosure blk;
-  oop_oop_iterate(obj, &blk);
+  obj->oop_iterate_no_header(&blk);
 }
 
+
 // JNIid class for jfieldIDs only
 // Note to reviewers:
 // These JNI functions are just moved over to column 1 and not changed
 // in the compressed oops workspace.
-JNIid::JNIid(klassOop holder, int offset, JNIid* next) {
+JNIid::JNIid(Klass* holder, int offset, JNIid* next) {
   _holder = holder;
   _offset = offset;
   _next = next;
@@ -2497,12 +3063,6 @@
   return NULL;
 }
 
-void JNIid::oops_do(OopClosure* f) {
-  for (JNIid* cur = this; cur != NULL; cur = cur->next()) {
-    f->do_oop(cur->holder_addr());
-  }
-}
-
 void JNIid::deallocate(JNIid* current) {
   while (current != NULL) {
     JNIid* next = current->next();
@@ -2512,10 +3072,10 @@
 }
 
 
-void JNIid::verify(klassOop holder) {
-  int first_field_offset  = instanceMirrorKlass::offset_of_static_fields();
+void JNIid::verify(Klass* holder) {
+  int first_field_offset  = InstanceMirrorKlass::offset_of_static_fields();
   int end_field_offset;
-  end_field_offset = first_field_offset + (instanceKlass::cast(holder)->static_field_size() * wordSize);
+  end_field_offset = first_field_offset + (InstanceKlass::cast(holder)->static_field_size() * wordSize);
 
   JNIid* current = this;
   while (current != NULL) {
@@ -2532,8 +3092,8 @@
 
 
 #ifdef ASSERT
-void instanceKlass::set_init_state(ClassState state) {
-  bool good_state = as_klassOop()->is_shared() ? (_init_state <= state)
+void InstanceKlass::set_init_state(ClassState state) {
+  bool good_state = is_shared() ? (_init_state <= state)
                                                : (_init_state < state);
   assert(good_state || state == allocated, "illegal state transition");
   _init_state = (u1)state;
@@ -2543,14 +3103,105 @@
 
 // RedefineClasses() support for previous versions:
 
-// Add an information node that contains weak references to the
+// Purge previous versions
+static void purge_previous_versions_internal(InstanceKlass* ik, int emcp_method_count) {
+  if (ik->previous_versions() != NULL) {
+    // This klass has previous versions so see what we can cleanup
+    // while it is safe to do so.
+
+    int deleted_count = 0;    // leave debugging breadcrumbs
+    int live_count = 0;
+    ClassLoaderData* loader_data = ik->class_loader_data() == NULL ?
+                       ClassLoaderData::the_null_class_loader_data() :
+                       ik->class_loader_data();
+
+    // RC_TRACE macro has an embedded ResourceMark
+    RC_TRACE(0x00000200, ("purge: %s: previous version length=%d",
+      ik->external_name(), ik->previous_versions()->length()));
+
+    for (int i = ik->previous_versions()->length() - 1; i >= 0; i--) {
+      // check the previous versions array
+      PreviousVersionNode * pv_node = ik->previous_versions()->at(i);
+      ConstantPool* cp_ref = pv_node->prev_constant_pool();
+      assert(cp_ref != NULL, "cp ref was unexpectedly cleared");
+
+      ConstantPool* pvcp = cp_ref;
+      if (!pvcp->on_stack()) {
+        // If the constant pool isn't on stack, none of the methods
+        // are executing.  Delete all the methods, the constant pool and
+        // and this previous version node.
+        GrowableArray<Method*>* method_refs = pv_node->prev_EMCP_methods();
+        if (method_refs != NULL) {
+          for (int j = method_refs->length() - 1; j >= 0; j--) {
+            Method* method = method_refs->at(j);
+            assert(method != NULL, "method ref was unexpectedly cleared");
+            method_refs->remove_at(j);
+            // method will be freed with associated class.
+          }
+        }
+        // Remove the constant pool
+        delete pv_node;
+        // Since we are traversing the array backwards, we don't have to
+        // do anything special with the index.
+        ik->previous_versions()->remove_at(i);
+        deleted_count++;
+        continue;
+      } else {
+        RC_TRACE(0x00000200, ("purge: previous version @%d is alive", i));
+        assert(pvcp->pool_holder() != NULL, "Constant pool with no holder");
+        guarantee (!loader_data->is_unloading(), "unloaded classes can't be on the stack");
+        live_count++;
+      }
+
+      // At least one method is live in this previous version, clean out
+      // the others or mark them as obsolete.
+      GrowableArray<Method*>* method_refs = pv_node->prev_EMCP_methods();
+      if (method_refs != NULL) {
+        RC_TRACE(0x00000200, ("purge: previous methods length=%d",
+          method_refs->length()));
+        for (int j = method_refs->length() - 1; j >= 0; j--) {
+          Method* method = method_refs->at(j);
+          assert(method != NULL, "method ref was unexpectedly cleared");
+
+          // Remove the emcp method if it's not executing
+          // If it's been made obsolete by a redefinition of a non-emcp
+          // method, mark it as obsolete but leave it to clean up later.
+          if (!method->on_stack()) {
+            method_refs->remove_at(j);
+          } else if (emcp_method_count == 0) {
+            method->set_is_obsolete();
+          } else {
+            // RC_TRACE macro has an embedded ResourceMark
+            RC_TRACE(0x00000200,
+              ("purge: %s(%s): prev method @%d in version @%d is alive",
+              method->name()->as_C_string(),
+              method->signature()->as_C_string(), j, i));
+          }
+        }
+      }
+    }
+    assert(ik->previous_versions()->length() == live_count, "sanity check");
+    RC_TRACE(0x00000200,
+      ("purge: previous version stats: live=%d, deleted=%d", live_count,
+      deleted_count));
+  }
+}
+
+// External interface for use during class unloading.
+void InstanceKlass::purge_previous_versions(InstanceKlass* ik) {
+  // Call with >0 emcp methods since they are not currently being redefined.
+  purge_previous_versions_internal(ik, 1);
+}
+
+
+// Potentially add an information node that contains pointers to the
 // interesting parts of the previous version of the_class.
-// This is also where we clean out any unused weak references.
+// This is also where we clean out any unused references.
 // Note that while we delete nodes from the _previous_versions
 // array, we never delete the array itself until the klass is
 // unloaded. The has_been_redefined() query depends on that fact.
 //
-void instanceKlass::add_previous_version(instanceKlassHandle ikh,
+void InstanceKlass::add_previous_version(instanceKlassHandle ikh,
        BitMap* emcp_methods, int emcp_method_count) {
   assert(Thread::current()->is_VM_thread(),
          "only VMThread can add previous versions");
@@ -2563,155 +3214,81 @@
                             GrowableArray<PreviousVersionNode *>(2, true);
   }
 
+  ConstantPool* cp_ref = ikh->constants();
+
   // RC_TRACE macro has an embedded ResourceMark
-  RC_TRACE(0x00000100, ("adding previous version ref for %s @%d, EMCP_cnt=%d",
-    ikh->external_name(), _previous_versions->length(), emcp_method_count));
-  constantPoolHandle cp_h(ikh->constants());
-  jobject cp_ref;
-  if (cp_h->is_shared()) {
-    // a shared ConstantPool requires a regular reference; a weak
-    // reference would be collectible
-    cp_ref = JNIHandles::make_global(cp_h);
-  } else {
-    cp_ref = JNIHandles::make_weak_global(cp_h);
-  }
+  RC_TRACE(0x00000400, ("adding previous version ref for %s @%d, EMCP_cnt=%d "
+                        "on_stack=%d",
+    ikh->external_name(), _previous_versions->length(), emcp_method_count,
+    cp_ref->on_stack()));
+
+  // If the constant pool for this previous version of the class
+  // is not marked as being on the stack, then none of the methods
+  // in this previous version of the class are on the stack so
+  // we don't need to create a new PreviousVersionNode. However,
+  // we still need to examine older previous versions below.
+  Array<Method*>* old_methods = ikh->methods();
+
+  if (cp_ref->on_stack()) {
   PreviousVersionNode * pv_node = NULL;
-  objArrayOop old_methods = ikh->methods();
-
   if (emcp_method_count == 0) {
-    // non-shared ConstantPool gets a weak reference
-    pv_node = new PreviousVersionNode(cp_ref, !cp_h->is_shared(), NULL);
+      // non-shared ConstantPool gets a reference
+      pv_node = new PreviousVersionNode(cp_ref, !cp_ref->is_shared(), NULL);
     RC_TRACE(0x00000400,
-      ("add: all methods are obsolete; flushing any EMCP weak refs"));
+        ("add: all methods are obsolete; flushing any EMCP refs"));
   } else {
     int local_count = 0;
-    GrowableArray<jweak>* method_refs = new (ResourceObj::C_HEAP, mtClass)
-      GrowableArray<jweak>(emcp_method_count, true);
+      GrowableArray<Method*>* method_refs = new (ResourceObj::C_HEAP, mtClass)
+        GrowableArray<Method*>(emcp_method_count, true);
     for (int i = 0; i < old_methods->length(); i++) {
       if (emcp_methods->at(i)) {
-        // this old method is EMCP so save a weak ref
-        methodOop old_method = (methodOop) old_methods->obj_at(i);
-        methodHandle old_method_h(old_method);
-        jweak method_ref = JNIHandles::make_weak_global(old_method_h);
-        method_refs->append(method_ref);
+          // this old method is EMCP. Save it only if it's on the stack
+          Method* old_method = old_methods->at(i);
+          if (old_method->on_stack()) {
+            method_refs->append(old_method);
+          }
         if (++local_count >= emcp_method_count) {
           // no more EMCP methods so bail out now
           break;
         }
       }
     }
-    // non-shared ConstantPool gets a weak reference
-    pv_node = new PreviousVersionNode(cp_ref, !cp_h->is_shared(), method_refs);
-  }
-
+      // non-shared ConstantPool gets a reference
+      pv_node = new PreviousVersionNode(cp_ref, !cp_ref->is_shared(), method_refs);
+    }
+    // append new previous version.
   _previous_versions->append(pv_node);
-
-  // Using weak references allows the interesting parts of previous
-  // classes to be GC'ed when they are no longer needed. Since the
-  // caller is the VMThread and we are at a safepoint, this is a good
-  // time to clear out unused weak references.
+  }
+
+  // Since the caller is the VMThread and we are at a safepoint, this
+  // is a good time to clear out unused references.
 
   RC_TRACE(0x00000400, ("add: previous version length=%d",
     _previous_versions->length()));
 
-  // skip the last entry since we just added it
-  for (int i = _previous_versions->length() - 2; i >= 0; i--) {
-    // check the previous versions array for a GC'ed weak refs
-    pv_node = _previous_versions->at(i);
-    cp_ref = pv_node->prev_constant_pool();
-    assert(cp_ref != NULL, "cp ref was unexpectedly cleared");
-    if (cp_ref == NULL) {
-      delete pv_node;
-      _previous_versions->remove_at(i);
-      // Since we are traversing the array backwards, we don't have to
-      // do anything special with the index.
-      continue;  // robustness
-    }
-
-    constantPoolOop cp = (constantPoolOop)JNIHandles::resolve(cp_ref);
-    if (cp == NULL) {
-      // this entry has been GC'ed so remove it
-      delete pv_node;
-      _previous_versions->remove_at(i);
-      // Since we are traversing the array backwards, we don't have to
-      // do anything special with the index.
-      continue;
-    } else {
-      RC_TRACE(0x00000400, ("add: previous version @%d is alive", i));
-    }
-
-    GrowableArray<jweak>* method_refs = pv_node->prev_EMCP_methods();
-    if (method_refs != NULL) {
-      RC_TRACE(0x00000400, ("add: previous methods length=%d",
-        method_refs->length()));
-      for (int j = method_refs->length() - 1; j >= 0; j--) {
-        jweak method_ref = method_refs->at(j);
-        assert(method_ref != NULL, "weak method ref was unexpectedly cleared");
-        if (method_ref == NULL) {
-          method_refs->remove_at(j);
-          // Since we are traversing the array backwards, we don't have to
-          // do anything special with the index.
-          continue;  // robustness
-        }
-
-        methodOop method = (methodOop)JNIHandles::resolve(method_ref);
-        if (method == NULL || emcp_method_count == 0) {
-          // This method entry has been GC'ed or the current
-          // RedefineClasses() call has made all methods obsolete
-          // so remove it.
-          JNIHandles::destroy_weak_global(method_ref);
-          method_refs->remove_at(j);
-        } else {
-          // RC_TRACE macro has an embedded ResourceMark
-          RC_TRACE(0x00000400,
-            ("add: %s(%s): previous method @%d in version @%d is alive",
-            method->name()->as_C_string(), method->signature()->as_C_string(),
-            j, i));
-        }
-      }
-    }
-  }
+  // Purge previous versions not executing on the stack
+  purge_previous_versions_internal(this, emcp_method_count);
 
   int obsolete_method_count = old_methods->length() - emcp_method_count;
 
   if (emcp_method_count != 0 && obsolete_method_count != 0 &&
-      _previous_versions->length() > 1) {
-    // We have a mix of obsolete and EMCP methods. If there is more
-    // than the previous version that we just added, then we have to
+      _previous_versions->length() > 0) {
+    // We have a mix of obsolete and EMCP methods so we have to
     // clear out any matching EMCP method entries the hard way.
     int local_count = 0;
     for (int i = 0; i < old_methods->length(); i++) {
       if (!emcp_methods->at(i)) {
         // only obsolete methods are interesting
-        methodOop old_method = (methodOop) old_methods->obj_at(i);
+        Method* old_method = old_methods->at(i);
         Symbol* m_name = old_method->name();
         Symbol* m_signature = old_method->signature();
 
-        // skip the last entry since we just added it
-        for (int j = _previous_versions->length() - 2; j >= 0; j--) {
-          // check the previous versions array for a GC'ed weak refs
-          pv_node = _previous_versions->at(j);
-          cp_ref = pv_node->prev_constant_pool();
-          assert(cp_ref != NULL, "cp ref was unexpectedly cleared");
-          if (cp_ref == NULL) {
-            delete pv_node;
-            _previous_versions->remove_at(j);
-            // Since we are traversing the array backwards, we don't have to
-            // do anything special with the index.
-            continue;  // robustness
-          }
-
-          constantPoolOop cp = (constantPoolOop)JNIHandles::resolve(cp_ref);
-          if (cp == NULL) {
-            // this entry has been GC'ed so remove it
-            delete pv_node;
-            _previous_versions->remove_at(j);
-            // Since we are traversing the array backwards, we don't have to
-            // do anything special with the index.
-            continue;
-          }
-
-          GrowableArray<jweak>* method_refs = pv_node->prev_EMCP_methods();
+        // we might not have added the last entry
+        for (int j = _previous_versions->length() - 1; j >= 0; j--) {
+          // check the previous versions array for non executing obsolete methods
+          PreviousVersionNode * pv_node = _previous_versions->at(j);
+
+          GrowableArray<Method*>* method_refs = pv_node->prev_EMCP_methods();
           if (method_refs == NULL) {
             // We have run into a PreviousVersion generation where
             // all methods were made obsolete during that generation's
@@ -2726,36 +3303,21 @@
           }
 
           for (int k = method_refs->length() - 1; k >= 0; k--) {
-            jweak method_ref = method_refs->at(k);
-            assert(method_ref != NULL,
-              "weak method ref was unexpectedly cleared");
-            if (method_ref == NULL) {
-              method_refs->remove_at(k);
-              // Since we are traversing the array backwards, we don't
-              // have to do anything special with the index.
-              continue;  // robustness
-            }
-
-            methodOop method = (methodOop)JNIHandles::resolve(method_ref);
-            if (method == NULL) {
-              // this method entry has been GC'ed so skip it
-              JNIHandles::destroy_weak_global(method_ref);
-              method_refs->remove_at(k);
-              continue;
-            }
-
-            if (method->name() == m_name &&
+            Method* method = method_refs->at(k);
+
+            if (!method->is_obsolete() &&
+                method->name() == m_name &&
                 method->signature() == m_signature) {
               // The current RedefineClasses() call has made all EMCP
               // versions of this method obsolete so mark it as obsolete
-              // and remove the weak ref.
+              // and remove the reference.
               RC_TRACE(0x00000400,
                 ("add: %s(%s): flush obsolete method @%d in version @%d",
                 m_name->as_C_string(), m_signature->as_C_string(), k, j));
 
               method->set_is_obsolete();
-              JNIHandles::destroy_weak_global(method_ref);
-              method_refs->remove_at(k);
+              // Leave obsolete methods on the previous version list to
+              // clean up later.
               break;
             }
           }
@@ -2763,9 +3325,9 @@
           // The previous loop may not find a matching EMCP method, but
           // that doesn't mean that we can optimize and not go any
           // further back in the PreviousVersion generations. The EMCP
-          // method for this generation could have already been GC'ed,
+          // method for this generation could have already been deleted,
           // but there still may be an older EMCP method that has not
-          // been GC'ed.
+          // been deleted.
         }
 
         if (++local_count >= obsolete_method_count) {
@@ -2778,46 +3340,20 @@
 } // end add_previous_version()
 
 
-// Determine if instanceKlass has a previous version.
-bool instanceKlass::has_previous_version() const {
-  if (_previous_versions == NULL) {
-    // no previous versions array so answer is easy
-    return false;
-  }
-
-  for (int i = _previous_versions->length() - 1; i >= 0; i--) {
-    // Check the previous versions array for an info node that hasn't
-    // been GC'ed
-    PreviousVersionNode * pv_node = _previous_versions->at(i);
-
-    jobject cp_ref = pv_node->prev_constant_pool();
-    assert(cp_ref != NULL, "cp reference was unexpectedly cleared");
-    if (cp_ref == NULL) {
-      continue;  // robustness
-    }
-
-    constantPoolOop cp = (constantPoolOop)JNIHandles::resolve(cp_ref);
-    if (cp != NULL) {
-      // we have at least one previous version
-      return true;
-    }
-
-    // We don't have to check the method refs. If the constant pool has
-    // been GC'ed then so have the methods.
-  }
-
-  // all of the underlying nodes' info has been GC'ed
-  return false;
+// Determine if InstanceKlass has a previous version.
+bool InstanceKlass::has_previous_version() const {
+  return (_previous_versions != NULL && _previous_versions->length() > 0);
 } // end has_previous_version()
 
-methodOop instanceKlass::method_with_idnum(int idnum) {
-  methodOop m = NULL;
+
+Method* InstanceKlass::method_with_idnum(int idnum) {
+  Method* m = NULL;
   if (idnum < methods()->length()) {
-    m = (methodOop) methods()->obj_at(idnum);
+    m = methods()->at(idnum);
   }
   if (m == NULL || m->method_idnum() != idnum) {
     for (int index = 0; index < methods()->length(); ++index) {
-      m = (methodOop) methods()->obj_at(index);
+      m = methods()->at(index);
       if (m->method_idnum() == idnum) {
         return m;
       }
@@ -2827,32 +3363,10 @@
 }
 
 
-// Set the annotation at 'idnum' to 'anno'.
-// We don't want to create or extend the array if 'anno' is NULL, since that is the
-// default value.  However, if the array exists and is long enough, we must set NULL values.
-void instanceKlass::set_methods_annotations_of(int idnum, typeArrayOop anno, objArrayOop* md_p) {
-  objArrayOop md = *md_p;
-  if (md != NULL && md->length() > idnum) {
-    md->obj_at_put(idnum, anno);
-  } else if (anno != NULL) {
-    // create the array
-    int length = MAX2(idnum+1, (int)_idnum_allocated_count);
-    md = oopFactory::new_system_objArray(length, Thread::current());
-    if (*md_p != NULL) {
-      // copy the existing entries
-      for (int index = 0; index < (*md_p)->length(); index++) {
-        md->obj_at_put(index, (*md_p)->obj_at(index));
-      }
-    }
-    set_annotations(md, md_p);
-    md->obj_at_put(idnum, anno);
-  } // if no array and idnum isn't included there is nothing to do
-}
-
 // Construct a PreviousVersionNode entry for the array hung off
-// the instanceKlass.
-PreviousVersionNode::PreviousVersionNode(jobject prev_constant_pool,
-  bool prev_cp_is_weak, GrowableArray<jweak>* prev_EMCP_methods) {
+// the InstanceKlass.
+PreviousVersionNode::PreviousVersionNode(ConstantPool* prev_constant_pool,
+  bool prev_cp_is_weak, GrowableArray<Method*>* prev_EMCP_methods) {
 
   _prev_constant_pool = prev_constant_pool;
   _prev_cp_is_weak = prev_cp_is_weak;
@@ -2863,20 +3377,10 @@
 // Destroy a PreviousVersionNode
 PreviousVersionNode::~PreviousVersionNode() {
   if (_prev_constant_pool != NULL) {
-    if (_prev_cp_is_weak) {
-      JNIHandles::destroy_weak_global(_prev_constant_pool);
-    } else {
-      JNIHandles::destroy_global(_prev_constant_pool);
-    }
+    _prev_constant_pool = NULL;
   }
 
   if (_prev_EMCP_methods != NULL) {
-    for (int i = _prev_EMCP_methods->length() - 1; i >= 0; i--) {
-      jweak method_ref = _prev_EMCP_methods->at(i);
-      if (method_ref != NULL) {
-        JNIHandles::destroy_weak_global(method_ref);
-      }
-    }
     delete _prev_EMCP_methods;
   }
 }
@@ -2887,25 +3391,18 @@
   _prev_constant_pool_handle = constantPoolHandle();  // NULL handle
   _prev_EMCP_method_handles = NULL;
 
-  jobject cp_ref = pv_node->prev_constant_pool();
-  assert(cp_ref != NULL, "constant pool ref was unexpectedly cleared");
-  if (cp_ref == NULL) {
+  ConstantPool* cp = pv_node->prev_constant_pool();
+  assert(cp != NULL, "constant pool ref was unexpectedly cleared");
+  if (cp == NULL) {
     return;  // robustness
   }
 
-  constantPoolOop cp = (constantPoolOop)JNIHandles::resolve(cp_ref);
-  if (cp == NULL) {
-    // Weak reference has been GC'ed. Since the constant pool has been
-    // GC'ed, the methods have also been GC'ed.
-    return;
-  }
-
-  // make the constantPoolOop safe to return
+  // make the ConstantPool* safe to return
   _prev_constant_pool_handle = constantPoolHandle(cp);
 
-  GrowableArray<jweak>* method_refs = pv_node->prev_EMCP_methods();
+  GrowableArray<Method*>* method_refs = pv_node->prev_EMCP_methods();
   if (method_refs == NULL) {
-    // the instanceKlass did not have any EMCP methods
+    // the InstanceKlass did not have any EMCP methods
     return;
   }
 
@@ -2913,19 +3410,12 @@
 
   int n_methods = method_refs->length();
   for (int i = 0; i < n_methods; i++) {
-    jweak method_ref = method_refs->at(i);
-    assert(method_ref != NULL, "weak method ref was unexpectedly cleared");
-    if (method_ref == NULL) {
+    Method* method = method_refs->at(i);
+    assert (method != NULL, "method has been cleared");
+    if (method == NULL) {
       continue;  // robustness
     }
-
-    methodOop method = (methodOop)JNIHandles::resolve(method_ref);
-    if (method == NULL) {
-      // this entry has been GC'ed so skip it
-      continue;
-    }
-
-    // make the methodOop safe to return
+    // make the Method* safe to return
     _prev_EMCP_method_handles->append(methodHandle(method));
   }
 }
@@ -2939,7 +3429,7 @@
 
 
 // Construct a helper for walking the previous versions array
-PreviousVersionWalker::PreviousVersionWalker(instanceKlass *ik) {
+PreviousVersionWalker::PreviousVersionWalker(InstanceKlass *ik) {
   _previous_versions = ik->previous_versions();
   _current_index = 0;
   // _hm needs no initialization
@@ -2981,21 +3471,13 @@
                                           PreviousVersionInfo(pv_node);
 
     constantPoolHandle cp_h = pv_info->prev_constant_pool_handle();
-    if (cp_h.is_null()) {
-      delete pv_info;
-
-      // The underlying node's info has been GC'ed so try the next one.
-      // We don't have to check the methods. If the constant pool has
-      // GC'ed then so have the methods.
-      continue;
-    }
-
-    // Found a node with non GC'ed info so return it. The caller will
-    // need to delete pv_info when they are done with it.
+    assert (!cp_h.is_null(), "null cp found in previous version");
+
+    // The caller will need to delete pv_info when they are done with it.
     _current_p = pv_info;
     return pv_info;
   }
 
-  // all of the underlying nodes' info has been GC'ed
+  // all of the underlying nodes' info has been deleted
   return NULL;
 } // end next_previous_version()
--- a/src/share/vm/oops/instanceKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,24 +25,21 @@
 #ifndef SHARE_VM_OOPS_INSTANCEKLASS_HPP
 #define SHARE_VM_OOPS_INSTANCEKLASS_HPP
 
-#include "oops/constMethodOop.hpp"
-#include "oops/constantPoolOop.hpp"
+#include "classfile/classLoaderData.hpp"
+#include "oops/annotations.hpp"
+#include "oops/constMethod.hpp"
 #include "oops/fieldInfo.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/klassVtable.hpp"
-#include "oops/objArrayOop.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/os.hpp"
 #include "utilities/accessFlags.hpp"
 #include "utilities/bitMap.inline.hpp"
 
-// An instanceKlass is the VM level representation of a Java class.
+// An InstanceKlass is the VM level representation of a Java class.
 // It contains all information needed for at class at execution runtime.
 
-//  instanceKlass layout:
-//    [header                     ] klassOop
-//    [klass pointer              ] klassOop
+//  InstanceKlass layout:
 //    [C++ vtbl pointer           ] Klass
 //    [subtype cache              ] Klass
 //    [instance size              ] Klass
@@ -133,13 +130,37 @@
   uint _count;
 };
 
-class instanceKlass: public Klass {
+class InstanceKlass: public Klass {
   friend class VMStructs;
+  friend class ClassFileParser;
+
+ protected:
+  // Constructor
+  InstanceKlass(int vtable_len,
+                int itable_len,
+                int static_field_size,
+                int nonstatic_oop_map_size,
+                ReferenceType rt,
+                AccessFlags access_flags,
+                bool is_anonymous);
  public:
+  static Klass* allocate_instance_klass(ClassLoaderData* loader_data,
+                                          int vtable_len,
+                                          int itable_len,
+                                          int static_field_size,
+                                          int nonstatic_oop_map_size,
+                                          ReferenceType rt,
+                                          AccessFlags access_flags,
+                                          Symbol* name,
+                                        Klass* super_klass,
+                                          KlassHandle host_klass,
+                                          TRAPS);
+
+  InstanceKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
+
   // See "The Java Virtual Machine Specification" section 2.16.2-5 for a detailed description
   // of the class loading & initialization procedure, and the use of the states.
   enum ClassState {
-    unparsable_by_gc = 0,               // object is not yet parsable by gc. Value of _init_state at object allocation.
     allocated,                          // allocated (but not yet linked)
     loaded,                             // loaded and inserted in class hierarchy (but not linked yet)
     linked,                             // successfully linked/verified (but not initialized yet)
@@ -148,48 +169,22 @@
     initialization_error                // error happened during initialization
   };
 
- public:
-  oop* oop_block_beg() const { return adr_array_klasses(); }
-  oop* oop_block_end() const { return adr_methods_default_annotations() + 1; }
-
  protected:
-  //
-  // The oop block.  See comment in klass.hpp before making changes.
-  //
-
-  // Array classes holding elements of this class.
-  klassOop        _array_klasses;
-  // Method array.
-  objArrayOop     _methods;
-  // Int array containing the original order of method in the class file (for
-  // JVMTI).
-  typeArrayOop    _method_ordering;
-  // Interface (klassOops) this class declares locally to implement.
-  objArrayOop     _local_interfaces;
-  // Interface (klassOops) this class implements transitively.
-  objArrayOop     _transitive_interfaces;
-  // Instance and static variable information, starts with 6-tuples of shorts
-  // [access, name index, sig index, initval index, low_offset, high_offset]
-  // for all fields, followed by the generic signature data at the end of
-  // the array. Only fields with generic signature attributes have the generic
-  // signature data set in the array. The fields array looks like following:
-  //
-  // f1: [access, name index, sig index, initial value index, low_offset, high_offset]
-  // f2: [access, name index, sig index, initial value index, low_offset, high_offset]
-  //      ...
-  // fn: [access, name index, sig index, initial value index, low_offset, high_offset]
-  //     [generic signature index]
-  //     [generic signature index]
-  //     ...
-  typeArrayOop    _fields;
-  // Constant pool for this class.
-  constantPoolOop _constants;
-  // Class loader used to load this class, NULL if VM loader used.
-  oop             _class_loader;
   // Protection domain.
   oop             _protection_domain;
   // Class signers.
   objArrayOop     _signers;
+  // Initialization lock.  Must be one per class and it has to be a VM internal
+  // object so java code cannot lock it (like the mirror)
+  // It has to be an object not a Mutex because it's held through java calls.
+  volatile oop    _init_lock;
+
+  // Annotations for this class
+  Annotations*    _annotations;
+  // Array classes holding elements of this class.
+  Klass*          _array_klasses;
+  // Constant pool for this class.
+  ConstantPool* _constants;
   // The InnerClasses attribute and EnclosingMethod attribute. The
   // _inner_classes is an array of shorts. If the class has InnerClasses
   // attribute, then the _inner_classes array begins with 4-tuples of shorts
@@ -201,27 +196,7 @@
   // number_of_inner_classes * 4. If the class has both InnerClasses
   // and EnclosingMethod attributes the _inner_classes array length is
   // number_of_inner_classes * 4 + enclosing_method_attribute_size.
-  typeArrayOop    _inner_classes;
-  // Annotations for this class, or null if none.
-  typeArrayOop    _class_annotations;
-  // Annotation objects (byte arrays) for fields, or null if no annotations.
-  // Indices correspond to entries (not indices) in fields array.
-  objArrayOop     _fields_annotations;
-  // Annotation objects (byte arrays) for methods, or null if no annotations.
-  // Index is the idnum, which is initially the same as the methods array index.
-  objArrayOop     _methods_annotations;
-  // Annotation objects (byte arrays) for methods' parameters, or null if no
-  // such annotations.
-  // Index is the idnum, which is initially the same as the methods array index.
-  objArrayOop     _methods_parameter_annotations;
-  // Annotation objects (byte arrays) for methods' default values, or null if no
-  // such annotations.
-  // Index is the idnum, which is initially the same as the methods array index.
-  objArrayOop     _methods_default_annotations;
-
-  //
-  // End of the oop block.
-  //
+  Array<jushort>* _inner_classes;
 
   // Name of source file containing this klass, NULL if not specified.
   Symbol*         _source_file_name;
@@ -262,15 +237,37 @@
   int*            _methods_cached_itable_indices;  // itable_index cache for JNI invoke corresponding to methods idnum, or NULL
   nmethodBucket*  _dependencies;         // list of dependent nmethods
   nmethod*        _osr_nmethods_head;    // Head of list of on-stack replacement nmethods for this class
-  BreakpointInfo* _breakpoints;          // bpt lists, managed by methodOop
+  BreakpointInfo* _breakpoints;          // bpt lists, managed by Method*
   // Array of interesting part(s) of the previous version(s) of this
-  // instanceKlass. See PreviousVersionWalker below.
+  // InstanceKlass. See PreviousVersionWalker below.
   GrowableArray<PreviousVersionNode *>* _previous_versions;
   // JVMTI fields can be moved to their own structure - see 6315920
   unsigned char * _cached_class_file_bytes;       // JVMTI: cached class file, before retransformable agent modified it in CFLH
   jint            _cached_class_file_len;         // JVMTI: length of above
   JvmtiCachedClassFieldMap* _jvmti_cached_class_field_map;  // JVMTI: used during heap iteration
   volatile u2     _idnum_allocated_count;         // JNI/JVMTI: increments with the addition of methods, old ids don't change
+  // Method array.
+  Array<Method*>* _methods;
+  // Interface (Klass*s) this class declares locally to implement.
+  Array<Klass*>* _local_interfaces;
+  // Interface (Klass*s) this class implements transitively.
+  Array<Klass*>* _transitive_interfaces;
+  // Int array containing the original order of method in the class file (for JVMTI).
+  Array<int>*     _method_ordering;
+  // Instance and static variable information, starts with 6-tuples of shorts
+  // [access, name index, sig index, initval index, low_offset, high_offset]
+  // for all fields, followed by the generic signature data at the end of
+  // the array. Only fields with generic signature attributes have the generic
+  // signature data set in the array. The fields array looks like following:
+  //
+  // f1: [access, name index, sig index, initial value index, low_offset, high_offset]
+  // f2: [access, name index, sig index, initial value index, low_offset, high_offset]
+  //      ...
+  // fn: [access, name index, sig index, initial value index, low_offset, high_offset]
+  //     [generic signature index]
+  //     [generic signature index]
+  //     ...
+  Array<u2>*      _fields;
 
   // Class states are defined as ClassState (see above).
   // Place the _init_state here to utilize the unused 2-byte after
@@ -288,7 +285,7 @@
   //   iterface. The possible values of the implementor fall into following
   //   three cases:
   //     NULL: no implementor.
-  //     A klassOop that's not itself: one implementor.
+  //     A Klass* that's not itself: one implementor.
   //     Itsef: more than one implementors.
   // embedded host klass follows here
   //   The embedded host klass only exists in an anonymous class for
@@ -299,7 +296,6 @@
   //   have this embedded field.
   //
 
-  friend class instanceKlassKlass;
   friend class SystemDictionary;
 
  public:
@@ -333,23 +329,27 @@
   void set_itable_length(int len)          { _itable_len = len; }
 
   // array klasses
-  klassOop array_klasses() const           { return _array_klasses; }
-  void set_array_klasses(klassOop k)       { oop_store_without_check((oop*) &_array_klasses, (oop) k); }
+  Klass* array_klasses() const             { return _array_klasses; }
+  void set_array_klasses(Klass* k)         { _array_klasses = k; }
 
   // methods
-  objArrayOop methods() const              { return _methods; }
-  void set_methods(objArrayOop a)          { oop_store_without_check((oop*) &_methods, (oop) a); }
-  methodOop method_with_idnum(int idnum);
+  Array<Method*>* methods() const          { return _methods; }
+  void set_methods(Array<Method*>* a)      { _methods = a; }
+  Method* method_with_idnum(int idnum);
 
   // method ordering
-  typeArrayOop method_ordering() const     { return _method_ordering; }
-  void set_method_ordering(typeArrayOop m) { oop_store_without_check((oop*) &_method_ordering, (oop) m); }
+  Array<int>* method_ordering() const     { return _method_ordering; }
+  void set_method_ordering(Array<int>* m) { _method_ordering = m; }
 
   // interfaces
-  objArrayOop local_interfaces() const          { return _local_interfaces; }
-  void set_local_interfaces(objArrayOop a)      { oop_store_without_check((oop*) &_local_interfaces, (oop) a); }
-  objArrayOop transitive_interfaces() const     { return _transitive_interfaces; }
-  void set_transitive_interfaces(objArrayOop a) { oop_store_without_check((oop*) &_transitive_interfaces, (oop) a); }
+  Array<Klass*>* local_interfaces() const          { return _local_interfaces; }
+  void set_local_interfaces(Array<Klass*>* a)      {
+    guarantee(_local_interfaces == NULL || a == NULL, "Just checking");
+    _local_interfaces = a; }
+  Array<Klass*>* transitive_interfaces() const     { return _transitive_interfaces; }
+  void set_transitive_interfaces(Array<Klass*>* a) {
+    guarantee(_transitive_interfaces == NULL || a == NULL, "Just checking");
+    _transitive_interfaces = a; }
 
  private:
   friend class fieldDescriptor;
@@ -364,16 +364,17 @@
   // Number of Java declared fields
   int java_fields_count() const           { return (int)_java_fields_count; }
 
-  typeArrayOop fields() const              { return _fields; }
+  Array<u2>* fields() const            { return _fields; }
 
-  void set_fields(typeArrayOop f, u2 java_fields_count) {
-    oop_store_without_check((oop*) &_fields, (oop) f);
+  void set_fields(Array<u2>* f, u2 java_fields_count) {
+    guarantee(_fields == NULL || f == NULL, "Just checking");
+    _fields =  f;
     _java_fields_count = java_fields_count;
   }
 
   // inner classes
-  typeArrayOop inner_classes() const       { return _inner_classes; }
-  void set_inner_classes(typeArrayOop f)   { oop_store_without_check((oop*) &_inner_classes, (oop) f); }
+  Array<u2>* inner_classes() const       { return _inner_classes; }
+  void set_inner_classes(Array<u2>* f)   { _inner_classes = f; }
 
   enum InnerClassAttributeOffset {
     // From http://mirror.eng/products/jdk/1.1/docs/guide/innerclasses/spec/innerclasses.doc10.html#18814
@@ -394,25 +395,25 @@
   bool is_override(methodHandle super_method, Handle targetclassloader, Symbol* targetclassname, TRAPS);
 
   // package
-  bool is_same_class_package(klassOop class2);
+  bool is_same_class_package(Klass* class2);
   bool is_same_class_package(oop classloader2, Symbol* classname2);
   static bool is_same_class_package(oop class_loader1, Symbol* class_name1, oop class_loader2, Symbol* class_name2);
 
   // find an enclosing class (defined where original code was, in jvm.cpp!)
-  klassOop compute_enclosing_class(bool* inner_is_member, TRAPS) {
-    instanceKlassHandle self(THREAD, this->as_klassOop());
+  Klass* compute_enclosing_class(bool* inner_is_member, TRAPS) {
+    instanceKlassHandle self(THREAD, this);
     return compute_enclosing_class_impl(self, inner_is_member, THREAD);
   }
-  static klassOop compute_enclosing_class_impl(instanceKlassHandle self,
+  static Klass* compute_enclosing_class_impl(instanceKlassHandle self,
                                                bool* inner_is_member, TRAPS);
 
   // tell if two classes have the same enclosing class (at package level)
-  bool is_same_package_member(klassOop class2, TRAPS) {
-    instanceKlassHandle self(THREAD, this->as_klassOop());
+  bool is_same_package_member(Klass* class2, TRAPS) {
+    instanceKlassHandle self(THREAD, this);
     return is_same_package_member_impl(self, class2, THREAD);
   }
   static bool is_same_package_member_impl(instanceKlassHandle self,
-                                          klassOop class2, TRAPS);
+                                          Klass* class2, TRAPS);
 
   // initialization state
   bool is_loaded() const                   { return _init_state >= loaded; }
@@ -449,7 +450,7 @@
   void unlink_class();
   void rewrite_class(TRAPS);
   void relocate_and_link_methods(TRAPS);
-  methodOop class_initializer();
+  Method* class_initializer();
 
   // set the class to initialized if no static initializer is present
   void eager_initialize(Thread *thread);
@@ -461,16 +462,16 @@
     _reference_type = (u1)t;
   }
 
-  static ByteSize reference_type_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(instanceKlass, _reference_type)); }
+  static ByteSize reference_type_offset() { return in_ByteSize(offset_of(InstanceKlass, _reference_type)); }
 
   // find local field, returns true if found
   bool find_local_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
   // find field in direct superinterfaces, returns the interface in which the field is defined
-  klassOop find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
+  Klass* find_interface_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
   // find field according to JVM spec 5.4.3.2, returns the klass in which the field is defined
-  klassOop find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
+  Klass* find_field(Symbol* name, Symbol* sig, fieldDescriptor* fd) const;
   // find instance or static fields according to JVM spec 5.4.3.2, returns the klass in which the field is defined
-  klassOop find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const;
+  Klass* find_field(Symbol* name, Symbol* sig, bool is_static, fieldDescriptor* fd) const;
 
   // find a non-static or static field given its offset within the class.
   bool contains_field_offset(int offset) {
@@ -481,42 +482,38 @@
   bool find_field_from_offset(int offset, bool is_static, fieldDescriptor* fd) const;
 
   // find a local method (returns NULL if not found)
-  methodOop find_method(Symbol* name, Symbol* signature) const;
-  static methodOop find_method(objArrayOop methods, Symbol* name, Symbol* signature);
+  Method* find_method(Symbol* name, Symbol* signature) const;
+  static Method* find_method(Array<Method*>* methods, Symbol* name, Symbol* signature);
 
   // lookup operation (returns NULL if not found)
-  methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
+  Method* uncached_lookup_method(Symbol* name, Symbol* signature) const;
 
   // lookup a method in all the interfaces that this class implements
   // (returns NULL if not found)
-  methodOop lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const;
+  Method* lookup_method_in_all_interfaces(Symbol* name, Symbol* signature) const;
 
   // constant pool
-  constantPoolOop constants() const        { return _constants; }
-  void set_constants(constantPoolOop c)    { oop_store_without_check((oop*) &_constants, (oop) c); }
-
-  // class loader
-  oop class_loader() const                 { return _class_loader; }
-  void set_class_loader(oop l)             { oop_store((oop*) &_class_loader, l); }
+  ConstantPool* constants() const        { return _constants; }
+  void set_constants(ConstantPool* c)    { _constants = c; }
 
   // protection domain
   oop protection_domain()                  { return _protection_domain; }
-  void set_protection_domain(oop pd)       { oop_store((oop*) &_protection_domain, pd); }
+  void set_protection_domain(oop pd)       { klass_oop_store(&_protection_domain, pd); }
 
   // host class
-  oop host_klass() const                   {
-    oop* hk = adr_host_klass();
+  Klass* host_klass() const              {
+    Klass** hk = (Klass**)adr_host_klass();
     if (hk == NULL) {
       return NULL;
     } else {
       return *hk;
     }
   }
-  void set_host_klass(oop host)            {
+  void set_host_klass(Klass* host)            {
     assert(is_anonymous(), "not anonymous");
-    oop* addr = adr_host_klass();
+    Klass** addr = (Klass**)adr_host_klass();
     assert(addr != NULL, "no reversed space");
-    oop_store(addr, host);
+    *addr = host;
   }
   bool is_anonymous() const                {
     return (_misc_flags & _misc_is_anonymous) != 0;
@@ -531,7 +528,7 @@
 
   // signers
   objArrayOop signers() const              { return _signers; }
-  void set_signers(objArrayOop s)          { oop_store((oop*) &_signers, oop(s)); }
+  void set_signers(objArrayOop s)          { klass_oop_store((oop*)&_signers, s); }
 
   // source file name
   Symbol* source_file_name() const         { return _source_file_name; }
@@ -578,6 +575,8 @@
     return _previous_versions;
   }
 
+  static void purge_previous_versions(InstanceKlass* ik);
+
   // JVMTI: Support for caching a class file before it is modified by an agent that can do retransformation
   void set_cached_class_file(unsigned char *class_file_bytes,
                              jint class_file_len)     { _cached_class_file_len = class_file_len;
@@ -593,7 +592,7 @@
     return _jvmti_cached_class_field_map;
   }
 
-  // for adding methods, constMethodOopDesc::UNSET_IDNUM means no more ids available
+  // for adding methods, ConstMethod::UNSET_IDNUM means no more ids available
   inline u2 next_method_idnum();
   void set_initial_method_idnum(u2 value)             { _idnum_allocated_count = value; }
 
@@ -620,40 +619,26 @@
                      jmethodID** to_dealloc_jmeths_p);
   static void get_jmethod_id_length_value(jmethodID* cache, size_t idnum,
                 size_t *length_p, jmethodID* id_p);
-  jmethodID jmethod_id_or_null(methodOop method);
+  jmethodID jmethod_id_or_null(Method* method);
 
   // cached itable index support
   void set_cached_itable_index(size_t idnum, int index);
   int cached_itable_index(size_t idnum);
 
   // annotations support
-  typeArrayOop class_annotations() const              { return _class_annotations; }
-  objArrayOop fields_annotations() const              { return _fields_annotations; }
-  objArrayOop methods_annotations() const             { return _methods_annotations; }
-  objArrayOop methods_parameter_annotations() const   { return _methods_parameter_annotations; }
-  objArrayOop methods_default_annotations() const     { return _methods_default_annotations; }
-  void set_class_annotations(typeArrayOop md)            { oop_store_without_check((oop*)&_class_annotations, (oop)md); }
-  void set_fields_annotations(objArrayOop md)            { set_annotations(md, &_fields_annotations); }
-  void set_methods_annotations(objArrayOop md)           { set_annotations(md, &_methods_annotations); }
-  void set_methods_parameter_annotations(objArrayOop md) { set_annotations(md, &_methods_parameter_annotations); }
-  void set_methods_default_annotations(objArrayOop md)   { set_annotations(md, &_methods_default_annotations); }
-  typeArrayOop get_method_annotations_of(int idnum)
-                                                { return get_method_annotations_from(idnum, _methods_annotations); }
-  typeArrayOop get_method_parameter_annotations_of(int idnum)
-                                                { return get_method_annotations_from(idnum, _methods_parameter_annotations); }
-  typeArrayOop get_method_default_annotations_of(int idnum)
-                                                { return get_method_annotations_from(idnum, _methods_default_annotations); }
-  void set_method_annotations_of(int idnum, typeArrayOop anno)
-                                                { set_methods_annotations_of(idnum, anno, &_methods_annotations); }
-  void set_method_parameter_annotations_of(int idnum, typeArrayOop anno)
-                                                { set_methods_annotations_of(idnum, anno, &_methods_parameter_annotations); }
-  void set_method_default_annotations_of(int idnum, typeArrayOop anno)
-                                                { set_methods_annotations_of(idnum, anno, &_methods_default_annotations); }
+  Annotations* annotations() const          { return _annotations; }
+  void set_annotations(Annotations* anno)   { _annotations = anno; }
+  AnnotationArray* class_annotations() const {
+    if (annotations() == NULL) return NULL;
+    return annotations()->class_annotations();
+  }
+  Array<AnnotationArray*>* fields_annotations() const {
+    if (annotations() == NULL) return NULL;
+    return annotations()->fields_annotations();
+  }
 
   // allocation
-  DEFINE_ALLOCATE_PERMANENT(instanceKlass);
   instanceOop allocate_instance(TRAPS);
-  instanceOop allocate_permanent_instance(TRAPS);
 
   // additional member function to return a handle
   instanceHandle allocate_instance_handle(TRAPS)      { return instanceHandle(THREAD, allocate_instance(THREAD)); }
@@ -690,24 +675,24 @@
   void set_osr_nmethods_head(nmethod* h)     { _osr_nmethods_head = h; };
   void add_osr_nmethod(nmethod* n);
   void remove_osr_nmethod(nmethod* n);
-  nmethod* lookup_osr_nmethod(const methodOop m, int bci, int level, bool match_level) const;
+  nmethod* lookup_osr_nmethod(Method* const m, int bci, int level, bool match_level) const;
 
-  // Breakpoint support (see methods on methodOop for details)
+  // Breakpoint support (see methods on Method* for details)
   BreakpointInfo* breakpoints() const       { return _breakpoints; };
   void set_breakpoints(BreakpointInfo* bps) { _breakpoints = bps; };
 
   // support for stub routines
-  static ByteSize init_state_offset()  { return in_ByteSize(sizeof(klassOopDesc) + offset_of(instanceKlass, _init_state)); }
+  static ByteSize init_state_offset()  { return in_ByteSize(offset_of(InstanceKlass, _init_state)); }
   TRACE_DEFINE_OFFSET;
-  static ByteSize init_thread_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(instanceKlass, _init_thread)); }
+  static ByteSize init_thread_offset() { return in_ByteSize(offset_of(InstanceKlass, _init_thread)); }
 
   // subclass/subinterface checks
-  bool implements_interface(klassOop k) const;
+  bool implements_interface(Klass* k) const;
 
   // Access to the implementor of an interface.
-  klassOop implementor() const
+  Klass* implementor() const
   {
-    klassOop* k = (klassOop*)adr_implementor();
+    Klass** k = adr_implementor();
     if (k == NULL) {
       return NULL;
     } else {
@@ -715,24 +700,24 @@
     }
   }
 
-  void set_implementor(klassOop k) {
+  void set_implementor(Klass* k) {
     assert(is_interface(), "not interface");
-    oop* addr = adr_implementor();
-    oop_store_without_check(addr, k);
+    Klass** addr = adr_implementor();
+    *addr = k;
   }
 
   int  nof_implementors() const       {
-    klassOop k = implementor();
+    Klass* k = implementor();
     if (k == NULL) {
       return 0;
-    } else if (k != this->as_klassOop()) {
+    } else if (k != this) {
       return 1;
     } else {
       return 2;
     }
   }
 
-  void add_implementor(klassOop k);  // k is a new class that implements this interface
+  void add_implementor(Klass* k);  // k is a new class that implements this interface
   void init_implementor();           // initialize
 
   // link this class into the implementors list of every interface it implements
@@ -740,12 +725,11 @@
 
   // virtual operations from Klass
   bool is_leaf_class() const               { return _subklass == NULL; }
-  objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
-  bool compute_is_subtype_of(klassOop k);
+  GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
+  bool compute_is_subtype_of(Klass* k);
   bool can_be_primary_super_slow() const;
-  klassOop java_super() const              { return super(); }
+  Klass* java_super() const              { return super(); }
   int oop_size(oop obj)  const             { return size_helper(); }
-  int klass_oop_size() const               { return object_size(); }
   bool oop_is_instance_slow() const        { return true; }
 
   // Iterators
@@ -753,39 +737,46 @@
   void do_nonstatic_fields(FieldClosure* cl); // including inherited fields
   void do_local_static_fields(void f(fieldDescriptor*, TRAPS), TRAPS);
 
-  void methods_do(void f(methodOop method));
-  void array_klasses_do(void f(klassOop k));
-  void with_array_klasses_do(void f(klassOop k));
+  void methods_do(void f(Method* method));
+  void array_klasses_do(void f(Klass* k));
+  void array_klasses_do(void f(Klass* k, TRAPS), TRAPS);
+  void with_array_klasses_do(void f(Klass* k));
   bool super_types_do(SuperTypeClosure* blk);
 
-  // Casting from klassOop
-  static instanceKlass* cast(klassOop k) {
+  // Casting from Klass*
+  static InstanceKlass* cast(Klass* k) {
     assert(k->is_klass(), "must be");
-    Klass* kp = k->klass_part();
-    assert(kp->null_vtbl() || kp->oop_is_instance_slow(), "cast to instanceKlass");
-    return (instanceKlass*) kp;
+    assert(k->oop_is_instance(), "cast to InstanceKlass");
+    return (InstanceKlass*) k;
   }
 
   // Sizing (in words)
-  static int header_size()            { return align_object_offset(oopDesc::header_size() + sizeof(instanceKlass)/HeapWordSize); }
+  static int header_size()            { return align_object_offset(sizeof(InstanceKlass)/HeapWordSize); }
+  static int size(int vtable_length, int itable_length,
+                  int nonstatic_oop_map_size,
+                  bool is_interface, bool is_anonymous) {
+    return align_object_size(header_size() +
+           align_object_offset(vtable_length) +
+           align_object_offset(itable_length) +
+           ((is_interface || is_anonymous) ?
+             align_object_offset(nonstatic_oop_map_size) :
+             nonstatic_oop_map_size) +
+           (is_interface ? (int)sizeof(Klass*)/HeapWordSize : 0) +
+           (is_anonymous ? (int)sizeof(Klass*)/HeapWordSize : 0));
+  }
+  int size() const                    { return size(vtable_length(),
+                                               itable_length(),
+                                               nonstatic_oop_map_size(),
+                                               is_interface(),
+                                               is_anonymous());
+  }
 
-  int object_size() const
-  {
-    return object_size(align_object_offset(vtable_length()) +
-                       align_object_offset(itable_length()) +
-                       ((is_interface() || is_anonymous()) ?
-                         align_object_offset(nonstatic_oop_map_size()) :
-                         nonstatic_oop_map_size()) +
-                       (is_interface() ? (int)sizeof(klassOop)/HeapWordSize : 0) +
-                       (is_anonymous() ? (int)sizeof(klassOop)/HeapWordSize : 0));
-  }
   static int vtable_start_offset()    { return header_size(); }
-  static int vtable_length_offset()   { return oopDesc::header_size() + offset_of(instanceKlass, _vtable_len) / HeapWordSize; }
-  static int object_size(int extra)   { return align_object_size(header_size() + extra); }
+  static int vtable_length_offset()   { return offset_of(InstanceKlass, _vtable_len) / HeapWordSize; }
 
-  intptr_t* start_of_vtable() const        { return ((intptr_t*)as_klassOop()) + vtable_start_offset(); }
+  intptr_t* start_of_vtable() const        { return ((intptr_t*)this) + vtable_start_offset(); }
   intptr_t* start_of_itable() const        { return start_of_vtable() + align_object_offset(vtable_length()); }
-  int  itable_offset_in_words() const { return start_of_itable() - (intptr_t*)as_klassOop(); }
+  int  itable_offset_in_words() const { return start_of_itable() - (intptr_t*)this; }
 
   intptr_t* end_of_itable() const          { return start_of_itable() + itable_length(); }
 
@@ -795,22 +786,22 @@
     return (OopMapBlock*)(start_of_itable() + align_object_offset(itable_length()));
   }
 
-  oop* adr_implementor() const {
+  Klass** adr_implementor() const {
     if (is_interface()) {
-      return (oop*)(start_of_nonstatic_oop_maps() +
+      return (Klass**)(start_of_nonstatic_oop_maps() +
                     nonstatic_oop_map_count());
     } else {
       return NULL;
     }
   };
 
-  oop* adr_host_klass() const {
+  Klass** adr_host_klass() const {
     if (is_anonymous()) {
-      oop* adr_impl = adr_implementor();
+      Klass** adr_impl = adr_implementor();
       if (adr_impl != NULL) {
         return adr_impl + 1;
       } else {
-        return (oop*)(start_of_nonstatic_oop_maps() +
+        return (Klass**)(start_of_nonstatic_oop_maps() +
                       nonstatic_oop_map_count());
       }
     } else {
@@ -839,18 +830,27 @@
 
   // Java vtable/itable
   klassVtable* vtable() const;        // return new klassVtable wrapper
-  inline methodOop method_at_vtable(int index);
+  inline Method* method_at_vtable(int index);
   klassItable* itable() const;        // return new klassItable wrapper
-  methodOop method_at_itable(klassOop holder, int index, TRAPS);
+  Method* method_at_itable(Klass* holder, int index, TRAPS);
 
   // Garbage collection
+  virtual void oops_do(OopClosure* cl);
+
   void oop_follow_contents(oop obj);
   int  oop_adjust_pointers(oop obj);
-  bool object_is_parsable() const { return _init_state != unparsable_by_gc; }
-       // Value of _init_state must be zero (unparsable_by_gc) when klass field is set.
+
+  void clean_implementors_list(BoolObjectClosure* is_alive);
+  void clean_method_data(BoolObjectClosure* is_alive);
 
-  void follow_weak_klass_links(
-    BoolObjectClosure* is_alive, OopClosure* keep_alive);
+  // Explicit metaspace deallocation of fields
+  // For RedefineClasses, we need to deallocate instanceKlasses
+  void deallocate_contents(ClassLoaderData* loader_data);
+
+  // The constant pool is on stack if any of the methods are executing or
+  // referenced by handles.
+  bool on_stack() const { return _constants->on_stack(); }
+
   void release_C_heap_structures();
 
   // Parallel Scavenge and Parallel Old
@@ -860,11 +860,11 @@
   const char* signature_name() const;
 
   // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk) {
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
 
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
     return oop_oop_iterate_v_m(obj, blk, mr);
   }
 
@@ -884,6 +884,7 @@
   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
 #endif // !SERIALGC
 
+  u2 idnum_allocated_count() const      { return _idnum_allocated_count; }
 private:
   // initialization state
 #ifdef ASSERT
@@ -894,7 +895,6 @@
   void set_rewritten()                  { _misc_flags |= _misc_rewritten; }
   void set_init_thread(Thread *thread)  { _init_thread = thread; }
 
-  u2 idnum_allocated_count() const      { return _idnum_allocated_count; }
   // The RedefineClasses() API can cause new method idnums to be needed
   // which will cause the caches to grow. Safety requires different
   // cache management logic if the caches can grow instead of just
@@ -910,29 +910,15 @@
   void release_set_methods_cached_itable_indices(int* indices)
          { OrderAccess::release_store_ptr(&_methods_cached_itable_indices, indices); }
 
-  inline typeArrayOop get_method_annotations_from(int idnum, objArrayOop annos);
-  void set_annotations(objArrayOop md, objArrayOop* md_p)  { oop_store_without_check((oop*)md_p, (oop)md); }
-  void set_methods_annotations_of(int idnum, typeArrayOop anno, objArrayOop* md_p);
+  // Lock during initialization
+  volatile oop init_lock() const;
+  void set_init_lock(oop value)      { klass_oop_store(&_init_lock, value); }
+  void fence_and_clear_init_lock();  // after fully_initialized
 
   // Offsets for memory management
-  oop* adr_array_klasses() const     { return (oop*)&this->_array_klasses;}
-  oop* adr_methods() const           { return (oop*)&this->_methods;}
-  oop* adr_method_ordering() const   { return (oop*)&this->_method_ordering;}
-  oop* adr_local_interfaces() const  { return (oop*)&this->_local_interfaces;}
-  oop* adr_transitive_interfaces() const  { return (oop*)&this->_transitive_interfaces;}
-  oop* adr_fields() const            { return (oop*)&this->_fields;}
-  oop* adr_constants() const         { return (oop*)&this->_constants;}
-  oop* adr_class_loader() const      { return (oop*)&this->_class_loader;}
   oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;}
   oop* adr_signers() const           { return (oop*)&this->_signers;}
-  oop* adr_inner_classes() const     { return (oop*)&this->_inner_classes;}
-  oop* adr_methods_jmethod_ids() const             { return (oop*)&this->_methods_jmethod_ids;}
-  oop* adr_methods_cached_itable_indices() const   { return (oop*)&this->_methods_cached_itable_indices;}
-  oop* adr_class_annotations() const   { return (oop*)&this->_class_annotations;}
-  oop* adr_fields_annotations() const  { return (oop*)&this->_fields_annotations;}
-  oop* adr_methods_annotations() const { return (oop*)&this->_methods_annotations;}
-  oop* adr_methods_parameter_annotations() const { return (oop*)&this->_methods_parameter_annotations;}
-  oop* adr_methods_default_annotations() const { return (oop*)&this->_methods_default_annotations;}
+  oop* adr_init_lock() const         { return (oop*)&this->_init_lock;}
 
   // Static methods that are used to implement member methods where an exposed this pointer
   // is needed due to possible GCs
@@ -942,21 +928,21 @@
   static void eager_initialize_impl                     (instanceKlassHandle this_oop);
   static void set_initialization_state_and_notify_impl  (instanceKlassHandle this_oop, ClassState state, TRAPS);
   static void call_class_initializer_impl               (instanceKlassHandle this_oop, TRAPS);
-  static klassOop array_klass_impl                      (instanceKlassHandle this_oop, bool or_null, int n, TRAPS);
+  static Klass* array_klass_impl                      (instanceKlassHandle this_oop, bool or_null, int n, TRAPS);
   static void do_local_static_fields_impl               (instanceKlassHandle this_oop, void f(fieldDescriptor* fd, TRAPS), TRAPS);
   /* jni_id_for_impl for jfieldID only */
   static JNIid* jni_id_for_impl                         (instanceKlassHandle this_oop, int offset);
 
   // Returns the array class for the n'th dimension
-  klassOop array_klass_impl(bool or_null, int n, TRAPS);
+  Klass* array_klass_impl(bool or_null, int n, TRAPS);
 
   // Returns the array class with this class as element type
-  klassOop array_klass_impl(bool or_null, TRAPS);
+  Klass* array_klass_impl(bool or_null, TRAPS);
 
 public:
-  // sharing support
+  // CDS support - remove and restore oops from metadata. Oops are not shared.
   virtual void remove_unshareable_info();
-  virtual void shared_symbols_iterate(SymbolClosure* closure);
+  virtual void restore_unshareable_info(TRAPS);
 
   // jvm support
   jint compute_modifier_flags(TRAPS) const;
@@ -967,7 +953,13 @@
 
  public:
   // Printing
+#ifndef PRODUCT
+  void print_on(outputStream* st) const;
+#endif
+  void print_value_on(outputStream* st) const;
+
   void oop_print_value_on(oop obj, outputStream* st);
+
 #ifndef PRODUCT
   void oop_print_on      (oop obj, outputStream* st);
 
@@ -975,12 +967,15 @@
   bool is_dependent_nmethod(nmethod* nm);
 #endif
 
+  const char* internal_name() const;
+
   // Verification
-  const char* internal_name() const;
+  void verify_on(outputStream* st);
+
   void oop_verify_on(oop obj, outputStream* st);
 };
 
-inline methodOop instanceKlass::method_at_vtable(int index)  {
+inline Method* InstanceKlass::method_at_vtable(int index)  {
 #ifndef PRODUCT
   assert(index >= 0, "valid vtable index");
   if (DebugVtables) {
@@ -991,18 +986,11 @@
   return ve[index].method();
 }
 
-inline typeArrayOop instanceKlass::get_method_annotations_from(int idnum, objArrayOop annos) {
-  if (annos == NULL || annos->length() <= idnum) {
-    return NULL;
-  }
-  return typeArrayOop(annos->obj_at(idnum));
-}
-
 // for adding methods
 // UNSET_IDNUM return means no more ids available
-inline u2 instanceKlass::next_method_idnum() {
-  if (_idnum_allocated_count == constMethodOopDesc::MAX_IDNUM) {
-    return constMethodOopDesc::UNSET_IDNUM; // no more ids available
+inline u2 InstanceKlass::next_method_idnum() {
+  if (_idnum_allocated_count == ConstMethod::MAX_IDNUM) {
+    return ConstMethod::UNSET_IDNUM; // no more ids available
   } else {
     return _idnum_allocated_count++;
   }
@@ -1013,7 +1001,7 @@
 class JNIid: public CHeapObj<mtClass> {
   friend class VMStructs;
  private:
-  klassOop           _holder;
+  Klass*             _holder;
   JNIid*             _next;
   int                _offset;
 #ifdef ASSERT
@@ -1022,45 +1010,42 @@
 
  public:
   // Accessors
-  klassOop holder() const         { return _holder; }
+  Klass* holder() const           { return _holder; }
   int offset() const              { return _offset; }
   JNIid* next()                   { return _next; }
   // Constructor
-  JNIid(klassOop holder, int offset, JNIid* next);
+  JNIid(Klass* holder, int offset, JNIid* next);
   // Identifier lookup
   JNIid* find(int offset);
 
   bool find_local_field(fieldDescriptor* fd) {
-    return instanceKlass::cast(holder())->find_local_field_from_offset(offset(), true, fd);
+    return InstanceKlass::cast(holder())->find_local_field_from_offset(offset(), true, fd);
   }
 
-  // Garbage collection support
-  oop* holder_addr() { return (oop*)&_holder; }
-  void oops_do(OopClosure* f);
   static void deallocate(JNIid* id);
   // Debugging
 #ifdef ASSERT
   bool is_static_field_id() const { return _is_static_field_id; }
   void set_is_static_field_id()   { _is_static_field_id = true; }
 #endif
-  void verify(klassOop holder);
+  void verify(Klass* holder);
 };
 
 
 // If breakpoints are more numerous than just JVMTI breakpoints,
 // consider compressing this data structure.
-// It is currently a simple linked list defined in methodOop.hpp.
+// It is currently a simple linked list defined in method.hpp.
 
 class BreakpointInfo;
 
 
 // A collection point for interesting information about the previous
-// version(s) of an instanceKlass. This class uses weak references to
+// version(s) of an InstanceKlass. This class uses weak references to
 // the information so that the information may be collected as needed
 // by the system. If the information is shared, then a regular
 // reference must be used because a weak reference would be seen as
 // collectible. A GrowableArray of PreviousVersionNodes is attached
-// to the instanceKlass as needed. See PreviousVersionWalker below.
+// to the InstanceKlass as needed. See PreviousVersionWalker below.
 class PreviousVersionNode : public CHeapObj<mtClass> {
  private:
   // A shared ConstantPool is never collected so we'll always have
@@ -1068,23 +1053,23 @@
   // have a weak reference to a non-shared ConstantPool until all
   // of the methods (EMCP or obsolete) have been collected; the
   // non-shared ConstantPool becomes collectible at that point.
-  jobject _prev_constant_pool;  // regular or weak reference
+  ConstantPool*    _prev_constant_pool;  // regular or weak reference
   bool    _prev_cp_is_weak;     // true if not a shared ConstantPool
 
-  // If the previous version of the instanceKlass doesn't have any
+  // If the previous version of the InstanceKlass doesn't have any
   // EMCP methods, then _prev_EMCP_methods will be NULL. If all the
   // EMCP methods have been collected, then _prev_EMCP_methods can
   // have a length of zero.
-  GrowableArray<jweak>* _prev_EMCP_methods;
+  GrowableArray<Method*>* _prev_EMCP_methods;
 
 public:
-  PreviousVersionNode(jobject prev_constant_pool, bool prev_cp_is_weak,
-    GrowableArray<jweak>* prev_EMCP_methods);
+  PreviousVersionNode(ConstantPool* prev_constant_pool, bool prev_cp_is_weak,
+    GrowableArray<Method*>* prev_EMCP_methods);
   ~PreviousVersionNode();
-  jobject prev_constant_pool() const {
+  ConstantPool* prev_constant_pool() const {
     return _prev_constant_pool;
   }
-  GrowableArray<jweak>* prev_EMCP_methods() const {
+  GrowableArray<Method*>* prev_EMCP_methods() const {
     return _prev_EMCP_methods;
   }
 };
@@ -1094,7 +1079,7 @@
 class PreviousVersionInfo : public ResourceObj {
  private:
   constantPoolHandle   _prev_constant_pool_handle;
-  // If the previous version of the instanceKlass doesn't have any
+  // If the previous version of the InstanceKlass doesn't have any
   // EMCP methods, then _prev_EMCP_methods will be NULL. Since the
   // methods cannot be collected while we hold a handle,
   // _prev_EMCP_methods should never have a length of zero.
@@ -1137,7 +1122,7 @@
   PreviousVersionInfo *                 _current_p;
 
  public:
-  PreviousVersionWalker(instanceKlass *ik);
+  PreviousVersionWalker(InstanceKlass *ik);
   ~PreviousVersionWalker();
 
   // Return the interesting information for the next previous version
@@ -1178,10 +1163,10 @@
 };
 
 // An iterator that's used to access the inner classes indices in the
-// instanceKlass::_inner_classes array.
+// InstanceKlass::_inner_classes array.
 class InnerClassesIterator : public StackObj {
  private:
-  typeArrayHandle _inner_classes;
+  Array<jushort>* _inner_classes;
   int _length;
   int _idx;
  public:
@@ -1195,12 +1180,12 @@
       // attribute data, or it should be
       // n*inner_class_next_offset+enclosing_method_attribute_size
       // if it also contains the EnclosingMethod data.
-      assert((_length % instanceKlass::inner_class_next_offset == 0 ||
-              _length % instanceKlass::inner_class_next_offset == instanceKlass::enclosing_method_attribute_size),
+      assert((_length % InstanceKlass::inner_class_next_offset == 0 ||
+              _length % InstanceKlass::inner_class_next_offset == InstanceKlass::enclosing_method_attribute_size),
              "just checking");
       // Remove the enclosing_method portion if exists.
-      if (_length % instanceKlass::inner_class_next_offset == instanceKlass::enclosing_method_attribute_size) {
-        _length -= instanceKlass::enclosing_method_attribute_size;
+      if (_length % InstanceKlass::inner_class_next_offset == InstanceKlass::enclosing_method_attribute_size) {
+        _length -= InstanceKlass::enclosing_method_attribute_size;
       }
     } else {
       _length = 0;
@@ -1213,7 +1198,7 @@
   }
 
   void next() {
-    _idx += instanceKlass::inner_class_next_offset;
+    _idx += InstanceKlass::inner_class_next_offset;
   }
 
   bool done() const {
@@ -1221,38 +1206,38 @@
   }
 
   u2 inner_class_info_index() const {
-    return _inner_classes->ushort_at(
-               _idx + instanceKlass::inner_class_inner_class_info_offset);
+    return _inner_classes->at(
+               _idx + InstanceKlass::inner_class_inner_class_info_offset);
   }
 
   void set_inner_class_info_index(u2 index) {
-    _inner_classes->ushort_at_put(
-               _idx + instanceKlass::inner_class_inner_class_info_offset, index);
+    _inner_classes->at_put(
+               _idx + InstanceKlass::inner_class_inner_class_info_offset, index);
   }
 
   u2 outer_class_info_index() const {
-    return _inner_classes->ushort_at(
-               _idx + instanceKlass::inner_class_outer_class_info_offset);
+    return _inner_classes->at(
+               _idx + InstanceKlass::inner_class_outer_class_info_offset);
   }
 
   void set_outer_class_info_index(u2 index) {
-    _inner_classes->ushort_at_put(
-               _idx + instanceKlass::inner_class_outer_class_info_offset, index);
+    _inner_classes->at_put(
+               _idx + InstanceKlass::inner_class_outer_class_info_offset, index);
   }
 
   u2 inner_name_index() const {
-    return _inner_classes->ushort_at(
-               _idx + instanceKlass::inner_class_inner_name_offset);
+    return _inner_classes->at(
+               _idx + InstanceKlass::inner_class_inner_name_offset);
   }
 
   void set_inner_name_index(u2 index) {
-    _inner_classes->ushort_at_put(
-               _idx + instanceKlass::inner_class_inner_name_offset, index);
+    _inner_classes->at_put(
+               _idx + InstanceKlass::inner_class_inner_name_offset, index);
   }
 
   u2 inner_access_flags() const {
-    return _inner_classes->ushort_at(
-               _idx + instanceKlass::inner_class_access_flags_offset);
+    return _inner_classes->at(
+               _idx + InstanceKlass::inner_class_access_flags_offset);
   }
 };
 
--- a/src/share/vm/oops/instanceKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,790 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "interpreter/oopMapCache.hpp"
-#include "memory/gcLocker.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/instanceKlass.hpp"
-#include "oops/instanceMirrorKlass.hpp"
-#include "oops/instanceKlassKlass.hpp"
-#include "oops/instanceRefKlass.hpp"
-#include "oops/objArrayKlassKlass.hpp"
-#include "oops/objArrayOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "oops/symbol.hpp"
-#include "oops/typeArrayOop.hpp"
-#include "prims/jvmtiExport.hpp"
-#include "runtime/fieldDescriptor.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-klassOop instanceKlassKlass::create_klass(TRAPS) {
-  instanceKlassKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-int instanceKlassKlass::oop_size(oop obj) const {
-  assert(obj->is_klass(), "must be klass");
-  return instanceKlass::cast(klassOop(obj))->object_size();
-}
-
-bool instanceKlassKlass::oop_is_parsable(oop obj) const {
-  assert(obj->is_klass(), "must be klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  return (!ik->null_vtbl()) && ik->object_is_parsable();
-}
-
-void instanceKlassKlass::iterate_c_heap_oops(instanceKlass* ik,
-                                             OopClosure* closure) {
-  if (ik->oop_map_cache() != NULL) {
-    ik->oop_map_cache()->oop_iterate(closure);
-  }
-
-  if (ik->jni_ids() != NULL) {
-    ik->jni_ids()->oops_do(closure);
-  }
-}
-
-void instanceKlassKlass::oop_follow_contents(oop obj) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), "must be instance klass");
-
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  {
-    HandleMark hm;
-    ik->vtable()->oop_follow_contents();
-    ik->itable()->oop_follow_contents();
-  }
-
-  MarkSweep::mark_and_push(ik->adr_array_klasses());
-  MarkSweep::mark_and_push(ik->adr_methods());
-  MarkSweep::mark_and_push(ik->adr_method_ordering());
-  MarkSweep::mark_and_push(ik->adr_local_interfaces());
-  MarkSweep::mark_and_push(ik->adr_transitive_interfaces());
-  MarkSweep::mark_and_push(ik->adr_fields());
-  MarkSweep::mark_and_push(ik->adr_constants());
-  MarkSweep::mark_and_push(ik->adr_class_loader());
-  MarkSweep::mark_and_push(ik->adr_inner_classes());
-  MarkSweep::mark_and_push(ik->adr_protection_domain());
-  if (ik->adr_host_klass() != NULL) {
-    MarkSweep::mark_and_push(ik->adr_host_klass());
-  }
-  MarkSweep::mark_and_push(ik->adr_signers());
-  MarkSweep::mark_and_push(ik->adr_class_annotations());
-  MarkSweep::mark_and_push(ik->adr_fields_annotations());
-  MarkSweep::mark_and_push(ik->adr_methods_annotations());
-  MarkSweep::mark_and_push(ik->adr_methods_parameter_annotations());
-  MarkSweep::mark_and_push(ik->adr_methods_default_annotations());
-
-  // We do not follow adr_implementor() here. It is followed later
-  // in instanceKlass::follow_weak_klass_links()
-
-  klassKlass::oop_follow_contents(obj);
-
-  iterate_c_heap_oops(ik, &MarkSweep::mark_and_push_closure);
-}
-
-#ifndef SERIALGC
-void instanceKlassKlass::oop_follow_contents(ParCompactionManager* cm,
-                                             oop obj) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), "must be instance klass");
-
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  ik->vtable()->oop_follow_contents(cm);
-  ik->itable()->oop_follow_contents(cm);
-
-  PSParallelCompact::mark_and_push(cm, ik->adr_array_klasses());
-  PSParallelCompact::mark_and_push(cm, ik->adr_methods());
-  PSParallelCompact::mark_and_push(cm, ik->adr_method_ordering());
-  PSParallelCompact::mark_and_push(cm, ik->adr_local_interfaces());
-  PSParallelCompact::mark_and_push(cm, ik->adr_transitive_interfaces());
-  PSParallelCompact::mark_and_push(cm, ik->adr_fields());
-  PSParallelCompact::mark_and_push(cm, ik->adr_constants());
-  PSParallelCompact::mark_and_push(cm, ik->adr_class_loader());
-  PSParallelCompact::mark_and_push(cm, ik->adr_inner_classes());
-  PSParallelCompact::mark_and_push(cm, ik->adr_protection_domain());
-  if (ik->adr_host_klass() != NULL) {
-    PSParallelCompact::mark_and_push(cm, ik->adr_host_klass());
-  }
-  PSParallelCompact::mark_and_push(cm, ik->adr_signers());
-  PSParallelCompact::mark_and_push(cm, ik->adr_class_annotations());
-  PSParallelCompact::mark_and_push(cm, ik->adr_fields_annotations());
-  PSParallelCompact::mark_and_push(cm, ik->adr_methods_annotations());
-  PSParallelCompact::mark_and_push(cm, ik->adr_methods_parameter_annotations());
-  PSParallelCompact::mark_and_push(cm, ik->adr_methods_default_annotations());
-
-  // We do not follow adr_implementor() here. It is followed later
-  // in instanceKlass::follow_weak_klass_links()
-
-  klassKlass::oop_follow_contents(cm, obj);
-
-  PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
-  iterate_c_heap_oops(ik, &mark_and_push_closure);
-}
-#endif // SERIALGC
-
-int instanceKlassKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), "must be instance klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = ik->object_size();
-
-  ik->vtable()->oop_oop_iterate(blk);
-  ik->itable()->oop_oop_iterate(blk);
-
-  blk->do_oop(ik->adr_array_klasses());
-  blk->do_oop(ik->adr_methods());
-  blk->do_oop(ik->adr_method_ordering());
-  blk->do_oop(ik->adr_local_interfaces());
-  blk->do_oop(ik->adr_transitive_interfaces());
-  blk->do_oop(ik->adr_fields());
-  blk->do_oop(ik->adr_constants());
-  blk->do_oop(ik->adr_class_loader());
-  blk->do_oop(ik->adr_protection_domain());
-  if (ik->adr_host_klass() != NULL) {
-    blk->do_oop(ik->adr_host_klass());
-  }
-  blk->do_oop(ik->adr_signers());
-  blk->do_oop(ik->adr_inner_classes());
-  if (ik->adr_implementor() != NULL) {
-    blk->do_oop(ik->adr_implementor());
-  }
-  blk->do_oop(ik->adr_class_annotations());
-  blk->do_oop(ik->adr_fields_annotations());
-  blk->do_oop(ik->adr_methods_annotations());
-  blk->do_oop(ik->adr_methods_parameter_annotations());
-  blk->do_oop(ik->adr_methods_default_annotations());
-
-  klassKlass::oop_oop_iterate(obj, blk);
-
-  if(ik->oop_map_cache() != NULL) ik->oop_map_cache()->oop_iterate(blk);
-  return size;
-}
-
-int instanceKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk,
-                                           MemRegion mr) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), "must be instance klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = ik->object_size();
-
-  ik->vtable()->oop_oop_iterate_m(blk, mr);
-  ik->itable()->oop_oop_iterate_m(blk, mr);
-
-  oop* adr;
-  adr = ik->adr_array_klasses();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_methods();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_method_ordering();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_local_interfaces();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_transitive_interfaces();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_fields();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_constants();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_class_loader();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_protection_domain();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_host_klass();
-  if (adr != NULL && mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_signers();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_inner_classes();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_implementor();
-  if (adr != NULL && mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_class_annotations();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_fields_annotations();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_methods_annotations();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_methods_parameter_annotations();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = ik->adr_methods_default_annotations();
-  if (mr.contains(adr)) blk->do_oop(adr);
-
-  klassKlass::oop_oop_iterate_m(obj, blk, mr);
-
-  if(ik->oop_map_cache() != NULL) ik->oop_map_cache()->oop_iterate(blk, mr);
-  return size;
-}
-
-int instanceKlassKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(), "must be instance klass");
-
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  ik->vtable()->oop_adjust_pointers();
-  ik->itable()->oop_adjust_pointers();
-
-  MarkSweep::adjust_pointer(ik->adr_array_klasses());
-  MarkSweep::adjust_pointer(ik->adr_methods());
-  MarkSweep::adjust_pointer(ik->adr_method_ordering());
-  MarkSweep::adjust_pointer(ik->adr_local_interfaces());
-  MarkSweep::adjust_pointer(ik->adr_transitive_interfaces());
-  MarkSweep::adjust_pointer(ik->adr_fields());
-  MarkSweep::adjust_pointer(ik->adr_constants());
-  MarkSweep::adjust_pointer(ik->adr_class_loader());
-  MarkSweep::adjust_pointer(ik->adr_protection_domain());
-  if (ik->adr_host_klass() != NULL) {
-    MarkSweep::adjust_pointer(ik->adr_host_klass());
-  }
-  MarkSweep::adjust_pointer(ik->adr_signers());
-  MarkSweep::adjust_pointer(ik->adr_inner_classes());
-  if (ik->adr_implementor() != NULL) {
-    MarkSweep::adjust_pointer(ik->adr_implementor());
-  }
-  MarkSweep::adjust_pointer(ik->adr_class_annotations());
-  MarkSweep::adjust_pointer(ik->adr_fields_annotations());
-  MarkSweep::adjust_pointer(ik->adr_methods_annotations());
-  MarkSweep::adjust_pointer(ik->adr_methods_parameter_annotations());
-  MarkSweep::adjust_pointer(ik->adr_methods_default_annotations());
-
-  iterate_c_heap_oops(ik, &MarkSweep::adjust_root_pointer_closure);
-
-  return klassKlass::oop_adjust_pointers(obj);
-}
-
-#ifndef SERIALGC
-void instanceKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-
-  oop* loader_addr = ik->adr_class_loader();
-  if (PSScavenge::should_scavenge(loader_addr)) {
-    pm->claim_or_forward_depth(loader_addr);
-  }
-
-  oop* pd_addr = ik->adr_protection_domain();
-  if (PSScavenge::should_scavenge(pd_addr)) {
-    pm->claim_or_forward_depth(pd_addr);
-  }
-
-  oop* hk_addr = ik->adr_host_klass();
-  if (hk_addr != NULL && PSScavenge::should_scavenge(hk_addr)) {
-    pm->claim_or_forward_depth(hk_addr);
-  }
-
-  oop* sg_addr = ik->adr_signers();
-  if (PSScavenge::should_scavenge(sg_addr)) {
-    pm->claim_or_forward_depth(sg_addr);
-  }
-
-  klassKlass::oop_push_contents(pm, obj);
-}
-
-int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_klass(),"must be a klass");
-  assert(klassOop(obj)->klass_part()->oop_is_instance_slow(),
-         "must be instance klass");
-
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  ik->vtable()->oop_update_pointers(cm);
-  ik->itable()->oop_update_pointers(cm);
-
-  oop* const beg_oop = ik->oop_block_beg();
-  oop* const end_oop = ik->oop_block_end();
-  for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
-    PSParallelCompact::adjust_pointer(cur_oop);
-  }
-  // embedded oops
-  if (ik->adr_implementor() != NULL) {
-    PSParallelCompact::adjust_pointer(ik->adr_implementor());
-  }
-  if (ik->adr_host_klass() != NULL) {
-    PSParallelCompact::adjust_pointer(ik->adr_host_klass());
-  }
-
-  OopClosure* closure = PSParallelCompact::adjust_root_pointer_closure();
-  iterate_c_heap_oops(ik, closure);
-
-  klassKlass::oop_update_pointers(cm, obj);
-  return ik->object_size();
-}
-
-#endif // SERIALGC
-
-klassOop
-instanceKlassKlass::allocate_instance_klass(Symbol* name, int vtable_len, int itable_len,
-                                            int static_field_size,
-                                            unsigned nonstatic_oop_map_count,
-                                            AccessFlags access_flags,
-                                            ReferenceType rt,
-                                            KlassHandle host_klass, TRAPS) {
-
-  const int nonstatic_oop_map_size =
-    instanceKlass::nonstatic_oop_map_size(nonstatic_oop_map_count);
-  int size = align_object_offset(vtable_len) + align_object_offset(itable_len);
-  if (access_flags.is_interface() || !host_klass.is_null()) {
-    size += align_object_offset(nonstatic_oop_map_size);
-  } else {
-    size += nonstatic_oop_map_size;
-  }
-  if (access_flags.is_interface()) {
-    size += (int)sizeof(klassOop)/HeapWordSize;
-  }
-  if (!host_klass.is_null()) {
-    size += (int)sizeof(klassOop)/HeapWordSize;
-  }
-  size = instanceKlass::object_size(size);
-
-  // Allocation
-  KlassHandle h_this_klass(THREAD, as_klassOop());
-  KlassHandle k;
-  if (rt == REF_NONE) {
-    if (name != vmSymbols::java_lang_Class()) {
-      // regular klass
-      instanceKlass o;
-      k = base_create_klass(h_this_klass, size, o.vtbl_value(), CHECK_NULL);
-    } else {
-      // Class
-      instanceMirrorKlass o;
-      k = base_create_klass(h_this_klass, size, o.vtbl_value(), CHECK_NULL);
-    }
-  } else {
-    // reference klass
-    instanceRefKlass o;
-    k = base_create_klass(h_this_klass, size, o.vtbl_value(), CHECK_NULL);
-  }
-  {
-    No_Safepoint_Verifier no_safepoint; // until k becomes parsable
-    instanceKlass* ik = (instanceKlass*) k()->klass_part();
-    assert(!k()->is_parsable(), "not expecting parsability yet.");
-
-    // The sizes of these these three variables are used for determining the
-    // size of the instanceKlassOop. It is critical that these are set to the right
-    // sizes before the first GC, i.e., when we allocate the mirror.
-    ik->set_vtable_length(vtable_len);
-    ik->set_itable_length(itable_len);
-    ik->set_static_field_size(static_field_size);
-    ik->set_nonstatic_oop_map_size(nonstatic_oop_map_size);
-    ik->set_access_flags(access_flags);
-    ik->set_is_anonymous(!host_klass.is_null());
-    assert(k()->size() == size, "wrong size for object");
-
-    ik->set_array_klasses(NULL);
-    ik->set_methods(NULL);
-    ik->set_method_ordering(NULL);
-    ik->set_local_interfaces(NULL);
-    ik->set_transitive_interfaces(NULL);
-    ik->init_implementor();
-    ik->set_fields(NULL, 0);
-    ik->set_constants(NULL);
-    ik->set_class_loader(NULL);
-    ik->set_protection_domain(NULL);
-    ik->set_signers(NULL);
-    ik->set_source_file_name(NULL);
-    ik->set_source_debug_extension(NULL, 0);
-    ik->set_array_name(NULL);
-    ik->set_inner_classes(NULL);
-    ik->set_static_oop_field_count(0);
-    ik->set_nonstatic_field_size(0);
-    ik->set_is_marked_dependent(false);
-    ik->set_init_state(instanceKlass::allocated);
-    ik->set_init_thread(NULL);
-    ik->set_reference_type(rt);
-    ik->set_oop_map_cache(NULL);
-    ik->set_jni_ids(NULL);
-    ik->set_osr_nmethods_head(NULL);
-    ik->set_breakpoints(NULL);
-    ik->init_previous_versions();
-    ik->set_generic_signature(NULL);
-    ik->release_set_methods_jmethod_ids(NULL);
-    ik->release_set_methods_cached_itable_indices(NULL);
-    ik->set_class_annotations(NULL);
-    ik->set_fields_annotations(NULL);
-    ik->set_methods_annotations(NULL);
-    ik->set_methods_parameter_annotations(NULL);
-    ik->set_methods_default_annotations(NULL);
-    ik->set_jvmti_cached_class_field_map(NULL);
-    ik->set_initial_method_idnum(0);
-    assert(k()->is_parsable(), "should be parsable here.");
-
-    // initialize the non-header words to zero
-    intptr_t* p = (intptr_t*)k();
-    for (int index = instanceKlass::header_size(); index < size; index++) {
-      p[index] = NULL_WORD;
-    }
-
-    // To get verify to work - must be set to partial loaded before first GC point.
-    k()->set_partially_loaded();
-  }
-  return k();
-}
-
-
-
-#ifndef PRODUCT
-
-// Printing
-
-#define BULLET  " - "
-
-static const char* state_names[] = {
-  "unparseable_by_gc", "allocated", "loaded", "linked", "being_initialized", "fully_initialized", "initialization_error"
-};
-
-
-void instanceKlassKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  klassKlass::oop_print_on(obj, st);
-
-  st->print(BULLET"instance size:     %d", ik->size_helper());                        st->cr();
-  st->print(BULLET"klass size:        %d", ik->object_size());                        st->cr();
-  st->print(BULLET"access:            "); ik->access_flags().print_on(st);            st->cr();
-  st->print(BULLET"state:             "); st->print_cr(state_names[ik->_init_state]);
-  st->print(BULLET"name:              "); ik->name()->print_value_on(st);             st->cr();
-  st->print(BULLET"super:             "); ik->super()->print_value_on(st);            st->cr();
-  st->print(BULLET"sub:               ");
-  Klass* sub = ik->subklass();
-  int n;
-  for (n = 0; sub != NULL; n++, sub = sub->next_sibling()) {
-    if (n < MaxSubklassPrintSize) {
-      sub->as_klassOop()->print_value_on(st);
-      st->print("   ");
-    }
-  }
-  if (n >= MaxSubklassPrintSize) st->print("(%d more klasses...)", n - MaxSubklassPrintSize);
-  st->cr();
-
-  if (ik->is_interface()) {
-    st->print_cr(BULLET"nof implementors:  %d", ik->nof_implementors());
-    if (ik->nof_implementors() == 1) {
-      st->print_cr(BULLET"implementor:    ");
-      st->print("   ");
-      ik->implementor()->print_value_on(st);
-      st->cr();
-    }
-  }
-
-  st->print(BULLET"arrays:            "); ik->array_klasses()->print_value_on(st);     st->cr();
-  st->print(BULLET"methods:           "); ik->methods()->print_value_on(st);           st->cr();
-  if (Verbose) {
-    objArrayOop methods = ik->methods();
-    for(int i = 0; i < methods->length(); i++) {
-      tty->print("%d : ", i); methods->obj_at(i)->print_value(); tty->cr();
-    }
-  }
-  st->print(BULLET"method ordering:   "); ik->method_ordering()->print_value_on(st);       st->cr();
-  st->print(BULLET"local interfaces:  "); ik->local_interfaces()->print_value_on(st);      st->cr();
-  st->print(BULLET"trans. interfaces: "); ik->transitive_interfaces()->print_value_on(st); st->cr();
-  st->print(BULLET"constants:         "); ik->constants()->print_value_on(st);         st->cr();
-  st->print(BULLET"class loader:      "); ik->class_loader()->print_value_on(st);      st->cr();
-  st->print(BULLET"protection domain: "); ik->protection_domain()->print_value_on(st); st->cr();
-  if (ik->host_klass() != NULL) {
-    st->print(BULLET"host class:        "); ik->host_klass()->print_value_on(st);        st->cr();
-  }
-  st->print(BULLET"signers:           "); ik->signers()->print_value_on(st);           st->cr();
-  if (ik->source_file_name() != NULL) {
-    st->print(BULLET"source file:       ");
-    ik->source_file_name()->print_value_on(st);
-    st->cr();
-  }
-  if (ik->source_debug_extension() != NULL) {
-    st->print(BULLET"source debug extension:       ");
-    st->print_cr("%s", ik->source_debug_extension());
-    st->cr();
-  }
-
-  {
-    ResourceMark rm;
-    // PreviousVersionInfo objects returned via PreviousVersionWalker
-    // contain a GrowableArray of handles. We have to clean up the
-    // GrowableArray _after_ the PreviousVersionWalker destructor
-    // has destroyed the handles.
-    {
-      bool have_pv = false;
-      PreviousVersionWalker pvw(ik);
-      for (PreviousVersionInfo * pv_info = pvw.next_previous_version();
-           pv_info != NULL; pv_info = pvw.next_previous_version()) {
-        if (!have_pv)
-          st->print(BULLET"previous version:  ");
-        have_pv = true;
-        pv_info->prev_constant_pool_handle()()->print_value_on(st);
-      }
-      if (have_pv)  st->cr();
-    } // pvw is cleaned up
-  } // rm is cleaned up
-
-  if (ik->generic_signature() != NULL) {
-    st->print(BULLET"generic signature: ");
-    ik->generic_signature()->print_value_on(st);
-    st->cr();
-  }
-  st->print(BULLET"inner classes:     "); ik->inner_classes()->print_value_on(st);     st->cr();
-  st->print(BULLET"java mirror:       "); ik->java_mirror()->print_value_on(st);       st->cr();
-  st->print(BULLET"vtable length      %d  (start addr: " INTPTR_FORMAT ")", ik->vtable_length(), ik->start_of_vtable());  st->cr();
-  st->print(BULLET"itable length      %d (start addr: " INTPTR_FORMAT ")", ik->itable_length(), ik->start_of_itable()); st->cr();
-  st->print_cr(BULLET"---- static fields (%d words):", ik->static_field_size());
-  FieldPrinter print_static_field(st);
-  ik->do_local_static_fields(&print_static_field);
-  st->print_cr(BULLET"---- non-static fields (%d words):", ik->nonstatic_field_size());
-  FieldPrinter print_nonstatic_field(st);
-  ik->do_nonstatic_fields(&print_nonstatic_field);
-
-  st->print(BULLET"non-static oop maps: ");
-  OopMapBlock* map     = ik->start_of_nonstatic_oop_maps();
-  OopMapBlock* end_map = map + ik->nonstatic_oop_map_count();
-  while (map < end_map) {
-    st->print("%d-%d ", map->offset(), map->offset() + heapOopSize*(map->count() - 1));
-    map++;
-  }
-  st->cr();
-}
-
-#endif //PRODUCT
-
-void instanceKlassKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  ik->name()->print_value_on(st);
-}
-
-const char* instanceKlassKlass::internal_name() const {
-  return "{instance class}";
-}
-
-// Verification
-
-class VerifyFieldClosure: public OopClosure {
- protected:
-  template <class T> void do_oop_work(T* p) {
-    guarantee(Universe::heap()->is_in(p), "should be in heap");
-    oop obj = oopDesc::load_decode_heap_oop(p);
-    guarantee(obj->is_oop_or_null(), "should be in heap");
-  }
- public:
-  virtual void do_oop(oop* p)       { VerifyFieldClosure::do_oop_work(p); }
-  virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
-};
-
-void instanceKlassKlass::oop_verify_on(oop obj, outputStream* st) {
-  klassKlass::oop_verify_on(obj, st);
-  if (!obj->partially_loaded()) {
-    Thread *thread = Thread::current();
-    instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-
-#ifndef PRODUCT
-    // Avoid redundant verifies
-    if (ik->_verify_count == Universe::verify_count()) return;
-    ik->_verify_count = Universe::verify_count();
-#endif
-    // Verify that klass is present in SystemDictionary
-    if (ik->is_loaded() && !ik->is_anonymous()) {
-      Symbol* h_name = ik->name();
-      Handle h_loader (thread, ik->class_loader());
-      Handle h_obj(thread, obj);
-      SystemDictionary::verify_obj_klass_present(h_obj, h_name, h_loader);
-    }
-
-    // Verify static fields
-    VerifyFieldClosure blk;
-
-    // Verify vtables
-    if (ik->is_linked()) {
-      ResourceMark rm(thread);
-      // $$$ This used to be done only for m/s collections.  Doing it
-      // always seemed a valid generalization.  (DLD -- 6/00)
-      ik->vtable()->verify(st);
-    }
-
-    // Verify oop map cache
-    if (ik->oop_map_cache() != NULL) {
-      ik->oop_map_cache()->verify();
-    }
-
-    // Verify first subklass
-    if (ik->subklass_oop() != NULL) {
-      guarantee(ik->subklass_oop()->is_perm(),  "should be in permspace");
-      guarantee(ik->subklass_oop()->is_klass(), "should be klass");
-    }
-
-    // Verify siblings
-    klassOop super = ik->super();
-    Klass* sib = ik->next_sibling();
-    int sib_count = 0;
-    while (sib != NULL) {
-      if (sib == ik) {
-        fatal(err_msg("subclass cycle of length %d", sib_count));
-      }
-      if (sib_count >= 100000) {
-        fatal(err_msg("suspiciously long subclass list %d", sib_count));
-      }
-      guarantee(sib->as_klassOop()->is_klass(), "should be klass");
-      guarantee(sib->as_klassOop()->is_perm(),  "should be in permspace");
-      guarantee(sib->super() == super, "siblings should have same superklass");
-      sib = sib->next_sibling();
-    }
-
-    // Verify implementor fields
-    klassOop im = ik->implementor();
-    if (im != NULL) {
-      guarantee(ik->is_interface(), "only interfaces should have implementor set");
-      guarantee(im->is_perm(),  "should be in permspace");
-      guarantee(im->is_klass(), "should be klass");
-      guarantee(!Klass::cast(klassOop(im))->is_interface() || im == ik->as_klassOop(), "implementors cannot be interfaces");
-    }
-
-    // Verify local interfaces
-    objArrayOop local_interfaces = ik->local_interfaces();
-    guarantee(local_interfaces->is_perm(),          "should be in permspace");
-    guarantee(local_interfaces->is_objArray(),      "should be obj array");
-    int j;
-    for (j = 0; j < local_interfaces->length(); j++) {
-      oop e = local_interfaces->obj_at(j);
-      guarantee(e->is_klass() && Klass::cast(klassOop(e))->is_interface(), "invalid local interface");
-    }
-
-    // Verify transitive interfaces
-    objArrayOop transitive_interfaces = ik->transitive_interfaces();
-    guarantee(transitive_interfaces->is_perm(),          "should be in permspace");
-    guarantee(transitive_interfaces->is_objArray(),      "should be obj array");
-    for (j = 0; j < transitive_interfaces->length(); j++) {
-      oop e = transitive_interfaces->obj_at(j);
-      guarantee(e->is_klass() && Klass::cast(klassOop(e))->is_interface(), "invalid transitive interface");
-    }
-
-    // Verify methods
-    objArrayOop methods = ik->methods();
-    guarantee(methods->is_perm(),              "should be in permspace");
-    guarantee(methods->is_objArray(),          "should be obj array");
-    for (j = 0; j < methods->length(); j++) {
-      guarantee(methods->obj_at(j)->is_method(), "non-method in methods array");
-    }
-    for (j = 0; j < methods->length() - 1; j++) {
-      methodOop m1 = methodOop(methods->obj_at(j));
-      methodOop m2 = methodOop(methods->obj_at(j + 1));
-      guarantee(m1->name()->fast_compare(m2->name()) <= 0, "methods not sorted correctly");
-    }
-
-    // Verify method ordering
-    typeArrayOop method_ordering = ik->method_ordering();
-    guarantee(method_ordering->is_perm(),              "should be in permspace");
-    guarantee(method_ordering->is_typeArray(),         "should be type array");
-    int length = method_ordering->length();
-    if (JvmtiExport::can_maintain_original_method_order() ||
-        (UseSharedSpaces && length != 0)) {
-      guarantee(length == methods->length(),           "invalid method ordering length");
-      jlong sum = 0;
-      for (j = 0; j < length; j++) {
-        int original_index = method_ordering->int_at(j);
-        guarantee(original_index >= 0 && original_index < length, "invalid method ordering index");
-        sum += original_index;
-      }
-      // Verify sum of indices 0,1,...,length-1
-      guarantee(sum == ((jlong)length*(length-1))/2,   "invalid method ordering sum");
-    } else {
-      guarantee(length == 0,                           "invalid method ordering length");
-    }
-
-    // Verify JNI static field identifiers
-    if (ik->jni_ids() != NULL) {
-      ik->jni_ids()->verify(ik->as_klassOop());
-    }
-
-    // Verify other fields
-    if (ik->array_klasses() != NULL) {
-      guarantee(ik->array_klasses()->is_perm(),      "should be in permspace");
-      guarantee(ik->array_klasses()->is_klass(),     "should be klass");
-    }
-    guarantee(ik->fields()->is_perm(),               "should be in permspace");
-    guarantee(ik->fields()->is_typeArray(),          "should be type array");
-    guarantee(ik->constants()->is_perm(),            "should be in permspace");
-    guarantee(ik->constants()->is_constantPool(),    "should be constant pool");
-    guarantee(ik->inner_classes()->is_perm(),        "should be in permspace");
-    guarantee(ik->inner_classes()->is_typeArray(),   "should be type array");
-    if (ik->protection_domain() != NULL) {
-      guarantee(ik->protection_domain()->is_oop(),  "should be oop");
-    }
-    if (ik->host_klass() != NULL) {
-      guarantee(ik->host_klass()->is_oop(),  "should be oop");
-    }
-    if (ik->signers() != NULL) {
-      guarantee(ik->signers()->is_objArray(),       "should be obj array");
-    }
-    if (ik->class_annotations() != NULL) {
-      guarantee(ik->class_annotations()->is_typeArray(), "should be type array");
-    }
-    if (ik->fields_annotations() != NULL) {
-      guarantee(ik->fields_annotations()->is_objArray(), "should be obj array");
-    }
-    if (ik->methods_annotations() != NULL) {
-      guarantee(ik->methods_annotations()->is_objArray(), "should be obj array");
-    }
-    if (ik->methods_parameter_annotations() != NULL) {
-      guarantee(ik->methods_parameter_annotations()->is_objArray(), "should be obj array");
-    }
-    if (ik->methods_default_annotations() != NULL) {
-      guarantee(ik->methods_default_annotations()->is_objArray(), "should be obj array");
-    }
-  }
-}
-
-
-bool instanceKlassKlass::oop_partially_loaded(oop obj) const {
-  assert(obj->is_klass(), "object must be klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  assert(ik->oop_is_instance(), "object must be instanceKlass");
-  return ik->transitive_interfaces() == (objArrayOop) obj;   // Check whether transitive_interfaces points to self
-}
-
-
-// The transitive_interfaces is the last field set when loading an object.
-void instanceKlassKlass::oop_set_partially_loaded(oop obj) {
-  assert(obj->is_klass(), "object must be klass");
-  instanceKlass* ik = instanceKlass::cast(klassOop(obj));
-  // Set the layout helper to a place-holder value, until fuller initialization.
-  // (This allows asserts in oop_is_instance to succeed.)
-  ik->set_layout_helper(Klass::instance_layout_helper(0, true));
-  assert(ik->oop_is_instance(), "object must be instanceKlass");
-  assert(ik->transitive_interfaces() == NULL, "just checking");
-  ik->set_transitive_interfaces((objArrayOop) obj);   // Temporarily set transitive_interfaces to point to self
-}
--- a/src/share/vm/oops/instanceKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
-#define SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
-
-#include "oops/klassKlass.hpp"
-
-// An instanceKlassKlass is the klass of an instanceKlass
-
-class instanceKlassKlass : public klassKlass {
- public:
-  // Dispatched operation
-  bool oop_is_klass() const           { return true; }
-  bool oop_is_instanceKlass() const   { return true; }
-
-  int oop_size(oop obj) const;
-  int klass_oop_size() const    { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(instanceKlassKlass);
-  static klassOop create_klass(TRAPS);
-  klassOop allocate_instance_klass(Symbol* name,
-                                   int vtable_len,
-                                   int itable_len,
-                                   int static_field_size,
-                                   unsigned int nonstatic_oop_map_count,
-                                   AccessFlags access_flags,
-                                   ReferenceType rt,
-                                   KlassHandle host_klass,
-                                   TRAPS);
-
-  // Casting from klassOop
-  static instanceKlassKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_klass(), "cast to instanceKlassKlass");
-    return (instanceKlassKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()    { return oopDesc::header_size() + sizeof(instanceKlassKlass)/HeapWordSize; }
-  int object_size() const     { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-  bool oop_is_parsable(oop obj) const;
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-private:
-  // Apply closure to the InstanceKlass oops that are outside the java heap.
-  inline void iterate_c_heap_oops(instanceKlass* ik, OopClosure* closure);
-
- public:
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-#ifndef PRODUCT
-  void oop_print_on(oop obj, outputStream* st);
-#endif
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-  // tells whether obj is partially constructed (gc during class loading)
-  bool oop_partially_loaded(oop obj) const;
-  void oop_set_partially_loaded(oop obj);
-};
-
-#endif // SHARE_VM_OOPS_INSTANCEKLASSKLASS_HPP
--- a/src/share/vm/oops/instanceMirrorKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceMirrorKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -29,7 +29,6 @@
 #include "gc_interface/collectedHeap.inline.hpp"
 #include "memory/genOopClosures.inline.hpp"
 #include "memory/oopFactory.hpp"
-#include "memory/permGen.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
 #include "oops/instanceOop.hpp"
@@ -37,6 +36,7 @@
 #include "oops/symbol.hpp"
 #include "runtime/handles.inline.hpp"
 #ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
 #include "gc_implementation/g1/g1RemSet.inline.hpp"
@@ -47,7 +47,7 @@
 #include "oops/oop.pcgc.inline.hpp"
 #endif
 
-int instanceMirrorKlass::_offset_of_static_fields = 0;
+int InstanceMirrorKlass::_offset_of_static_fields = 0;
 
 #ifdef ASSERT
 template <class T> void assert_is_in(T *p) {
@@ -148,8 +148,20 @@
 }
 
 
-void instanceMirrorKlass::oop_follow_contents(oop obj) {
-  instanceKlass::oop_follow_contents(obj);
+void InstanceMirrorKlass::oop_follow_contents(oop obj) {
+  InstanceKlass::oop_follow_contents(obj);
+
+  // Follow the klass field in the mirror.
+  Klass* klass = java_lang_Class::as_Klass(obj);
+  if (klass != NULL) {
+    MarkSweep::follow_klass(klass);
+  } else {
+    // If klass is NULL then this a mirror for a primitive type.
+    // We don't have to follow them, since they are handled as strong
+    // roots in Universe::oops_do.
+    assert(java_lang_Class::is_primitive(obj), "Sanity check");
+  }
+
   InstanceMirrorKlass_OOP_ITERATE(                                                    \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),        \
     MarkSweep::mark_and_push(p),                                                      \
@@ -157,9 +169,21 @@
 }
 
 #ifndef SERIALGC
-void instanceMirrorKlass::oop_follow_contents(ParCompactionManager* cm,
+void InstanceMirrorKlass::oop_follow_contents(ParCompactionManager* cm,
                                               oop obj) {
-  instanceKlass::oop_follow_contents(cm, obj);
+  InstanceKlass::oop_follow_contents(cm, obj);
+
+  // Follow the klass field in the mirror.
+  Klass* klass = java_lang_Class::as_Klass(obj);
+  if (klass != NULL) {
+    PSParallelCompact::follow_klass(cm, klass);
+  } else {
+    // If klass is NULL then this a mirror for a primitive type.
+    // We don't have to follow them, since they are handled as strong
+    // roots in Universe::oops_do.
+    assert(java_lang_Class::is_primitive(obj), "Sanity check");
+  }
+
   InstanceMirrorKlass_OOP_ITERATE(                                                    \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),        \
     PSParallelCompact::mark_and_push(cm, p),                                          \
@@ -167,9 +191,21 @@
 }
 #endif // SERIALGC
 
-int instanceMirrorKlass::oop_adjust_pointers(oop obj) {
+int InstanceMirrorKlass::oop_adjust_pointers(oop obj) {
   int size = oop_size(obj);
-  instanceKlass::oop_adjust_pointers(obj);
+  InstanceKlass::oop_adjust_pointers(obj);
+
+  // Follow the klass field in the mirror.
+  Klass* klass = java_lang_Class::as_Klass(obj);
+  if (klass != NULL) {
+    MarkSweep::adjust_klass(klass);
+  } else {
+    // If klass is NULL then this a mirror for a primitive type.
+    // We don't have to follow them, since they are handled as strong
+    // roots in Universe::oops_do.
+    assert(java_lang_Class::is_primitive(obj), "Sanity check");
+  }
+
   InstanceMirrorKlass_OOP_ITERATE(                                                    \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),        \
     MarkSweep::adjust_pointer(p),                                                     \
@@ -193,17 +229,31 @@
   return oop_size(obj);                                                               \
 
 
-// Macro to define instanceMirrorKlass::oop_oop_iterate for virtual/nonvirtual for
+#define if_do_metadata_checked(closure, nv_suffix)                    \
+  /* Make sure the non-virtual and the virtual versions match. */     \
+  assert(closure->do_metadata##nv_suffix() == closure->do_metadata(), \
+      "Inconsistency in do_metadata");                                \
+  if (closure->do_metadata##nv_suffix())
+
+// Macro to define InstanceMirrorKlass::oop_oop_iterate for virtual/nonvirtual for
 // all closures.  Macros calling macros above for each oop size.
 
 #define InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)           \
                                                                                       \
-int instanceMirrorKlass::                                                             \
+int InstanceMirrorKlass::                                                             \
 oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {                        \
   /* Get size before changing pointers */                                             \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);      \
                                                                                       \
-  instanceKlass::oop_oop_iterate##nv_suffix(obj, closure);                            \
+  InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure);                            \
+                                                                                      \
+  if_do_metadata_checked(closure, nv_suffix) {                                        \
+    Klass* klass = java_lang_Class::as_Klass(obj);                                    \
+    /* We'll get NULL for primitive mirrors. */                                       \
+    if (klass != NULL) {                                                              \
+      closure->do_klass##nv_suffix(klass);                                            \
+    }                                                                                 \
+  }                                                                                   \
                                                                                       \
   if (UseCompressedOops) {                                                            \
     InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(narrowOop, nv_suffix);           \
@@ -215,12 +265,12 @@
 #ifndef SERIALGC
 #define InstanceMirrorKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
                                                                                       \
-int instanceMirrorKlass::                                                             \
+int InstanceMirrorKlass::                                                             \
 oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {              \
   /* Get size before changing pointers */                                             \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);      \
                                                                                       \
-  instanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure);                  \
+  InstanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure);                  \
                                                                                       \
   if (UseCompressedOops) {                                                            \
     InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(narrowOop, nv_suffix);           \
@@ -233,13 +283,24 @@
 
 #define InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN_m(OopClosureType, nv_suffix)         \
                                                                                       \
-int instanceMirrorKlass::                                                             \
+int InstanceMirrorKlass::                                                             \
 oop_oop_iterate##nv_suffix##_m(oop obj,                                               \
                                OopClosureType* closure,                               \
                                MemRegion mr) {                                        \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);      \
                                                                                       \
-  instanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);                    \
+  InstanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);                    \
+                                                                                      \
+  if_do_metadata_checked(closure, nv_suffix) {                                        \
+    if (mr.contains(obj)) {                                                           \
+      Klass* klass = java_lang_Class::as_Klass(obj);                                  \
+      /* We'll get NULL for primitive mirrors. */                                     \
+      if (klass != NULL) {                                                            \
+        closure->do_klass##nv_suffix(klass);                                          \
+      }                                                                               \
+    }                                                                                 \
+  }                                                                                   \
+                                                                                      \
   if (UseCompressedOops) {                                                            \
     InstanceMirrorKlass_BOUNDED_SPECIALIZED_OOP_ITERATE(narrowOop, nv_suffix, mr);    \
   } else {                                                                            \
@@ -257,8 +318,12 @@
 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN_m)
 
 #ifndef SERIALGC
-void instanceMirrorKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  instanceKlass::oop_push_contents(pm, obj);
+void InstanceMirrorKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
+  // Note that we don't have to follow the mirror -> klass pointer, since all
+  // klasses that are dirty will be scavenged when we iterate over the
+  // ClassLoaderData objects.
+
+  InstanceKlass::oop_push_contents(pm, obj);
   InstanceMirrorKlass_OOP_ITERATE(                                            \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),\
     if (PSScavenge::should_scavenge(p)) {                                     \
@@ -267,39 +332,52 @@
     assert_nothing )
 }
 
-int instanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  instanceKlass::oop_update_pointers(cm, obj);
+int InstanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
+  int size = oop_size(obj);
+  InstanceKlass::oop_update_pointers(cm, obj);
+
+  // Follow the klass field in the mirror.
+  Klass* klass = java_lang_Class::as_Klass(obj);
+  if (klass != NULL) {
+    PSParallelCompact::adjust_klass(cm, klass);
+  } else {
+    // If klass is NULL then this a mirror for a primitive type.
+    // We don't have to follow them, since they are handled as strong
+    // roots in Universe::oops_do.
+    assert(java_lang_Class::is_primitive(obj), "Sanity check");
+  }
+
   InstanceMirrorKlass_OOP_ITERATE(                                            \
     start_of_static_fields(obj), java_lang_Class::static_oop_field_count(obj),\
     PSParallelCompact::adjust_pointer(p),                                     \
     assert_nothing)
-  return oop_size(obj);
+  return size;
 }
 #endif // SERIALGC
 
-int instanceMirrorKlass::instance_size(KlassHandle k) {
+int InstanceMirrorKlass::instance_size(KlassHandle k) {
   if (k() != NULL && k->oop_is_instance()) {
-    return align_object_size(size_helper() + instanceKlass::cast(k())->static_field_size());
+    return align_object_size(size_helper() + InstanceKlass::cast(k())->static_field_size());
   }
   return size_helper();
 }
 
-instanceOop instanceMirrorKlass::allocate_instance(KlassHandle k, TRAPS) {
+instanceOop InstanceMirrorKlass::allocate_instance(KlassHandle k, TRAPS) {
   // Query before forming handle.
   int size = instance_size(k);
-  KlassHandle h_k(THREAD, as_klassOop());
+  KlassHandle h_k(THREAD, this);
   instanceOop i = (instanceOop) CollectedHeap::Class_obj_allocate(h_k, size, k, CHECK_NULL);
   return i;
 }
 
-int instanceMirrorKlass::oop_size(oop obj) const {
+int InstanceMirrorKlass::oop_size(oop obj) const {
   return java_lang_Class::oop_size(obj);
 }
 
-int instanceMirrorKlass::compute_static_oop_field_count(oop obj) {
-  klassOop k = java_lang_Class::as_klassOop(obj);
-  if (k != NULL && k->klass_part()->oop_is_instance()) {
-    return instanceKlass::cast(k)->static_oop_field_count();
+int InstanceMirrorKlass::compute_static_oop_field_count(oop obj) {
+  Klass* k = java_lang_Class::as_Klass(obj);
+  if (k != NULL && k->oop_is_instance()) {
+    return InstanceKlass::cast(k)->static_oop_field_count();
   }
   return 0;
 }
--- a/src/share/vm/oops/instanceMirrorKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceMirrorKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -25,9 +25,11 @@
 #ifndef SHARE_VM_OOPS_INSTANCEMIRRORKLASS_HPP
 #define SHARE_VM_OOPS_INSTANCEMIRRORKLASS_HPP
 
+#include "classfile/systemDictionary.hpp"
 #include "oops/instanceKlass.hpp"
+#include "runtime/handles.hpp"
 
-// An instanceMirrorKlass is a specialized instanceKlass for
+// An InstanceMirrorKlass is a specialized InstanceKlass for
 // java.lang.Class instances.  These instances are special because
 // they contain the static fields of the class in addition to the
 // normal fields of Class.  This means they are variable sized
@@ -35,20 +37,26 @@
 // iteration of their oops.
 
 
-class instanceMirrorKlass: public instanceKlass {
+class InstanceMirrorKlass: public InstanceKlass {
   friend class VMStructs;
+  friend class InstanceKlass;
 
  private:
   static int _offset_of_static_fields;
 
+  // Constructor
+  InstanceMirrorKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags,  bool is_anonymous)
+    : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
+
  public:
+  InstanceMirrorKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
   // Type testing
   bool oop_is_instanceMirror() const             { return true; }
 
-  // Casting from klassOop
-  static instanceMirrorKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_instanceMirror(), "cast to instanceMirrorKlass");
-    return (instanceMirrorKlass*) k->klass_part();
+  // Casting from Klass*
+  static InstanceMirrorKlass* cast(Klass* k) {
+    assert(k->oop_is_instanceMirror(), "cast to InstanceMirrorKlass");
+    return (InstanceMirrorKlass*) k;
   }
 
   // Returns the size of the instance including the extra static fields.
@@ -63,7 +71,7 @@
   static void init_offset_of_static_fields() {
     // Cache the offset of the static fields in the Class instance
     assert(_offset_of_static_fields == 0, "once");
-    _offset_of_static_fields = instanceMirrorKlass::cast(SystemDictionary::Class_klass())->size_helper() << LogHeapWordSize;
+    _offset_of_static_fields = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->size_helper() << LogHeapWordSize;
   }
 
   static int offset_of_static_fields() {
@@ -76,7 +84,6 @@
   int instance_size(KlassHandle k);
 
   // allocation
-  DEFINE_ALLOCATE_PERMANENT(instanceMirrorKlass);
   instanceOop allocate_instance(KlassHandle k, TRAPS);
 
   // Garbage collection
@@ -86,10 +93,10 @@
   // Parallel Scavenge and Parallel Old
   PARALLEL_GC_DECLS
 
-  int oop_oop_iterate(oop obj, OopClosure* blk) {
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
     return oop_oop_iterate_v_m(obj, blk, mr);
   }
 
--- a/src/share/vm/oops/instanceOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceOop.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -37,7 +37,7 @@
 
   // If compressed, the offset of the fields of the instance may not be aligned.
   static int base_offset_in_bytes() {
-    return UseCompressedOops ?
+    return UseCompressedKlassPointers ?
              klass_gap_offset_in_bytes() :
              sizeof(instanceOopDesc);
   }
--- a/src/share/vm/oops/instanceRefKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceRefKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -45,12 +45,12 @@
 #endif
 
 template <class T>
-void specialized_oop_follow_contents(instanceRefKlass* ref, oop obj) {
+void specialized_oop_follow_contents(InstanceRefKlass* ref, oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
   T heap_oop = oopDesc::load_heap_oop(referent_addr);
   debug_only(
     if(TraceReferenceGC && PrintGCDetails) {
-      gclog_or_tty->print_cr("instanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj);
+      gclog_or_tty->print_cr("InstanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj);
     }
   )
   if (!oopDesc::is_null(heap_oop)) {
@@ -58,7 +58,7 @@
     if (!referent->is_gc_marked() &&
         MarkSweep::ref_processor()->discover_reference(obj, ref->reference_type())) {
       // reference was discovered, referent will be traversed later
-      ref->instanceKlass::oop_follow_contents(obj);
+      ref->InstanceKlass::oop_follow_contents(obj);
       debug_only(
         if(TraceReferenceGC && PrintGCDetails) {
           gclog_or_tty->print_cr("       Non NULL enqueued " INTPTR_FORMAT, obj);
@@ -109,10 +109,10 @@
     }
   )
   MarkSweep::mark_and_push(next_addr);
-  ref->instanceKlass::oop_follow_contents(obj);
+  ref->InstanceKlass::oop_follow_contents(obj);
 }
 
-void instanceRefKlass::oop_follow_contents(oop obj) {
+void InstanceRefKlass::oop_follow_contents(oop obj) {
   if (UseCompressedOops) {
     specialized_oop_follow_contents<narrowOop>(this, obj);
   } else {
@@ -122,14 +122,14 @@
 
 #ifndef SERIALGC
 template <class T>
-void specialized_oop_follow_contents(instanceRefKlass* ref,
+void specialized_oop_follow_contents(InstanceRefKlass* ref,
                                      ParCompactionManager* cm,
                                      oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
   T heap_oop = oopDesc::load_heap_oop(referent_addr);
   debug_only(
     if(TraceReferenceGC && PrintGCDetails) {
-      gclog_or_tty->print_cr("instanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj);
+      gclog_or_tty->print_cr("InstanceRefKlass::oop_follow_contents " INTPTR_FORMAT, obj);
     }
   )
   if (!oopDesc::is_null(heap_oop)) {
@@ -138,7 +138,7 @@
         PSParallelCompact::ref_processor()->
           discover_reference(obj, ref->reference_type())) {
       // reference already enqueued, referent will be traversed later
-      ref->instanceKlass::oop_follow_contents(cm, obj);
+      ref->InstanceKlass::oop_follow_contents(cm, obj);
       debug_only(
         if(TraceReferenceGC && PrintGCDetails) {
           gclog_or_tty->print_cr("       Non NULL enqueued " INTPTR_FORMAT, obj);
@@ -183,10 +183,10 @@
 #endif
   }
   PSParallelCompact::mark_and_push(cm, next_addr);
-  ref->instanceKlass::oop_follow_contents(cm, obj);
+  ref->InstanceKlass::oop_follow_contents(cm, obj);
 }
 
-void instanceRefKlass::oop_follow_contents(ParCompactionManager* cm,
+void InstanceRefKlass::oop_follow_contents(ParCompactionManager* cm,
                                            oop obj) {
   if (UseCompressedOops) {
     specialized_oop_follow_contents<narrowOop>(this, cm, obj);
@@ -218,20 +218,20 @@
 }
 #endif
 
-template <class T> void specialized_oop_adjust_pointers(instanceRefKlass *ref, oop obj) {
+template <class T> void specialized_oop_adjust_pointers(InstanceRefKlass *ref, oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
   MarkSweep::adjust_pointer(referent_addr);
   T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
   MarkSweep::adjust_pointer(next_addr);
   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj);
   MarkSweep::adjust_pointer(discovered_addr);
-  debug_only(trace_reference_gc("instanceRefKlass::oop_adjust_pointers", obj,
+  debug_only(trace_reference_gc("InstanceRefKlass::oop_adjust_pointers", obj,
                                 referent_addr, next_addr, discovered_addr);)
 }
 
-int instanceRefKlass::oop_adjust_pointers(oop obj) {
+int InstanceRefKlass::oop_adjust_pointers(oop obj) {
   int size = size_helper();
-  instanceKlass::oop_adjust_pointers(obj);
+  InstanceKlass::oop_adjust_pointers(obj);
 
   if (UseCompressedOops) {
     specialized_oop_adjust_pointers<narrowOop>(this, obj);
@@ -298,17 +298,17 @@
 
 template <class T> bool contains(T *t) { return true; }
 
-// Macro to define instanceRefKlass::oop_oop_iterate for virtual/nonvirtual for
+// Macro to define InstanceRefKlass::oop_oop_iterate for virtual/nonvirtual for
 // all closures.  Macros calling macros above for each oop size.
 
 #define InstanceRefKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)        \
                                                                                 \
-int instanceRefKlass::                                                          \
+int InstanceRefKlass::                                                          \
 oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {                  \
   /* Get size before changing pointers */                                       \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
                                                                                 \
-  int size = instanceKlass::oop_oop_iterate##nv_suffix(obj, closure);           \
+  int size = InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure);           \
                                                                                 \
   if (UseCompressedOops) {                                                      \
     InstanceRefKlass_SPECIALIZED_OOP_ITERATE(narrowOop, nv_suffix, contains);   \
@@ -320,12 +320,12 @@
 #ifndef SERIALGC
 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix) \
                                                                                 \
-int instanceRefKlass::                                                          \
+int InstanceRefKlass::                                                          \
 oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {        \
   /* Get size before changing pointers */                                       \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
                                                                                 \
-  int size = instanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure); \
+  int size = InstanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure); \
                                                                                 \
   if (UseCompressedOops) {                                                      \
     InstanceRefKlass_SPECIALIZED_OOP_ITERATE(narrowOop, nv_suffix, contains);   \
@@ -338,13 +338,13 @@
 
 #define InstanceRefKlass_OOP_OOP_ITERATE_DEFN_m(OopClosureType, nv_suffix)      \
                                                                                 \
-int instanceRefKlass::                                                          \
+int InstanceRefKlass::                                                          \
 oop_oop_iterate##nv_suffix##_m(oop obj,                                         \
                                OopClosureType* closure,                         \
                                MemRegion mr) {                                  \
   SpecializationStats::record_iterate_call##nv_suffix(SpecializationStats::irk);\
                                                                                 \
-  int size = instanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);   \
+  int size = InstanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);   \
   if (UseCompressedOops) {                                                      \
     InstanceRefKlass_SPECIALIZED_OOP_ITERATE(narrowOop, nv_suffix, mr.contains); \
   } else {                                                                      \
@@ -363,14 +363,14 @@
 
 #ifndef SERIALGC
 template <class T>
-void specialized_oop_push_contents(instanceRefKlass *ref,
+void specialized_oop_push_contents(InstanceRefKlass *ref,
                                    PSPromotionManager* pm, oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
   if (PSScavenge::should_scavenge(referent_addr)) {
     ReferenceProcessor* rp = PSScavenge::reference_processor();
     if (rp->discover_reference(obj, ref->reference_type())) {
       // reference already enqueued, referent and next will be traversed later
-      ref->instanceKlass::oop_push_contents(pm, obj);
+      ref->InstanceKlass::oop_push_contents(pm, obj);
       return;
     } else {
       // treat referent as normal oop
@@ -411,10 +411,10 @@
   if (PSScavenge::should_scavenge(next_addr)) {
     pm->claim_or_forward_depth(next_addr);
   }
-  ref->instanceKlass::oop_push_contents(pm, obj);
+  ref->InstanceKlass::oop_push_contents(pm, obj);
 }
 
-void instanceRefKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
+void InstanceRefKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
   if (UseCompressedOops) {
     specialized_oop_push_contents<narrowOop>(this, pm, obj);
   } else {
@@ -423,7 +423,7 @@
 }
 
 template <class T>
-void specialized_oop_update_pointers(instanceRefKlass *ref,
+void specialized_oop_update_pointers(InstanceRefKlass *ref,
                                     ParCompactionManager* cm, oop obj) {
   T* referent_addr = (T*)java_lang_ref_Reference::referent_addr(obj);
   PSParallelCompact::adjust_pointer(referent_addr);
@@ -431,12 +431,12 @@
   PSParallelCompact::adjust_pointer(next_addr);
   T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj);
   PSParallelCompact::adjust_pointer(discovered_addr);
-  debug_only(trace_reference_gc("instanceRefKlass::oop_update_ptrs", obj,
+  debug_only(trace_reference_gc("InstanceRefKlass::oop_update_ptrs", obj,
                                 referent_addr, next_addr, discovered_addr);)
 }
 
-int instanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  instanceKlass::oop_update_pointers(cm, obj);
+int InstanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
+  InstanceKlass::oop_update_pointers(cm, obj);
   if (UseCompressedOops) {
     specialized_oop_update_pointers<narrowOop>(this, cm, obj);
   } else {
@@ -446,13 +446,13 @@
 }
 #endif // SERIALGC
 
-void instanceRefKlass::update_nonstatic_oop_maps(klassOop k) {
+void InstanceRefKlass::update_nonstatic_oop_maps(Klass* k) {
   // Clear the nonstatic oop-map entries corresponding to referent
   // and nextPending field.  They are treated specially by the
   // garbage collector.
   // The discovered field is used only by the garbage collector
   // and is also treated specially.
-  instanceKlass* ik = instanceKlass::cast(k);
+  InstanceKlass* ik = InstanceKlass::cast(k);
 
   // Check that we have the right class
   debug_only(static bool first_time = true);
@@ -485,8 +485,8 @@
 
 // Verification
 
-void instanceRefKlass::oop_verify_on(oop obj, outputStream* st) {
-  instanceKlass::oop_verify_on(obj, st);
+void InstanceRefKlass::oop_verify_on(oop obj, outputStream* st) {
+  InstanceKlass::oop_verify_on(obj, st);
   // Verify referent field
   oop referent = java_lang_ref_Reference::referent(obj);
 
@@ -506,13 +506,13 @@
   }
 }
 
-bool instanceRefKlass::owns_pending_list_lock(JavaThread* thread) {
+bool InstanceRefKlass::owns_pending_list_lock(JavaThread* thread) {
   if (java_lang_ref_Reference::pending_list_lock() == NULL) return false;
   Handle h_lock(thread, java_lang_ref_Reference::pending_list_lock());
   return ObjectSynchronizer::current_thread_holds_lock(thread, h_lock);
 }
 
-void instanceRefKlass::acquire_pending_list_lock(BasicLock *pending_list_basic_lock) {
+void InstanceRefKlass::acquire_pending_list_lock(BasicLock *pending_list_basic_lock) {
   // we may enter this with pending exception set
   PRESERVE_EXCEPTION_MARK;  // exceptions are never thrown, needed for TRAPS argument
 
@@ -529,7 +529,7 @@
   if (HAS_PENDING_EXCEPTION) CLEAR_PENDING_EXCEPTION;
 }
 
-void instanceRefKlass::release_and_notify_pending_list_lock(
+void InstanceRefKlass::release_and_notify_pending_list_lock(
   BasicLock *pending_list_basic_lock) {
   // we may enter this with pending exception set
   PRESERVE_EXCEPTION_MARK;  // exceptions are never thrown, needed for TRAPS argument
--- a/src/share/vm/oops/instanceRefKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/instanceRefKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -27,7 +27,7 @@
 
 #include "oops/instanceKlass.hpp"
 
-// An instanceRefKlass is a specialized instanceKlass for Java
+// An InstanceRefKlass is a specialized InstanceKlass for Java
 // classes that are subclasses of java/lang/ref/Reference.
 //
 // These classes are used to implement soft/weak/final/phantom
@@ -44,20 +44,24 @@
 // and the pending list lock object in the same class is notified.
 
 
-class instanceRefKlass: public instanceKlass {
+class InstanceRefKlass: public InstanceKlass {
+  friend class InstanceKlass;
+
+  // Constructor
+  InstanceRefKlass(int vtable_len, int itable_len, int static_field_size, int nonstatic_oop_map_size, ReferenceType rt, AccessFlags access_flags, bool is_anonymous)
+    : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
+
  public:
+  InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
   // Type testing
   bool oop_is_instanceRef() const             { return true; }
 
-  // Casting from klassOop
-  static instanceRefKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_instanceRef(), "cast to instanceRefKlass");
-    return (instanceRefKlass*) k->klass_part();
+  // Casting from Klass*
+  static InstanceRefKlass* cast(Klass* k) {
+    assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
+    return (InstanceRefKlass*) k;
   }
 
-  // allocation
-  DEFINE_ALLOCATE_PERMANENT(instanceRefKlass);
-
   // Garbage collection
   int  oop_adjust_pointers(oop obj);
   void oop_follow_contents(oop obj);
@@ -65,10 +69,10 @@
   // Parallel Scavenge and Parallel Old
   PARALLEL_GC_DECLS
 
-  int oop_oop_iterate(oop obj, OopClosure* blk) {
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
     return oop_oop_iterate_v_m(obj, blk, mr);
   }
 
@@ -93,7 +97,7 @@
 
   // Update non-static oop maps so 'referent', 'nextPending' and
   // 'discovered' will look like non-oops
-  static void update_nonstatic_oop_maps(klassOop k);
+  static void update_nonstatic_oop_maps(Klass* k);
 
  public:
   // Verification
--- a/src/share/vm/oops/klass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/klass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,29 +23,36 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/javaClasses.hpp"
+#include "classfile/dictionary.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
+#include "gc_implementation/shared/markSweep.inline.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/klass.inline.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
 #include "runtime/atomic.hpp"
+#include "utilities/stack.hpp"
+#ifndef SERIALGC
+#include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
+#include "gc_implementation/parallelScavenge/psPromotionManager.hpp"
+#include "gc_implementation/parallelScavenge/psScavenge.hpp"
+#endif
 
 void Klass::set_name(Symbol* n) {
   _name = n;
   if (_name != NULL) _name->increment_refcount();
 }
 
-bool Klass::is_subclass_of(klassOop k) const {
+bool Klass::is_subclass_of(Klass* k) const {
   // Run up the super chain and check
-  klassOop t = as_klassOop();
+  if (this == k) return true;
 
-  if (t == k) return true;
-  t = Klass::cast(t)->super();
+  Klass* t = const_cast<Klass*>(this)->super();
 
   while (t != NULL) {
     if (t == k) return true;
@@ -54,17 +61,17 @@
   return false;
 }
 
-bool Klass::search_secondary_supers(klassOop k) const {
+bool Klass::search_secondary_supers(Klass* k) const {
   // Put some extra logic here out-of-line, before the search proper.
   // This cuts down the size of the inline method.
 
   // This is necessary, since I am never in my own secondary_super list.
-  if (this->as_klassOop() == k)
+  if (this == k)
     return true;
   // Scan the array-of-objects for a match
   int cnt = secondary_supers()->length();
   for (int i = 0; i < cnt; i++) {
-    if (secondary_supers()->obj_at(i) == k) {
+    if (secondary_supers()->at(i) == k) {
       ((Klass*)this)->set_secondary_super_cache(k);
       return true;
     }
@@ -89,10 +96,10 @@
 Klass *Klass::LCA( Klass *k2 ) {
   Klass *k1 = this;
   while( 1 ) {
-    if( k1->is_subtype_of(k2->as_klassOop()) ) return k2;
-    if( k2->is_subtype_of(k1->as_klassOop()) ) return k1;
-    k1 = k1->super()->klass_part();
-    k2 = k2->super()->klass_part();
+    if( k1->is_subtype_of(k2) ) return k2;
+    if( k2->is_subtype_of(k1) ) return k1;
+    k1 = k1->super();
+    k2 = k2->super();
   }
 }
 
@@ -113,13 +120,13 @@
   ShouldNotReachHere();
 }
 
-bool Klass::compute_is_subtype_of(klassOop k) {
+bool Klass::compute_is_subtype_of(Klass* k) {
   assert(k->is_klass(), "argument must be a class");
   return is_subclass_of(k);
 }
 
 
-methodOop Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
+Method* Klass::uncached_lookup_method(Symbol* name, Symbol* signature) const {
 #ifdef ASSERT
   tty->print_cr("Error: uncached_lookup_method called on a klass oop."
                 " Likely error: reflection method does not correctly"
@@ -129,67 +136,45 @@
   return NULL;
 }
 
-klassOop Klass::base_create_klass_oop(KlassHandle& klass, int size,
-                                      const Klass_vtbl& vtbl, TRAPS) {
-  size = align_object_size(size);
-  // allocate and initialize vtable
-  Klass*   kl = (Klass*) vtbl.allocate_permanent(klass, size, CHECK_NULL);
-  klassOop k  = kl->as_klassOop();
+void* Klass::operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) {
+  return Metaspace::allocate(loader_data, word_size, /*read_only*/false,
+                             Metaspace::ClassType, CHECK_NULL);
+}
+
+Klass::Klass() {
+  Klass* k = this;
 
   { // Preinitialize supertype information.
     // A later call to initialize_supers() may update these settings:
-    kl->set_super(NULL);
+    set_super(NULL);
     for (juint i = 0; i < Klass::primary_super_limit(); i++) {
-      kl->_primary_supers[i] = NULL;
+      _primary_supers[i] = NULL;
     }
-    kl->set_secondary_supers(NULL);
-    oop_store_without_check((oop*) &kl->_primary_supers[0], k);
-    kl->set_super_check_offset(in_bytes(primary_supers_offset()));
+    set_secondary_supers(NULL);
+    _primary_supers[0] = k;
+    set_super_check_offset(in_bytes(primary_supers_offset()));
   }
 
-  kl->set_java_mirror(NULL);
-  kl->set_modifier_flags(0);
-  kl->set_layout_helper(Klass::_lh_neutral_value);
-  kl->set_name(NULL);
+  set_java_mirror(NULL);
+  set_modifier_flags(0);
+  set_layout_helper(Klass::_lh_neutral_value);
+  set_name(NULL);
   AccessFlags af;
   af.set_flags(0);
-  kl->set_access_flags(af);
-  kl->set_subklass(NULL);
-  kl->set_next_sibling(NULL);
-  kl->set_alloc_count(0);
-  kl->set_alloc_size(0);
-  TRACE_SET_KLASS_TRACE_ID(kl, 0);
-
-  kl->set_prototype_header(markOopDesc::prototype());
-  kl->set_biased_lock_revocation_count(0);
-  kl->set_last_biased_lock_bulk_revocation_time(0);
-
-  return k;
-}
+  set_access_flags(af);
+  set_subklass(NULL);
+  set_next_sibling(NULL);
+  set_next_link(NULL);
+  set_alloc_count(0);
+  TRACE_SET_KLASS_TRACE_ID(this, 0);
 
-KlassHandle Klass::base_create_klass(KlassHandle& klass, int size,
-                                     const Klass_vtbl& vtbl, TRAPS) {
-  klassOop ek = base_create_klass_oop(klass, size, vtbl, THREAD);
-  return KlassHandle(THREAD, ek);
-}
-
-void Klass_vtbl::post_new_init_klass(KlassHandle& klass,
-                                     klassOop new_klass) const {
-  assert(!new_klass->klass_part()->null_vtbl(), "Not a complete klass");
-  CollectedHeap::post_allocation_install_obj_klass(klass, new_klass);
-}
+  set_prototype_header(markOopDesc::prototype());
+  set_biased_lock_revocation_count(0);
+  set_last_biased_lock_bulk_revocation_time(0);
 
-void* Klass_vtbl::operator new(size_t ignored, KlassHandle& klass,
-                               int size, TRAPS) {
-  // The vtable pointer is installed during the execution of
-  // constructors in the call to permanent_obj_allocate().  Delay
-  // the installation of the klass pointer into the new klass "k"
-  // until after the vtable pointer has been installed (i.e., until
-  // after the return of permanent_obj_allocate().
-  klassOop k =
-    (klassOop) CollectedHeap::permanent_obj_allocate_no_klass_install(klass,
-      size, CHECK_NULL);
-  return k->klass_part();
+  // The klass doesn't have any references at this point.
+  clear_modified_oops();
+  clear_accumulated_modified_oops();
 }
 
 jint Klass::array_layout_helper(BasicType etype) {
@@ -202,7 +187,7 @@
   int lh = array_layout_helper(tag, hsize, etype, exact_log2(esize));
 
   assert(lh < (int)_lh_neutral_value, "must look like an array layout");
-  assert(layout_helper_is_javaArray(lh), "correct kind");
+  assert(layout_helper_is_array(lh), "correct kind");
   assert(layout_helper_is_objArray(lh) == isobj, "correct kind");
   assert(layout_helper_is_typeArray(lh) == !isobj, "correct kind");
   assert(layout_helper_header_size(lh) == hsize, "correct decode");
@@ -215,13 +200,13 @@
 bool Klass::can_be_primary_super_slow() const {
   if (super() == NULL)
     return true;
-  else if (super()->klass_part()->super_depth() >= primary_super_limit()-1)
+  else if (super()->super_depth() >= primary_super_limit()-1)
     return false;
   else
     return true;
 }
 
-void Klass::initialize_supers(klassOop k, TRAPS) {
+void Klass::initialize_supers(Klass* k, TRAPS) {
   if (FastSuperclassLimit == 0) {
     // None of the other machinery matters.
     set_super(k);
@@ -229,35 +214,35 @@
   }
   if (k == NULL) {
     set_super(NULL);
-    oop_store_without_check((oop*) &_primary_supers[0], (oop) this->as_klassOop());
+    _primary_supers[0] = this;
     assert(super_depth() == 0, "Object must already be initialized properly");
   } else if (k != super() || k == SystemDictionary::Object_klass()) {
     assert(super() == NULL || super() == SystemDictionary::Object_klass(),
            "initialize this only once to a non-trivial value");
     set_super(k);
-    Klass* sup = k->klass_part();
+    Klass* sup = k;
     int sup_depth = sup->super_depth();
     juint my_depth  = MIN2(sup_depth + 1, (int)primary_super_limit());
     if (!can_be_primary_super_slow())
       my_depth = primary_super_limit();
     for (juint i = 0; i < my_depth; i++) {
-      oop_store_without_check((oop*) &_primary_supers[i], (oop) sup->_primary_supers[i]);
+      _primary_supers[i] = sup->_primary_supers[i];
     }
-    klassOop *super_check_cell;
+    Klass* *super_check_cell;
     if (my_depth < primary_super_limit()) {
-      oop_store_without_check((oop*) &_primary_supers[my_depth], (oop) this->as_klassOop());
+      _primary_supers[my_depth] = this;
       super_check_cell = &_primary_supers[my_depth];
     } else {
       // Overflow of the primary_supers array forces me to be secondary.
       super_check_cell = &_secondary_super_cache;
     }
-    set_super_check_offset((address)super_check_cell - (address) this->as_klassOop());
+    set_super_check_offset((address)super_check_cell - (address) this);
 
 #ifdef ASSERT
     {
       juint j = super_depth();
       assert(j == my_depth, "computed accessor gets right answer");
-      klassOop t = as_klassOop();
+      Klass* t = this;
       while (!Klass::cast(t)->can_be_primary_super()) {
         t = Klass::cast(t)->super();
         j = Klass::cast(t)->super_depth();
@@ -282,18 +267,23 @@
     // Secondaries can occasionally be on the super chain,
     // if the inline "_primary_supers" array overflows.
     int extras = 0;
-    klassOop p;
-    for (p = super(); !(p == NULL || p->klass_part()->can_be_primary_super()); p = p->klass_part()->super()) {
+    Klass* p;
+    for (p = super(); !(p == NULL || p->can_be_primary_super()); p = p->super()) {
       ++extras;
     }
 
-    // Compute the "real" non-extra secondaries.
-    objArrayOop secondary_oops = compute_secondary_supers(extras, CHECK);
-    objArrayHandle secondaries (THREAD, secondary_oops);
+    ResourceMark rm(THREAD);  // need to reclaim GrowableArrays allocated below
 
-    // Store the extra secondaries in the first array positions:
-    int fillp = extras;
-    for (p = this_kh->super(); !(p == NULL || p->klass_part()->can_be_primary_super()); p = p->klass_part()->super()) {
+    // Compute the "real" non-extra secondaries.
+    GrowableArray<Klass*>* secondaries = compute_secondary_supers(extras);
+    if (secondaries == NULL) {
+      // secondary_supers set by compute_secondary_supers
+      return;
+    }
+
+    GrowableArray<Klass*>* primaries = new GrowableArray<Klass*>(extras);
+
+    for (p = this_kh->super(); !(p == NULL || p->can_be_primary_super()); p = p->super()) {
       int i;                    // Scan for overflow primaries being duplicates of 2nd'arys
 
       // This happens frequently for very deeply nested arrays: the
@@ -303,39 +293,42 @@
       // secondary list already contains some primary overflows, they
       // (with the extra level of array-ness) will collide with the
       // normal primary superclass overflows.
-      for( i = extras; i < secondaries->length(); i++ )
-        if( secondaries->obj_at(i) == p )
+      for( i = 0; i < secondaries->length(); i++ ) {
+        if( secondaries->at(i) == p )
           break;
+      }
       if( i < secondaries->length() )
         continue;               // It's a dup, don't put it in
-      secondaries->obj_at_put(--fillp, p);
+      primaries->push(p);
     }
-    // See if we had some dup's, so the array has holes in it.
-    if( fillp > 0 ) {
-      // Pack the array.  Drop the old secondaries array on the floor
-      // and let GC reclaim it.
-      objArrayOop s2 = oopFactory::new_system_objArray(secondaries->length() - fillp, CHECK);
-      for( int i = 0; i < s2->length(); i++ )
-        s2->obj_at_put( i, secondaries->obj_at(i+fillp) );
-      secondaries = objArrayHandle(THREAD, s2);
+    // Combine the two arrays into a metadata object to pack the array.
+    // The primaries are added in the reverse order, then the secondaries.
+    int new_length = primaries->length() + secondaries->length();
+    Array<Klass*>* s2 = MetadataFactory::new_array<Klass*>(
+                                       class_loader_data(), new_length, CHECK);
+    int fill_p = primaries->length();
+    for (int j = 0; j < fill_p; j++) {
+      s2->at_put(j, primaries->pop());  // add primaries in reverse order.
+    }
+    for( int j = 0; j < secondaries->length(); j++ ) {
+      s2->at_put(j+fill_p, secondaries->at(j));  // add secondaries on the end.
     }
 
   #ifdef ASSERT
-    if (secondaries() != Universe::the_array_interfaces_array()) {
       // We must not copy any NULL placeholders left over from bootstrap.
-      for (int j = 0; j < secondaries->length(); j++) {
-        assert(secondaries->obj_at(j) != NULL, "correct bootstrapping order");
-      }
+    for (int j = 0; j < s2->length(); j++) {
+      assert(s2->at(j) != NULL, "correct bootstrapping order");
     }
   #endif
 
-    this_kh->set_secondary_supers(secondaries());
+    this_kh->set_secondary_supers(s2);
   }
 }
 
-objArrayOop Klass::compute_secondary_supers(int num_extra_slots, TRAPS) {
+GrowableArray<Klass*>* Klass::compute_secondary_supers(int num_extra_slots) {
   assert(num_extra_slots == 0, "override for complex klasses");
-  return Universe::the_empty_system_obj_array();
+  set_secondary_supers(Universe::the_empty_klass_array());
+  return NULL;
 }
 
 
@@ -343,48 +336,48 @@
   return _subklass == NULL ? NULL : Klass::cast(_subklass);
 }
 
-instanceKlass* Klass::superklass() const {
-  assert(super() == NULL || super()->klass_part()->oop_is_instance(), "must be instance klass");
-  return _super == NULL ? NULL : instanceKlass::cast(_super);
+InstanceKlass* Klass::superklass() const {
+  assert(super() == NULL || super()->oop_is_instance(), "must be instance klass");
+  return _super == NULL ? NULL : InstanceKlass::cast(_super);
 }
 
 Klass* Klass::next_sibling() const {
   return _next_sibling == NULL ? NULL : Klass::cast(_next_sibling);
 }
 
-void Klass::set_subklass(klassOop s) {
-  assert(s != as_klassOop(), "sanity check");
-  oop_store_without_check((oop*)&_subklass, s);
+void Klass::set_subklass(Klass* s) {
+  assert(s != this, "sanity check");
+  _subklass = s;
 }
 
-void Klass::set_next_sibling(klassOop s) {
-  assert(s != as_klassOop(), "sanity check");
-  oop_store_without_check((oop*)&_next_sibling, s);
+void Klass::set_next_sibling(Klass* s) {
+  assert(s != this, "sanity check");
+  _next_sibling = s;
 }
 
 void Klass::append_to_sibling_list() {
-  debug_only(if (!SharedSkipVerify) as_klassOop()->verify();)
+  debug_only(if (!SharedSkipVerify) verify();)
   // add ourselves to superklass' subklass list
-  instanceKlass* super = superklass();
+  InstanceKlass* super = superklass();
   if (super == NULL) return;        // special case: class Object
   assert(SharedSkipVerify ||
          (!super->is_interface()    // interfaces cannot be supers
           && (super->superklass() == NULL || !is_interface())),
          "an interface can only be a subklass of Object");
-  klassOop prev_first_subklass = super->subklass_oop();
+  Klass* prev_first_subklass = super->subklass_oop();
   if (prev_first_subklass != NULL) {
     // set our sibling to be the superklass' previous first subklass
     set_next_sibling(prev_first_subklass);
   }
   // make ourselves the superklass' first subklass
-  super->set_subklass(as_klassOop());
-  debug_only(if (!SharedSkipVerify) as_klassOop()->verify();)
+  super->set_subklass(this);
+  debug_only(if (!SharedSkipVerify) verify();)
 }
 
 void Klass::remove_from_sibling_list() {
   // remove receiver from sibling list
-  instanceKlass* super = superklass();
-  assert(super != NULL || as_klassOop() == SystemDictionary::Object_klass(), "should have super");
+  InstanceKlass* super = superklass();
+  assert(super != NULL || this == SystemDictionary::Object_klass(), "should have super");
   if (super == NULL) return;        // special case: class Object
   if (super->subklass() == this) {
     // first subklass
@@ -398,80 +391,131 @@
   }
 }
 
-void Klass::follow_weak_klass_links( BoolObjectClosure* is_alive, OopClosure* keep_alive) {
-  // This klass is alive but the subklass and siblings are not followed/updated.
-  // We update the subklass link and the subklass' sibling links here.
-  // Our own sibling link will be updated by our superclass (which must be alive
-  // since we are).
-  assert(is_alive->do_object_b(as_klassOop()), "just checking, this should be live");
-  if (ClassUnloading) {
-    klassOop sub = subklass_oop();
-    if (sub != NULL && !is_alive->do_object_b(sub)) {
-      // first subklass not alive, find first one alive
-      do {
+bool Klass::is_loader_alive(BoolObjectClosure* is_alive) {
+  assert(is_metadata(), "p is not meta-data");
+  assert(ClassLoaderDataGraph::contains((address)this), "is in the metaspace");
+  // The class is alive iff the class loader is alive.
+  oop loader = class_loader();
+  return (loader == NULL) || is_alive->do_object_b(loader);
+}
+
+void Klass::clean_weak_klass_links(BoolObjectClosure* is_alive) {
+  if (!ClassUnloading) {
+    return;
+  }
+
+  Klass* root = SystemDictionary::Object_klass();
+  Stack<Klass*, mtGC> stack;
+
+  stack.push(root);
+  while (!stack.is_empty()) {
+    Klass* current = stack.pop();
+
+    assert(current->is_loader_alive(is_alive), "just checking, this should be live");
+
+    // Find and set the first alive subklass
+    Klass* sub = current->subklass_oop();
+    while (sub != NULL && !sub->is_loader_alive(is_alive)) {
 #ifndef PRODUCT
         if (TraceClassUnloading && WizardMode) {
           ResourceMark rm;
-          tty->print_cr("[Unlinking class (subclass) %s]", sub->klass_part()->external_name());
+        tty->print_cr("[Unlinking class (subclass) %s]", sub->external_name());
         }
 #endif
-        sub = sub->klass_part()->next_sibling_oop();
-      } while (sub != NULL && !is_alive->do_object_b(sub));
-      set_subklass(sub);
+      sub = sub->next_sibling_oop();
     }
-    // now update the subklass' sibling list
-    while (sub != NULL) {
-      klassOop next = sub->klass_part()->next_sibling_oop();
-      if (next != NULL && !is_alive->do_object_b(next)) {
-        // first sibling not alive, find first one alive
-        do {
-#ifndef PRODUCT
+    current->set_subklass(sub);
+    if (sub != NULL) {
+      stack.push(sub);
+    }
+
+    // Find and set the first alive sibling
+    Klass* sibling = current->next_sibling_oop();
+    while (sibling != NULL && !sibling->is_loader_alive(is_alive)) {
           if (TraceClassUnloading && WizardMode) {
             ResourceMark rm;
-            tty->print_cr("[Unlinking class (sibling) %s]", next->klass_part()->external_name());
+        tty->print_cr("[Unlinking class (sibling) %s]", sibling->external_name());
           }
-#endif
-          next = next->klass_part()->next_sibling_oop();
-        } while (next != NULL && !is_alive->do_object_b(next));
-        sub->klass_part()->set_next_sibling(next);
+      sibling = sibling->next_sibling_oop();
       }
-      sub = next;
+    current->set_next_sibling(sibling);
+    if (sibling != NULL) {
+      stack.push(sibling);
+}
+
+    // Clean the implementors list and method data.
+    if (current->oop_is_instance()) {
+      InstanceKlass* ik = InstanceKlass::cast(current);
+      ik->clean_implementors_list(is_alive);
+      ik->clean_method_data(is_alive);
     }
-  } else {
-    // Always follow subklass and sibling link. This will prevent any klasses from
-    // being unloaded (all classes are transitively linked from java.lang.Object).
-    keep_alive->do_oop(adr_subklass());
-    keep_alive->do_oop(adr_next_sibling());
   }
 }
 
+void Klass::klass_update_barrier_set(oop v) {
+  record_modified_oops();
+}
+
+void Klass::klass_update_barrier_set_pre(void* p, oop v) {
+  // This barrier used by G1, where it's used remember the old oop values,
+  // so that we don't forget any objects that were live at the snapshot at
+  // the beginning. This function is only used when we write oops into
+  // Klasses. Since the Klasses are used as roots in G1, we don't have to
+  // do anything here.
+}
+
+void Klass::klass_oop_store(oop* p, oop v) {
+  assert(!Universe::heap()->is_in_reserved((void*)p), "Should store pointer into metadata");
+  assert(v == NULL || Universe::heap()->is_in_reserved((void*)v), "Should store pointer to an object");
+
+  // do the store
+  if (always_do_update_barrier) {
+    klass_oop_store((volatile oop*)p, v);
+  } else {
+    klass_update_barrier_set_pre((void*)p, v);
+    *p = v;
+    klass_update_barrier_set(v);
+  }
+}
+
+void Klass::klass_oop_store(volatile oop* p, oop v) {
+  assert(!Universe::heap()->is_in_reserved((void*)p), "Should store pointer into metadata");
+  assert(v == NULL || Universe::heap()->is_in_reserved((void*)v), "Should store pointer to an object");
+
+  klass_update_barrier_set_pre((void*)p, v);
+  OrderAccess::release_store_ptr(p, v);
+  klass_update_barrier_set(v);
+}
+
+void Klass::oops_do(OopClosure* cl) {
+  cl->do_oop(&_java_mirror);
+}
 
 void Klass::remove_unshareable_info() {
-  if (oop_is_instance()) {
-    instanceKlass* ik = (instanceKlass*)this;
-    if (ik->is_linked()) {
-      ik->unlink_class();
-    }
-  }
-  // Clear the Java vtable if the oop has one.
-  // The vtable isn't shareable because it's in the wrong order wrt the methods
-  // once the method names get moved and resorted.
-  klassVtable* vt = vtable();
-  if (vt != NULL) {
-    assert(oop_is_instance() || oop_is_array(), "nothing else has vtable");
-    vt->clear_vtable();
-  }
   set_subklass(NULL);
   set_next_sibling(NULL);
+  // Clear the java mirror
+  set_java_mirror(NULL);
+  set_next_link(NULL);
+
+  // Null out class_loader_data because we don't share that yet.
+  set_class_loader_data(NULL);
 }
 
+void Klass::restore_unshareable_info(TRAPS) {
+  ClassLoaderData* loader_data = ClassLoaderData::the_null_class_loader_data();
+  // Restore class_loader_data to the null class loader data
+  set_class_loader_data(loader_data);
 
-void Klass::shared_symbols_iterate(SymbolClosure* closure) {
-  closure->do_symbol(&_name);
+  // Add to null class loader list first before creating the mirror
+  // (same order as class file parsing)
+  loader_data->add_class(this);
+
+  // Recreate the class mirror
+  java_lang_Class::create_mirror(this, CHECK);
 }
 
-
-klassOop Klass::array_klass_or_null(int rank) {
+Klass* Klass::array_klass_or_null(int rank) {
   EXCEPTION_MARK;
   // No exception can be thrown by array_klass_impl when called with or_null == true.
   // (In anycase, the execption mark will fail if it do so)
@@ -479,7 +523,7 @@
 }
 
 
-klassOop Klass::array_klass_or_null() {
+Klass* Klass::array_klass_or_null() {
   EXCEPTION_MARK;
   // No exception can be thrown by array_klass_impl when called with or_null == true.
   // (In anycase, the execption mark will fail if it do so)
@@ -487,26 +531,28 @@
 }
 
 
-klassOop Klass::array_klass_impl(bool or_null, int rank, TRAPS) {
-  fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
+Klass* Klass::array_klass_impl(bool or_null, int rank, TRAPS) {
+  fatal("array_klass should be dispatched to InstanceKlass, objArrayKlass or typeArrayKlass");
   return NULL;
 }
 
 
-klassOop Klass::array_klass_impl(bool or_null, TRAPS) {
-  fatal("array_klass should be dispatched to instanceKlass, objArrayKlass or typeArrayKlass");
+Klass* Klass::array_klass_impl(bool or_null, TRAPS) {
+  fatal("array_klass should be dispatched to InstanceKlass, objArrayKlass or typeArrayKlass");
   return NULL;
 }
 
 
-void Klass::with_array_klasses_do(void f(klassOop k)) {
-  f(as_klassOop());
+void Klass::with_array_klasses_do(void f(Klass* k)) {
+  f(this);
 }
 
 
+oop Klass::class_loader() const { return class_loader_data()->class_loader(); }
+
 const char* Klass::external_name() const {
   if (oop_is_instance()) {
-    instanceKlass* ik = (instanceKlass*) this;
+    InstanceKlass* ik = (InstanceKlass*) this;
     if (ik->is_anonymous()) {
       assert(EnableInvokeDynamic, "");
       intptr_t hash = ik->java_mirror()->identity_hash();
@@ -547,8 +593,17 @@
   return 0;
 }
 
+
 // Printing
 
+void Klass::print_on(outputStream* st) const {
+  ResourceMark rm;
+  // print title
+  st->print("%s", internal_name());
+  print_address_on(st);
+  st->cr();
+}
+
 void Klass::oop_print_on(oop obj, outputStream* st) {
   ResourceMark rm;
   // print title
@@ -573,21 +628,52 @@
   obj->print_address_on(st);
 }
 
+
 // Verification
 
+void Klass::verify_on(outputStream* st) {
+  guarantee(!Universe::heap()->is_in_reserved(this), "Shouldn't be");
+  guarantee(this->is_metadata(), "should be in metaspace");
+
+  assert(ClassLoaderDataGraph::contains((address)this), "Should be");
+
+  guarantee(this->is_klass(),"should be klass");
+
+  if (super() != NULL) {
+    guarantee(super()->is_metadata(), "should be in metaspace");
+    guarantee(super()->is_klass(), "should be klass");
+  }
+  if (secondary_super_cache() != NULL) {
+    Klass* ko = secondary_super_cache();
+    guarantee(ko->is_metadata(), "should be in metaspace");
+    guarantee(ko->is_klass(), "should be klass");
+  }
+  for ( uint i = 0; i < primary_super_limit(); i++ ) {
+    Klass* ko = _primary_supers[i];
+    if (ko != NULL) {
+      guarantee(ko->is_metadata(), "should be in metaspace");
+      guarantee(ko->is_klass(), "should be klass");
+    }
+  }
+
+  if (java_mirror() != NULL) {
+    guarantee(java_mirror()->is_oop(), "should be instance");
+  }
+}
+
 void Klass::oop_verify_on(oop obj, outputStream* st) {
   guarantee(obj->is_oop(),  "should be oop");
-  guarantee(obj->klass()->is_perm(),  "should be in permspace");
+  guarantee(obj->klass()->is_metadata(), "should not be in Java heap");
   guarantee(obj->klass()->is_klass(), "klass field is not a klass");
 }
 
 #ifndef PRODUCT
 
 void Klass::verify_vtable_index(int i) {
-  assert(oop_is_instance() || oop_is_array(), "only instanceKlass and arrayKlass have vtables");
   if (oop_is_instance()) {
-    assert(i>=0 && i<((instanceKlass*)this)->vtable_length()/vtableEntry::size(), "index out of bounds");
+    assert(i>=0 && i<((InstanceKlass*)this)->vtable_length()/vtableEntry::size(), "index out of bounds");
   } else {
+    assert(oop_is_array(), "Must be");
     assert(i>=0 && i<((arrayKlass*)this)->vtable_length()/vtableEntry::size(), "index out of bounds");
   }
 }
--- a/src/share/vm/oops/klass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/klass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,8 +29,8 @@
 #include "memory/iterator.hpp"
 #include "memory/memRegion.hpp"
 #include "memory/specialized_oop_closures.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/klassPS.hpp"
+#include "oops/metadata.hpp"
 #include "oops/oop.hpp"
 #include "runtime/orderAccess.hpp"
 #include "trace/traceMacros.hpp"
@@ -41,12 +41,11 @@
 #include "gc_implementation/parNew/parOopClosures.hpp"
 #endif
 
-// A Klass is the part of the klassOop that provides:
+//
+// A Klass provides:
 //  1: language level class object (method dictionary etc.)
 //  2: provide vm dispatch behavior for the object
-// Both functions are combined into one C++ class. The toplevel class "Klass"
-// implements purpose 1 whereas all subclasses provide extra virtual functions
-// for purpose 2.
+// Both functions are combined into one C++ class.
 
 // One reason for the oop/klass dichotomy in the implementation is
 // that we don't want a C++ vtbl pointer in every object.  Thus,
@@ -57,11 +56,10 @@
 // ALL FUNCTIONS IMPLEMENTING THIS DISPATCH ARE PREFIXED WITH "oop_"!
 
 //  Klass layout:
-//    [header        ] klassOop
-//    [klass pointer ] klassOop
-//    [C++ vtbl ptr  ] (contained in Klass_vtbl)
+//    [C++ vtbl ptr  ] (contained in Metadata)
 //    [layout_helper ]
 //    [super_check_offset   ] for fast subtype checks
+//    [name          ]
 //    [secondary_super_cache] for fast subtype checks
 //    [secondary_supers     ] array of 2ndary supertypes
 //    [primary_supers 0]
@@ -71,9 +69,10 @@
 //    [primary_supers 7]
 //    [java_mirror   ]
 //    [super         ]
-//    [name          ]
-//    [first subklass]
+//    [subklass      ] first subclass
 //    [next_sibling  ] link to chain additional subklasses
+//    [next_link     ]
+//    [class_loader_data]
 //    [modifier_flags]
 //    [access_flags  ]
 //    [verify_count  ] - not in product
@@ -81,97 +80,19 @@
 //    [last_biased_lock_bulk_revocation_time] (64 bits)
 //    [prototype_header]
 //    [biased_lock_revocation_count]
+//    [_modified_oops]
+//    [_accumulated_modified_oops]
 //    [trace_id]
 
 
 // Forward declarations.
+template <class T> class Array;
+template <class T> class GrowableArray;
+class ClassLoaderData;
 class klassVtable;
-class KlassHandle;
-class OrderAccess;
-
-// Holder (or cage) for the C++ vtable of each kind of Klass.
-// We want to tightly constrain the location of the C++ vtable in the overall layout.
-class Klass_vtbl {
- protected:
-  // The following virtual exists only to force creation of a C++ vtable,
-  // so that this class truly is the location of the vtable of all Klasses.
-  virtual void unused_initial_virtual() { }
+class ParCompactionManager;
 
- public:
-  // The following virtual makes Klass_vtbl play a second role as a
-  // factory protocol for subclasses of Klass ("sub-Klasses").
-  // Here's how it works....
-  //
-  // This VM uses metaobjects as factories for their instances.
-  //
-  // In order to initialize the C++ vtable of a new instance, its
-  // metaobject is forced to use the C++ placed new operator to
-  // allocate the instance.  In a typical C++-based system, each
-  // sub-class would have its own factory routine which
-  // directly uses the placed new operator on the desired class,
-  // and then calls the appropriate chain of C++ constructors.
-  //
-  // However, this system uses shared code to performs the first
-  // allocation and initialization steps for all sub-Klasses.
-  // (See base_create_klass() and base_create_array_klass().)
-  // This does not factor neatly into a hierarchy of C++ constructors.
-  // Each caller of these shared "base_create" routines knows
-  // exactly which sub-Klass it is creating, but the shared routine
-  // does not, even though it must perform the actual allocation.
-  //
-  // Therefore, the caller of the shared "base_create" must wrap
-  // the specific placed new call in a virtual function which
-  // performs the actual allocation and vtable set-up.  That
-  // virtual function is here, Klass_vtbl::allocate_permanent.
-  //
-  // The arguments to Universe::allocate_permanent() are passed
-  // straight through the placed new operator, which in turn
-  // obtains them directly from this virtual call.
-  //
-  // This virtual is called on a temporary "example instance" of the
-  // sub-Klass being instantiated, a C++ auto variable.  The "real"
-  // instance created by this virtual is on the VM heap, where it is
-  // equipped with a klassOopDesc header.
-  //
-  // It is merely an accident of implementation that we use "example
-  // instances", but that is why the virtual function which implements
-  // each sub-Klass factory happens to be defined by the same sub-Klass
-  // for which it creates instances.
-  //
-  // The vtbl_value() call (see below) is used to strip away the
-  // accidental Klass-ness from an "example instance" and present it as
-  // a factory.  Think of each factory object as a mere container of the
-  // C++ vtable for the desired sub-Klass.  Since C++ does not allow
-  // direct references to vtables, the factory must also be delegated
-  // the task of allocating the instance, but the essential point is
-  // that the factory knows how to initialize the C++ vtable with the
-  // right pointer value.  All other common initializations are handled
-  // by the shared "base_create" subroutines.
-  //
-  virtual void* allocate_permanent(KlassHandle& klass, int size, TRAPS) const = 0;
-  void post_new_init_klass(KlassHandle& klass, klassOop obj) const;
-
-  // Every subclass on which vtbl_value is called must include this macro.
-  // Delay the installation of the klassKlass pointer until after the
-  // the vtable for a new klass has been installed (after the call to new()).
-#define DEFINE_ALLOCATE_PERMANENT(thisKlass)                                  \
-  void* allocate_permanent(KlassHandle& klass_klass, int size, TRAPS) const { \
-    void* result = new(klass_klass, size, THREAD) thisKlass();                \
-    if (HAS_PENDING_EXCEPTION) return NULL;                                   \
-    klassOop new_klass = ((Klass*) result)->as_klassOop();                    \
-    OrderAccess::storestore();                                                \
-    post_new_init_klass(klass_klass, new_klass);                              \
-    return result;                                                            \
-  }
-
-  bool null_vtbl() { return *(intptr_t*)this == 0; }
-
- protected:
-  void* operator new(size_t ignored, KlassHandle& klass, int size, TRAPS);
-};
-
-
-class Klass : public Klass_vtbl {
+class Klass : public Metadata {
   friend class VMStructs;
  protected:
   // note: put frequently-used fields together at start of klass structure
@@ -202,7 +123,7 @@
   // Note that the array-kind tag looks like 0x00 for instance klasses,
   // since their length in bytes is always less than 24Mb.
   //
-  // Final note:  This comes first, immediately after Klass_vtbl,
+  // Final note:  This comes first, immediately after C++ vtable,
   // because it is frequently queried.
   jint        _layout_helper;
 
@@ -218,37 +139,27 @@
   // [Ljava/lang/String;, etc.  Set to zero for all other kinds of classes.
   Symbol*     _name;
 
- public:
-  oop* oop_block_beg() const { return adr_secondary_super_cache(); }
-  oop* oop_block_end() const { return adr_next_sibling() + 1; }
-
- protected:
-  //
-  // The oop block.  All oop fields must be declared here and only oop fields
-  // may be declared here.  In addition, the first and last fields in this block
-  // must remain first and last, unless oop_block_beg() and/or oop_block_end()
-  // are updated.  Grouping the oop fields in a single block simplifies oop
-  // iteration.
-  //
-
   // Cache of last observed secondary supertype
-  klassOop    _secondary_super_cache;
+  Klass*      _secondary_super_cache;
   // Array of all secondary supertypes
-  objArrayOop _secondary_supers;
+  Array<Klass*>* _secondary_supers;
   // Ordered list of all primary supertypes
-  klassOop    _primary_supers[_primary_super_limit];
+  Klass*      _primary_supers[_primary_super_limit];
   // java/lang/Class instance mirroring this class
   oop       _java_mirror;
   // Superclass
-  klassOop  _super;
+  Klass*      _super;
   // First subclass (NULL if none); _subklass->next_sibling() is next one
-  klassOop _subklass;
+  Klass*      _subklass;
   // Sibling link (or NULL); links all subklasses of a klass
-  klassOop _next_sibling;
+  Klass*      _next_sibling;
 
-  //
-  // End of the oop block.
-  //
+  // All klasses loaded by a class loader are chained through these links
+  Klass*      _next_link;
+
+  // The VM's representation of the ClassLoader used to load this class.
+  // Provide access the corresponding instance java.lang.ClassLoader.
+  ClassLoaderData* _class_loader_data;
 
   jint        _modifier_flags;  // Processed access flags, for use by Class.getModifiers.
   AccessFlags _access_flags;    // Access flags. The class/interface distinction is stored here.
@@ -257,7 +168,7 @@
   int           _verify_count;  // to avoid redundant verifies
 #endif
 
-  juint    _alloc_count;        // allocation profiling support - update klass_size_in_bytes() if moved/deleted
+  juint    _alloc_count;        // allocation profiling support
 
   // Biased locking implementation and statistics
   // (the 64-bit chunk goes first, to avoid some fragmentation)
@@ -266,50 +177,49 @@
   jint     _biased_lock_revocation_count;
 
   TRACE_DEFINE_KLASS_TRACE_ID;
- public:
+
+  // Remembered sets support for the oops in the klasses.
+  jbyte _modified_oops;             // Card Table Equivalent (YC/CMS support)
+  jbyte _accumulated_modified_oops; // Mod Union Equivalent (CMS support)
 
-  // returns the enclosing klassOop
-  klassOop as_klassOop() const {
-    // see klassOop.hpp for layout.
-    return (klassOop) (((char*) this) - sizeof(klassOopDesc));
-  }
+  // Constructor
+  Klass();
+
+  void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS);
 
  public:
-  // Allocation
-  const Klass_vtbl& vtbl_value() const { return *this; }  // used only on "example instances"
-  static KlassHandle base_create_klass(KlassHandle& klass, int size, const Klass_vtbl& vtbl, TRAPS);
-  static klassOop base_create_klass_oop(KlassHandle& klass, int size, const Klass_vtbl& vtbl, TRAPS);
+  bool is_klass() const volatile { return true; }
 
   // super
-  klassOop super() const               { return _super; }
-  void set_super(klassOop k)           { oop_store_without_check((oop*) &_super, (oop) k); }
+  Klass* super() const               { return _super; }
+  void set_super(Klass* k)           { _super = k; }
 
   // initializes _super link, _primary_supers & _secondary_supers arrays
-  void initialize_supers(klassOop k, TRAPS);
-  void initialize_supers_impl1(klassOop k);
-  void initialize_supers_impl2(klassOop k);
+  void initialize_supers(Klass* k, TRAPS);
+  void initialize_supers_impl1(Klass* k);
+  void initialize_supers_impl2(Klass* k);
 
   // klass-specific helper for initializing _secondary_supers
-  virtual objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
+  virtual GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
 
   // java_super is the Java-level super type as specified by Class.getSuperClass.
-  virtual klassOop java_super() const  { return NULL; }
+  virtual Klass* java_super() const  { return NULL; }
 
   juint    super_check_offset() const  { return _super_check_offset; }
   void set_super_check_offset(juint o) { _super_check_offset = o; }
 
-  klassOop secondary_super_cache() const     { return _secondary_super_cache; }
-  void set_secondary_super_cache(klassOop k) { oop_store_without_check((oop*) &_secondary_super_cache, (oop) k); }
+  Klass* secondary_super_cache() const     { return _secondary_super_cache; }
+  void set_secondary_super_cache(Klass* k) { _secondary_super_cache = k; }
 
-  objArrayOop secondary_supers() const { return _secondary_supers; }
-  void set_secondary_supers(objArrayOop k) { oop_store_without_check((oop*) &_secondary_supers, (oop) k); }
+  Array<Klass*>* secondary_supers() const { return _secondary_supers; }
+  void set_secondary_supers(Array<Klass*>* k) { _secondary_supers = k; }
 
   // Return the element of the _super chain of the given depth.
   // If there is no such element, return either NULL or this.
-  klassOop primary_super_of_depth(juint i) const {
+  Klass* primary_super_of_depth(juint i) const {
     assert(i < primary_super_limit(), "oob");
-    klassOop super = _primary_supers[i];
-    assert(super == NULL || super->klass_part()->super_depth() == i, "correct display");
+    Klass* super = _primary_supers[i];
+    assert(super == NULL || super->super_depth() == i, "correct display");
     return super;
   }
 
@@ -326,16 +236,20 @@
     if (!can_be_primary_super()) {
       return primary_super_limit();
     } else {
-      juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(klassOop);
+      juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(Klass*);
       assert(d < primary_super_limit(), "oob");
-      assert(_primary_supers[d] == as_klassOop(), "proper init");
+      assert(_primary_supers[d] == this, "proper init");
       return d;
     }
   }
 
+  // store an oop into a field of a Klass
+  void klass_oop_store(oop* p, oop v);
+  void klass_oop_store(volatile oop* p, oop v);
+
   // java mirror
   oop java_mirror() const              { return _java_mirror; }
-  void set_java_mirror(oop m)          { oop_store((oop*) &_java_mirror, m); }
+  void set_java_mirror(oop m) { klass_oop_store(&_java_mirror, m); }
 
   // modifier flags
   jint modifier_flags() const          { return _modifier_flags; }
@@ -346,27 +260,38 @@
   void set_layout_helper(int lh)       { _layout_helper = lh; }
 
   // Note: for instances layout_helper() may include padding.
-  // Use instanceKlass::contains_field_offset to classify field offsets.
+  // Use InstanceKlass::contains_field_offset to classify field offsets.
 
   // sub/superklass links
-  instanceKlass* superklass() const;
+  InstanceKlass* superklass() const;
   Klass* subklass() const;
   Klass* next_sibling() const;
   void append_to_sibling_list();           // add newly created receiver to superklass' subklass list
   void remove_from_sibling_list();         // remove receiver from sibling list
- protected:                                // internal accessors
-  klassOop subklass_oop() const            { return _subklass; }
-  klassOop next_sibling_oop() const        { return _next_sibling; }
-  void     set_subklass(klassOop s);
-  void     set_next_sibling(klassOop s);
+
+  void set_next_link(Klass* k) { _next_link = k; }
+  Klass* next_link() const { return _next_link; }   // The next klass defined by the class loader.
+
+  // class loader data
+  ClassLoaderData* class_loader_data() const               { return _class_loader_data; }
+  void set_class_loader_data(ClassLoaderData* loader_data) {  _class_loader_data = loader_data; }
 
-  oop* adr_super()           const { return (oop*)&_super;             }
-  oop* adr_primary_supers()  const { return (oop*)&_primary_supers[0]; }
-  oop* adr_secondary_super_cache() const { return (oop*)&_secondary_super_cache; }
-  oop* adr_secondary_supers()const { return (oop*)&_secondary_supers;  }
-  oop* adr_java_mirror()     const { return (oop*)&_java_mirror;       }
-  oop* adr_subklass()        const { return (oop*)&_subklass;          }
-  oop* adr_next_sibling()    const { return (oop*)&_next_sibling;      }
+  // The Klasses are not placed in the Heap, so the Card Table or
+  // the Mod Union Table can't be used to mark when klasses have modified oops.
+  // The CT and MUT bits saves this information for the individual Klasses.
+  void record_modified_oops()            { _modified_oops = 1; }
+  void clear_modified_oops()             { _modified_oops = 0; }
+  bool has_modified_oops()               { return _modified_oops == 1; }
+
+  void accumulate_modified_oops()        { if (has_modified_oops()) _accumulated_modified_oops = 1; }
+  void clear_accumulated_modified_oops() { _accumulated_modified_oops = 0; }
+  bool has_accumulated_modified_oops()   { return _accumulated_modified_oops == 1; }
+
+ protected:                                // internal accessors
+  Klass* subklass_oop() const            { return _subklass; }
+  Klass* next_sibling_oop() const        { return _next_sibling; }
+  void     set_subklass(Klass* s);
+  void     set_next_sibling(Klass* s);
 
  public:
   // Allocation profiling support
@@ -376,15 +301,15 @@
   virtual void set_alloc_size(juint n) = 0;
 
   // Compiler support
-  static ByteSize super_offset()                 { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _super)); }
-  static ByteSize super_check_offset_offset()    { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _super_check_offset)); }
-  static ByteSize primary_supers_offset()        { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _primary_supers)); }
-  static ByteSize secondary_super_cache_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _secondary_super_cache)); }
-  static ByteSize secondary_supers_offset()      { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _secondary_supers)); }
-  static ByteSize java_mirror_offset()           { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _java_mirror)); }
-  static ByteSize modifier_flags_offset()        { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _modifier_flags)); }
-  static ByteSize layout_helper_offset()         { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _layout_helper)); }
-  static ByteSize access_flags_offset()          { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _access_flags)); }
+  static ByteSize super_offset()                 { return in_ByteSize(offset_of(Klass, _super)); }
+  static ByteSize super_check_offset_offset()    { return in_ByteSize(offset_of(Klass, _super_check_offset)); }
+  static ByteSize primary_supers_offset()        { return in_ByteSize(offset_of(Klass, _primary_supers)); }
+  static ByteSize secondary_super_cache_offset() { return in_ByteSize(offset_of(Klass, _secondary_super_cache)); }
+  static ByteSize secondary_supers_offset()      { return in_ByteSize(offset_of(Klass, _secondary_supers)); }
+  static ByteSize java_mirror_offset()           { return in_ByteSize(offset_of(Klass, _java_mirror)); }
+  static ByteSize modifier_flags_offset()        { return in_ByteSize(offset_of(Klass, _modifier_flags)); }
+  static ByteSize layout_helper_offset()         { return in_ByteSize(offset_of(Klass, _layout_helper)); }
+  static ByteSize access_flags_offset()          { return in_ByteSize(offset_of(Klass, _access_flags)); }
 
   // Unpacking layout_helper:
   enum {
@@ -413,7 +338,7 @@
   static bool layout_helper_is_instance(jint lh) {
     return (jint)lh > (jint)_lh_neutral_value;
   }
-  static bool layout_helper_is_javaArray(jint lh) {
+  static bool layout_helper_is_array(jint lh) {
     return (jint)lh < (jint)_lh_neutral_value;
   }
   static bool layout_helper_is_typeArray(jint lh) {
@@ -473,14 +398,12 @@
   // vtables
   virtual klassVtable* vtable() const        { return NULL; }
 
-  static int klass_size_in_bytes()           { return offset_of(Klass, _alloc_count) + sizeof(juint); }  // all "visible" fields
-
   // subclass check
-  bool is_subclass_of(klassOop k) const;
+  bool is_subclass_of(Klass* k) const;
   // subtype check: true if is_subclass_of, or if k is interface and receiver implements it
-  bool is_subtype_of(klassOop k) const {
-    juint    off = k->klass_part()->super_check_offset();
-    klassOop sup = *(klassOop*)( (address)as_klassOop() + off );
+  bool is_subtype_of(Klass* k) const {
+    juint    off = k->super_check_offset();
+    Klass* sup = *(Klass**)( (address)this + off );
     const juint secondary_offset = in_bytes(secondary_super_cache_offset());
     if (sup == k) {
       return true;
@@ -490,7 +413,7 @@
       return search_secondary_supers(k);
     }
   }
-  bool search_secondary_supers(klassOop k) const;
+  bool search_secondary_supers(Klass* k) const;
 
   // Find LCA in class hierarchy
   Klass *LCA( Klass *k );
@@ -500,9 +423,9 @@
   virtual void check_valid_for_instantiation(bool throwError, TRAPS);
 
   // Casting
-  static Klass* cast(klassOop k) {
+  static Klass* cast(Klass* k) {
     assert(k->is_klass(), "cast to Klass");
-    return k->klass_part();
+    return k;
   }
 
   // array copying
@@ -514,37 +437,39 @@
   virtual void initialize(TRAPS);
   // lookup operation for MethodLookupCache
   friend class MethodLookupCache;
-  virtual methodOop uncached_lookup_method(Symbol* name, Symbol* signature) const;
+  virtual Method* uncached_lookup_method(Symbol* name, Symbol* signature) const;
  public:
-  methodOop lookup_method(Symbol* name, Symbol* signature) const {
+  Method* lookup_method(Symbol* name, Symbol* signature) const {
     return uncached_lookup_method(name, signature);
   }
 
   // array class with specific rank
-  klassOop array_klass(int rank, TRAPS)         {  return array_klass_impl(false, rank, THREAD); }
+  Klass* array_klass(int rank, TRAPS)         {  return array_klass_impl(false, rank, THREAD); }
 
   // array class with this klass as element type
-  klassOop array_klass(TRAPS)                   {  return array_klass_impl(false, THREAD); }
+  Klass* array_klass(TRAPS)                   {  return array_klass_impl(false, THREAD); }
 
   // These will return NULL instead of allocating on the heap:
   // NB: these can block for a mutex, like other functions with TRAPS arg.
-  klassOop array_klass_or_null(int rank);
-  klassOop array_klass_or_null();
+  Klass* array_klass_or_null(int rank);
+  Klass* array_klass_or_null();
 
   virtual oop protection_domain()       { return NULL; }
-  virtual oop class_loader()  const     { return NULL; }
+
+  oop class_loader() const;
 
  protected:
-  virtual klassOop array_klass_impl(bool or_null, int rank, TRAPS);
-  virtual klassOop array_klass_impl(bool or_null, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, int rank, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, TRAPS);
 
  public:
+  // CDS support - remove and restore oops from metadata. Oops are not shared.
   virtual void remove_unshareable_info();
-  virtual void shared_symbols_iterate(SymbolClosure* closure);
+  virtual void restore_unshareable_info(TRAPS);
 
  protected:
   // computes the subtype relationship
-  virtual bool compute_is_subtype_of(klassOop k);
+  virtual bool compute_is_subtype_of(Klass* k);
  public:
   // subclass accessor (here for convenience; undefined for non-klass objects)
   virtual bool is_leaf_class() const { fatal("not a class"); return false; }
@@ -555,8 +480,8 @@
   // actual oop size of obj in memory
   virtual int oop_size(oop obj) const = 0;
 
-  // actual oop size of this klass in memory
-  virtual int klass_oop_size() const = 0;
+  // Size of klass in word size.
+  virtual int size() const = 0;
 
   // Returns the Java name for a class (Resource allocated)
   // For arrays, this returns the name of the element with a leading '['.
@@ -577,32 +502,17 @@
   // Parallel Scavenge and Parallel Old
   PARALLEL_GC_DECLS_PV
 
+  // type testing operations
+ protected:
+  virtual bool oop_is_instance_slow()       const { return false; }
+  virtual bool oop_is_array_slow()          const { return false; }
+  virtual bool oop_is_objArray_slow()       const { return false; }
+  virtual bool oop_is_typeArray_slow()      const { return false; }
  public:
-  // type testing operations
-  virtual bool oop_is_instance_slow()       const { return false; }
   virtual bool oop_is_instanceMirror()      const { return false; }
   virtual bool oop_is_instanceRef()         const { return false; }
-  virtual bool oop_is_array()               const { return false; }
-  virtual bool oop_is_objArray_slow()       const { return false; }
-  virtual bool oop_is_klass()               const { return false; }
-  virtual bool oop_is_thread()              const { return false; }
-  virtual bool oop_is_method()              const { return false; }
-  virtual bool oop_is_constMethod()         const { return false; }
-  virtual bool oop_is_methodData()          const { return false; }
-  virtual bool oop_is_constantPool()        const { return false; }
-  virtual bool oop_is_constantPoolCache()   const { return false; }
-  virtual bool oop_is_typeArray_slow()      const { return false; }
-  virtual bool oop_is_arrayKlass()          const { return false; }
-  virtual bool oop_is_objArrayKlass()       const { return false; }
-  virtual bool oop_is_typeArrayKlass()      const { return false; }
-  virtual bool oop_is_compiledICHolder()    const { return false; }
-  virtual bool oop_is_instanceKlass()       const { return false; }
 
-  bool oop_is_javaArray_slow() const {
-    return oop_is_objArray_slow() || oop_is_typeArray_slow();
-  }
-
-  // Fast non-virtual versions, used by oop.inline.hpp and elsewhere:
+  // Fast non-virtual versions
   #ifndef ASSERT
   #define assert_same_query(xval, xcheck) xval
   #else
@@ -616,9 +526,9 @@
   inline  bool oop_is_instance()            const { return assert_same_query(
                                                     layout_helper_is_instance(layout_helper()),
                                                     oop_is_instance_slow()); }
-  inline  bool oop_is_javaArray()           const { return assert_same_query(
-                                                    layout_helper_is_javaArray(layout_helper()),
-                                                    oop_is_javaArray_slow()); }
+  inline  bool oop_is_array()               const { return assert_same_query(
+                                                    layout_helper_is_array(layout_helper()),
+                                                    oop_is_array_slow()); }
   inline  bool oop_is_objArray()            const { return assert_same_query(
                                                     layout_helper_is_objArray(layout_helper()),
                                                     oop_is_objArray_slow()); }
@@ -627,20 +537,6 @@
                                                     oop_is_typeArray_slow()); }
   #undef assert_same_query
 
-  // Unless overridden, oop is parsable if it has a klass pointer.
-  // Parsability of an object is object specific.
-  virtual bool oop_is_parsable(oop obj) const { return true; }
-
-  // Unless overridden, oop is safe for concurrent GC processing
-  // after its allocation is complete.  The exception to
-  // this is the case where objects are changed after allocation.
-  // Class redefinition is one of the known exceptions. During
-  // class redefinition, an allocated class can changed in order
-  // order to create a merged class (the combiniation of the
-  // old class definition that has to be perserved and the new class
-  // definition which is being created.
-  virtual bool oop_is_conc_safe(oop obj) const { return true; }
-
   // Access flags
   AccessFlags access_flags() const         { return _access_flags;  }
   void set_access_flags(AccessFlags flags) { _access_flags = flags; }
@@ -677,7 +573,7 @@
   // are potential problems in setting the bias pattern for
   // JVM-internal oops.
   inline void set_prototype_header(markOop header);
-  static ByteSize prototype_header_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(Klass, _prototype_header)); }
+  static ByteSize prototype_header_offset() { return in_ByteSize(offset_of(Klass, _prototype_header)); }
 
   int  biased_lock_revocation_count() const { return (int) _biased_lock_revocation_count; }
   // Atomically increments biased_lock_revocation_count and returns updated value
@@ -689,8 +585,14 @@
   TRACE_DEFINE_KLASS_METHODS;
 
   // garbage collection support
-  virtual void follow_weak_klass_links(
-    BoolObjectClosure* is_alive, OopClosure* keep_alive);
+  virtual void oops_do(OopClosure* cl);
+
+  // Checks if the class loader is alive.
+  // Iff the class loader is alive the Klass is considered alive.
+  // The is_alive closure passed in depends on the Garbage Collector used.
+  bool is_loader_alive(BoolObjectClosure* is_alive);
+
+  static void clean_weak_klass_links(BoolObjectClosure* is_alive);
 
   // Prefetch within oop iterators.  This is a macro because we
   // can't guarantee that the compiler will inline it.  In 64-bit
@@ -723,15 +625,15 @@
   }
 
   // iterators
-  virtual int oop_oop_iterate(oop obj, OopClosure* blk) = 0;
-  virtual int oop_oop_iterate_v(oop obj, OopClosure* blk) {
+  virtual int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) = 0;
+  virtual int oop_oop_iterate_v(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate(obj, blk);
   }
 
 #ifndef SERIALGC
   // In case we don't have a specialized backward scanner use forward
   // iteration.
-  virtual int oop_oop_iterate_backwards_v(oop obj, OopClosure* blk) {
+  virtual int oop_oop_iterate_backwards_v(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
 #endif // !SERIALGC
@@ -740,8 +642,8 @@
   // (I don't see why the _m should be required, but without it the Solaris
   // C++ gives warning messages about overridings of the "oop_oop_iterate"
   // defined above "hiding" this virtual function.  (DLD, 6/20/00)) */
-  virtual int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) = 0;
-  virtual int oop_oop_iterate_v_m(oop obj, OopClosure* blk, MemRegion mr) {
+  virtual int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) = 0;
+  virtual int oop_oop_iterate_v_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
     return oop_oop_iterate_m(obj, blk, mr);
   }
 
@@ -778,8 +680,8 @@
   SPECIALIZED_OOP_OOP_ITERATE_CLOSURES_2(Klass_OOP_OOP_ITERATE_BACKWARDS_DECL)
 #endif // !SERIALGC
 
-  virtual void array_klasses_do(void f(klassOop k)) {}
-  virtual void with_array_klasses_do(void f(klassOop k));
+  virtual void array_klasses_do(void f(Klass* k)) {}
+  virtual void with_array_klasses_do(void f(Klass* k));
 
   // Return self, except for abstract classes with exactly 1
   // implementor.  Then return the 1 concrete implementation.
@@ -789,8 +691,6 @@
   Symbol* name() const                   { return _name; }
   void set_name(Symbol* n);
 
-  friend class klassKlass;
-
  public:
   // jvm support
   virtual jint compute_modifier_flags(TRAPS) const;
@@ -799,23 +699,27 @@
   virtual jint jvmti_class_status() const;
 
   // Printing
+  virtual void print_on(outputStream* st) const;
+
   virtual void oop_print_value_on(oop obj, outputStream* st);
   virtual void oop_print_on      (oop obj, outputStream* st);
 
+  virtual const char* internal_name() const = 0;
+
   // Verification
-  virtual const char* internal_name() const = 0;
-  virtual void oop_verify_on(oop obj, outputStream* st);
-  // tells whether obj is partially constructed (gc during class loading)
-  virtual bool oop_partially_loaded(oop obj) const { return false; }
-  virtual void oop_set_partially_loaded(oop obj) {};
+  virtual void verify_on(outputStream* st);
+  void verify() { verify_on(tty); }
 
 #ifndef PRODUCT
   void verify_vtable_index(int index);
 #endif
+
+  virtual void oop_verify_on(oop obj, outputStream* st);
+
+ private:
+  // barriers used by klass_oop_store
+  void klass_update_barrier_set(oop v);
+  void klass_update_barrier_set_pre(void* p, oop v);
 };
 
-
-inline oop klassOopDesc::java_mirror() const                        { return klass_part()->java_mirror(); }
-
-
 #endif // SHARE_VM_OOPS_KLASS_HPP
--- a/src/share/vm/oops/klassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
- * Copyright (c) 1997, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/oopFactory.hpp"
-#include "memory/permGen.hpp"
-#include "oops/constantPoolKlass.hpp"
-#include "oops/instanceKlass.hpp"
-#include "oops/instanceOop.hpp"
-#include "oops/klassKlass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodKlass.hpp"
-#include "oops/objArrayKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "oops/symbol.hpp"
-#include "oops/typeArrayKlass.hpp"
-#include "runtime/handles.inline.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-int klassKlass::oop_size(oop obj) const {
-  assert (obj->is_klass(), "must be a klassOop");
-  return klassOop(obj)->klass_part()->klass_oop_size();
-}
-
-klassOop klassKlass::create_klass(TRAPS) {
-  KlassHandle h_this_klass;
-  klassKlass o;
-  // for bootstrapping, handles may not be available yet.
-  klassOop k = base_create_klass_oop(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  k->set_klass(k); // point to thyself
-  // Do not try to allocate mirror, java.lang.Class not loaded at this point.
-  // See Universe::fixup_mirrors()
-  return k;
-}
-
-void klassKlass::oop_follow_contents(oop obj) {
-  Klass* k = Klass::cast(klassOop(obj));
-  // If we are alive it is valid to keep our superclass and subtype caches alive
-  MarkSweep::mark_and_push(k->adr_super());
-  for (juint i = 0; i < Klass::primary_super_limit(); i++)
-    MarkSweep::mark_and_push(k->adr_primary_supers()+i);
-  MarkSweep::mark_and_push(k->adr_secondary_super_cache());
-  MarkSweep::mark_and_push(k->adr_secondary_supers());
-  MarkSweep::mark_and_push(k->adr_java_mirror());
-  // We follow the subklass and sibling links at the end of the
-  // marking phase, since otherwise following them will prevent
-  // class unloading (all classes are transitively linked from
-  // java.lang.Object).
-  MarkSweep::revisit_weak_klass_link(k);
-  obj->follow_header();
-}
-
-#ifndef SERIALGC
-void klassKlass::oop_follow_contents(ParCompactionManager* cm,
-                                     oop obj) {
-  Klass* k = Klass::cast(klassOop(obj));
-  // If we are alive it is valid to keep our superclass and subtype caches alive
-  PSParallelCompact::mark_and_push(cm, k->adr_super());
-  for (juint i = 0; i < Klass::primary_super_limit(); i++)
-    PSParallelCompact::mark_and_push(cm, k->adr_primary_supers()+i);
-  PSParallelCompact::mark_and_push(cm, k->adr_secondary_super_cache());
-  PSParallelCompact::mark_and_push(cm, k->adr_secondary_supers());
-  PSParallelCompact::mark_and_push(cm, k->adr_java_mirror());
-  // We follow the subklass and sibling links at the end of the
-  // marking phase, since otherwise following them will prevent
-  // class unloading (all classes are transitively linked from
-  // java.lang.Object).
-  PSParallelCompact::revisit_weak_klass_link(cm, k);
-  obj->follow_header(cm);
-}
-#endif // SERIALGC
-
-int klassKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  // Get size before changing pointers
-  int size = oop_size(obj);
-  Klass* k = Klass::cast(klassOop(obj));
-  blk->do_oop(k->adr_super());
-  for (juint i = 0; i < Klass::primary_super_limit(); i++)
-    blk->do_oop(k->adr_primary_supers()+i);
-  blk->do_oop(k->adr_secondary_super_cache());
-  blk->do_oop(k->adr_secondary_supers());
-  blk->do_oop(k->adr_java_mirror());
-  // The following are in the perm gen and are treated
-  // specially in a later phase of a perm gen collection; ...
-  assert(oop(k)->is_perm(), "should be in perm");
-  assert(oop(k->subklass())->is_perm_or_null(), "should be in perm");
-  assert(oop(k->next_sibling())->is_perm_or_null(), "should be in perm");
-  // ... don't scan them normally, but remember this klassKlass
-  // for later (see, for instance, oop_follow_contents above
-  // for what MarkSweep does with it.
-  if (blk->should_remember_klasses()) {
-    blk->remember_klass(k);
-  }
-  obj->oop_iterate_header(blk);
-  return size;
-}
-
-
-int klassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  // Get size before changing pointers
-  int size = oop_size(obj);
-  Klass* k = Klass::cast(klassOop(obj));
-  oop* adr;
-  adr = k->adr_super();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  for (juint i = 0; i < Klass::primary_super_limit(); i++) {
-    adr = k->adr_primary_supers()+i;
-    if (mr.contains(adr)) blk->do_oop(adr);
-  }
-  adr = k->adr_secondary_super_cache();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = k->adr_secondary_supers();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  adr = k->adr_java_mirror();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  // The following are "weak links" in the perm gen and are
-  // treated specially in a later phase of a perm gen collection.
-  assert(oop(k)->is_perm(), "should be in perm");
-  assert(oop(k->adr_subklass())->is_perm(), "should be in perm");
-  assert(oop(k->adr_next_sibling())->is_perm(), "should be in perm");
-  if (blk->should_remember_klasses()
-      && (mr.contains(k->adr_subklass())
-          || mr.contains(k->adr_next_sibling()))) {
-    blk->remember_klass(k);
-  }
-  obj->oop_iterate_header(blk, mr);
-  return size;
-}
-
-
-int klassKlass::oop_adjust_pointers(oop obj) {
-  // Get size before changing pointers
-  int size = oop_size(obj);
-  obj->adjust_header();
-
-  Klass* k = Klass::cast(klassOop(obj));
-
-  MarkSweep::adjust_pointer(k->adr_super());
-  for (juint i = 0; i < Klass::primary_super_limit(); i++)
-    MarkSweep::adjust_pointer(k->adr_primary_supers()+i);
-  MarkSweep::adjust_pointer(k->adr_secondary_super_cache());
-  MarkSweep::adjust_pointer(k->adr_secondary_supers());
-  MarkSweep::adjust_pointer(k->adr_java_mirror());
-  MarkSweep::adjust_pointer(k->adr_subklass());
-  MarkSweep::adjust_pointer(k->adr_next_sibling());
-  return size;
-}
-
-#ifndef SERIALGC
-void klassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  Klass* k = Klass::cast(klassOop(obj));
-
-  oop* p = k->adr_java_mirror();
-  if (PSScavenge::should_scavenge(p)) {
-    pm->claim_or_forward_depth(p);
-  }
-}
-
-int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  Klass* k = Klass::cast(klassOop(obj));
-
-  oop* const beg_oop = k->oop_block_beg();
-  oop* const end_oop = k->oop_block_end();
-  for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
-    PSParallelCompact::adjust_pointer(cur_oop);
-  }
-
-  return oop_size(obj);
-}
-#endif // SERIALGC
-
-
-// Printing
-
-void klassKlass::oop_print_on(oop obj, outputStream* st) {
-  Klass::oop_print_on(obj, st);
-}
-
-void klassKlass::oop_print_value_on(oop obj, outputStream* st) {
-  Klass::oop_print_value_on(obj, st);
-}
-
-const char* klassKlass::internal_name() const {
-  return "{other class}";
-}
-
-
-// Verification
-
-void klassKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_perm(),                      "should be in permspace");
-  guarantee(obj->is_klass(),                     "should be klass");
-
-  Klass* k = Klass::cast(klassOop(obj));
-  if (k->super() != NULL) {
-    guarantee(k->super()->is_perm(),             "should be in permspace");
-    guarantee(k->super()->is_klass(),            "should be klass");
-  }
-  klassOop ko = k->secondary_super_cache();
-  if( ko != NULL ) {
-    guarantee(ko->is_perm(),                     "should be in permspace");
-    guarantee(ko->is_klass(),                    "should be klass");
-  }
-  for( uint i = 0; i < primary_super_limit(); i++ ) {
-    oop ko = k->adr_primary_supers()[i]; // Cannot use normal accessor because it asserts
-    if( ko != NULL ) {
-      guarantee(ko->is_perm(),                   "should be in permspace");
-      guarantee(ko->is_klass(),                  "should be klass");
-    }
-  }
-
-  if (k->java_mirror() != NULL || (k->oop_is_instance() && instanceKlass::cast(klassOop(obj))->is_loaded())) {
-    guarantee(k->java_mirror() != NULL,          "should be allocated");
-    guarantee(k->java_mirror()->is_perm() || !JavaObjectsInPerm,       "should be in permspace");
-    guarantee(k->java_mirror()->is_instance(),   "should be instance");
-  }
-}
--- a/src/share/vm/oops/klassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_KLASSKLASS_HPP
-#define SHARE_VM_OOPS_KLASSKLASS_HPP
-
-#include "memory/oopFactory.hpp"
-#include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
-
-// A klassKlass serves as the fix point of the klass chain.
-// The klass of klassKlass is itself.
-
-class klassKlass: public Klass {
-  friend class VMStructs;
- private:
-  juint    _alloc_size;        // allocation profiling support
- public:
-  // Testing
-  bool oop_is_klass()  const { return true; }
-  bool is_leaf_class() const { return true; }
-
-  // Sizing
-  int oop_size(oop obj) const;
-  int klass_oop_size() const { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(klassKlass);
-  static klassOop create_klass(TRAPS );
-
-  // Casting from klassOop
-  static klassKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_klass(), "cast to klassKlass");
-    return (klassKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()  { return oopDesc::header_size() + sizeof(klassKlass)/HeapWordSize; }
-  int object_size() const   { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int  oop_oop_iterate(oop obj, OopClosure* blk);
-  int  oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-  void oop_print_on      (oop obj, outputStream* st);
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-};
-
-#endif // SHARE_VM_OOPS_KLASSKLASS_HPP
--- a/src/share/vm/oops/klassOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "oops/klassOop.hpp"
-
--- a/src/share/vm/oops/klassOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 1997, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_KLASSOOP_HPP
-#define SHARE_VM_OOPS_KLASSOOP_HPP
-
-#include "oops/oop.hpp"
-
-// A klassOop is the C++ equivalent of a Java class.
-// Part of a klassOopDesc is a Klass which handle the
-// dispatching for the C++ method calls.
-
-//  klassOop object layout:
-//    [header     ]
-//    [klass_field]
-//    [KLASS      ]
-
-class klassOopDesc : public oopDesc {
- public:
-  // returns the Klass part containing dispatching behavior
-  Klass* klass_part() const                      { return (Klass*)((address)this + sizeof(klassOopDesc)); }
-
-  // Convenience wrapper
-  inline oop java_mirror() const;
-
- private:
-  // These have no implementation since klassOop should never be accessed in this fashion
-  oop obj_field(int offset) const;
-  volatile oop obj_field_volatile(int offset) const;
-  void obj_field_put(int offset, oop value);
-  void obj_field_put_raw(int offset, oop value);
-  void obj_field_put_volatile(int offset, oop value);
-
-  jbyte byte_field(int offset) const;
-  void byte_field_put(int offset, jbyte contents);
-
-  jchar char_field(int offset) const;
-  void char_field_put(int offset, jchar contents);
-
-  jboolean bool_field(int offset) const;
-  void bool_field_put(int offset, jboolean contents);
-
-  jint int_field(int offset) const;
-  void int_field_put(int offset, jint contents);
-
-  jshort short_field(int offset) const;
-  void short_field_put(int offset, jshort contents);
-
-  jlong long_field(int offset) const;
-  void long_field_put(int offset, jlong contents);
-
-  jfloat float_field(int offset) const;
-  void float_field_put(int offset, jfloat contents);
-
-  jdouble double_field(int offset) const;
-  void double_field_put(int offset, jdouble contents);
-
-  address address_field(int offset) const;
-  void address_field_put(int offset, address contents);
-
-  oop obj_field_acquire(int offset) const;
-  void release_obj_field_put(int offset, oop value);
-
-  jbyte byte_field_acquire(int offset) const;
-  void release_byte_field_put(int offset, jbyte contents);
-
-  jchar char_field_acquire(int offset) const;
-  void release_char_field_put(int offset, jchar contents);
-
-  jboolean bool_field_acquire(int offset) const;
-  void release_bool_field_put(int offset, jboolean contents);
-
-  jint int_field_acquire(int offset) const;
-  void release_int_field_put(int offset, jint contents);
-
-  jshort short_field_acquire(int offset) const;
-  void release_short_field_put(int offset, jshort contents);
-
-  jlong long_field_acquire(int offset) const;
-  void release_long_field_put(int offset, jlong contents);
-
-  jfloat float_field_acquire(int offset) const;
-  void release_float_field_put(int offset, jfloat contents);
-
-  jdouble double_field_acquire(int offset) const;
-  void release_double_field_put(int offset, jdouble contents);
-
-  address address_field_acquire(int offset) const;
-  void release_address_field_put(int offset, address contents);
-};
-
-#endif // SHARE_VM_OOPS_KLASSOOP_HPP
--- a/src/share/vm/oops/klassVtable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/klassVtable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -30,9 +30,8 @@
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/klassVtable.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiRedefineClassesTrace.hpp"
@@ -40,10 +39,10 @@
 #include "runtime/handles.inline.hpp"
 #include "utilities/copy.hpp"
 
-inline instanceKlass* klassVtable::ik() const {
-  Klass* k = _klass()->klass_part();
-  assert(k->oop_is_instance(), "not an instanceKlass");
-  return (instanceKlass*)k;
+inline InstanceKlass* klassVtable::ik() const {
+  Klass* k = _klass();
+  assert(k->oop_is_instance(), "not an InstanceKlass");
+  return (InstanceKlass*)k;
 }
 
 
@@ -57,12 +56,12 @@
 // treated as any other public method in C for method over-ride purposes.
 void klassVtable::compute_vtable_size_and_num_mirandas(int &vtable_length,
                                                        int &num_miranda_methods,
-                                                       klassOop super,
-                                                       objArrayOop methods,
+                                                       Klass* super,
+                                                       Array<Method*>* methods,
                                                        AccessFlags class_flags,
                                                        Handle classloader,
                                                        Symbol* classname,
-                                                       objArrayOop local_interfaces,
+                                                       Array<Klass*>* local_interfaces,
                                                        TRAPS
                                                        ) {
 
@@ -73,14 +72,14 @@
   num_miranda_methods = 0;
 
   // start off with super's vtable length
-  instanceKlass* sk = (instanceKlass*)super->klass_part();
+  InstanceKlass* sk = (InstanceKlass*)super;
   vtable_length = super == NULL ? 0 : sk->vtable_length();
 
   // go thru each method in the methods table to see if it needs a new entry
   int len = methods->length();
   for (int i = 0; i < len; i++) {
-    assert(methods->obj_at(i)->is_method(), "must be a methodOop");
-    methodHandle mh(THREAD, methodOop(methods->obj_at(i)));
+    assert(methods->at(i)->is_method(), "must be a Method*");
+    methodHandle mh(THREAD, methods->at(i));
 
     if (needs_new_vtable_entry(mh, super, classloader, classname, class_flags, THREAD)) {
       vtable_length += vtableEntry::size(); // we need a new entry
@@ -112,7 +111,7 @@
   assert(vtable_length >= Universe::base_vtable_size(), "vtable too small");
 }
 
-int klassVtable::index_of(methodOop m, int len) const {
+int klassVtable::index_of(Method* m, int len) const {
   assert(m->vtable_index() >= 0, "do not ask this of non-vtable methods");
   return m->vtable_index();
 }
@@ -122,9 +121,9 @@
     return 0;
   } else {
     // copy methods from superKlass
-    // can't inherit from array class, so must be instanceKlass
+    // can't inherit from array class, so must be InstanceKlass
     assert(super->oop_is_instance(), "must be instance klass");
-    instanceKlass* sk = (instanceKlass*)super()->klass_part();
+    InstanceKlass* sk = (InstanceKlass*)super();
     klassVtable* superVtable = sk->vtable();
     assert(superVtable->length() <= _length, "vtable too short");
 #ifdef ASSERT
@@ -170,17 +169,17 @@
   if (klass()->oop_is_array()) {
     assert(super_vtable_len == _length, "arrays shouldn't introduce new methods");
   } else {
-    assert(_klass->oop_is_instance(), "must be instanceKlass");
+    assert(_klass->oop_is_instance(), "must be InstanceKlass");
 
-    objArrayHandle methods(THREAD, ik()->methods());
-    int len = methods()->length();
+    Array<Method*>* methods = ik()->methods();
+    int len = methods->length();
     int initialized = super_vtable_len;
 
     // update_inherited_vtable can stop for gc - ensure using handles
     for (int i = 0; i < len; i++) {
       HandleMark hm(THREAD);
-      assert(methods()->obj_at(i)->is_method(), "must be a methodOop");
-      methodHandle mh(THREAD, (methodOop)methods()->obj_at(i));
+      assert(methods->at(i)->is_method(), "must be a Method*");
+      methodHandle mh(THREAD, methods->at(i));
 
       bool needs_new_entry = update_inherited_vtable(ik(), mh, super_vtable_len, checkconstraints, CHECK);
 
@@ -209,14 +208,14 @@
 // For bytecodes not produced by javac together it is possible that a method does not override
 // the superclass's method, but might indirectly override a super-super class's vtable entry
 // If none found, return a null superk, else return the superk of the method this does override
-instanceKlass* klassVtable::find_transitive_override(instanceKlass* initialsuper, methodHandle target_method,
+InstanceKlass* klassVtable::find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method,
                             int vtable_index, Handle target_loader, Symbol* target_classname, Thread * THREAD) {
-  instanceKlass* superk = initialsuper;
+  InstanceKlass* superk = initialsuper;
   while (superk != NULL && superk->super() != NULL) {
-    instanceKlass* supersuperklass = instanceKlass::cast(superk->super());
+    InstanceKlass* supersuperklass = InstanceKlass::cast(superk->super());
     klassVtable* ssVtable = supersuperklass->vtable();
     if (vtable_index < ssVtable->length()) {
-      methodOop super_method = ssVtable->method_at(vtable_index);
+      Method* super_method = ssVtable->method_at(vtable_index);
 #ifndef PRODUCT
       Symbol* name= target_method()->name();
       Symbol* signature = target_method()->signature();
@@ -240,11 +239,11 @@
       }
     } else  {
       // super class has no vtable entry here, stop transitive search
-      superk = (instanceKlass*)NULL;
+      superk = (InstanceKlass*)NULL;
       break;
     }
     // if no override found yet, continue to search up
-    superk = instanceKlass::cast(superk->super());
+    superk = InstanceKlass::cast(superk->super());
   }
 
   return superk;
@@ -253,17 +252,17 @@
 
 // Update child's copy of super vtable for overrides
 // OR return true if a new vtable entry is required
-// Only called for instanceKlass's, i.e. not for arrays
+// Only called for InstanceKlass's, i.e. not for arrays
 // If that changed, could not use _klass as handle for klass
-bool klassVtable::update_inherited_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len,
+bool klassVtable::update_inherited_vtable(InstanceKlass* klass, methodHandle target_method, int super_vtable_len,
                   bool checkconstraints, TRAPS) {
   ResourceMark rm;
   bool allocate_new = true;
-  assert(klass->oop_is_instance(), "must be instanceKlass");
+  assert(klass->oop_is_instance(), "must be InstanceKlass");
 
   // Initialize the method's vtable index to "nonvirtual".
   // If we allocate a vtable entry, we will update it to a non-negative number.
-  target_method()->set_vtable_index(methodOopDesc::nonvirtual_vtable_index);
+  target_method()->set_vtable_index(Method::nonvirtual_vtable_index);
 
   // Static and <init> methods are never in
   if (target_method()->is_static() || target_method()->name() ==  vmSymbols::object_initializer_name()) {
@@ -296,20 +295,20 @@
 
   Symbol* name = target_method()->name();
   Symbol* signature = target_method()->signature();
-  Handle target_loader(THREAD, _klass->class_loader());
+  Handle target_loader(THREAD, _klass()->class_loader());
   Symbol*  target_classname = _klass->name();
   for(int i = 0; i < super_vtable_len; i++) {
-    methodOop super_method = method_at(i);
+    Method* super_method = method_at(i);
     // Check if method name matches
     if (super_method->name() == name && super_method->signature() == signature) {
 
       // get super_klass for method_holder for the found method
-      instanceKlass* super_klass =  instanceKlass::cast(super_method->method_holder());
+      InstanceKlass* super_klass =  InstanceKlass::cast(super_method->method_holder());
 
       if ((super_klass->is_override(super_method, target_loader, target_classname, THREAD)) ||
       ((klass->major_version() >= VTABLE_TRANSITIVE_OVERRIDE_VERSION)
         && ((super_klass = find_transitive_override(super_klass, target_method, i, target_loader,
-             target_classname, THREAD)) != (instanceKlass*)NULL))) {
+             target_classname, THREAD)) != (InstanceKlass*)NULL))) {
         // overriding, so no new entry
         allocate_new = false;
 
@@ -381,15 +380,13 @@
   return allocate_new;
 }
 
-void klassVtable::put_method_at(methodOop m, int index) {
-  assert(m->is_oop_or_null(), "Not an oop or null");
+void klassVtable::put_method_at(Method* m, int index) {
 #ifndef PRODUCT
   if (PrintVtables && Verbose) {
     ResourceMark rm;
     tty->print_cr("adding %s::%s at index %d", _klass->internal_name(),
       (m != NULL) ? m->name()->as_C_string() : "<NULL>", index);
   }
-  assert(unchecked_method_at(index)->is_oop_or_null(), "Not an oop or null");
 #endif
   table()[index].set(m);
 }
@@ -399,12 +396,12 @@
 // by "classloader" and "classname".
 // NOTE: The logic used here is very similar to the one used for computing
 // the vtables indices for a method. We cannot directly use that function because,
-// we allocate the instanceKlass at load time, and that requires that the
+// we allocate the InstanceKlass at load time, and that requires that the
 // superclass has been loaded.
 // However, the vtable entries are filled in at link time, and therefore
 // the superclass' vtable may not yet have been filled in.
 bool klassVtable::needs_new_vtable_entry(methodHandle target_method,
-                                         klassOop super,
+                                         Klass* super,
                                          Handle classloader,
                                          Symbol* classname,
                                          AccessFlags class_flags,
@@ -438,19 +435,19 @@
   ResourceMark rm;
   Symbol* name = target_method()->name();
   Symbol* signature = target_method()->signature();
-  klassOop k = super;
-  methodOop super_method = NULL;
-  instanceKlass *holder = NULL;
-  methodOop recheck_method =  NULL;
+  Klass* k = super;
+  Method* super_method = NULL;
+  InstanceKlass *holder = NULL;
+  Method* recheck_method =  NULL;
   while (k != NULL) {
     // lookup through the hierarchy for a method with matching name and sign.
-    super_method = instanceKlass::cast(k)->lookup_method(name, signature);
+    super_method = InstanceKlass::cast(k)->lookup_method(name, signature);
     if (super_method == NULL) {
       break; // we still have to search for a matching miranda method
     }
     // get the class holding the matching method
     // make sure you use that class for is_override
-    instanceKlass* superk = instanceKlass::cast(super_method->method_holder());
+    InstanceKlass* superk = InstanceKlass::cast(super_method->method_holder());
     // we want only instance method matches
     // pretend private methods are not in the super vtable
     // since we do override around them: e.g. a.m pub/b.m private/c.m pub,
@@ -473,7 +470,7 @@
   // miranda method in the super, whose entry it should re-use.
   // Actually, to handle cases that javac would not generate, we need
   // this check for all access permissions.
-  instanceKlass *sk = instanceKlass::cast(super);
+  InstanceKlass *sk = InstanceKlass::cast(super);
   if (sk->has_miranda_methods()) {
     if (sk->lookup_method_in_all_interfaces(name, signature) != NULL) {
       return false;  // found a matching miranda; we do not need a new entry
@@ -488,20 +485,20 @@
 int klassVtable::index_of_miranda(Symbol* name, Symbol* signature) {
   // search from the bottom, might be faster
   for (int i = (length() - 1); i >= 0; i--) {
-    methodOop m = table()[i].method();
+    Method* m = table()[i].method();
     if (is_miranda_entry_at(i) &&
         m->name() == name && m->signature() == signature) {
       return i;
     }
   }
-  return methodOopDesc::invalid_vtable_index;
+  return Method::invalid_vtable_index;
 }
 
 // check if an entry is miranda
 bool klassVtable::is_miranda_entry_at(int i) {
-  methodOop m = method_at(i);
-  klassOop method_holder = m->method_holder();
-  instanceKlass *mhk = instanceKlass::cast(method_holder);
+  Method* m = method_at(i);
+  Klass* method_holder = m->method_holder();
+  InstanceKlass *mhk = InstanceKlass::cast(method_holder);
 
   // miranda methods are interface methods in a class's vtable
   if (mhk->is_interface()) {
@@ -515,17 +512,17 @@
 
 // check if a method is a miranda method, given a class's methods table and it's super
 // the caller must make sure that the method belongs to an interface implemented by the class
-bool klassVtable::is_miranda(methodOop m, objArrayOop class_methods, klassOop super) {
+bool klassVtable::is_miranda(Method* m, Array<Method*>* class_methods, Klass* super) {
   Symbol* name = m->name();
   Symbol* signature = m->signature();
-  if (instanceKlass::find_method(class_methods, name, signature) == NULL) {
+  if (InstanceKlass::find_method(class_methods, name, signature) == NULL) {
     // did not find it in the method table of the current class
     if (super == NULL) {
       // super doesn't exist
       return true;
     }
 
-    methodOop mo = instanceKlass::cast(super)->lookup_method(name, signature);
+    Method* mo = InstanceKlass::cast(super)->lookup_method(name, signature);
     if (mo == NULL || mo->access_flags().is_private() ) {
       // super class hierarchy does not implement it or protection is different
       return true;
@@ -535,19 +532,19 @@
   return false;
 }
 
-void klassVtable::add_new_mirandas_to_list(GrowableArray<methodOop>* list_of_current_mirandas,
-                                           objArrayOop current_interface_methods,
-                                           objArrayOop class_methods,
-                                           klassOop super) {
+void klassVtable::add_new_mirandas_to_list(GrowableArray<Method*>* list_of_current_mirandas,
+                                           Array<Method*>* current_interface_methods,
+                                           Array<Method*>* class_methods,
+                                           Klass* super) {
   // iterate thru the current interface's method to see if it a miranda
   int num_methods = current_interface_methods->length();
   for (int i = 0; i < num_methods; i++) {
-    methodOop im = methodOop(current_interface_methods->obj_at(i));
+    Method* im = current_interface_methods->at(i);
     bool is_duplicate = false;
     int num_of_current_mirandas = list_of_current_mirandas->length();
     // check for duplicate mirandas in different interfaces we implement
     for (int j = 0; j < num_of_current_mirandas; j++) {
-      methodOop miranda = list_of_current_mirandas->at(j);
+      Method* miranda = list_of_current_mirandas->at(j);
       if ((im->name() == miranda->name()) &&
           (im->signature() == miranda->signature())) {
         is_duplicate = true;
@@ -557,7 +554,7 @@
 
     if (!is_duplicate) { // we don't want duplicate miranda entries in the vtable
       if (is_miranda(im, class_methods, super)) { // is it a miranda at all?
-        instanceKlass *sk = instanceKlass::cast(super);
+        InstanceKlass *sk = InstanceKlass::cast(super);
         // check if it is a duplicate of a super's miranda
         if (sk->lookup_method_in_all_interfaces(im->name(), im->signature()) == NULL) {
           list_of_current_mirandas->append(im);
@@ -567,30 +564,30 @@
   }
 }
 
-void klassVtable::get_mirandas(GrowableArray<methodOop>* mirandas,
-                               klassOop super, objArrayOop class_methods,
-                               objArrayOop local_interfaces) {
+void klassVtable::get_mirandas(GrowableArray<Method*>* mirandas,
+                               Klass* super, Array<Method*>* class_methods,
+                               Array<Klass*>* local_interfaces) {
   assert((mirandas->length() == 0) , "current mirandas must be 0");
 
   // iterate thru the local interfaces looking for a miranda
   int num_local_ifs = local_interfaces->length();
   for (int i = 0; i < num_local_ifs; i++) {
-    instanceKlass *ik = instanceKlass::cast(klassOop(local_interfaces->obj_at(i)));
+    InstanceKlass *ik = InstanceKlass::cast(local_interfaces->at(i));
     add_new_mirandas_to_list(mirandas, ik->methods(), class_methods, super);
     // iterate thru each local's super interfaces
-    objArrayOop super_ifs = ik->transitive_interfaces();
+    Array<Klass*>* super_ifs = ik->transitive_interfaces();
     int num_super_ifs = super_ifs->length();
     for (int j = 0; j < num_super_ifs; j++) {
-      instanceKlass *sik = instanceKlass::cast(klassOop(super_ifs->obj_at(j)));
+      InstanceKlass *sik = InstanceKlass::cast(super_ifs->at(j));
       add_new_mirandas_to_list(mirandas, sik->methods(), class_methods, super);
     }
   }
 }
 
 // get number of mirandas
-int klassVtable::get_num_mirandas(klassOop super, objArrayOop class_methods, objArrayOop local_interfaces) {
+int klassVtable::get_num_mirandas(Klass* super, Array<Method*>* class_methods, Array<Klass*>* local_interfaces) {
   ResourceMark rm;
-  GrowableArray<methodOop>* mirandas = new GrowableArray<methodOop>(20);
+  GrowableArray<Method*>* mirandas = new GrowableArray<Method*>(20);
   get_mirandas(mirandas, super, class_methods, local_interfaces);
   return mirandas->length();
 }
@@ -598,8 +595,8 @@
 // fill in mirandas
 void klassVtable::fill_in_mirandas(int& initialized) {
   ResourceMark rm;
-  GrowableArray<methodOop>* mirandas = new GrowableArray<methodOop>(20);
-  instanceKlass *this_ik = ik();
+  GrowableArray<Method*>* mirandas = new GrowableArray<Method*>(20);
+  InstanceKlass *this_ik = ik();
   get_mirandas(mirandas, this_ik->super(), this_ik->methods(), this_ik->local_interfaces());
   int num_mirandas = mirandas->length();
   for (int i = 0; i < num_mirandas; i++) {
@@ -612,12 +609,12 @@
   Copy::disjoint_words((HeapWord*)table(), (HeapWord*)start, _length * vtableEntry::size());
 }
 
-void klassVtable::adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
+void klassVtable::adjust_method_entries(Method** old_methods, Method** new_methods,
                                         int methods_length, bool * trace_name_printed) {
   // search the vtable for uses of either obsolete or EMCP methods
   for (int j = 0; j < methods_length; j++) {
-    methodOop old_method = old_methods[j];
-    methodOop new_method = new_methods[j];
+    Method* old_method = old_methods[j];
+    Method* new_method = new_methods[j];
 
     // In the vast majority of cases we could get the vtable index
     // by using:  old_method->vtable_index()
@@ -654,65 +651,11 @@
   return _length == 0 || table()[0].method() != NULL;
 }
 
-
-// Garbage collection
-void klassVtable::oop_follow_contents() {
-  int len = length();
-  for (int i = 0; i < len; i++) {
-    MarkSweep::mark_and_push(adr_method_at(i));
-  }
-}
-
-#ifndef SERIALGC
-void klassVtable::oop_follow_contents(ParCompactionManager* cm) {
-  int len = length();
-  for (int i = 0; i < len; i++) {
-    PSParallelCompact::mark_and_push(cm, adr_method_at(i));
-  }
-}
-#endif // SERIALGC
-
-void klassVtable::oop_adjust_pointers() {
-  int len = length();
-  for (int i = 0; i < len; i++) {
-    MarkSweep::adjust_pointer(adr_method_at(i));
-  }
-}
-
-#ifndef SERIALGC
-void klassVtable::oop_update_pointers(ParCompactionManager* cm) {
-  const int n = length();
-  for (int i = 0; i < n; i++) {
-    PSParallelCompact::adjust_pointer(adr_method_at(i));
-  }
-}
-#endif // SERIALGC
-
-// Iterators
-void klassVtable::oop_oop_iterate(OopClosure* blk) {
-  int len = length();
-  for (int i = 0; i < len; i++) {
-    blk->do_oop(adr_method_at(i));
-  }
-}
-
-void klassVtable::oop_oop_iterate_m(OopClosure* blk, MemRegion mr) {
-  int len = length();
-  int i;
-  for (i = 0; i < len; i++) {
-    if ((HeapWord*)adr_method_at(i) >= mr.start()) break;
-  }
-  for (; i < len; i++) {
-    oop* adr = adr_method_at(i);
-    if ((HeapWord*)adr < mr.end()) blk->do_oop(adr);
-  }
-}
-
 //-----------------------------------------------------------------------------------------
 // Itable code
 
 // Initialize a itableMethodEntry
-void itableMethodEntry::initialize(methodOop m) {
+void itableMethodEntry::initialize(Method* m) {
   if (m == NULL) return;
 
   _method = m;
@@ -725,10 +668,10 @@
     itableOffsetEntry* offset_entry = (itableOffsetEntry*)klass->start_of_itable();
     if (offset_entry  != NULL && offset_entry->interface_klass() != NULL) { // Check that itable is initialized
       // First offset entry points to the first method_entry
-      intptr_t* method_entry  = (intptr_t *)(((address)klass->as_klassOop()) + offset_entry->offset());
+      intptr_t* method_entry  = (intptr_t *)(((address)klass()) + offset_entry->offset());
       intptr_t* end         = klass->end_of_itable();
 
-      _table_offset      = (intptr_t*)offset_entry - (intptr_t*)klass->as_klassOop();
+      _table_offset      = (intptr_t*)offset_entry - (intptr_t*)klass();
       _size_offset_table = (method_entry - ((intptr_t*)offset_entry)) / itableOffsetEntry::size();
       _size_method_table = (end - method_entry)                  / itableMethodEntry::size();
       assert(_table_offset >= 0 && _size_offset_table >= 0 && _size_method_table >= 0, "wrong computation");
@@ -742,112 +685,6 @@
   _size_method_table = 0;
 }
 
-// Garbage Collection
-
-void klassItable::oop_follow_contents() {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    MarkSweep::mark_and_push((oop*)&ioe->_interface);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    MarkSweep::mark_and_push((oop*)&ime->_method);
-    ime++;
-  }
-}
-
-#ifndef SERIALGC
-void klassItable::oop_follow_contents(ParCompactionManager* cm) {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    PSParallelCompact::mark_and_push(cm, (oop*)&ioe->_interface);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    PSParallelCompact::mark_and_push(cm, (oop*)&ime->_method);
-    ime++;
-  }
-}
-#endif // SERIALGC
-
-void klassItable::oop_adjust_pointers() {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    MarkSweep::adjust_pointer((oop*)&ioe->_interface);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    MarkSweep::adjust_pointer((oop*)&ime->_method);
-    ime++;
-  }
-}
-
-#ifndef SERIALGC
-void klassItable::oop_update_pointers(ParCompactionManager* cm) {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    PSParallelCompact::adjust_pointer((oop*)&ioe->_interface);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    PSParallelCompact::adjust_pointer((oop*)&ime->_method);
-    ime++;
-  }
-}
-#endif // SERIALGC
-
-// Iterators
-void klassItable::oop_oop_iterate(OopClosure* blk) {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    blk->do_oop((oop*)&ioe->_interface);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    blk->do_oop((oop*)&ime->_method);
-    ime++;
-  }
-}
-
-void klassItable::oop_oop_iterate_m(OopClosure* blk, MemRegion mr) {
-  // offset table
-  itableOffsetEntry* ioe = offset_entry(0);
-  for(int i = 0; i < _size_offset_table; i++) {
-    oop* adr = (oop*)&ioe->_interface;
-    if (mr.contains(adr)) blk->do_oop(adr);
-    ioe++;
-  }
-
-  // method table
-  itableMethodEntry* ime = method_entry(0);
-  for(int j = 0; j < _size_method_table; j++) {
-    oop* adr = (oop*)&ime->_method;
-    if (mr.contains(adr)) blk->do_oop(adr);
-    ime++;
-  }
-}
-
-
 static int initialize_count = 0;
 
 // Initialization
@@ -870,6 +707,7 @@
     int i;
     for(i = 0; i < num_interfaces; i++) {
       itableOffsetEntry* ioe = offset_entry(i);
+      HandleMark hm(THREAD);
       KlassHandle interf_h (THREAD, ioe->interface_klass());
       assert(interf_h() != NULL && ioe->offset() != 0, "bad offset entry in itable");
       initialize_itable_for_interface(ioe->offset(), interf_h, checkconstraints, CHECK);
@@ -883,31 +721,31 @@
 
 
 void klassItable::initialize_itable_for_interface(int method_table_offset, KlassHandle interf_h, bool checkconstraints, TRAPS) {
-  objArrayHandle methods(THREAD, instanceKlass::cast(interf_h())->methods());
-  int nof_methods = methods()->length();
+  Array<Method*>* methods = InstanceKlass::cast(interf_h())->methods();
+  int nof_methods = methods->length();
   HandleMark hm;
   KlassHandle klass = _klass;
   assert(nof_methods > 0, "at least one method must exist for interface to be in vtable");
-  Handle interface_loader (THREAD, instanceKlass::cast(interf_h())->class_loader());
+  Handle interface_loader (THREAD, InstanceKlass::cast(interf_h())->class_loader());
   int ime_num = 0;
 
-  // Skip first methodOop if it is a class initializer
-  int i = ((methodOop)methods()->obj_at(0))->is_static_initializer() ? 1 : 0;
+  // Skip first Method* if it is a class initializer
+  int i = methods->at(0)->is_static_initializer() ? 1 : 0;
 
   // m, method_name, method_signature, klass reset each loop so they
   // don't need preserving across check_signature_loaders call
   // methods needs a handle in case of gc from check_signature_loaders
   for(; i < nof_methods; i++) {
-    methodOop m = (methodOop)methods()->obj_at(i);
+    Method* m = methods->at(i);
     Symbol* method_name = m->name();
     Symbol* method_signature = m->signature();
 
     // This is same code as in Linkresolver::lookup_instance_method_in_klasses
-    methodOop target = klass->uncached_lookup_method(method_name, method_signature);
+    Method* target = klass->uncached_lookup_method(method_name, method_signature);
     while (target != NULL && target->is_static()) {
       // continue with recursive lookup through the superclass
-      klassOop super = Klass::cast(target->method_holder())->super();
-      target = (super == NULL) ? methodOop(NULL) : Klass::cast(super)->uncached_lookup_method(method_name, method_signature);
+      Klass* super = Klass::cast(target->method_holder())->super();
+      target = (super == NULL) ? (Method*)NULL : Klass::cast(super)->uncached_lookup_method(method_name, method_signature);
     }
     if (target == NULL || !target->is_public() || target->is_abstract()) {
       // Entry do not resolve. Leave it empty
@@ -916,7 +754,7 @@
       // if checkconstraints requested
       methodHandle  target_h (THREAD, target); // preserve across gc
       if (checkconstraints) {
-        Handle method_holder_loader (THREAD, instanceKlass::cast(target->method_holder())->class_loader());
+        Handle method_holder_loader (THREAD, InstanceKlass::cast(target->method_holder())->class_loader());
         if (method_holder_loader() != interface_loader()) {
           ResourceMark rm(THREAD);
           char* failed_type_name =
@@ -935,7 +773,7 @@
             const char* loader1 = SystemDictionary::loader_name(method_holder_loader());
             char* current = klass->name()->as_C_string();
             const char* loader2 = SystemDictionary::loader_name(interface_loader());
-            char* iface = instanceKlass::cast(interf_h())->name()->as_C_string();
+            char* iface = InstanceKlass::cast(interf_h())->name()->as_C_string();
             size_t buflen = strlen(msg) + strlen(sig) + strlen(loader1) +
               strlen(current) + strlen(loader2) + strlen(iface) +
               strlen(failed_type_name);
@@ -955,8 +793,8 @@
   }
 }
 
-// Update entry for specific methodOop
-void klassItable::initialize_with_method(methodOop m) {
+// Update entry for specific Method*
+void klassItable::initialize_with_method(Method* m) {
   itableMethodEntry* ime = method_entry(0);
   for(int i = 0; i < _size_method_table; i++) {
     if (ime->method() == m) {
@@ -966,12 +804,12 @@
   }
 }
 
-void klassItable::adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
+void klassItable::adjust_method_entries(Method** old_methods, Method** new_methods,
                                         int methods_length, bool * trace_name_printed) {
   // search the itable for uses of either obsolete or EMCP methods
   for (int j = 0; j < methods_length; j++) {
-    methodOop old_method = old_methods[j];
-    methodOop new_method = new_methods[j];
+    Method* old_method = old_methods[j];
+    Method* new_method = new_methods[j];
     itableMethodEntry* ime = method_entry(0);
 
     // The itable can describe more than one interface and the same
@@ -994,7 +832,7 @@
             new_method->name()->as_C_string(),
             new_method->signature()->as_C_string()));
         }
-        break;
+        // Cannot break because there might be another entry for this method
       }
       ime++;
     }
@@ -1005,20 +843,20 @@
 // Setup
 class InterfaceVisiterClosure : public StackObj {
  public:
-  virtual void doit(klassOop intf, int method_count) = 0;
+  virtual void doit(Klass* intf, int method_count) = 0;
 };
 
 // Visit all interfaces with at-least one method (excluding <clinit>)
-void visit_all_interfaces(objArrayOop transitive_intf, InterfaceVisiterClosure *blk) {
+void visit_all_interfaces(Array<Klass*>* transitive_intf, InterfaceVisiterClosure *blk) {
   // Handle array argument
   for(int i = 0; i < transitive_intf->length(); i++) {
-    klassOop intf = (klassOop)transitive_intf->obj_at(i);
+    Klass* intf = transitive_intf->at(i);
     assert(Klass::cast(intf)->is_interface(), "sanity check");
 
     // Find no. of methods excluding a <clinit>
-    int method_count = instanceKlass::cast(intf)->methods()->length();
+    int method_count = InstanceKlass::cast(intf)->methods()->length();
     if (method_count > 0) {
-      methodOop m = (methodOop)instanceKlass::cast(intf)->methods()->obj_at(0);
+      Method* m = InstanceKlass::cast(intf)->methods()->at(0);
       assert(m != NULL && m->is_method(), "sanity check");
       if (m->name() == vmSymbols::object_initializer_name()) {
         method_count--;
@@ -1042,7 +880,7 @@
    int nof_methods() const    { return _nof_methods; }
    int nof_interfaces() const { return _nof_interfaces; }
 
-   void doit(klassOop intf, int method_count) { _nof_methods += method_count; _nof_interfaces++; }
+   void doit(Klass* intf, int method_count) { _nof_methods += method_count; _nof_interfaces++; }
 };
 
 class SetupItableClosure : public InterfaceVisiterClosure  {
@@ -1059,7 +897,7 @@
 
   itableMethodEntry* method_entry() const { return _method_entry; }
 
-  void doit(klassOop intf, int method_count) {
+  void doit(Klass* intf, int method_count) {
     int offset = ((address)_method_entry) - _klass_begin;
     _offset_entry->initialize(intf, offset);
     _offset_entry++;
@@ -1067,10 +905,10 @@
   }
 };
 
-int klassItable::compute_itable_size(objArrayHandle transitive_interfaces) {
+int klassItable::compute_itable_size(Array<Klass*>* transitive_interfaces) {
   // Count no of interfaces and total number of interface methods
   CountInterfacesClosure cic;
-  visit_all_interfaces(transitive_interfaces(), &cic);
+  visit_all_interfaces(transitive_interfaces, &cic);
 
   // There's alway an extra itable entry so we can null-terminate it.
   int itable_size = calc_itable_size(cic.nof_interfaces() + 1, cic.nof_methods());
@@ -1096,7 +934,7 @@
   // Add one extra entry so we can null-terminate the table
   nof_interfaces++;
 
-  assert(compute_itable_size(objArrayHandle(klass->transitive_interfaces())) ==
+  assert(compute_itable_size(klass->transitive_interfaces()) ==
          calc_itable_size(nof_interfaces, nof_methods),
          "mismatch calculation of itable size");
 
@@ -1108,7 +946,7 @@
   assert((oop*)(end) == (oop*)(ime + nof_methods),                      "wrong offset calculation (2)");
 
   // Visit all interfaces and initialize itable offset table
-  SetupItableClosure sic((address)klass->as_klassOop(), ioe, ime);
+  SetupItableClosure sic((address)klass(), ioe, ime);
   visit_all_interfaces(klass->transitive_interfaces(), &sic);
 
 #ifdef ASSERT
@@ -1120,17 +958,17 @@
 
 
 // m must be a method in an interface
-int klassItable::compute_itable_index(methodOop m) {
-  klassOop intf = m->method_holder();
-  assert(instanceKlass::cast(intf)->is_interface(), "sanity check");
-  objArrayOop methods = instanceKlass::cast(intf)->methods();
+int klassItable::compute_itable_index(Method* m) {
+  Klass* intf = m->method_holder();
+  assert(InstanceKlass::cast(intf)->is_interface(), "sanity check");
+  Array<Method*>* methods = InstanceKlass::cast(intf)->methods();
   int index = 0;
-  while(methods->obj_at(index) != m) {
+  while(methods->at(index) != m) {
     index++;
     assert(index < methods->length(), "should find index for resolve_invoke");
   }
   // Adjust for <clinit>, which is left out of table if first method
-  if (methods->length() > 0 && ((methodOop)methods->obj_at(0))->is_static_initializer()) {
+  if (methods->length() > 0 && methods->at(0)->is_static_initializer()) {
     index--;
   }
   return index;
@@ -1138,20 +976,20 @@
 
 
 // inverse to compute_itable_index
-methodOop klassItable::method_for_itable_index(klassOop intf, int itable_index) {
-  assert(instanceKlass::cast(intf)->is_interface(), "sanity check");
-  objArrayOop methods = instanceKlass::cast(intf)->methods();
+Method* klassItable::method_for_itable_index(Klass* intf, int itable_index) {
+  assert(InstanceKlass::cast(intf)->is_interface(), "sanity check");
+  Array<Method*>* methods = InstanceKlass::cast(intf)->methods();
 
   int index = itable_index;
   // Adjust for <clinit>, which is left out of table if first method
-  if (methods->length() > 0 && ((methodOop)methods->obj_at(0))->is_static_initializer()) {
+  if (methods->length() > 0 && methods->at(0)->is_static_initializer()) {
     index++;
   }
 
   if (itable_index < 0 || index >= methods->length())
     return NULL;                // help caller defend against bad indexes
 
-  methodOop m = (methodOop)methods->obj_at(index);
+  Method* m = methods->at(index);
   assert(compute_itable_index(m) == itable_index, "correct inverse");
 
   return m;
@@ -1174,9 +1012,9 @@
 
   for (int i = 0; i < _length; i++) table()[i].verify(this, st);
   // verify consistency with superKlass vtable
-  klassOop super = _klass->super();
+  Klass* super = _klass->super();
   if (super != NULL) {
-    instanceKlass* sk = instanceKlass::cast(super);
+    InstanceKlass* sk = InstanceKlass::cast(super);
     klassVtable* vt = sk->vtable();
     for (int i = 0; i < vt->length(); i++) {
       verify_against(st, vt, i);
@@ -1238,8 +1076,8 @@
   static int entries;                   // total bytes consumed by vtable entries
   static int array_entries;             // total bytes consumed by array vtable entries
 
-  static void do_class(klassOop k) {
-    Klass* kl = k->klass_part();
+  static void do_class(Klass* k) {
+    Klass* kl = k;
     klassVtable* vt = kl->vtable();
     if (vt == NULL) return;
     no_klasses++;
@@ -1258,7 +1096,7 @@
     SystemDictionary::classes_do(do_class);
     fixed  = no_klasses * oopSize;      // vtable length
     // filler size is a conservative approximation
-    filler = oopSize * (no_klasses - no_instance_klasses) * (sizeof(instanceKlass) - sizeof(arrayKlass) - 1);
+    filler = oopSize * (no_klasses - no_instance_klasses) * (sizeof(InstanceKlass) - sizeof(arrayKlass) - 1);
     entries = sizeof(vtableEntry) * sum_of_vtable_len;
     array_entries = sizeof(vtableEntry) * sum_of_array_vtable_len;
   }
@@ -1290,9 +1128,9 @@
 bool klassVtable::check_no_old_entries() {
   // Check that there really is no entry
   for (int i = 0; i < length(); i++) {
-    methodOop m = unchecked_method_at(i);
+    Method* m = unchecked_method_at(i);
     if (m != NULL) {
-        if (m->is_old()) {
+        if (!m->is_valid() || m->is_old()) {
             return false;
         }
     }
@@ -1303,7 +1141,7 @@
 void klassVtable::dump_vtable() {
   tty->print_cr("vtable dump --");
   for (int i = 0; i < length(); i++) {
-    methodOop m = unchecked_method_at(i);
+    Method* m = unchecked_method_at(i);
     if (m != NULL) {
       tty->print("      (%5d)  ", i);
       m->access_flags().print_on(tty);
@@ -1314,6 +1152,16 @@
   }
 }
 
+bool klassItable::check_no_old_entries() {
+  itableMethodEntry* ime = method_entry(0);
+  for(int i = 0; i < _size_method_table; i++) {
+    Method* m = ime->method();
+    if (m != NULL && (!m->is_valid() || m->is_old())) return false;
+    ime++;
+  }
+  return true;
+}
+
 int  klassItable::_total_classes;   // Total no. of classes with itables
 long klassItable::_total_size;      // Total no. of bytes used for itables
 
--- a/src/share/vm/oops/klassVtable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/klassVtable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -30,7 +30,7 @@
 #include "runtime/handles.hpp"
 #include "utilities/growableArray.hpp"
 
-// A klassVtable abstracts the variable-length vtable that is embedded in instanceKlass
+// A klassVtable abstracts the variable-length vtable that is embedded in InstanceKlass
 // and arrayKlass.  klassVtable objects are used just as convenient transient accessors to the vtable,
 // not to actually hold the vtable data.
 // Note: the klassVtable should not be accessed before the class has been verified
@@ -65,12 +65,12 @@
   vtableEntry* table() const      { return (vtableEntry*)(address(_klass()) + _tableOffset); }
   KlassHandle klass() const       { return _klass;  }
   int length() const              { return _length; }
-  inline methodOop method_at(int i) const;
-  inline methodOop unchecked_method_at(int i) const;
-  inline oop*      adr_method_at(int i) const;
+  inline Method* method_at(int i) const;
+  inline Method* unchecked_method_at(int i) const;
+  inline Method** adr_method_at(int i) const;
 
   // searching; all methods return -1 if not found
-  int index_of(methodOop m) const                         { return index_of(m, _length); }
+  int index_of(Method* m) const                         { return index_of(m, _length); }
   int index_of_miranda(Symbol* name, Symbol* signature);
 
   void initialize_vtable(bool checkconstraints, TRAPS);   // initialize vtable of a new klass
@@ -85,9 +85,9 @@
 
   // computes vtable length (in words) and the number of miranda methods
   static void compute_vtable_size_and_num_mirandas(int &vtable_length, int &num_miranda_methods,
-                                                   klassOop super, objArrayOop methods,
+                                                   Klass* super, Array<Method*>* methods,
                                                    AccessFlags class_flags, Handle classloader,
-                                                   Symbol* classname, objArrayOop local_interfaces,
+                                                   Symbol* classname, Array<Klass*>* local_interfaces,
                                                    TRAPS);
 
   // RedefineClasses() API support:
@@ -96,23 +96,9 @@
   // trace_name_printed is set to true if the current call has
   // printed the klass name so that other routines in the adjust_*
   // group don't print the klass name.
-  void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
+  void adjust_method_entries(Method** old_methods, Method** new_methods,
                              int methods_length, bool * trace_name_printed);
 
-  // Garbage collection
-  void oop_follow_contents();
-  void oop_adjust_pointers();
-
-#ifndef SERIALGC
-  // Parallel Old
-  void oop_follow_contents(ParCompactionManager* cm);
-  void oop_update_pointers(ParCompactionManager* cm);
-#endif // SERIALGC
-
-  // Iterators
-  void oop_oop_iterate(OopClosure* blk);
-  void oop_oop_iterate_m(OopClosure* blk, MemRegion mr);
-
   // Debugging code
   void print()                                              PRODUCT_RETURN;
   void verify(outputStream* st, bool force = false);
@@ -129,25 +115,25 @@
   enum { VTABLE_TRANSITIVE_OVERRIDE_VERSION = 51 } ;
   void copy_vtable_to(vtableEntry* start);
   int  initialize_from_super(KlassHandle super);
-  int  index_of(methodOop m, int len) const; // same as index_of, but search only up to len
-  void put_method_at(methodOop m, int index);
-  static bool needs_new_vtable_entry(methodHandle m, klassOop super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS);
+  int  index_of(Method* m, int len) const; // same as index_of, but search only up to len
+  void put_method_at(Method* m, int index);
+  static bool needs_new_vtable_entry(methodHandle m, Klass* super, Handle classloader, Symbol* classname, AccessFlags access_flags, TRAPS);
 
-  bool update_inherited_vtable(instanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS);
- instanceKlass* find_transitive_override(instanceKlass* initialsuper, methodHandle target_method, int vtable_index,
+  bool update_inherited_vtable(InstanceKlass* klass, methodHandle target_method, int super_vtable_len, bool checkconstraints, TRAPS);
+ InstanceKlass* find_transitive_override(InstanceKlass* initialsuper, methodHandle target_method, int vtable_index,
                                          Handle target_loader, Symbol* target_classname, Thread* THREAD);
 
   // support for miranda methods
   bool is_miranda_entry_at(int i);
   void fill_in_mirandas(int& initialized);
-  static bool is_miranda(methodOop m, objArrayOop class_methods, klassOop super);
-  static void add_new_mirandas_to_list(GrowableArray<methodOop>* list_of_current_mirandas, objArrayOop current_interface_methods, objArrayOop class_methods, klassOop super);
-  static void get_mirandas(GrowableArray<methodOop>* mirandas, klassOop super, objArrayOop class_methods, objArrayOop local_interfaces);
-  static int get_num_mirandas(klassOop super, objArrayOop class_methods, objArrayOop local_interfaces);
+  static bool is_miranda(Method* m, Array<Method*>* class_methods, Klass* super);
+  static void add_new_mirandas_to_list(GrowableArray<Method*>* list_of_current_mirandas, Array<Method*>* current_interface_methods, Array<Method*>* class_methods, Klass* super);
+  static void get_mirandas(GrowableArray<Method*>* mirandas, Klass* super, Array<Method*>* class_methods, Array<Klass*>* local_interfaces);
+  static int get_num_mirandas(Klass* super, Array<Method*>* class_methods, Array<Klass*>* local_interfaces);
 
 
   void verify_against(outputStream* st, klassVtable* vt, int index);
-  inline instanceKlass* ik() const;
+  inline InstanceKlass* ik() const;
 };
 
 
@@ -166,11 +152,11 @@
     return sizeof(vtableEntry) / sizeof(HeapWord);
   }
   static int method_offset_in_bytes() { return offset_of(vtableEntry, _method); }
-  methodOop method() const    { return _method; }
+  Method* method() const    { return _method; }
 
  private:
-  methodOop _method;
-  void set(methodOop method)  { assert(method != NULL, "use clear"); _method = method; }
+  Method* _method;
+  void set(Method* method)  { assert(method != NULL, "use clear"); _method = method; }
   void clear()                { _method = NULL; }
   void print()                                        PRODUCT_RETURN;
   void verify(klassVtable* vt, outputStream* st);
@@ -179,22 +165,22 @@
 };
 
 
-inline methodOop klassVtable::method_at(int i) const {
+inline Method* klassVtable::method_at(int i) const {
   assert(i >= 0 && i < _length, "index out of bounds");
   assert(table()[i].method() != NULL, "should not be null");
-  assert(oop(table()[i].method())->is_method(), "should be method");
+  assert(((Metadata*)table()[i].method())->is_method(), "should be method");
   return table()[i].method();
 }
 
-inline methodOop klassVtable::unchecked_method_at(int i) const {
+inline Method* klassVtable::unchecked_method_at(int i) const {
   assert(i >= 0 && i < _length, "index out of bounds");
   return table()[i].method();
 }
 
-inline oop* klassVtable::adr_method_at(int i) const {
+inline Method** klassVtable::adr_method_at(int i) const {
   // Allow one past the last entry to be referenced; useful for loop bounds.
   assert(i >= 0 && i <= _length, "index out of bounds");
-  return (oop*)(address(table() + i) + vtableEntry::method_offset_in_bytes());
+  return (Method**)(address(table() + i) + vtableEntry::method_offset_in_bytes());
 }
 
 // --------------------------------------------------------------------------------
@@ -203,16 +189,16 @@
 
 class itableOffsetEntry VALUE_OBJ_CLASS_SPEC {
  private:
-  klassOop _interface;
+  Klass* _interface;
   int      _offset;
  public:
-  klassOop interface_klass() const { return _interface; }
+  Klass* interface_klass() const { return _interface; }
   int      offset() const          { return _offset; }
 
-  static itableMethodEntry* method_entry(klassOop k, int offset) { return (itableMethodEntry*)(((address)k) + offset); }
-  itableMethodEntry* first_method_entry(klassOop k)              { return method_entry(k, _offset); }
+  static itableMethodEntry* method_entry(Klass* k, int offset) { return (itableMethodEntry*)(((address)k) + offset); }
+  itableMethodEntry* first_method_entry(Klass* k)              { return method_entry(k, _offset); }
 
-  void initialize(klassOop interf, int offset) { _interface = interf; _offset = offset; }
+  void initialize(Klass* interf, int offset) { _interface = interf; _offset = offset; }
 
   // Static size and offset accessors
   static int size()                       { return sizeof(itableOffsetEntry) / HeapWordSize; }    // size in words
@@ -225,14 +211,14 @@
 
 class itableMethodEntry VALUE_OBJ_CLASS_SPEC {
  private:
-  methodOop _method;
+  Method* _method;
 
  public:
-  methodOop method() const { return _method; }
+  Method* method() const { return _method; }
 
   void clear()             { _method = NULL; }
 
-  void initialize(methodOop method);
+  void initialize(Method* method);
 
   // Static size and offset accessors
   static int size()                         { return sizeof(itableMethodEntry) / HeapWordSize; }  // size in words
@@ -245,16 +231,16 @@
 // Format of an itable
 //
 //    ---- offset table ---
-//    klassOop of interface 1             \
+//    Klass* of interface 1             \
 //    offset to vtable from start of oop  / offset table entry
 //    ...
-//    klassOop of interface n             \
+//    Klass* of interface n             \
 //    offset to vtable from start of oop  / offset table entry
 //    --- vtable for interface 1 ---
-//    methodOop                           \
+//    Method*                             \
 //    compiler entry point                / method table entry
 //    ...
-//    methodOop                           \
+//    Method*                             \
 //    compiler entry point                / method table entry
 //    -- vtable for interface 2 ---
 //    ...
@@ -282,7 +268,7 @@
   void initialize_itable(bool checkconstraints, TRAPS);
 
   // Updates
-  void initialize_with_method(methodOop m);
+  void initialize_with_method(Method* m);
 
   // RedefineClasses() API support:
   // if any entry of this itable points to any of old_methods,
@@ -290,31 +276,17 @@
   // trace_name_printed is set to true if the current call has
   // printed the klass name so that other routines in the adjust_*
   // group don't print the klass name.
-  void adjust_method_entries(methodOop* old_methods, methodOop* new_methods,
+  void adjust_method_entries(Method** old_methods, Method** new_methods,
                              int methods_length, bool * trace_name_printed);
 
-  // Garbage collection
-  void oop_follow_contents();
-  void oop_adjust_pointers();
-
-#ifndef SERIALGC
-  // Parallel Old
-  void oop_follow_contents(ParCompactionManager* cm);
-  void oop_update_pointers(ParCompactionManager* cm);
-#endif // SERIALGC
-
-  // Iterators
-  void oop_oop_iterate(OopClosure* blk);
-  void oop_oop_iterate_m(OopClosure* blk, MemRegion mr);
-
   // Setup of itable
-  static int compute_itable_size(objArrayHandle transitive_interfaces);
+  static int compute_itable_size(Array<Klass*>* transitive_interfaces);
   static void setup_itable_offset_table(instanceKlassHandle klass);
 
   // Resolving of method to index
-  static int compute_itable_index(methodOop m);
+  static int compute_itable_index(Method* m);
   // ...and back again:
-  static methodOop method_for_itable_index(klassOop klass, int itable_index);
+  static Method* method_for_itable_index(Klass* klass, int itable_index);
 
   // Debugging/Statistics
   static void print_statistics() PRODUCT_RETURN;
@@ -330,6 +302,11 @@
   NOT_PRODUCT(static long _total_size;)      // Total no. of bytes used for itables
 
   static void update_stats(int size) PRODUCT_RETURN NOT_PRODUCT({ _total_classes++; _total_size += size; })
+
+ public:
+#ifndef PRODUCT
+  bool check_no_old_entries();
+#endif
 };
 
 #endif // SHARE_VM_OOPS_KLASSVTABLE_HPP
--- a/src/share/vm/oops/markOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/markOop.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -50,32 +50,3 @@
     st->print("age %d)", age());
   }
 }
-
-
-// Give advice about whether the oop that contains this markOop
-// should be cached or not.
-bool markOopDesc::should_not_be_cached() const {
-  // the cast is because decode_pointer() isn't marked const
-  if (is_marked() && ((markOopDesc *)this)->decode_pointer() != NULL) {
-    // If the oop containing this markOop is being forwarded, then
-    // we are in the middle of GC and we do not want the containing
-    // oop to be added to a cache. We have no way of knowing whether
-    // the cache has already been visited by the current GC phase so
-    // we don't know whether the forwarded oop will be properly
-    // processed in this phase. If the forwarded oop is not properly
-    // processed, then we'll see strange crashes or asserts during
-    // the next GC run because the markOop will contain an unexpected
-    // value.
-    //
-    // This situation has been seen when we are GC'ing a methodOop
-    // because we use the methodOop while we're GC'ing it. Scary
-    // stuff. Some of the uses the methodOop cause the methodOop to
-    // be added to the OopMapCache in the instanceKlass as a side
-    // effect. This check lets the cache maintainer know when a
-    // cache addition would not be safe.
-    return true;
-  }
-
-  // caching the containing oop should be just fine
-  return false;
-}
--- a/src/share/vm/oops/markOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/markOop.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -261,9 +261,9 @@
   // Should this header be preserved during a scavenge where CMS is
   // the old generation?
   // (This is basically the same body as must_be_preserved_for_promotion_failure(),
-  // but takes the klassOop as argument instead)
-  inline bool must_be_preserved_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const;
-  inline bool must_be_preserved_with_bias_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const;
+  // but takes the Klass* as argument instead)
+  inline bool must_be_preserved_for_cms_scavenge(Klass* klass_of_obj_containing_mark) const;
+  inline bool must_be_preserved_with_bias_for_cms_scavenge(Klass* klass_of_obj_containing_mark) const;
 
   // WARNING: The following routines are used EXCLUSIVELY by
   // synchronization functions. They are not really gc safe.
@@ -331,6 +331,7 @@
 
   // age operations
   markOop set_marked()   { return markOop((value() & ~lock_mask_in_place) | marked_value); }
+  markOop set_unmarked() { return markOop((value() & ~lock_mask_in_place) | unlocked_value); }
 
   int     age()               const { return mask_bits(value() >> age_shift, age_mask); }
   markOop set_age(int v) const {
@@ -365,9 +366,6 @@
   // Recover address of oop from encoded form used in mark
   inline void* decode_pointer() { if (UseBiasedLocking && has_bias_pattern()) return NULL; return clear_lock_bits(); }
 
-  // see the definition in markOop.cpp for the gory details
-  bool should_not_be_cached() const;
-
   // These markOops indicate cms free chunk blocks and not objects.
   // In 64 bit, the markOop is set to distinguish them from oops.
   // These are defined in 32 bit mode for vmStructs.
--- a/src/share/vm/oops/markOop.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/markOop.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 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
@@ -26,7 +26,6 @@
 #define SHARE_VM_OOPS_MARKOOP_INLINE_HPP
 
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/markOop.hpp"
 #include "runtime/globals.hpp"
 
@@ -84,20 +83,20 @@
 
 
 // Same as must_be_preserved_with_bias_for_promotion_failure() except that
-// it takes a klassOop argument, instead of the object of which this is the mark word.
-inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
+// it takes a Klass* argument, instead of the object of which this is the mark word.
+inline bool markOopDesc::must_be_preserved_with_bias_for_cms_scavenge(Klass* klass_of_obj_containing_mark) const {
   assert(UseBiasedLocking, "unexpected");
   // CMS scavenges preserve mark words in similar fashion to promotion failures; see above
   if (has_bias_pattern() ||
-      klass_of_obj_containing_mark->klass_part()->prototype_header()->has_bias_pattern()) {
+      klass_of_obj_containing_mark->prototype_header()->has_bias_pattern()) {
     return true;
   }
   return (!is_unlocked() || !has_no_hash());
 }
 
 // Same as must_be_preserved_for_promotion_failure() except that
-// it takes a klassOop argument, instead of the object of which this is the mark word.
-inline bool markOopDesc::must_be_preserved_for_cms_scavenge(klassOop klass_of_obj_containing_mark) const {
+// it takes a Klass* argument, instead of the object of which this is the mark word.
+inline bool markOopDesc::must_be_preserved_for_cms_scavenge(Klass* klass_of_obj_containing_mark) const {
   if (!UseBiasedLocking)
     return (!is_unlocked() || !has_no_hash());
   return must_be_preserved_with_bias_for_cms_scavenge(klass_of_obj_containing_mark);
@@ -105,10 +104,10 @@
 
 inline markOop markOopDesc::prototype_for_object(oop obj) {
 #ifdef ASSERT
-  markOop prototype_header = obj->klass()->klass_part()->prototype_header();
+  markOop prototype_header = obj->klass()->prototype_header();
   assert(prototype_header == prototype() || prototype_header->has_bias_pattern(), "corrupt prototype header");
 #endif
-  return obj->klass()->klass_part()->prototype_header();
+  return obj->klass()->prototype_header();
 }
 
 #endif // SHARE_VM_OOPS_MARKOOP_INLINE_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/metadata.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "oops/metadata.hpp"
+#include "memory/metaspace.hpp"
+#include "memory/resourceArea.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+
+void Metadata::set_on_stack(const bool value) {
+  // nothing to set for most metadata
+  // Can't inline because this materializes the vtable on some C++ compilers.
+}
+
+void Metadata::print_on(outputStream* st) const {
+  ResourceMark rm;
+  // print title
+  st->print("%s", internal_name());
+  print_address_on(st);
+  st->cr();
+}
+
+char* Metadata::print_value_string() const {
+  char buf[100];
+  stringStream st(buf, sizeof(buf));
+  if (this == NULL) {
+    st.print("NULL");
+  } else {
+    print_value_on(&st);
+  }
+  return st.as_string();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/metadata.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2011, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_METADATA_HPP
+#define SHARE_VM_OOPS_METADATA_HPP
+
+#include "utilities/exceptions.hpp"
+#include "utilities/globalDefinitions.hpp"
+#include "utilities/ostream.hpp"
+
+// This is the base class for an internal Class related metadata
+class Metadata : public MetaspaceObj {
+  // Debugging hook to check that the metadata has not been deleted.
+  NOT_PRODUCT(int _valid;)
+ public:
+  NOT_PRODUCT(Metadata()     { _valid = 0; })
+  NOT_PRODUCT(bool is_valid() const volatile { return _valid == 0; })
+
+  int identity_hash()                { return (int)(uintptr_t)this; }
+
+  // Rehashing support for tables containing pointers to this
+  unsigned int new_hash(jint seed)   { ShouldNotReachHere();  return 0; }
+
+  virtual bool is_klass()              const volatile { return false; }
+  virtual bool is_method()             const volatile { return false; }
+  virtual bool is_methodData()         const volatile { return false; }
+  virtual bool is_constantPool()       const volatile { return false; }
+
+  virtual const char* internal_name()  const = 0;
+
+  void print()       const { print_on(tty); }
+  void print_value() const { print_value_on(tty); }
+
+  void print_maybe_null() const { print_on_maybe_null(tty); }
+  void print_on_maybe_null(outputStream* st) const {
+    if (this == NULL)
+      st->print("NULL");
+    else
+      print_on(tty);
+  }
+  void print_value_on_maybe_null(outputStream* st) const {
+    if (this == NULL)
+      st->print("NULL");
+    else
+      print_value_on(tty);
+  }
+
+  virtual void print_on(outputStream* st) const;       // First level print
+  virtual void print_value_on(outputStream* st) const = 0; // Second level print
+
+  char* print_value_string() const;
+
+  // Used to keep metadata alive during class redefinition
+  // Can't assert because is called for delete functions (as an assert)
+  virtual bool on_stack() const { return false; }
+  virtual void set_on_stack(const bool value);
+
+  // Set on_stack bit, so that the metadata is not cleared
+  // during class redefinition.  This is a virtual call because only methods
+  // and constant pools need to be set, but someday instanceKlasses might also.
+  static void mark_on_stack(Metadata* m) { m->set_on_stack(true); }
+};
+
+#endif // SHARE_VM_OOPS_METADATA_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/method.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,1897 @@
+/*
+ * 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "code/debugInfoRec.hpp"
+#include "gc_interface/collectedHeap.inline.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/bytecodeTracer.hpp"
+#include "interpreter/bytecodes.hpp"
+#include "interpreter/interpreter.hpp"
+#include "interpreter/oopMapCache.hpp"
+#include "memory/gcLocker.hpp"
+#include "memory/generation.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/oopFactory.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
+#include "oops/oop.inline.hpp"
+#include "oops/symbol.hpp"
+#include "prims/jvmtiExport.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "prims/methodHandles.hpp"
+#include "prims/nativeLookup.hpp"
+#include "runtime/arguments.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/frame.inline.hpp"
+#include "runtime/handles.inline.hpp"
+#include "runtime/relocator.hpp"
+#include "runtime/sharedRuntime.hpp"
+#include "runtime/signature.hpp"
+#include "utilities/quickSort.hpp"
+#include "utilities/xmlstream.hpp"
+
+
+// Implementation of Method
+
+Method* Method::allocate(ClassLoaderData* loader_data,
+                            int byte_code_size,
+                            AccessFlags access_flags,
+                            int compressed_line_number_size,
+                            int localvariable_table_length,
+                            int exception_table_length,
+                            int checked_exceptions_length,
+                            TRAPS) {
+  assert(!access_flags.is_native() || byte_code_size == 0,
+         "native methods should not contain byte codes");
+  ConstMethod* cm = ConstMethod::allocate(loader_data,
+                                      byte_code_size,
+                                      compressed_line_number_size,
+                                      localvariable_table_length,
+                                      exception_table_length,
+                                      checked_exceptions_length,
+                                      CHECK_NULL);
+
+  int size = Method::size(access_flags.is_native());
+
+  return new (loader_data, size, false, THREAD) Method(cm, access_flags, size);
+}
+
+Method::Method(ConstMethod* xconst,
+                             AccessFlags access_flags, int size) {
+  No_Safepoint_Verifier no_safepoint;
+  set_constMethod(xconst);
+  set_access_flags(access_flags);
+  set_method_size(size);
+  set_name_index(0);
+  set_signature_index(0);
+#ifdef CC_INTERP
+  set_result_index(T_VOID);
+#endif
+  set_constants(NULL);
+  set_max_stack(0);
+  set_max_locals(0);
+  set_intrinsic_id(vmIntrinsics::_none);
+  set_jfr_towrite(false);
+  set_method_data(NULL);
+  set_interpreter_throwout_count(0);
+  set_vtable_index(Method::garbage_vtable_index);
+
+  // Fix and bury in Method*
+  set_interpreter_entry(NULL); // sets i2i entry and from_int
+  set_adapter_entry(NULL);
+  clear_code(); // from_c/from_i get set to c2i/i2i
+
+  if (access_flags.is_native()) {
+    clear_native_function();
+    set_signature_handler(NULL);
+  }
+
+  NOT_PRODUCT(set_compiled_invocation_count(0);)
+  set_interpreter_invocation_count(0);
+  invocation_counter()->init();
+  backedge_counter()->init();
+  clear_number_of_breakpoints();
+
+#ifdef TIERED
+  set_rate(0);
+  set_prev_event_count(0);
+  set_prev_time(0);
+#endif
+}
+
+// Release Method*.  The nmethod will be gone when we get here because
+// we've walked the code cache.
+void Method::deallocate_contents(ClassLoaderData* loader_data) {
+  MetadataFactory::free_metadata(loader_data, constMethod());
+  set_constMethod(NULL);
+  MetadataFactory::free_metadata(loader_data, method_data());
+  set_method_data(NULL);
+  // The nmethod will be gone when we get here.
+  if (code() != NULL) _code = NULL;
+}
+
+address Method::get_i2c_entry() {
+  assert(_adapter != NULL, "must have");
+  return _adapter->get_i2c_entry();
+}
+
+address Method::get_c2i_entry() {
+  assert(_adapter != NULL, "must have");
+  return _adapter->get_c2i_entry();
+}
+
+address Method::get_c2i_unverified_entry() {
+  assert(_adapter != NULL, "must have");
+  return _adapter->get_c2i_unverified_entry();
+}
+
+char* Method::name_and_sig_as_C_string() const {
+  return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature());
+}
+
+char* Method::name_and_sig_as_C_string(char* buf, int size) const {
+  return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature(), buf, size);
+}
+
+char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) {
+  const char* klass_name = klass->external_name();
+  int klass_name_len  = (int)strlen(klass_name);
+  int method_name_len = method_name->utf8_length();
+  int len             = klass_name_len + 1 + method_name_len + signature->utf8_length();
+  char* dest          = NEW_RESOURCE_ARRAY(char, len + 1);
+  strcpy(dest, klass_name);
+  dest[klass_name_len] = '.';
+  strcpy(&dest[klass_name_len + 1], method_name->as_C_string());
+  strcpy(&dest[klass_name_len + 1 + method_name_len], signature->as_C_string());
+  dest[len] = 0;
+  return dest;
+}
+
+char* Method::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size) {
+  Symbol* klass_name = klass->name();
+  klass_name->as_klass_external_name(buf, size);
+  int len = (int)strlen(buf);
+
+  if (len < size - 1) {
+    buf[len++] = '.';
+
+    method_name->as_C_string(&(buf[len]), size - len);
+    len = (int)strlen(buf);
+
+    signature->as_C_string(&(buf[len]), size - len);
+  }
+
+  return buf;
+}
+
+int  Method::fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS) {
+  // exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index)
+  // access exception table
+  ExceptionTable table(this);
+  int length = table.length();
+  // iterate through all entries sequentially
+  constantPoolHandle pool(THREAD, constants());
+  for (int i = 0; i < length; i ++) {
+    //reacquire the table in case a GC happened
+    ExceptionTable table(this);
+    int beg_bci = table.start_pc(i);
+    int end_bci = table.end_pc(i);
+    assert(beg_bci <= end_bci, "inconsistent exception table");
+    if (beg_bci <= throw_bci && throw_bci < end_bci) {
+      // exception handler bci range covers throw_bci => investigate further
+      int handler_bci = table.handler_pc(i);
+      int klass_index = table.catch_type_index(i);
+      if (klass_index == 0) {
+        return handler_bci;
+      } else if (ex_klass.is_null()) {
+        return handler_bci;
+      } else {
+        // we know the exception class => get the constraint class
+        // this may require loading of the constraint class; if verification
+        // fails or some other exception occurs, return handler_bci
+        Klass* k = pool->klass_at(klass_index, CHECK_(handler_bci));
+        KlassHandle klass = KlassHandle(THREAD, k);
+        assert(klass.not_null(), "klass not loaded");
+        if (ex_klass->is_subtype_of(klass())) {
+          return handler_bci;
+        }
+      }
+    }
+  }
+
+  return -1;
+}
+
+void Method::mask_for(int bci, InterpreterOopMap* mask) {
+
+  Thread* myThread    = Thread::current();
+  methodHandle h_this(myThread, this);
+#ifdef ASSERT
+  bool has_capability = myThread->is_VM_thread() ||
+                        myThread->is_ConcurrentGC_thread() ||
+                        myThread->is_GC_task_thread();
+
+  if (!has_capability) {
+    if (!VerifyStack && !VerifyLastFrame) {
+      // verify stack calls this outside VM thread
+      warning("oopmap should only be accessed by the "
+              "VM, GC task or CMS threads (or during debugging)");
+      InterpreterOopMap local_mask;
+      InstanceKlass::cast(method_holder())->mask_for(h_this, bci, &local_mask);
+      local_mask.print();
+    }
+  }
+#endif
+  InstanceKlass::cast(method_holder())->mask_for(h_this, bci, mask);
+  return;
+}
+
+
+int Method::bci_from(address bcp) const {
+  assert(is_native() && bcp == code_base() || contains(bcp) || is_error_reported(),
+         err_msg("bcp doesn't belong to this method: bcp: " INTPTR_FORMAT ", method: %s", bcp, name_and_sig_as_C_string()));
+  return bcp - code_base();
+}
+
+
+// Return (int)bcx if it appears to be a valid BCI.
+// Return bci_from((address)bcx) if it appears to be a valid BCP.
+// Return -1 otherwise.
+// Used by profiling code, when invalid data is a possibility.
+// The caller is responsible for validating the Method* itself.
+int Method::validate_bci_from_bcx(intptr_t bcx) const {
+  // keep bci as -1 if not a valid bci
+  int bci = -1;
+  if (bcx == 0 || (address)bcx == code_base()) {
+    // code_size() may return 0 and we allow 0 here
+    // the method may be native
+    bci = 0;
+  } else if (frame::is_bci(bcx)) {
+    if (bcx < code_size()) {
+      bci = (int)bcx;
+    }
+  } else if (contains((address)bcx)) {
+    bci = (address)bcx - code_base();
+  }
+  // Assert that if we have dodged any asserts, bci is negative.
+  assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
+  return bci;
+}
+
+address Method::bcp_from(int bci) const {
+  assert((is_native() && bci == 0)  || (!is_native() && 0 <= bci && bci < code_size()), "illegal bci");
+  address bcp = code_base() + bci;
+  assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
+  return bcp;
+}
+
+
+int Method::size(bool is_native) {
+  // If native, then include pointers for native_function and signature_handler
+  int extra_bytes = (is_native) ? 2*sizeof(address*) : 0;
+  int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord;
+  return align_object_size(header_size() + extra_words);
+}
+
+
+Symbol* Method::klass_name() const {
+  Klass* k = method_holder();
+  assert(k->is_klass(), "must be klass");
+  InstanceKlass* ik = (InstanceKlass*) k;
+  return ik->name();
+}
+
+
+void Method::set_interpreter_kind() {
+  int kind = Interpreter::method_kind(this);
+  assert(kind != Interpreter::invalid,
+         "interpreter entry must be valid");
+  set_interpreter_kind(kind);
+}
+
+
+// Attempt to return method oop to original state.  Clear any pointers
+// (to objects outside the shared spaces).  We won't be able to predict
+// where they should point in a new JVM.  Further initialize some
+// entries now in order allow them to be write protected later.
+
+void Method::remove_unshareable_info() {
+  unlink_method();
+  set_interpreter_kind();
+}
+
+
+bool Method::was_executed_more_than(int n) {
+  // Invocation counter is reset when the Method* is compiled.
+  // If the method has compiled code we therefore assume it has
+  // be excuted more than n times.
+  if (is_accessor() || is_empty_method() || (code() != NULL)) {
+    // interpreter doesn't bump invocation counter of trivial methods
+    // compiler does not bump invocation counter of compiled methods
+    return true;
+  }
+  else if (_invocation_counter.carry() || (method_data() != NULL && method_data()->invocation_counter()->carry())) {
+    // The carry bit is set when the counter overflows and causes
+    // a compilation to occur.  We don't know how many times
+    // the counter has been reset, so we simply assume it has
+    // been executed more than n times.
+    return true;
+  } else {
+    return invocation_count() > n;
+  }
+}
+
+#ifndef PRODUCT
+void Method::print_invocation_count() {
+  if (is_static()) tty->print("static ");
+  if (is_final()) tty->print("final ");
+  if (is_synchronized()) tty->print("synchronized ");
+  if (is_native()) tty->print("native ");
+  method_holder()->name()->print_symbol_on(tty);
+  tty->print(".");
+  name()->print_symbol_on(tty);
+  signature()->print_symbol_on(tty);
+
+  if (WizardMode) {
+    // dump the size of the byte codes
+    tty->print(" {%d}", code_size());
+  }
+  tty->cr();
+
+  tty->print_cr ("  interpreter_invocation_count: %8d ", interpreter_invocation_count());
+  tty->print_cr ("  invocation_counter:           %8d ", invocation_count());
+  tty->print_cr ("  backedge_counter:             %8d ", backedge_count());
+  if (CountCompiledCalls) {
+    tty->print_cr ("  compiled_invocation_count: %8d ", compiled_invocation_count());
+  }
+
+}
+#endif
+
+// Build a MethodData* object to hold information about this method
+// collected in the interpreter.
+void Method::build_interpreter_method_data(methodHandle method, TRAPS) {
+  // Do not profile method if current thread holds the pending list lock,
+  // which avoids deadlock for acquiring the MethodData_lock.
+  if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) {
+    return;
+  }
+
+  // Grab a lock here to prevent multiple
+  // MethodData*s from being created.
+  MutexLocker ml(MethodData_lock, THREAD);
+  if (method->method_data() == NULL) {
+    ClassLoaderData* loader_data = method->method_holder()->class_loader_data();
+    MethodData* method_data = MethodData::allocate(loader_data, method, CHECK);
+    method->set_method_data(method_data);
+    if (PrintMethodData && (Verbose || WizardMode)) {
+      ResourceMark rm(THREAD);
+      tty->print("build_interpreter_method_data for ");
+      method->print_name(tty);
+      tty->cr();
+      // At the end of the run, the MDO, full of data, will be dumped.
+    }
+  }
+}
+
+void Method::cleanup_inline_caches() {
+  // The current system doesn't use inline caches in the interpreter
+  // => nothing to do (keep this method around for future use)
+}
+
+
+int Method::extra_stack_words() {
+  // not an inline function, to avoid a header dependency on Interpreter
+  return extra_stack_entries() * Interpreter::stackElementSize;
+}
+
+
+void Method::compute_size_of_parameters(Thread *thread) {
+  ArgumentSizeComputer asc(signature());
+  set_size_of_parameters(asc.size() + (is_static() ? 0 : 1));
+}
+
+#ifdef CC_INTERP
+void Method::set_result_index(BasicType type)          {
+  _result_index = Interpreter::BasicType_as_index(type);
+}
+#endif
+
+BasicType Method::result_type() const {
+  ResultTypeFinder rtf(signature());
+  return rtf.type();
+}
+
+
+bool Method::is_empty_method() const {
+  return  code_size() == 1
+      && *code_base() == Bytecodes::_return;
+}
+
+
+bool Method::is_vanilla_constructor() const {
+  // Returns true if this method is a vanilla constructor, i.e. an "<init>" "()V" method
+  // which only calls the superclass vanilla constructor and possibly does stores of
+  // zero constants to local fields:
+  //
+  //   aload_0
+  //   invokespecial
+  //   indexbyte1
+  //   indexbyte2
+  //
+  // followed by an (optional) sequence of:
+  //
+  //   aload_0
+  //   aconst_null / iconst_0 / fconst_0 / dconst_0
+  //   putfield
+  //   indexbyte1
+  //   indexbyte2
+  //
+  // followed by:
+  //
+  //   return
+
+  assert(name() == vmSymbols::object_initializer_name(),    "Should only be called for default constructors");
+  assert(signature() == vmSymbols::void_method_signature(), "Should only be called for default constructors");
+  int size = code_size();
+  // Check if size match
+  if (size == 0 || size % 5 != 0) return false;
+  address cb = code_base();
+  int last = size - 1;
+  if (cb[0] != Bytecodes::_aload_0 || cb[1] != Bytecodes::_invokespecial || cb[last] != Bytecodes::_return) {
+    // Does not call superclass default constructor
+    return false;
+  }
+  // Check optional sequence
+  for (int i = 4; i < last; i += 5) {
+    if (cb[i] != Bytecodes::_aload_0) return false;
+    if (!Bytecodes::is_zero_const(Bytecodes::cast(cb[i+1]))) return false;
+    if (cb[i+2] != Bytecodes::_putfield) return false;
+  }
+  return true;
+}
+
+
+bool Method::compute_has_loops_flag() {
+  BytecodeStream bcs(this);
+  Bytecodes::Code bc;
+
+  while ((bc = bcs.next()) >= 0) {
+    switch( bc ) {
+      case Bytecodes::_ifeq:
+      case Bytecodes::_ifnull:
+      case Bytecodes::_iflt:
+      case Bytecodes::_ifle:
+      case Bytecodes::_ifne:
+      case Bytecodes::_ifnonnull:
+      case Bytecodes::_ifgt:
+      case Bytecodes::_ifge:
+      case Bytecodes::_if_icmpeq:
+      case Bytecodes::_if_icmpne:
+      case Bytecodes::_if_icmplt:
+      case Bytecodes::_if_icmpgt:
+      case Bytecodes::_if_icmple:
+      case Bytecodes::_if_icmpge:
+      case Bytecodes::_if_acmpeq:
+      case Bytecodes::_if_acmpne:
+      case Bytecodes::_goto:
+      case Bytecodes::_jsr:
+        if( bcs.dest() < bcs.next_bci() ) _access_flags.set_has_loops();
+        break;
+
+      case Bytecodes::_goto_w:
+      case Bytecodes::_jsr_w:
+        if( bcs.dest_w() < bcs.next_bci() ) _access_flags.set_has_loops();
+        break;
+    }
+  }
+  _access_flags.set_loops_flag_init();
+  return _access_flags.has_loops();
+}
+
+
+bool Method::is_final_method() const {
+  // %%% Should return true for private methods also,
+  // since there is no way to override them.
+  return is_final() || Klass::cast(method_holder())->is_final();
+}
+
+
+bool Method::is_strict_method() const {
+  return is_strict();
+}
+
+
+bool Method::can_be_statically_bound() const {
+  if (is_final_method())  return true;
+  return vtable_index() == nonvirtual_vtable_index;
+}
+
+
+bool Method::is_accessor() const {
+  if (code_size() != 5) return false;
+  if (size_of_parameters() != 1) return false;
+  if (java_code_at(0) != Bytecodes::_aload_0 ) return false;
+  if (java_code_at(1) != Bytecodes::_getfield) return false;
+  if (java_code_at(4) != Bytecodes::_areturn &&
+      java_code_at(4) != Bytecodes::_ireturn ) return false;
+  return true;
+}
+
+
+bool Method::is_initializer() const {
+  return name() == vmSymbols::object_initializer_name() || is_static_initializer();
+}
+
+bool Method::has_valid_initializer_flags() const {
+  return (is_static() ||
+          InstanceKlass::cast(method_holder())->major_version() < 51);
+}
+
+bool Method::is_static_initializer() const {
+  // For classfiles version 51 or greater, ensure that the clinit method is
+  // static.  Non-static methods with the name "<clinit>" are not static
+  // initializers. (older classfiles exempted for backward compatibility)
+  return name() == vmSymbols::class_initializer_name() &&
+         has_valid_initializer_flags();
+}
+
+
+objArrayHandle Method::resolved_checked_exceptions_impl(Method* this_oop, TRAPS) {
+  int length = this_oop->checked_exceptions_length();
+  if (length == 0) {  // common case
+    return objArrayHandle(THREAD, Universe::the_empty_class_klass_array());
+  } else {
+    methodHandle h_this(THREAD, this_oop);
+    objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle()));
+    objArrayHandle mirrors (THREAD, m_oop);
+    for (int i = 0; i < length; i++) {
+      CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe
+      Klass* k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle()));
+      assert(Klass::cast(k)->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class");
+      mirrors->obj_at_put(i, Klass::cast(k)->java_mirror());
+    }
+    return mirrors;
+  }
+};
+
+
+int Method::line_number_from_bci(int bci) const {
+  if (bci == SynchronizationEntryBCI) bci = 0;
+  assert(bci == 0 || 0 <= bci && bci < code_size(), "illegal bci");
+  int best_bci  =  0;
+  int best_line = -1;
+
+  if (has_linenumber_table()) {
+    // The line numbers are a short array of 2-tuples [start_pc, line_number].
+    // Not necessarily sorted and not necessarily one-to-one.
+    CompressedLineNumberReadStream stream(compressed_linenumber_table());
+    while (stream.read_pair()) {
+      if (stream.bci() == bci) {
+        // perfect match
+        return stream.line();
+      } else {
+        // update best_bci/line
+        if (stream.bci() < bci && stream.bci() >= best_bci) {
+          best_bci  = stream.bci();
+          best_line = stream.line();
+        }
+      }
+    }
+  }
+  return best_line;
+}
+
+
+bool Method::is_klass_loaded_by_klass_index(int klass_index) const {
+  if( constants()->tag_at(klass_index).is_unresolved_klass() ) {
+    Thread *thread = Thread::current();
+    Symbol* klass_name = constants()->klass_name_at(klass_index);
+    Handle loader(thread, InstanceKlass::cast(method_holder())->class_loader());
+    Handle prot  (thread, Klass::cast(method_holder())->protection_domain());
+    return SystemDictionary::find(klass_name, loader, prot, thread) != NULL;
+  } else {
+    return true;
+  }
+}
+
+
+bool Method::is_klass_loaded(int refinfo_index, bool must_be_resolved) const {
+  int klass_index = constants()->klass_ref_index_at(refinfo_index);
+  if (must_be_resolved) {
+    // Make sure klass is resolved in constantpool.
+    if (constants()->tag_at(klass_index).is_unresolved_klass()) return false;
+  }
+  return is_klass_loaded_by_klass_index(klass_index);
+}
+
+
+void Method::set_native_function(address function, bool post_event_flag) {
+  assert(function != NULL, "use clear_native_function to unregister natives");
+  assert(!is_method_handle_intrinsic() || function == SharedRuntime::native_method_throw_unsatisfied_link_error_entry(), "");
+  address* native_function = native_function_addr();
+
+  // We can see racers trying to place the same native function into place. Once
+  // is plenty.
+  address current = *native_function;
+  if (current == function) return;
+  if (post_event_flag && JvmtiExport::should_post_native_method_bind() &&
+      function != NULL) {
+    // native_method_throw_unsatisfied_link_error_entry() should only
+    // be passed when post_event_flag is false.
+    assert(function !=
+      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
+      "post_event_flag mis-match");
+
+    // post the bind event, and possible change the bind function
+    JvmtiExport::post_native_method_bind(this, &function);
+  }
+  *native_function = function;
+  // This function can be called more than once. We must make sure that we always
+  // use the latest registered method -> check if a stub already has been generated.
+  // If so, we have to make it not_entrant.
+  nmethod* nm = code(); // Put it into local variable to guard against concurrent updates
+  if (nm != NULL) {
+    nm->make_not_entrant();
+  }
+}
+
+
+bool Method::has_native_function() const {
+  if (is_method_handle_intrinsic())
+    return false;  // special-cased in SharedRuntime::generate_native_wrapper
+  address func = native_function();
+  return (func != NULL && func != SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
+}
+
+
+void Method::clear_native_function() {
+  // Note: is_method_handle_intrinsic() is allowed here.
+  set_native_function(
+    SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
+    !native_bind_event_is_interesting);
+  clear_code();
+}
+
+address Method::critical_native_function() {
+  methodHandle mh(this);
+  return NativeLookup::lookup_critical_entry(mh);
+}
+
+
+void Method::set_signature_handler(address handler) {
+  address* signature_handler =  signature_handler_addr();
+  *signature_handler = handler;
+}
+
+
+bool Method::is_not_compilable(int comp_level) const {
+  if (number_of_breakpoints() > 0) {
+    return true;
+  }
+  if (is_method_handle_intrinsic()) {
+    return !is_synthetic();  // the generated adapters must be compiled
+  }
+  if (comp_level == CompLevel_any) {
+    return is_not_c1_compilable() || is_not_c2_compilable();
+  }
+  if (is_c1_compile(comp_level)) {
+    return is_not_c1_compilable();
+  }
+  if (is_c2_compile(comp_level)) {
+    return is_not_c2_compilable();
+  }
+  return false;
+}
+
+// call this when compiler finds that this method is not compilable
+void Method::set_not_compilable(int comp_level, bool report) {
+  if (PrintCompilation && report) {
+    ttyLocker ttyl;
+    tty->print("made not compilable ");
+    this->print_short_name(tty);
+    int size = this->code_size();
+    if (size > 0)
+      tty->print(" (%d bytes)", size);
+    tty->cr();
+  }
+  if ((TraceDeoptimization || LogCompilation) && (xtty != NULL)) {
+    ttyLocker ttyl;
+    xtty->begin_elem("make_not_compilable thread='%d'", (int) os::current_thread_id());
+    xtty->method(this);
+    xtty->stamp();
+    xtty->end_elem();
+  }
+  if (comp_level == CompLevel_all) {
+    set_not_c1_compilable();
+    set_not_c2_compilable();
+  } else {
+    if (is_c1_compile(comp_level)) {
+      set_not_c1_compilable();
+    } else
+      if (is_c2_compile(comp_level)) {
+        set_not_c2_compilable();
+      }
+  }
+  CompilationPolicy::policy()->disable_compilation(this);
+}
+
+// Revert to using the interpreter and clear out the nmethod
+void Method::clear_code() {
+
+  // this may be NULL if c2i adapters have not been made yet
+  // Only should happen at allocate time.
+  if (_adapter == NULL) {
+    _from_compiled_entry    = NULL;
+  } else {
+    _from_compiled_entry    = _adapter->get_c2i_entry();
+  }
+  OrderAccess::storestore();
+  _from_interpreted_entry = _i2i_entry;
+  OrderAccess::storestore();
+  _code = NULL;
+}
+
+// Called by class data sharing to remove any entry points (which are not shared)
+void Method::unlink_method() {
+  _code = NULL;
+  _i2i_entry = NULL;
+  _from_interpreted_entry = NULL;
+  if (is_native()) {
+    *native_function_addr() = NULL;
+    set_signature_handler(NULL);
+  }
+  NOT_PRODUCT(set_compiled_invocation_count(0);)
+  invocation_counter()->reset();
+  backedge_counter()->reset();
+  _adapter = NULL;
+  _from_compiled_entry = NULL;
+  assert(_method_data == NULL, "unexpected method data?");
+  set_method_data(NULL);
+  set_interpreter_throwout_count(0);
+  set_interpreter_invocation_count(0);
+}
+
+// Called when the method_holder is getting linked. Setup entrypoints so the method
+// is ready to be called from interpreter, compiler, and vtables.
+void Method::link_method(methodHandle h_method, TRAPS) {
+  // If the code cache is full, we may reenter this function for the
+  // leftover methods that weren't linked.
+  if (_i2i_entry != NULL) return;
+
+  assert(_adapter == NULL, "init'd to NULL" );
+  assert( _code == NULL, "nothing compiled yet" );
+
+  // Setup interpreter entrypoint
+  assert(this == h_method(), "wrong h_method()" );
+  address entry = Interpreter::entry_for_method(h_method);
+  assert(entry != NULL, "interpreter entry must be non-null");
+  // Sets both _i2i_entry and _from_interpreted_entry
+  set_interpreter_entry(entry);
+  if (is_native() && !is_method_handle_intrinsic()) {
+    set_native_function(
+      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
+      !native_bind_event_is_interesting);
+  }
+
+  // Setup compiler entrypoint.  This is made eagerly, so we do not need
+  // special handling of vtables.  An alternative is to make adapters more
+  // lazily by calling make_adapter() from from_compiled_entry() for the
+  // normal calls.  For vtable calls life gets more complicated.  When a
+  // call-site goes mega-morphic we need adapters in all methods which can be
+  // called from the vtable.  We need adapters on such methods that get loaded
+  // later.  Ditto for mega-morphic itable calls.  If this proves to be a
+  // problem we'll make these lazily later.
+  (void) make_adapters(h_method, CHECK);
+
+  // ONLY USE the h_method now as make_adapter may have blocked
+
+}
+
+address Method::make_adapters(methodHandle mh, TRAPS) {
+  // Adapters for compiled code are made eagerly here.  They are fairly
+  // small (generally < 100 bytes) and quick to make (and cached and shared)
+  // so making them eagerly shouldn't be too expensive.
+  AdapterHandlerEntry* adapter = AdapterHandlerLibrary::get_adapter(mh);
+  if (adapter == NULL ) {
+    THROW_MSG_NULL(vmSymbols::java_lang_VirtualMachineError(), "out of space in CodeCache for adapters");
+  }
+
+  mh->set_adapter_entry(adapter);
+  mh->_from_compiled_entry = adapter->get_c2i_entry();
+  return adapter->get_c2i_entry();
+}
+
+// The verified_code_entry() must be called when a invoke is resolved
+// on this method.
+
+// It returns the compiled code entry point, after asserting not null.
+// This function is called after potential safepoints so that nmethod
+// or adapter that it points to is still live and valid.
+// This function must not hit a safepoint!
+address Method::verified_code_entry() {
+  debug_only(No_Safepoint_Verifier nsv;)
+  nmethod *code = (nmethod *)OrderAccess::load_ptr_acquire(&_code);
+  if (code == NULL && UseCodeCacheFlushing) {
+    nmethod *saved_code = CodeCache::find_and_remove_saved_code(this);
+    if (saved_code != NULL) {
+      methodHandle method(this);
+      assert( ! saved_code->is_osr_method(), "should not get here for osr" );
+      set_code( method, saved_code );
+    }
+  }
+
+  assert(_from_compiled_entry != NULL, "must be set");
+  return _from_compiled_entry;
+}
+
+// Check that if an nmethod ref exists, it has a backlink to this or no backlink at all
+// (could be racing a deopt).
+// Not inline to avoid circular ref.
+bool Method::check_code() const {
+  // cached in a register or local.  There's a race on the value of the field.
+  nmethod *code = (nmethod *)OrderAccess::load_ptr_acquire(&_code);
+  return code == NULL || (code->method() == NULL) || (code->method() == (Method*)this && !code->is_osr_method());
+}
+
+// Install compiled code.  Instantly it can execute.
+void Method::set_code(methodHandle mh, nmethod *code) {
+  assert( code, "use clear_code to remove code" );
+  assert( mh->check_code(), "" );
+
+  guarantee(mh->adapter() != NULL, "Adapter blob must already exist!");
+
+  // These writes must happen in this order, because the interpreter will
+  // directly jump to from_interpreted_entry which jumps to an i2c adapter
+  // which jumps to _from_compiled_entry.
+  mh->_code = code;             // Assign before allowing compiled code to exec
+
+  int comp_level = code->comp_level();
+  // In theory there could be a race here. In practice it is unlikely
+  // and not worth worrying about.
+  if (comp_level > mh->highest_comp_level()) {
+    mh->set_highest_comp_level(comp_level);
+  }
+
+  OrderAccess::storestore();
+#ifdef SHARK
+  mh->_from_interpreted_entry = code->insts_begin();
+#else //!SHARK
+  mh->_from_compiled_entry = code->verified_entry_point();
+  OrderAccess::storestore();
+  // Instantly compiled code can execute.
+  if (!mh->is_method_handle_intrinsic())
+    mh->_from_interpreted_entry = mh->get_i2c_entry();
+#endif //!SHARK
+}
+
+
+bool Method::is_overridden_in(Klass* k) const {
+  InstanceKlass* ik = InstanceKlass::cast(k);
+
+  if (ik->is_interface()) return false;
+
+  // If method is an interface, we skip it - except if it
+  // is a miranda method
+  if (InstanceKlass::cast(method_holder())->is_interface()) {
+    // Check that method is not a miranda method
+    if (ik->lookup_method(name(), signature()) == NULL) {
+      // No implementation exist - so miranda method
+      return false;
+    }
+    return true;
+  }
+
+  assert(ik->is_subclass_of(method_holder()), "should be subklass");
+  assert(ik->vtable() != NULL, "vtable should exist");
+  if (vtable_index() == nonvirtual_vtable_index) {
+    return false;
+  } else {
+    Method* vt_m = ik->method_at_vtable(vtable_index());
+    return vt_m != this;
+  }
+}
+
+
+// give advice about whether this Method* should be cached or not
+bool Method::should_not_be_cached() const {
+  if (is_old()) {
+    // This method has been redefined. It is either EMCP or obsolete
+    // and we don't want to cache it because that would pin the method
+    // down and prevent it from being collectible if and when it
+    // finishes executing.
+    return true;
+  }
+
+  // caching this method should be just fine
+  return false;
+}
+
+// Constant pool structure for invoke methods:
+enum {
+  _imcp_invoke_name = 1,        // utf8: 'invokeExact', etc.
+  _imcp_invoke_signature,       // utf8: (variable Symbol*)
+  _imcp_limit
+};
+
+// Test if this method is an MH adapter frame generated by Java code.
+// Cf. java/lang/invoke/InvokerBytecodeGenerator
+bool Method::is_compiled_lambda_form() const {
+  return intrinsic_id() == vmIntrinsics::_compiledLambdaForm;
+}
+
+// Test if this method is an internal MH primitive method.
+bool Method::is_method_handle_intrinsic() const {
+  vmIntrinsics::ID iid = intrinsic_id();
+  return (MethodHandles::is_signature_polymorphic(iid) &&
+          MethodHandles::is_signature_polymorphic_intrinsic(iid));
+}
+
+bool Method::has_member_arg() const {
+  vmIntrinsics::ID iid = intrinsic_id();
+  return (MethodHandles::is_signature_polymorphic(iid) &&
+          MethodHandles::has_member_arg(iid));
+}
+
+// Make an instance of a signature-polymorphic internal MH primitive.
+methodHandle Method::make_method_handle_intrinsic(vmIntrinsics::ID iid,
+                                                         Symbol* signature,
+                                                         TRAPS) {
+  ResourceMark rm;
+  methodHandle empty;
+
+  KlassHandle holder = SystemDictionary::MethodHandle_klass();
+  Symbol* name = MethodHandles::signature_polymorphic_intrinsic_name(iid);
+  assert(iid == MethodHandles::signature_polymorphic_name_id(name), "");
+  if (TraceMethodHandles) {
+    tty->print_cr("make_method_handle_intrinsic MH.%s%s", name->as_C_string(), signature->as_C_string());
+  }
+
+  // invariant:   cp->symbol_at_put is preceded by a refcount increment (more usually a lookup)
+  name->increment_refcount();
+  signature->increment_refcount();
+
+  int cp_length = _imcp_limit;
+  ClassLoaderData* loader_data = holder->class_loader_data();
+  constantPoolHandle cp;
+  {
+    ConstantPool* cp_oop = ConstantPool::allocate(loader_data, cp_length, CHECK_(empty));
+    cp = constantPoolHandle(THREAD, cp_oop);
+  }
+  cp->set_pool_holder(holder());
+  cp->symbol_at_put(_imcp_invoke_name,       name);
+  cp->symbol_at_put(_imcp_invoke_signature,  signature);
+  cp->set_preresolution();
+
+  // decide on access bits:  public or not?
+  int flags_bits = (JVM_ACC_NATIVE | JVM_ACC_SYNTHETIC | JVM_ACC_FINAL);
+  bool must_be_static = MethodHandles::is_signature_polymorphic_static(iid);
+  if (must_be_static)  flags_bits |= JVM_ACC_STATIC;
+  assert((flags_bits & JVM_ACC_PUBLIC) == 0, "do not expose these methods");
+
+  methodHandle m;
+  {
+    Method* m_oop = Method::allocate(loader_data, 0, accessFlags_from(flags_bits),
+                                              0, 0, 0, 0, CHECK_(empty));
+    m = methodHandle(THREAD, m_oop);
+  }
+  m->set_constants(cp());
+  m->set_name_index(_imcp_invoke_name);
+  m->set_signature_index(_imcp_invoke_signature);
+  assert(MethodHandles::is_signature_polymorphic_name(m->name()), "");
+  assert(m->signature() == signature, "");
+#ifdef CC_INTERP
+  ResultTypeFinder rtf(signature);
+  m->set_result_index(rtf.type());
+#endif
+  m->compute_size_of_parameters(THREAD);
+  m->init_intrinsic_id();
+  assert(m->is_method_handle_intrinsic(), "");
+#ifdef ASSERT
+  if (!MethodHandles::is_signature_polymorphic(m->intrinsic_id()))  m->print();
+  assert(MethodHandles::is_signature_polymorphic(m->intrinsic_id()), "must be an invoker");
+  assert(m->intrinsic_id() == iid, "correctly predicted iid");
+#endif //ASSERT
+
+  // Finally, set up its entry points.
+  assert(m->can_be_statically_bound(), "");
+  m->set_vtable_index(Method::nonvirtual_vtable_index);
+  m->link_method(m, CHECK_(empty));
+
+  if (TraceMethodHandles && (Verbose || WizardMode))
+    m->print_on(tty);
+
+  return m;
+}
+
+Klass* Method::check_non_bcp_klass(Klass* klass) {
+  if (klass != NULL && Klass::cast(klass)->class_loader() != NULL) {
+    if (Klass::cast(klass)->oop_is_objArray())
+      klass = objArrayKlass::cast(klass)->bottom_klass();
+    return klass;
+  }
+  return NULL;
+}
+
+
+methodHandle Method::clone_with_new_data(methodHandle m, u_char* new_code, int new_code_length,
+                                                u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS) {
+  // Code below does not work for native methods - they should never get rewritten anyway
+  assert(!m->is_native(), "cannot rewrite native methods");
+  // Allocate new Method*
+  AccessFlags flags = m->access_flags();
+  int checked_exceptions_len = m->checked_exceptions_length();
+  int localvariable_len = m->localvariable_table_length();
+  int exception_table_len = m->exception_table_length();
+
+  ClassLoaderData* loader_data = m()->method_holder()->class_loader_data();
+  Method* newm_oop = Method::allocate(loader_data,
+                                               new_code_length,
+                                              flags,
+                                              new_compressed_linenumber_size,
+                                              localvariable_len,
+                                              exception_table_len,
+                                              checked_exceptions_len,
+                                              CHECK_(methodHandle()));
+  methodHandle newm (THREAD, newm_oop);
+  int new_method_size = newm->method_size();
+
+  // Create a shallow copy of Method part, but be careful to preserve the new ConstMethod*
+  ConstMethod* newcm = newm->constMethod();
+  int new_const_method_size = newm->constMethod()->size();
+
+  memcpy(newm(), m(), sizeof(Method));
+
+  // Create shallow copy of ConstMethod.
+  memcpy(newcm, m->constMethod(), sizeof(ConstMethod));
+
+  // Reset correct method/const method, method size, and parameter info
+  newm->set_constMethod(newcm);
+  newm->constMethod()->set_code_size(new_code_length);
+  newm->constMethod()->set_constMethod_size(new_const_method_size);
+  newm->set_method_size(new_method_size);
+  assert(newm->code_size() == new_code_length, "check");
+  assert(newm->checked_exceptions_length() == checked_exceptions_len, "check");
+  assert(newm->exception_table_length() == exception_table_len, "check");
+  assert(newm->localvariable_table_length() == localvariable_len, "check");
+  // Copy new byte codes
+  memcpy(newm->code_base(), new_code, new_code_length);
+  // Copy line number table
+  if (new_compressed_linenumber_size > 0) {
+    memcpy(newm->compressed_linenumber_table(),
+           new_compressed_linenumber_table,
+           new_compressed_linenumber_size);
+  }
+  // Copy checked_exceptions
+  if (checked_exceptions_len > 0) {
+    memcpy(newm->checked_exceptions_start(),
+           m->checked_exceptions_start(),
+           checked_exceptions_len * sizeof(CheckedExceptionElement));
+  }
+  // Copy exception table
+  if (exception_table_len > 0) {
+    memcpy(newm->exception_table_start(),
+           m->exception_table_start(),
+           exception_table_len * sizeof(ExceptionTableElement));
+  }
+  // Copy local variable number table
+  if (localvariable_len > 0) {
+    memcpy(newm->localvariable_table_start(),
+           m->localvariable_table_start(),
+           localvariable_len * sizeof(LocalVariableTableElement));
+  }
+  // Copy stackmap table
+  if (m->has_stackmap_table()) {
+    int code_attribute_length = m->stackmap_data()->length();
+    Array<u1>* stackmap_data =
+      MetadataFactory::new_array<u1>(loader_data, code_attribute_length, 0, CHECK_NULL);
+    memcpy((void*)stackmap_data->adr_at(0),
+           (void*)m->stackmap_data()->adr_at(0), code_attribute_length);
+    newm->set_stackmap_data(stackmap_data);
+  }
+
+  return newm;
+}
+
+vmSymbols::SID Method::klass_id_for_intrinsics(Klass* holder) {
+  // if loader is not the default loader (i.e., != NULL), we can't know the intrinsics
+  // because we are not loading from core libraries
+  if (InstanceKlass::cast(holder)->class_loader() != NULL)
+    return vmSymbols::NO_SID;   // regardless of name, no intrinsics here
+
+  // see if the klass name is well-known:
+  Symbol* klass_name = InstanceKlass::cast(holder)->name();
+  return vmSymbols::find_sid(klass_name);
+}
+
+void Method::init_intrinsic_id() {
+  assert(_intrinsic_id == vmIntrinsics::_none, "do this just once");
+  const uintptr_t max_id_uint = right_n_bits((int)(sizeof(_intrinsic_id) * BitsPerByte));
+  assert((uintptr_t)vmIntrinsics::ID_LIMIT <= max_id_uint, "else fix size");
+  assert(intrinsic_id_size_in_bytes() == sizeof(_intrinsic_id), "");
+
+  // the klass name is well-known:
+  vmSymbols::SID klass_id = klass_id_for_intrinsics(method_holder());
+  assert(klass_id != vmSymbols::NO_SID, "caller responsibility");
+
+  // ditto for method and signature:
+  vmSymbols::SID  name_id = vmSymbols::find_sid(name());
+  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
+      && name_id == vmSymbols::NO_SID)
+    return;
+  vmSymbols::SID   sig_id = vmSymbols::find_sid(signature());
+  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
+      && sig_id == vmSymbols::NO_SID)  return;
+  jshort flags = access_flags().as_short();
+
+  vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
+  if (id != vmIntrinsics::_none) {
+    set_intrinsic_id(id);
+    return;
+  }
+
+  // A few slightly irregular cases:
+  switch (klass_id) {
+  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_StrictMath):
+    // Second chance: check in regular Math.
+    switch (name_id) {
+    case vmSymbols::VM_SYMBOL_ENUM_NAME(min_name):
+    case vmSymbols::VM_SYMBOL_ENUM_NAME(max_name):
+    case vmSymbols::VM_SYMBOL_ENUM_NAME(sqrt_name):
+      // pretend it is the corresponding method in the non-strict class:
+      klass_id = vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_Math);
+      id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
+      break;
+    }
+    break;
+
+  // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*.
+  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle):
+    if (!is_native())  break;
+    id = MethodHandles::signature_polymorphic_name_id(method_holder(), name());
+    if (is_static() != MethodHandles::is_signature_polymorphic_static(id))
+      id = vmIntrinsics::_none;
+    break;
+  }
+
+  if (id != vmIntrinsics::_none) {
+    // Set up its iid.  It is an alias method.
+    set_intrinsic_id(id);
+    return;
+  }
+}
+
+// These two methods are static since a GC may move the Method
+bool Method::load_signature_classes(methodHandle m, TRAPS) {
+  if (THREAD->is_Compiler_thread()) {
+    // There is nothing useful this routine can do from within the Compile thread.
+    // Hopefully, the signature contains only well-known classes.
+    // We could scan for this and return true/false, but the caller won't care.
+    return false;
+  }
+  bool sig_is_loaded = true;
+  Handle class_loader(THREAD, InstanceKlass::cast(m->method_holder())->class_loader());
+  Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain());
+  ResourceMark rm(THREAD);
+  Symbol*  signature = m->signature();
+  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
+    if (ss.is_object()) {
+      Symbol* sym = ss.as_symbol(CHECK_(false));
+      Symbol*  name  = sym;
+      Klass* klass = SystemDictionary::resolve_or_null(name, class_loader,
+                                             protection_domain, THREAD);
+      // We are loading classes eagerly. If a ClassNotFoundException or
+      // a LinkageError was generated, be sure to ignore it.
+      if (HAS_PENDING_EXCEPTION) {
+        if (PENDING_EXCEPTION->is_a(SystemDictionary::ClassNotFoundException_klass()) ||
+            PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) {
+          CLEAR_PENDING_EXCEPTION;
+        } else {
+          return false;
+        }
+      }
+      if( klass == NULL) { sig_is_loaded = false; }
+    }
+  }
+  return sig_is_loaded;
+}
+
+bool Method::has_unloaded_classes_in_signature(methodHandle m, TRAPS) {
+  Handle class_loader(THREAD, InstanceKlass::cast(m->method_holder())->class_loader());
+  Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain());
+  ResourceMark rm(THREAD);
+  Symbol*  signature = m->signature();
+  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
+    if (ss.type() == T_OBJECT) {
+      Symbol* name = ss.as_symbol_or_null();
+      if (name == NULL) return true;
+      Klass* klass = SystemDictionary::find(name, class_loader, protection_domain, THREAD);
+      if (klass == NULL) return true;
+    }
+  }
+  return false;
+}
+
+// Exposed so field engineers can debug VM
+void Method::print_short_name(outputStream* st) {
+  ResourceMark rm;
+#ifdef PRODUCT
+  st->print(" %s::", method_holder()->external_name());
+#else
+  st->print(" %s::", method_holder()->internal_name());
+#endif
+  name()->print_symbol_on(st);
+  if (WizardMode) signature()->print_symbol_on(st);
+  else if (MethodHandles::is_signature_polymorphic(intrinsic_id()))
+    MethodHandles::print_as_basic_type_signature_on(st, signature(), true);
+}
+
+// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
+static void reorder_based_on_method_index(Array<Method*>* methods,
+                                          Array<AnnotationArray*>* annotations,
+                                          GrowableArray<AnnotationArray*>* temp_array) {
+  if (annotations == NULL) {
+    return;
+  }
+
+  int length = methods->length();
+  int i;
+  // Copy to temp array
+  temp_array->clear();
+  for (i = 0; i < length; i++) {
+    temp_array->append(annotations->at(i));
+  }
+
+  // Copy back using old method indices
+  for (i = 0; i < length; i++) {
+    Method* m = methods->at(i);
+    annotations->at_put(i, temp_array->at(m->method_idnum()));
+  }
+}
+
+// Comparer for sorting an object array containing
+// Method*s.
+static int method_comparator(Method* a, Method* b) {
+  return a->name()->fast_compare(b->name());
+}
+
+// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
+void Method::sort_methods(Array<Method*>* methods,
+                                 Array<AnnotationArray*>* methods_annotations,
+                                 Array<AnnotationArray*>* methods_parameter_annotations,
+                                 Array<AnnotationArray*>* methods_default_annotations,
+                                 bool idempotent) {
+  int length = methods->length();
+  if (length > 1) {
+    bool do_annotations = false;
+    if (methods_annotations != NULL ||
+        methods_parameter_annotations != NULL ||
+        methods_default_annotations != NULL) {
+      do_annotations = true;
+    }
+    if (do_annotations) {
+      // Remember current method ordering so we can reorder annotations
+      for (int i = 0; i < length; i++) {
+        Method* m = methods->at(i);
+        m->set_method_idnum(i);
+      }
+    }
+    {
+      No_Safepoint_Verifier nsv;
+      QuickSort::sort<Method*>(methods->data(), length, method_comparator, idempotent);
+    }
+
+    // Sort annotations if necessary
+    assert(methods_annotations == NULL           || methods_annotations->length() == methods->length(), "");
+    assert(methods_parameter_annotations == NULL || methods_parameter_annotations->length() == methods->length(), "");
+    assert(methods_default_annotations == NULL   || methods_default_annotations->length() == methods->length(), "");
+    if (do_annotations) {
+      ResourceMark rm;
+      // Allocate temporary storage
+      GrowableArray<AnnotationArray*>* temp_array = new GrowableArray<AnnotationArray*>(length);
+      reorder_based_on_method_index(methods, methods_annotations, temp_array);
+      reorder_based_on_method_index(methods, methods_parameter_annotations, temp_array);
+      reorder_based_on_method_index(methods, methods_default_annotations, temp_array);
+    }
+
+    // Reset method ordering
+    for (int i = 0; i < length; i++) {
+      Method* m = methods->at(i);
+      m->set_method_idnum(i);
+    }
+  }
+}
+
+
+//-----------------------------------------------------------------------------------
+// Non-product code
+
+#ifndef PRODUCT
+class SignatureTypePrinter : public SignatureTypeNames {
+ private:
+  outputStream* _st;
+  bool _use_separator;
+
+  void type_name(const char* name) {
+    if (_use_separator) _st->print(", ");
+    _st->print(name);
+    _use_separator = true;
+  }
+
+ public:
+  SignatureTypePrinter(Symbol* signature, outputStream* st) : SignatureTypeNames(signature) {
+    _st = st;
+    _use_separator = false;
+  }
+
+  void print_parameters()              { _use_separator = false; iterate_parameters(); }
+  void print_returntype()              { _use_separator = false; iterate_returntype(); }
+};
+
+
+void Method::print_name(outputStream* st) {
+  Thread *thread = Thread::current();
+  ResourceMark rm(thread);
+  SignatureTypePrinter sig(signature(), st);
+  st->print("%s ", is_static() ? "static" : "virtual");
+  sig.print_returntype();
+  st->print(" %s.", method_holder()->internal_name());
+  name()->print_symbol_on(st);
+  st->print("(");
+  sig.print_parameters();
+  st->print(")");
+}
+
+
+void Method::print_codes_on(outputStream* st) const {
+  print_codes_on(0, code_size(), st);
+}
+
+void Method::print_codes_on(int from, int to, outputStream* st) const {
+  Thread *thread = Thread::current();
+  ResourceMark rm(thread);
+  methodHandle mh (thread, (Method*)this);
+  BytecodeStream s(mh);
+  s.set_interval(from, to);
+  BytecodeTracer::set_closure(BytecodeTracer::std_closure());
+  while (s.next() >= 0) BytecodeTracer::trace(mh, s.bcp(), st);
+}
+#endif // not PRODUCT
+
+
+// Simple compression of line number tables. We use a regular compressed stream, except that we compress deltas
+// between (bci,line) pairs since they are smaller. If (bci delta, line delta) fits in (5-bit unsigned, 3-bit unsigned)
+// we save it as one byte, otherwise we write a 0xFF escape character and use regular compression. 0x0 is used
+// as end-of-stream terminator.
+
+void CompressedLineNumberWriteStream::write_pair_regular(int bci_delta, int line_delta) {
+  // bci and line number does not compress into single byte.
+  // Write out escape character and use regular compression for bci and line number.
+  write_byte((jubyte)0xFF);
+  write_signed_int(bci_delta);
+  write_signed_int(line_delta);
+}
+
+// See comment in method.hpp which explains why this exists.
+#if defined(_M_AMD64) && _MSC_VER >= 1400
+#pragma optimize("", off)
+void CompressedLineNumberWriteStream::write_pair(int bci, int line) {
+  write_pair_inline(bci, line);
+}
+#pragma optimize("", on)
+#endif
+
+CompressedLineNumberReadStream::CompressedLineNumberReadStream(u_char* buffer) : CompressedReadStream(buffer) {
+  _bci = 0;
+  _line = 0;
+};
+
+
+bool CompressedLineNumberReadStream::read_pair() {
+  jubyte next = read_byte();
+  // Check for terminator
+  if (next == 0) return false;
+  if (next == 0xFF) {
+    // Escape character, regular compression used
+    _bci  += read_signed_int();
+    _line += read_signed_int();
+  } else {
+    // Single byte compression used
+    _bci  += next >> 3;
+    _line += next & 0x7;
+  }
+  return true;
+}
+
+
+Bytecodes::Code Method::orig_bytecode_at(int bci) const {
+  BreakpointInfo* bp = InstanceKlass::cast(method_holder())->breakpoints();
+  for (; bp != NULL; bp = bp->next()) {
+    if (bp->match(this, bci)) {
+      return bp->orig_bytecode();
+    }
+  }
+  ShouldNotReachHere();
+  return Bytecodes::_shouldnotreachhere;
+}
+
+void Method::set_orig_bytecode_at(int bci, Bytecodes::Code code) {
+  assert(code != Bytecodes::_breakpoint, "cannot patch breakpoints this way");
+  BreakpointInfo* bp = InstanceKlass::cast(method_holder())->breakpoints();
+  for (; bp != NULL; bp = bp->next()) {
+    if (bp->match(this, bci)) {
+      bp->set_orig_bytecode(code);
+      // and continue, in case there is more than one
+    }
+  }
+}
+
+void Method::set_breakpoint(int bci) {
+  InstanceKlass* ik = InstanceKlass::cast(method_holder());
+  BreakpointInfo *bp = new BreakpointInfo(this, bci);
+  bp->set_next(ik->breakpoints());
+  ik->set_breakpoints(bp);
+  // do this last:
+  bp->set(this);
+}
+
+static void clear_matches(Method* m, int bci) {
+  InstanceKlass* ik = InstanceKlass::cast(m->method_holder());
+  BreakpointInfo* prev_bp = NULL;
+  BreakpointInfo* next_bp;
+  for (BreakpointInfo* bp = ik->breakpoints(); bp != NULL; bp = next_bp) {
+    next_bp = bp->next();
+    // bci value of -1 is used to delete all breakpoints in method m (ex: clear_all_breakpoint).
+    if (bci >= 0 ? bp->match(m, bci) : bp->match(m)) {
+      // do this first:
+      bp->clear(m);
+      // unhook it
+      if (prev_bp != NULL)
+        prev_bp->set_next(next_bp);
+      else
+        ik->set_breakpoints(next_bp);
+      delete bp;
+      // When class is redefined JVMTI sets breakpoint in all versions of EMCP methods
+      // at same location. So we have multiple matching (method_index and bci)
+      // BreakpointInfo nodes in BreakpointInfo list. We should just delete one
+      // breakpoint for clear_breakpoint request and keep all other method versions
+      // BreakpointInfo for future clear_breakpoint request.
+      // bcivalue of -1 is used to clear all breakpoints (see clear_all_breakpoints)
+      // which is being called when class is unloaded. We delete all the Breakpoint
+      // information for all versions of method. We may not correctly restore the original
+      // bytecode in all method versions, but that is ok. Because the class is being unloaded
+      // so these methods won't be used anymore.
+      if (bci >= 0) {
+        break;
+      }
+    } else {
+      // This one is a keeper.
+      prev_bp = bp;
+    }
+  }
+}
+
+void Method::clear_breakpoint(int bci) {
+  assert(bci >= 0, "");
+  clear_matches(this, bci);
+}
+
+void Method::clear_all_breakpoints() {
+  clear_matches(this, -1);
+}
+
+
+int Method::invocation_count() {
+  if (TieredCompilation) {
+    MethodData* const mdo = method_data();
+    if (invocation_counter()->carry() || ((mdo != NULL) ? mdo->invocation_counter()->carry() : false)) {
+      return InvocationCounter::count_limit;
+    } else {
+      return invocation_counter()->count() + ((mdo != NULL) ? mdo->invocation_counter()->count() : 0);
+    }
+  } else {
+    return invocation_counter()->count();
+  }
+}
+
+int Method::backedge_count() {
+  if (TieredCompilation) {
+    MethodData* const mdo = method_data();
+    if (backedge_counter()->carry() || ((mdo != NULL) ? mdo->backedge_counter()->carry() : false)) {
+      return InvocationCounter::count_limit;
+    } else {
+      return backedge_counter()->count() + ((mdo != NULL) ? mdo->backedge_counter()->count() : 0);
+    }
+  } else {
+    return backedge_counter()->count();
+  }
+}
+
+int Method::highest_comp_level() const {
+  MethodData* mdo = method_data();
+  if (mdo != NULL) {
+    return mdo->highest_comp_level();
+  } else {
+    return CompLevel_none;
+  }
+}
+
+int Method::highest_osr_comp_level() const {
+  MethodData* mdo = method_data();
+  if (mdo != NULL) {
+    return mdo->highest_osr_comp_level();
+  } else {
+    return CompLevel_none;
+  }
+}
+
+void Method::set_highest_comp_level(int level) {
+  MethodData* mdo = method_data();
+  if (mdo != NULL) {
+    mdo->set_highest_comp_level(level);
+  }
+}
+
+void Method::set_highest_osr_comp_level(int level) {
+  MethodData* mdo = method_data();
+  if (mdo != NULL) {
+    mdo->set_highest_osr_comp_level(level);
+  }
+}
+
+BreakpointInfo::BreakpointInfo(Method* m, int bci) {
+  _bci = bci;
+  _name_index = m->name_index();
+  _signature_index = m->signature_index();
+  _orig_bytecode = (Bytecodes::Code) *m->bcp_from(_bci);
+  if (_orig_bytecode == Bytecodes::_breakpoint)
+    _orig_bytecode = m->orig_bytecode_at(_bci);
+  _next = NULL;
+}
+
+void BreakpointInfo::set(Method* method) {
+#ifdef ASSERT
+  {
+    Bytecodes::Code code = (Bytecodes::Code) *method->bcp_from(_bci);
+    if (code == Bytecodes::_breakpoint)
+      code = method->orig_bytecode_at(_bci);
+    assert(orig_bytecode() == code, "original bytecode must be the same");
+  }
+#endif
+  *method->bcp_from(_bci) = Bytecodes::_breakpoint;
+  method->incr_number_of_breakpoints();
+  SystemDictionary::notice_modification();
+  {
+    // Deoptimize all dependents on this method
+    Thread *thread = Thread::current();
+    HandleMark hm(thread);
+    methodHandle mh(thread, method);
+    Universe::flush_dependents_on_method(mh);
+  }
+}
+
+void BreakpointInfo::clear(Method* method) {
+  *method->bcp_from(_bci) = orig_bytecode();
+  assert(method->number_of_breakpoints() > 0, "must not go negative");
+  method->decr_number_of_breakpoints();
+}
+
+// jmethodID handling
+
+// This is a block allocating object, sort of like JNIHandleBlock, only a
+// lot simpler.  There aren't many of these, they aren't long, they are rarely
+// deleted and so we can do some suboptimal things.
+// It's allocated on the CHeap because once we allocate a jmethodID, we can
+// never get rid of it.
+// It would be nice to be able to parameterize the number of methods for
+// the null_class_loader but then we'd have to turn this and ClassLoaderData
+// into templates.
+
+// I feel like this brain dead class should exist somewhere in the STL
+
+class JNIMethodBlock : public CHeapObj<mtClass> {
+  enum { number_of_methods = 8 };
+
+  Method*         _methods[number_of_methods];
+  int             _top;
+  JNIMethodBlock* _next;
+ public:
+  static Method* const _free_method;
+
+  JNIMethodBlock() : _next(NULL), _top(0) {
+    for (int i = 0; i< number_of_methods; i++) _methods[i] = _free_method;
+  }
+
+  Method** add_method(Method* m) {
+    if (_top < number_of_methods) {
+      // top points to the next free entry.
+      int i = _top;
+      _methods[i] = m;
+      _top++;
+      return &_methods[i];
+    } else if (_top == number_of_methods) {
+      // if the next free entry ran off the block see if there's a free entry
+      for (int i = 0; i< number_of_methods; i++) {
+        if (_methods[i] == _free_method) {
+          _methods[i] = m;
+          return &_methods[i];
+        }
+      }
+      // Only check each block once for frees.  They're very unlikely.
+      // Increment top past the end of the block.
+      _top++;
+    }
+    // need to allocate a next block.
+    if (_next == NULL) {
+      _next = new JNIMethodBlock();
+    }
+    return _next->add_method(m);
+  }
+
+  bool contains(Method** m) {
+    for (JNIMethodBlock* b = this; b != NULL; b = b->_next) {
+      for (int i = 0; i< number_of_methods; i++) {
+        if (&(b->_methods[i]) == m) {
+          return true;
+        }
+      }
+    }
+    return false;  // not found
+  }
+
+  // Doesn't really destroy it, just marks it as free so it can be reused.
+  void destroy_method(Method** m) {
+#ifdef ASSERT
+    assert(contains(m), "should be a methodID");
+#endif // ASSERT
+    *m = _free_method;
+  }
+
+  // During class unloading the methods are cleared, which is different
+  // than freed.
+  void clear_all_methods() {
+    for (JNIMethodBlock* b = this; b != NULL; b = b->_next) {
+      for (int i = 0; i< number_of_methods; i++) {
+        _methods[i] = NULL;
+      }
+    }
+  }
+#ifndef PRODUCT
+  int count_methods() {
+    // count all allocated methods
+    int count = 0;
+    for (JNIMethodBlock* b = this; b != NULL; b = b->_next) {
+      for (int i = 0; i< number_of_methods; i++) {
+        if (_methods[i] != _free_method) count++;
+      }
+    }
+    return count;
+  }
+#endif // PRODUCT
+};
+
+// Something that can't be mistaken for an address or a markOop
+Method* const JNIMethodBlock::_free_method = (Method*)55;
+
+// Add a method id to the jmethod_ids
+jmethodID Method::make_jmethod_id(ClassLoaderData* loader_data, Method* m) {
+  ClassLoaderData* cld = loader_data;
+
+  if (!SafepointSynchronize::is_at_safepoint()) {
+    // Have to add jmethod_ids() to class loader data thread-safely.
+    // Also have to add the method to the list safely, which the cld lock
+    // protects as well.
+    MutexLockerEx ml(cld->metaspace_lock(),  Mutex::_no_safepoint_check_flag);
+    if (cld->jmethod_ids() == NULL) {
+      cld->set_jmethod_ids(new JNIMethodBlock());
+    }
+    // jmethodID is a pointer to Method*
+    return (jmethodID)cld->jmethod_ids()->add_method(m);
+  } else {
+    // At safepoint, we are single threaded and can set this.
+    if (cld->jmethod_ids() == NULL) {
+      cld->set_jmethod_ids(new JNIMethodBlock());
+    }
+    // jmethodID is a pointer to Method*
+    return (jmethodID)cld->jmethod_ids()->add_method(m);
+  }
+}
+
+// Mark a jmethodID as free.  This is called when there is a data race in
+// InstanceKlass while creating the jmethodID cache.
+void Method::destroy_jmethod_id(ClassLoaderData* loader_data, jmethodID m) {
+  ClassLoaderData* cld = loader_data;
+  Method** ptr = (Method**)m;
+  assert(cld->jmethod_ids() != NULL, "should have method handles");
+  cld->jmethod_ids()->destroy_method(ptr);
+}
+
+void Method::change_method_associated_with_jmethod_id(jmethodID jmid, Method* new_method) {
+  // Can't assert the method_holder is the same because the new method has the
+  // scratch method holder.
+  assert(resolve_jmethod_id(jmid)->method_holder()->class_loader()
+           == new_method->method_holder()->class_loader(),
+         "changing to a different class loader");
+  // Just change the method in place, jmethodID pointer doesn't change.
+  *((Method**)jmid) = new_method;
+}
+
+bool Method::is_method_id(jmethodID mid) {
+  Method* m = resolve_jmethod_id(mid);
+  assert(m != NULL, "should be called with non-null method");
+  InstanceKlass* ik = InstanceKlass::cast(m->method_holder());
+  ClassLoaderData* cld = ik->class_loader_data();
+  if (cld->jmethod_ids() == NULL) return false;
+  return (cld->jmethod_ids()->contains((Method**)mid));
+}
+
+Method* Method::checked_resolve_jmethod_id(jmethodID mid) {
+  if (mid == NULL) return NULL;
+  Method* o = resolve_jmethod_id(mid);
+  if (o == NULL || o == JNIMethodBlock::_free_method || !((Metadata*)o)->is_method()) {
+    return NULL;
+  }
+  return o;
+};
+
+void Method::set_on_stack(const bool value) {
+  // Set both the method itself and its constant pool.  The constant pool
+  // on stack means some method referring to it is also on the stack.
+  _access_flags.set_on_stack(value);
+  constants()->set_on_stack(value);
+  if (value) MetadataOnStackMark::record(this);
+}
+
+// Called when the class loader is unloaded to make all methods weak.
+void Method::clear_jmethod_ids(ClassLoaderData* loader_data) {
+  loader_data->jmethod_ids()->clear_all_methods();
+}
+
+#ifndef PRODUCT
+void Method::print_jmethod_ids(ClassLoaderData* loader_data, outputStream* out) {
+  out->print_cr("jni_method_id count = %d", loader_data->jmethod_ids()->count_methods());
+}
+#endif // PRODUCT
+
+
+// Printing
+
+#ifndef PRODUCT
+
+void Method::print_on(outputStream* st) const {
+  ResourceMark rm;
+  assert(is_method(), "must be method");
+  st->print_cr(internal_name());
+  // get the effect of PrintOopAddress, always, for methods:
+  st->print_cr(" - this oop:          "INTPTR_FORMAT, (intptr_t)this);
+  st->print   (" - method holder:     "); method_holder()->print_value_on(st); st->cr();
+  st->print   (" - constants:         "INTPTR_FORMAT" ", (address)constants());
+  constants()->print_value_on(st); st->cr();
+  st->print   (" - access:            0x%x  ", access_flags().as_int()); access_flags().print_on(st); st->cr();
+  st->print   (" - name:              ");    name()->print_value_on(st); st->cr();
+  st->print   (" - signature:         ");    signature()->print_value_on(st); st->cr();
+  st->print_cr(" - max stack:         %d",   max_stack());
+  st->print_cr(" - max locals:        %d",   max_locals());
+  st->print_cr(" - size of params:    %d",   size_of_parameters());
+  st->print_cr(" - method size:       %d",   method_size());
+  if (intrinsic_id() != vmIntrinsics::_none)
+    st->print_cr(" - intrinsic id:      %d %s", intrinsic_id(), vmIntrinsics::name_at(intrinsic_id()));
+  if (highest_comp_level() != CompLevel_none)
+    st->print_cr(" - highest level:     %d", highest_comp_level());
+  st->print_cr(" - vtable index:      %d",   _vtable_index);
+  st->print_cr(" - i2i entry:         " INTPTR_FORMAT, interpreter_entry());
+  st->print(   " - adapters:          ");
+  AdapterHandlerEntry* a = ((Method*)this)->adapter();
+  if (a == NULL)
+    st->print_cr(INTPTR_FORMAT, a);
+  else
+    a->print_adapter_on(st);
+  st->print_cr(" - compiled entry     " INTPTR_FORMAT, from_compiled_entry());
+  st->print_cr(" - code size:         %d",   code_size());
+  if (code_size() != 0) {
+    st->print_cr(" - code start:        " INTPTR_FORMAT, code_base());
+    st->print_cr(" - code end (excl):   " INTPTR_FORMAT, code_base() + code_size());
+  }
+  if (method_data() != NULL) {
+    st->print_cr(" - method data:       " INTPTR_FORMAT, (address)method_data());
+  }
+  st->print_cr(" - checked ex length: %d",   checked_exceptions_length());
+  if (checked_exceptions_length() > 0) {
+    CheckedExceptionElement* table = checked_exceptions_start();
+    st->print_cr(" - checked ex start:  " INTPTR_FORMAT, table);
+    if (Verbose) {
+      for (int i = 0; i < checked_exceptions_length(); i++) {
+        st->print_cr("   - throws %s", constants()->printable_name_at(table[i].class_cp_index));
+      }
+    }
+  }
+  if (has_linenumber_table()) {
+    u_char* table = compressed_linenumber_table();
+    st->print_cr(" - linenumber start:  " INTPTR_FORMAT, table);
+    if (Verbose) {
+      CompressedLineNumberReadStream stream(table);
+      while (stream.read_pair()) {
+        st->print_cr("   - line %d: %d", stream.line(), stream.bci());
+      }
+    }
+  }
+  st->print_cr(" - localvar length:   %d",   localvariable_table_length());
+  if (localvariable_table_length() > 0) {
+    LocalVariableTableElement* table = localvariable_table_start();
+    st->print_cr(" - localvar start:    " INTPTR_FORMAT, table);
+    if (Verbose) {
+      for (int i = 0; i < localvariable_table_length(); i++) {
+        int bci = table[i].start_bci;
+        int len = table[i].length;
+        const char* name = constants()->printable_name_at(table[i].name_cp_index);
+        const char* desc = constants()->printable_name_at(table[i].descriptor_cp_index);
+        int slot = table[i].slot;
+        st->print_cr("   - %s %s bci=%d len=%d slot=%d", desc, name, bci, len, slot);
+      }
+    }
+  }
+  if (code() != NULL) {
+    st->print   (" - compiled code: ");
+    code()->print_value_on(st);
+  }
+  if (is_native()) {
+    st->print_cr(" - native function:   " INTPTR_FORMAT, native_function());
+    st->print_cr(" - signature handler: " INTPTR_FORMAT, signature_handler());
+  }
+}
+
+#endif //PRODUCT
+
+void Method::print_value_on(outputStream* st) const {
+  assert(is_method(), "must be method");
+  st->print_cr(internal_name());
+  print_address_on(st);
+  st->print(" ");
+  name()->print_value_on(st);
+  st->print(" ");
+  signature()->print_value_on(st);
+  st->print(" in ");
+  method_holder()->print_value_on(st);
+  if (WizardMode) st->print("[%d,%d]", size_of_parameters(), max_locals());
+  if (WizardMode && code() != NULL) st->print(" ((nmethod*)%p)", code());
+}
+
+
+// Verification
+
+void Method::verify_on(outputStream* st) {
+  guarantee(is_method(), "object must be method");
+  guarantee(is_metadata(),  "should be metadata");
+  guarantee(constants()->is_constantPool(), "should be constant pool");
+  guarantee(constants()->is_metadata(), "should be metadata");
+  guarantee(constMethod()->is_constMethod(), "should be ConstMethod*");
+  guarantee(constMethod()->is_metadata(), "should be metadata");
+  MethodData* md = method_data();
+  guarantee(md == NULL ||
+      md->is_metadata(), "should be in permspace");
+  guarantee(md == NULL ||
+      md->is_methodData(), "should be method data");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/method.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,983 @@
+/*
+ * 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_METHODOOP_HPP
+#define SHARE_VM_OOPS_METHODOOP_HPP
+
+#include "classfile/vmSymbols.hpp"
+#include "code/compressedStream.hpp"
+#include "compiler/oopMap.hpp"
+#include "interpreter/invocationCounter.hpp"
+#include "oops/annotations.hpp"
+#include "oops/constMethod.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/instanceKlass.hpp"
+#include "oops/oop.hpp"
+#include "oops/typeArrayOop.hpp"
+#include "utilities/accessFlags.hpp"
+#include "utilities/growableArray.hpp"
+
+// A Method* represents a Java method.
+//
+// Memory layout (each line represents a word). Note that most applications load thousands of methods,
+// so keeping the size of this structure small has a big impact on footprint.
+//
+// We put all oops and method_size first for better gc cache locality.
+//
+// The actual bytecodes are inlined after the end of the Method struct.
+//
+// There are bits in the access_flags telling whether inlined tables are present.
+// Note that accessing the line number and local variable tables is not performance critical at all.
+// Accessing the checked exceptions table is used by reflection, so we put that last to make access
+// to it fast.
+//
+// The line number table is compressed and inlined following the byte codes. It is found as the first
+// byte following the byte codes. The checked exceptions table and the local variable table are inlined
+// after the line number table, and indexed from the end of the method. We do not compress the checked
+// exceptions table since the average length is less than 2, and do not bother to compress the local
+// variable table either since it is mostly absent.
+//
+// Note that native_function and signature_handler has to be at fixed offsets (required by the interpreter)
+//
+// |------------------------------------------------------|
+// | header                                               |
+// | klass                                                |
+// |------------------------------------------------------|
+// | ConstMethod*                   (oop)                 |
+// |------------------------------------------------------|
+// | methodData                     (oop)                 |
+// | interp_invocation_count                              |
+// |------------------------------------------------------|
+// | access_flags                                         |
+// | vtable_index                                         |
+// |------------------------------------------------------|
+// | result_index (C++ interpreter only)                  |
+// |------------------------------------------------------|
+// | method_size             | max_stack                  |
+// | max_locals              | size_of_parameters         |
+// |------------------------------------------------------|
+// |intrinsic_id|   flags    |  throwout_count            |
+// |------------------------------------------------------|
+// | num_breakpoints         |  (unused)                  |
+// |------------------------------------------------------|
+// | invocation_counter                                   |
+// | backedge_counter                                     |
+// |------------------------------------------------------|
+// |           prev_time (tiered only, 64 bit wide)       |
+// |                                                      |
+// |------------------------------------------------------|
+// |                  rate (tiered)                       |
+// |------------------------------------------------------|
+// | code                           (pointer)             |
+// | i2i                            (pointer)             |
+// | adapter                        (pointer)             |
+// | from_compiled_entry            (pointer)             |
+// | from_interpreted_entry         (pointer)             |
+// |------------------------------------------------------|
+// | native_function       (present only if native)       |
+// | signature_handler     (present only if native)       |
+// |------------------------------------------------------|
+
+
+class CheckedExceptionElement;
+class LocalVariableTableElement;
+class AdapterHandlerEntry;
+class MethodData;
+
+class Method : public Metadata {
+ friend class VMStructs;
+ private:
+  ConstMethod*      _constMethod;                // Method read-only data.
+  MethodData*       _method_data;
+  int               _interpreter_invocation_count; // Count of times invoked (reused as prev_event_count in tiered)
+  AccessFlags       _access_flags;               // Access flags
+  int               _vtable_index;               // vtable index of this method (see VtableIndexFlag)
+                                                 // note: can have vtables with >2**16 elements (because of inheritance)
+#ifdef CC_INTERP
+  int               _result_index;               // C++ interpreter needs for converting results to/from stack
+#endif
+  u2                _method_size;                // size of this object
+  u2                _max_stack;                  // Maximum number of entries on the expression stack
+  u2                _max_locals;                 // Number of local variables used by this method
+  u2                _size_of_parameters;         // size of the parameter block (receiver + arguments) in words
+  u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
+  u1                _jfr_towrite  : 1,           // Flags
+                    _force_inline : 1,
+                    _hidden       : 1,
+                    _dont_inline  : 1,
+                                  : 4;
+  u2                _interpreter_throwout_count; // Count of times method was exited via exception while interpreting
+  u2                _number_of_breakpoints;      // fullspeed debugging support
+  InvocationCounter _invocation_counter;         // Incremented before each activation of the method - used to trigger frequency-based optimizations
+  InvocationCounter _backedge_counter;           // Incremented before each backedge taken - used to trigger frequencey-based optimizations
+
+#ifdef TIERED
+  jlong             _prev_time;                   // Previous time the rate was acquired
+  float             _rate;                        // Events (invocation and backedge counter increments) per millisecond
+#endif
+
+#ifndef PRODUCT
+  int               _compiled_invocation_count;  // Number of nmethod invocations so far (for perf. debugging)
+#endif
+  // Entry point for calling both from and to the interpreter.
+  address _i2i_entry;           // All-args-on-stack calling convention
+  // Adapter blob (i2c/c2i) for this Method*. Set once when method is linked.
+  AdapterHandlerEntry* _adapter;
+  // Entry point for calling from compiled code, to compiled code if it exists
+  // or else the interpreter.
+  volatile address _from_compiled_entry;        // Cache of: _code ? _code->entry_point() : _adapter->c2i_entry()
+  // The entry point for calling both from and to compiled code is
+  // "_code->entry_point()".  Because of tiered compilation and de-opt, this
+  // field can come and go.  It can transition from NULL to not-null at any
+  // time (whenever a compile completes).  It can transition from not-null to
+  // NULL only at safepoints (because of a de-opt).
+  nmethod* volatile _code;                       // Points to the corresponding piece of native code
+  volatile address           _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry
+
+  // Constructor
+  Method(ConstMethod* xconst, AccessFlags access_flags, int size);
+ public:
+  static Method* allocate(ClassLoaderData* loader_data,
+                            int byte_code_size,
+                            AccessFlags access_flags,
+                            int compressed_line_number_size,
+                            int localvariable_table_length,
+                            int exception_table_length,
+                            int checked_exceptions_length,
+                            TRAPS);
+
+  Method() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
+
+  // The Method vtable is restored by this call when the Method is in the
+  // shared archive.  See patch_klass_vtables() in metaspaceShared.cpp for
+  // all the gory details.  SA, dtrace and pstack helpers distinguish metadata
+  // by their vtable.
+  void restore_vtable() { guarantee(is_method(), "vtable restored by this call"); }
+  bool is_method() const volatile { return true; }
+
+  // accessors for instance variables
+
+  ConstMethod* constMethod() const             { return _constMethod; }
+  void set_constMethod(ConstMethod* xconst)    { _constMethod = xconst; }
+
+
+  static address make_adapters(methodHandle mh, TRAPS);
+  volatile address from_compiled_entry() const   { return (address)OrderAccess::load_ptr_acquire(&_from_compiled_entry); }
+  volatile address from_interpreted_entry() const{ return (address)OrderAccess::load_ptr_acquire(&_from_interpreted_entry); }
+
+  // access flag
+  AccessFlags access_flags() const               { return _access_flags;  }
+  void set_access_flags(AccessFlags flags)       { _access_flags = flags; }
+
+  // name
+  Symbol* name() const                           { return constants()->symbol_at(name_index()); }
+  int name_index() const                         { return constMethod()->name_index();         }
+  void set_name_index(int index)                 { constMethod()->set_name_index(index);       }
+
+  // signature
+  Symbol* signature() const                      { return constants()->symbol_at(signature_index()); }
+  int signature_index() const                    { return constMethod()->signature_index();         }
+  void set_signature_index(int index)            { constMethod()->set_signature_index(index);       }
+
+  // generics support
+  Symbol* generic_signature() const              { int idx = generic_signature_index(); return ((idx != 0) ? constants()->symbol_at(idx) : (Symbol*)NULL); }
+  int generic_signature_index() const            { return constMethod()->generic_signature_index(); }
+  void set_generic_signature_index(int index)    { constMethod()->set_generic_signature_index(index); }
+
+  // annotations support
+  AnnotationArray* annotations() const           {
+    InstanceKlass* ik = InstanceKlass::cast(method_holder());
+    if (ik->annotations() == NULL) {
+      return NULL;
+    }
+    return ik->annotations()->get_method_annotations_of(method_idnum());
+  }
+  AnnotationArray* parameter_annotations() const {
+    InstanceKlass* ik = InstanceKlass::cast(method_holder());
+    if (ik->annotations() == NULL) {
+      return NULL;
+    }
+    return ik->annotations()->get_method_parameter_annotations_of(method_idnum());
+  }
+  AnnotationArray* annotation_default() const    {
+    InstanceKlass* ik = InstanceKlass::cast(method_holder());
+    if (ik->annotations() == NULL) {
+      return NULL;
+    }
+    return ik->annotations()->get_method_default_annotations_of(method_idnum());
+  }
+
+#ifdef CC_INTERP
+  void set_result_index(BasicType type);
+  int  result_index()                            { return _result_index; }
+#endif
+
+  // Helper routine: get klass name + "." + method name + signature as
+  // C string, for the purpose of providing more useful NoSuchMethodErrors
+  // and fatal error handling. The string is allocated in resource
+  // area if a buffer is not provided by the caller.
+  char* name_and_sig_as_C_string() const;
+  char* name_and_sig_as_C_string(char* buf, int size) const;
+
+  // Static routine in the situations we don't have a Method*
+  static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature);
+  static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size);
+
+  Bytecodes::Code java_code_at(int bci) const {
+    return Bytecodes::java_code_at(this, bcp_from(bci));
+  }
+  Bytecodes::Code code_at(int bci) const {
+    return Bytecodes::code_at(this, bcp_from(bci));
+  }
+
+  // JVMTI breakpoints
+  Bytecodes::Code orig_bytecode_at(int bci) const;
+  void        set_orig_bytecode_at(int bci, Bytecodes::Code code);
+  void set_breakpoint(int bci);
+  void clear_breakpoint(int bci);
+  void clear_all_breakpoints();
+  // Tracking number of breakpoints, for fullspeed debugging.
+  // Only mutated by VM thread.
+  u2   number_of_breakpoints() const             { return _number_of_breakpoints; }
+  void incr_number_of_breakpoints()              { ++_number_of_breakpoints; }
+  void decr_number_of_breakpoints()              { --_number_of_breakpoints; }
+  // Initialization only
+  void clear_number_of_breakpoints()             { _number_of_breakpoints = 0; }
+
+  // index into InstanceKlass methods() array
+  // note: also used by jfr
+  u2 method_idnum() const           { return constMethod()->method_idnum(); }
+  void set_method_idnum(u2 idnum)   { constMethod()->set_method_idnum(idnum); }
+
+  // code size
+  int code_size() const                  { return constMethod()->code_size(); }
+
+  // method size
+  int method_size() const                        { return _method_size; }
+  void set_method_size(int size) {
+    assert(0 <= size && size < (1 << 16), "invalid method size");
+    _method_size = size;
+  }
+
+  // constant pool for Klass* holding this method
+  ConstantPool* constants() const              { return constMethod()->constants(); }
+  void set_constants(ConstantPool* c)          { constMethod()->set_constants(c); }
+
+  // max stack
+  // return original max stack size for method verification
+  int  verifier_max_stack() const                { return _max_stack; }
+  int           max_stack() const                { return _max_stack + extra_stack_entries(); }
+  void      set_max_stack(int size)              {        _max_stack = size; }
+
+  // max locals
+  int  max_locals() const                        { return _max_locals; }
+  void set_max_locals(int size)                  { _max_locals = size; }
+
+  int highest_comp_level() const;
+  void set_highest_comp_level(int level);
+  int highest_osr_comp_level() const;
+  void set_highest_osr_comp_level(int level);
+
+  // Count of times method was exited via exception while interpreting
+  void interpreter_throwout_increment() {
+    if (_interpreter_throwout_count < 65534) {
+      _interpreter_throwout_count++;
+    }
+  }
+
+  int  interpreter_throwout_count() const        { return _interpreter_throwout_count; }
+  void set_interpreter_throwout_count(int count) { _interpreter_throwout_count = count; }
+
+  // size of parameters
+  int  size_of_parameters() const                { return _size_of_parameters; }
+
+  bool has_stackmap_table() const {
+    return constMethod()->has_stackmap_table();
+  }
+
+  Array<u1>* stackmap_data() const {
+    return constMethod()->stackmap_data();
+  }
+
+  void set_stackmap_data(Array<u1>* sd) {
+    constMethod()->set_stackmap_data(sd);
+  }
+
+  // exception handler table
+  bool has_exception_handler() const
+                             { return constMethod()->has_exception_handler(); }
+  int exception_table_length() const
+                             { return constMethod()->exception_table_length(); }
+  ExceptionTableElement* exception_table_start() const
+                             { return constMethod()->exception_table_start(); }
+
+  // Finds the first entry point bci of an exception handler for an
+  // exception of klass ex_klass thrown at throw_bci. A value of NULL
+  // for ex_klass indicates that the exception klass is not known; in
+  // this case it matches any constraint class. Returns -1 if the
+  // exception cannot be handled in this method. The handler
+  // constraint classes are loaded if necessary. Note that this may
+  // throw an exception if loading of the constraint classes causes
+  // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
+  // If an exception is thrown, returns the bci of the
+  // exception handler which caused the exception to be thrown, which
+  // is needed for proper retries. See, for example,
+  // InterpreterRuntime::exception_handler_for_exception.
+  int fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS);
+
+  // method data access
+  MethodData* method_data() const              {
+    return _method_data;
+  }
+  void set_method_data(MethodData* data)       {
+    _method_data = data;
+  }
+
+  // invocation counter
+  InvocationCounter* invocation_counter() { return &_invocation_counter; }
+  InvocationCounter* backedge_counter()   { return &_backedge_counter; }
+
+#ifdef TIERED
+  // We are reusing interpreter_invocation_count as a holder for the previous event count!
+  // We can do that since interpreter_invocation_count is not used in tiered.
+  int prev_event_count() const                   { return _interpreter_invocation_count;  }
+  void set_prev_event_count(int count)           { _interpreter_invocation_count = count; }
+  jlong prev_time() const                        { return _prev_time; }
+  void set_prev_time(jlong time)                 { _prev_time = time; }
+  float rate() const                             { return _rate; }
+  void set_rate(float rate)                      { _rate = rate; }
+#endif
+
+  int invocation_count();
+  int backedge_count();
+
+  bool was_executed_more_than(int n);
+  bool was_never_executed()                      { return !was_executed_more_than(0); }
+
+  static void build_interpreter_method_data(methodHandle method, TRAPS);
+
+  int interpreter_invocation_count() {
+    if (TieredCompilation) return invocation_count();
+    else return _interpreter_invocation_count;
+  }
+  void set_interpreter_invocation_count(int count) { _interpreter_invocation_count = count; }
+  int increment_interpreter_invocation_count() {
+    if (TieredCompilation) ShouldNotReachHere();
+    return ++_interpreter_invocation_count;
+  }
+
+#ifndef PRODUCT
+  int  compiled_invocation_count() const         { return _compiled_invocation_count;  }
+  void set_compiled_invocation_count(int count)  { _compiled_invocation_count = count; }
+#endif // not PRODUCT
+
+  // Clear (non-shared space) pointers which could not be relevant
+  // if this (shared) method were mapped into another JVM.
+  void remove_unshareable_info();
+
+  // nmethod/verified compiler entry
+  address verified_code_entry();
+  bool check_code() const;      // Not inline to avoid circular ref
+  nmethod* volatile code() const                 { assert( check_code(), "" ); return (nmethod *)OrderAccess::load_ptr_acquire(&_code); }
+  void clear_code();            // Clear out any compiled code
+  static void set_code(methodHandle mh, nmethod* code);
+  void set_adapter_entry(AdapterHandlerEntry* adapter) {  _adapter = adapter; }
+  address get_i2c_entry();
+  address get_c2i_entry();
+  address get_c2i_unverified_entry();
+  AdapterHandlerEntry* adapter() {  return _adapter; }
+  // setup entry points
+  void link_method(methodHandle method, TRAPS);
+  // clear entry points. Used by sharing code
+  void unlink_method();
+
+  // vtable index
+  enum VtableIndexFlag {
+    // Valid vtable indexes are non-negative (>= 0).
+    // These few negative values are used as sentinels.
+    highest_unused_vtable_index_value = -5,
+    invalid_vtable_index    = -4,  // distinct from any valid vtable index
+    garbage_vtable_index    = -3,  // not yet linked; no vtable layout yet
+    nonvirtual_vtable_index = -2   // there is no need for vtable dispatch
+    // 6330203 Note:  Do not use -1, which was overloaded with many meanings.
+  };
+  DEBUG_ONLY(bool valid_vtable_index() const     { return _vtable_index >= nonvirtual_vtable_index; })
+  int  vtable_index() const                      { assert(valid_vtable_index(), "");
+                                                   return _vtable_index; }
+  void set_vtable_index(int index)               { _vtable_index = index; }
+
+  // interpreter entry
+  address interpreter_entry() const              { return _i2i_entry; }
+  // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry
+  void set_interpreter_entry(address entry)      { _i2i_entry = entry;  _from_interpreted_entry = entry; }
+  int  interpreter_kind(void) {
+     return constMethod()->interpreter_kind();
+  }
+  void set_interpreter_kind();
+  void set_interpreter_kind(int kind) {
+    constMethod()->set_interpreter_kind(kind);
+  }
+
+  // native function (used for native methods only)
+  enum {
+    native_bind_event_is_interesting = true
+  };
+  address native_function() const                { return *(native_function_addr()); }
+  address critical_native_function();
+
+  // Must specify a real function (not NULL).
+  // Use clear_native_function() to unregister.
+  void set_native_function(address function, bool post_event_flag);
+  bool has_native_function() const;
+  void clear_native_function();
+
+  // signature handler (used for native methods only)
+  address signature_handler() const              { return *(signature_handler_addr()); }
+  void set_signature_handler(address handler);
+
+  // Interpreter oopmap support
+  void mask_for(int bci, InterpreterOopMap* mask);
+
+#ifndef PRODUCT
+  // operations on invocation counter
+  void print_invocation_count();
+#endif
+
+  // byte codes
+  void    set_code(address code)      { return constMethod()->set_code(code); }
+  address code_base() const           { return constMethod()->code_base(); }
+  bool    contains(address bcp) const { return constMethod()->contains(bcp); }
+
+  // prints byte codes
+  void print_codes() const            { print_codes_on(tty); }
+  void print_codes_on(outputStream* st) const                      PRODUCT_RETURN;
+  void print_codes_on(int from, int to, outputStream* st) const    PRODUCT_RETURN;
+
+  // checked exceptions
+  int checked_exceptions_length() const
+                         { return constMethod()->checked_exceptions_length(); }
+  CheckedExceptionElement* checked_exceptions_start() const
+                          { return constMethod()->checked_exceptions_start(); }
+
+  // localvariable table
+  bool has_localvariable_table() const
+                          { return constMethod()->has_localvariable_table(); }
+  int localvariable_table_length() const
+                        { return constMethod()->localvariable_table_length(); }
+  LocalVariableTableElement* localvariable_table_start() const
+                         { return constMethod()->localvariable_table_start(); }
+
+  bool has_linenumber_table() const
+                              { return constMethod()->has_linenumber_table(); }
+  u_char* compressed_linenumber_table() const
+                       { return constMethod()->compressed_linenumber_table(); }
+
+  // method holder (the Klass* holding this method)
+  Klass* method_holder() const                 { return constants()->pool_holder(); }
+
+  void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments)
+  Symbol* klass_name() const;                    // returns the name of the method holder
+  BasicType result_type() const;                 // type of the method result
+  int result_type_index() const;                 // type index of the method result
+  bool is_returning_oop() const                  { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY); }
+  bool is_returning_fp() const                   { BasicType r = result_type(); return (r == T_FLOAT || r == T_DOUBLE); }
+
+  // Checked exceptions thrown by this method (resolved to mirrors)
+  objArrayHandle resolved_checked_exceptions(TRAPS) { return resolved_checked_exceptions_impl(this, THREAD); }
+
+  // Access flags
+  bool is_public() const                         { return access_flags().is_public();      }
+  bool is_private() const                        { return access_flags().is_private();     }
+  bool is_protected() const                      { return access_flags().is_protected();   }
+  bool is_package_private() const                { return !is_public() && !is_private() && !is_protected(); }
+  bool is_static() const                         { return access_flags().is_static();      }
+  bool is_final() const                          { return access_flags().is_final();       }
+  bool is_synchronized() const                   { return access_flags().is_synchronized();}
+  bool is_native() const                         { return access_flags().is_native();      }
+  bool is_abstract() const                       { return access_flags().is_abstract();    }
+  bool is_strict() const                         { return access_flags().is_strict();      }
+  bool is_synthetic() const                      { return access_flags().is_synthetic();   }
+
+  // returns true if contains only return operation
+  bool is_empty_method() const;
+
+  // returns true if this is a vanilla constructor
+  bool is_vanilla_constructor() const;
+
+  // checks method and its method holder
+  bool is_final_method() const;
+  bool is_strict_method() const;
+
+  // true if method needs no dynamic dispatch (final and/or no vtable entry)
+  bool can_be_statically_bound() const;
+
+  // returns true if the method has any backward branches.
+  bool has_loops() {
+    return access_flags().loops_flag_init() ? access_flags().has_loops() : compute_has_loops_flag();
+  };
+
+  bool compute_has_loops_flag();
+
+  bool has_jsrs() {
+    return access_flags().has_jsrs();
+  };
+  void set_has_jsrs() {
+    _access_flags.set_has_jsrs();
+  }
+
+  // returns true if the method has any monitors.
+  bool has_monitors() const                      { return is_synchronized() || access_flags().has_monitor_bytecodes(); }
+  bool has_monitor_bytecodes() const             { return access_flags().has_monitor_bytecodes(); }
+
+  void set_has_monitor_bytecodes()               { _access_flags.set_has_monitor_bytecodes(); }
+
+  // monitor matching. This returns a conservative estimate of whether the monitorenter/monitorexit bytecodes
+  // propererly nest in the method. It might return false, even though they actually nest properly, since the info.
+  // has not been computed yet.
+  bool guaranteed_monitor_matching() const       { return access_flags().is_monitor_matching(); }
+  void set_guaranteed_monitor_matching()         { _access_flags.set_monitor_matching(); }
+
+  // returns true if the method is an accessor function (setter/getter).
+  bool is_accessor() const;
+
+  // returns true if the method is an initializer (<init> or <clinit>).
+  bool is_initializer() const;
+
+  // returns true if the method is static OR if the classfile version < 51
+  bool has_valid_initializer_flags() const;
+
+  // returns true if the method name is <clinit> and the method has
+  // valid static initializer flags.
+  bool is_static_initializer() const;
+
+  // compiled code support
+  // NOTE: code() is inherently racy as deopt can be clearing code
+  // simultaneously. Use with caution.
+  bool has_compiled_code() const                 { return code() != NULL; }
+
+  // sizing
+  static int header_size()                       { return sizeof(Method)/HeapWordSize; }
+  static int size(bool is_native);
+  int size() const                               { return method_size(); }
+
+  // interpreter support
+  static ByteSize const_offset()                 { return byte_offset_of(Method, _constMethod       ); }
+  static ByteSize access_flags_offset()          { return byte_offset_of(Method, _access_flags      ); }
+#ifdef CC_INTERP
+  static ByteSize result_index_offset()          { return byte_offset_of(Method, _result_index ); }
+#endif /* CC_INTERP */
+  static ByteSize size_of_locals_offset()        { return byte_offset_of(Method, _max_locals        ); }
+  static ByteSize size_of_parameters_offset()    { return byte_offset_of(Method, _size_of_parameters); }
+  static ByteSize from_compiled_offset()         { return byte_offset_of(Method, _from_compiled_entry); }
+  static ByteSize code_offset()                  { return byte_offset_of(Method, _code); }
+  static ByteSize invocation_counter_offset()    { return byte_offset_of(Method, _invocation_counter); }
+  static ByteSize backedge_counter_offset()      { return byte_offset_of(Method, _backedge_counter); }
+  static ByteSize method_data_offset()           {
+    return byte_offset_of(Method, _method_data);
+  }
+  static ByteSize interpreter_invocation_counter_offset() { return byte_offset_of(Method, _interpreter_invocation_count); }
+#ifndef PRODUCT
+  static ByteSize compiled_invocation_counter_offset() { return byte_offset_of(Method, _compiled_invocation_count); }
+#endif // not PRODUCT
+  static ByteSize native_function_offset()       { return in_ByteSize(sizeof(Method));                 }
+  static ByteSize from_interpreted_offset()      { return byte_offset_of(Method, _from_interpreted_entry ); }
+  static ByteSize interpreter_entry_offset()     { return byte_offset_of(Method, _i2i_entry ); }
+  static ByteSize signature_handler_offset()     { return in_ByteSize(sizeof(Method) + wordSize);      }
+  static ByteSize max_stack_offset()             { return byte_offset_of(Method, _max_stack         ); }
+
+  // for code generation
+  static int method_data_offset_in_bytes()       { return offset_of(Method, _method_data); }
+  static int interpreter_invocation_counter_offset_in_bytes()
+                                                 { return offset_of(Method, _interpreter_invocation_count); }
+  static int intrinsic_id_offset_in_bytes()      { return offset_of(Method, _intrinsic_id); }
+  static int intrinsic_id_size_in_bytes()        { return sizeof(u1); }
+
+  // Static methods that are used to implement member methods where an exposed this pointer
+  // is needed due to possible GCs
+  static objArrayHandle resolved_checked_exceptions_impl(Method* this_oop, TRAPS);
+
+  // Returns the byte code index from the byte code pointer
+  int     bci_from(address bcp) const;
+  address bcp_from(int     bci) const;
+  int validate_bci_from_bcx(intptr_t bcx) const;
+
+  // Returns the line number for a bci if debugging information for the method is prowided,
+  // -1 is returned otherwise.
+  int line_number_from_bci(int bci) const;
+
+  // Reflection support
+  bool is_overridden_in(Klass* k) const;
+
+  // JSR 292 support
+  bool is_method_handle_intrinsic() const;          // MethodHandles::is_signature_polymorphic_intrinsic(intrinsic_id)
+  bool is_compiled_lambda_form() const;             // intrinsic_id() == vmIntrinsics::_compiledLambdaForm
+  bool has_member_arg() const;                      // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc.
+  static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual
+                                                   Symbol* signature, //anything at all
+                                                   TRAPS);
+  static Klass* check_non_bcp_klass(Klass* klass);
+  // these operate only on invoke methods:
+  // presize interpreter frames for extra interpreter stack entries, if needed
+  // method handles want to be able to push a few extra values (e.g., a bound receiver), and
+  // invokedynamic sometimes needs to push a bootstrap method, call site, and arglist,
+  // all without checking for a stack overflow
+  static int extra_stack_entries() { return EnableInvokeDynamic ? 2 : 0; }
+  static int extra_stack_words();  // = extra_stack_entries() * Interpreter::stackElementSize()
+
+  // RedefineClasses() support:
+  bool is_old() const                               { return access_flags().is_old(); }
+  void set_is_old()                                 { _access_flags.set_is_old(); }
+  bool is_obsolete() const                          { return access_flags().is_obsolete(); }
+  void set_is_obsolete()                            { _access_flags.set_is_obsolete(); }
+  bool on_stack() const                             { return access_flags().on_stack(); }
+  void set_on_stack(const bool value);
+
+  // see the definition in Method*.cpp for the gory details
+  bool should_not_be_cached() const;
+
+  // JVMTI Native method prefixing support:
+  bool is_prefixed_native() const                   { return access_flags().is_prefixed_native(); }
+  void set_is_prefixed_native()                     { _access_flags.set_is_prefixed_native(); }
+
+  // Rewriting support
+  static methodHandle clone_with_new_data(methodHandle m, u_char* new_code, int new_code_length,
+                                          u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS);
+
+  // jmethodID handling
+  // Because the useful life-span of a jmethodID cannot be determined,
+  // once created they are never reclaimed.  The methods to which they refer,
+  // however, can be GC'ed away if the class is unloaded or if the method is
+  // made obsolete or deleted -- in these cases, the jmethodID
+  // refers to NULL (as is the case for any weak reference).
+  static jmethodID make_jmethod_id(ClassLoaderData* loader_data, Method* mh);
+  static void destroy_jmethod_id(ClassLoaderData* loader_data, jmethodID mid);
+
+  // Use resolve_jmethod_id() in situations where the caller is expected
+  // to provide a valid jmethodID; the only sanity checks are in asserts;
+  // result guaranteed not to be NULL.
+  inline static Method* resolve_jmethod_id(jmethodID mid) {
+    assert(mid != NULL, "JNI method id should not be null");
+    return *((Method**)mid);
+  }
+
+  // Use checked_resolve_jmethod_id() in situations where the caller
+  // should provide a valid jmethodID, but might not. NULL is returned
+  // when the jmethodID does not refer to a valid method.
+  static Method* checked_resolve_jmethod_id(jmethodID mid);
+
+  static void change_method_associated_with_jmethod_id(jmethodID old_jmid_ptr, Method* new_method);
+  static bool is_method_id(jmethodID mid);
+
+  // Clear methods
+  static void clear_jmethod_ids(ClassLoaderData* loader_data);
+  static void print_jmethod_ids(ClassLoaderData* loader_data, outputStream* out) PRODUCT_RETURN;
+
+  // Get this method's jmethodID -- allocate if it doesn't exist
+  jmethodID jmethod_id()                            { methodHandle this_h(this);
+                                                      return InstanceKlass::get_jmethod_id(InstanceKlass::cast(method_holder()), this_h); }
+
+  // Lookup the jmethodID for this method.  Return NULL if not found.
+  // NOTE that this function can be called from a signal handler
+  // (see AsyncGetCallTrace support for Forte Analyzer) and this
+  // needs to be async-safe. No allocation should be done and
+  // so handles are not used to avoid deadlock.
+  jmethodID find_jmethod_id_or_null()               { return InstanceKlass::cast(method_holder())->jmethod_id_or_null(this); }
+
+  // JNI static invoke cached itable index accessors
+  int cached_itable_index()                         { return InstanceKlass::cast(method_holder())->cached_itable_index(method_idnum()); }
+  void set_cached_itable_index(int index)           { InstanceKlass::cast(method_holder())->set_cached_itable_index(method_idnum(), index); }
+
+  // Support for inlining of intrinsic methods
+  vmIntrinsics::ID intrinsic_id() const          { return (vmIntrinsics::ID) _intrinsic_id;           }
+  void     set_intrinsic_id(vmIntrinsics::ID id) {                           _intrinsic_id = (u1) id; }
+
+  // Helper routines for intrinsic_id() and vmIntrinsics::method().
+  void init_intrinsic_id();     // updates from _none if a match
+  static vmSymbols::SID klass_id_for_intrinsics(Klass* holder);
+
+  bool jfr_towrite()                 { return _jfr_towrite; }
+  void set_jfr_towrite(bool towrite) { _jfr_towrite = towrite; }
+
+  bool     force_inline()       { return _force_inline;     }
+  void set_force_inline(bool x) {        _force_inline = x; }
+  bool     dont_inline()        { return _dont_inline;      }
+  void set_dont_inline(bool x)  {        _dont_inline = x;  }
+  bool  is_hidden()             { return _hidden;           }
+  void set_hidden(bool x)       {        _hidden = x;       }
+
+  // On-stack replacement support
+  bool has_osr_nmethod(int level, bool match_level) {
+   return InstanceKlass::cast(method_holder())->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
+  }
+
+  nmethod* lookup_osr_nmethod_for(int bci, int level, bool match_level) {
+    return InstanceKlass::cast(method_holder())->lookup_osr_nmethod(this, bci, level, match_level);
+  }
+
+  // Inline cache support
+  void cleanup_inline_caches();
+
+  // Find if klass for method is loaded
+  bool is_klass_loaded_by_klass_index(int klass_index) const;
+  bool is_klass_loaded(int refinfo_index, bool must_be_resolved = false) const;
+
+  // Indicates whether compilation failed earlier for this method, or
+  // whether it is not compilable for another reason like having a
+  // breakpoint set in it.
+  bool is_not_compilable(int comp_level = CompLevel_any) const;
+  void set_not_compilable(int comp_level = CompLevel_all, bool report = true);
+  void set_not_compilable_quietly(int comp_level = CompLevel_all) {
+    set_not_compilable(comp_level, false);
+  }
+  bool is_not_osr_compilable(int comp_level = CompLevel_any) const {
+    return is_not_compilable(comp_level) || access_flags().is_not_osr_compilable();
+  }
+  void set_not_osr_compilable()               { _access_flags.set_not_osr_compilable();       }
+  bool is_not_c1_compilable() const           { return access_flags().is_not_c1_compilable(); }
+  void set_not_c1_compilable()                { _access_flags.set_not_c1_compilable();        }
+  bool is_not_c2_compilable() const           { return access_flags().is_not_c2_compilable(); }
+  void set_not_c2_compilable()                { _access_flags.set_not_c2_compilable();        }
+
+  // Background compilation support
+  bool queued_for_compilation() const  { return access_flags().queued_for_compilation(); }
+  void set_queued_for_compilation()    { _access_flags.set_queued_for_compilation();     }
+  void clear_queued_for_compilation()  { _access_flags.clear_queued_for_compilation();   }
+
+  // Resolve all classes in signature, return 'true' if successful
+  static bool load_signature_classes(methodHandle m, TRAPS);
+
+  // Return if true if not all classes references in signature, including return type, has been loaded
+  static bool has_unloaded_classes_in_signature(methodHandle m, TRAPS);
+
+  // Printing
+  void print_short_name(outputStream* st = tty)  /*PRODUCT_RETURN*/; // prints as klassname::methodname; Exposed so field engineers can debug VM
+  void print_name(outputStream* st = tty)        PRODUCT_RETURN; // prints as "virtual void foo(int)"
+
+  // Helper routine used for method sorting
+  static void sort_methods(Array<Method*>* methods,
+                           Array<AnnotationArray*>* methods_annotations,
+                           Array<AnnotationArray*>* methods_parameter_annotations,
+                           Array<AnnotationArray*>* methods_default_annotations,
+                           bool idempotent = false);
+
+  // size of parameters
+  void set_size_of_parameters(int size)          { _size_of_parameters = size; }
+
+  // Deallocation function for redefine classes or if an error occurs
+  void deallocate_contents(ClassLoaderData* loader_data);
+
+  // Printing
+#ifndef PRODUCT
+  void print_on(outputStream* st) const;
+#endif
+  void print_value_on(outputStream* st) const;
+
+  const char* internal_name() const { return "{method}"; }
+
+  // Verify
+  void verify() { verify_on(tty); }
+  void verify_on(outputStream* st);
+
+ private:
+
+  // Inlined elements
+  address* native_function_addr() const          { assert(is_native(), "must be native"); return (address*) (this+1); }
+  address* signature_handler_addr() const        { return native_function_addr() + 1; }
+};
+
+
+// Utility class for compressing line number tables
+
+class CompressedLineNumberWriteStream: public CompressedWriteStream {
+ private:
+  int _bci;
+  int _line;
+ public:
+  // Constructor
+  CompressedLineNumberWriteStream(int initial_size) : CompressedWriteStream(initial_size), _bci(0), _line(0) {}
+  CompressedLineNumberWriteStream(u_char* buffer, int initial_size) : CompressedWriteStream(buffer, initial_size), _bci(0), _line(0) {}
+
+  // Write (bci, line number) pair to stream
+  void write_pair_regular(int bci_delta, int line_delta);
+
+  inline void write_pair_inline(int bci, int line) {
+    int bci_delta = bci - _bci;
+    int line_delta = line - _line;
+    _bci = bci;
+    _line = line;
+    // Skip (0,0) deltas - they do not add information and conflict with terminator.
+    if (bci_delta == 0 && line_delta == 0) return;
+    // Check if bci is 5-bit and line number 3-bit unsigned.
+    if (((bci_delta & ~0x1F) == 0) && ((line_delta & ~0x7) == 0)) {
+      // Compress into single byte.
+      jubyte value = ((jubyte) bci_delta << 3) | (jubyte) line_delta;
+      // Check that value doesn't match escape character.
+      if (value != 0xFF) {
+        write_byte(value);
+        return;
+      }
+    }
+    write_pair_regular(bci_delta, line_delta);
+  }
+
+// Windows AMD64 + Apr 2005 PSDK with /O2 generates bad code for write_pair.
+// Disabling optimization doesn't work for methods in header files
+// so we force it to call through the non-optimized version in the .cpp.
+// It's gross, but it's the only way we can ensure that all callers are
+// fixed.  _MSC_VER is defined by the windows compiler
+#if defined(_M_AMD64) && _MSC_VER >= 1400
+  void write_pair(int bci, int line);
+#else
+  void write_pair(int bci, int line) { write_pair_inline(bci, line); }
+#endif
+
+  // Write end-of-stream marker
+  void write_terminator()                        { write_byte(0); }
+};
+
+
+// Utility class for decompressing line number tables
+
+class CompressedLineNumberReadStream: public CompressedReadStream {
+ private:
+  int _bci;
+  int _line;
+ public:
+  // Constructor
+  CompressedLineNumberReadStream(u_char* buffer);
+  // Read (bci, line number) pair from stream. Returns false at end-of-stream.
+  bool read_pair();
+  // Accessing bci and line number (after calling read_pair)
+  int bci() const                               { return _bci; }
+  int line() const                              { return _line; }
+};
+
+
+/// Fast Breakpoints.
+
+// If this structure gets more complicated (because bpts get numerous),
+// move it into its own header.
+
+// There is presently no provision for concurrent access
+// to breakpoint lists, which is only OK for JVMTI because
+// breakpoints are written only at safepoints, and are read
+// concurrently only outside of safepoints.
+
+class BreakpointInfo : public CHeapObj<mtClass> {
+  friend class VMStructs;
+ private:
+  Bytecodes::Code  _orig_bytecode;
+  int              _bci;
+  u2               _name_index;       // of method
+  u2               _signature_index;  // of method
+  BreakpointInfo*  _next;             // simple storage allocation
+
+ public:
+  BreakpointInfo(Method* m, int bci);
+
+  // accessors
+  Bytecodes::Code orig_bytecode()                     { return _orig_bytecode; }
+  void        set_orig_bytecode(Bytecodes::Code code) { _orig_bytecode = code; }
+  int         bci()                                   { return _bci; }
+
+  BreakpointInfo*          next() const               { return _next; }
+  void                 set_next(BreakpointInfo* n)    { _next = n; }
+
+  // helps for searchers
+  bool match(const Method* m, int bci) {
+    return bci == _bci && match(m);
+  }
+
+  bool match(const Method* m) {
+    return _name_index == m->name_index() &&
+      _signature_index == m->signature_index();
+  }
+
+  void set(Method* method);
+  void clear(Method* method);
+};
+
+// Utility class for access exception handlers
+class ExceptionTable : public StackObj {
+ private:
+  ExceptionTableElement* _table;
+  u2  _length;
+
+ public:
+  ExceptionTable(Method* m) {
+    if (m->has_exception_handler()) {
+      _table = m->exception_table_start();
+      _length = m->exception_table_length();
+    } else {
+      _table = NULL;
+      _length = 0;
+    }
+  }
+
+  int length() const {
+    return _length;
+  }
+
+  u2 start_pc(int idx) const {
+    assert(idx < _length, "out of bounds");
+    return _table[idx].start_pc;
+  }
+
+  void set_start_pc(int idx, u2 value) {
+    assert(idx < _length, "out of bounds");
+    _table[idx].start_pc = value;
+  }
+
+  u2 end_pc(int idx) const {
+    assert(idx < _length, "out of bounds");
+    return _table[idx].end_pc;
+  }
+
+  void set_end_pc(int idx, u2 value) {
+    assert(idx < _length, "out of bounds");
+    _table[idx].end_pc = value;
+  }
+
+  u2 handler_pc(int idx) const {
+    assert(idx < _length, "out of bounds");
+    return _table[idx].handler_pc;
+  }
+
+  void set_handler_pc(int idx, u2 value) {
+    assert(idx < _length, "out of bounds");
+    _table[idx].handler_pc = value;
+  }
+
+  u2 catch_type_index(int idx) const {
+    assert(idx < _length, "out of bounds");
+    return _table[idx].catch_type_index;
+  }
+
+  void set_catch_type_index(int idx, u2 value) {
+    assert(idx < _length, "out of bounds");
+    _table[idx].catch_type_index = value;
+  }
+};
+
+#endif // SHARE_VM_OOPS_METHODOOP_HPP
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/methodData.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,874 @@
+/*
+ * Copyright (c) 2000, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#include "precompiled.hpp"
+#include "classfile/systemDictionary.hpp"
+#include "interpreter/bytecode.hpp"
+#include "interpreter/bytecodeStream.hpp"
+#include "interpreter/linkResolver.hpp"
+#include "oops/methodData.hpp"
+#include "prims/jvmtiRedefineClasses.hpp"
+#include "runtime/compilationPolicy.hpp"
+#include "runtime/deoptimization.hpp"
+#include "runtime/handles.inline.hpp"
+
+// ==================================================================
+// DataLayout
+//
+// Overlay for generic profiling data.
+
+// Some types of data layouts need a length field.
+bool DataLayout::needs_array_len(u1 tag) {
+  return (tag == multi_branch_data_tag) || (tag == arg_info_data_tag);
+}
+
+// Perform generic initialization of the data.  More specific
+// initialization occurs in overrides of ProfileData::post_initialize.
+void DataLayout::initialize(u1 tag, u2 bci, int cell_count) {
+  _header._bits = (intptr_t)0;
+  _header._struct._tag = tag;
+  _header._struct._bci = bci;
+  for (int i = 0; i < cell_count; i++) {
+    set_cell_at(i, (intptr_t)0);
+  }
+  if (needs_array_len(tag)) {
+    set_cell_at(ArrayData::array_len_off_set, cell_count - 1); // -1 for header.
+  }
+}
+
+void DataLayout::clean_weak_klass_links(BoolObjectClosure* cl) {
+  ResourceMark m;
+  data_in()->clean_weak_klass_links(cl);
+}
+
+
+// ==================================================================
+// ProfileData
+//
+// A ProfileData object is created to refer to a section of profiling
+// data in a structured way.
+
+// Constructor for invalid ProfileData.
+ProfileData::ProfileData() {
+  _data = NULL;
+}
+
+#ifndef PRODUCT
+void ProfileData::print_shared(outputStream* st, const char* name) {
+  st->print("bci: %d", bci());
+  st->fill_to(tab_width_one);
+  st->print("%s", name);
+  tab(st);
+  int trap = trap_state();
+  if (trap != 0) {
+    char buf[100];
+    st->print("trap(%s) ", Deoptimization::format_trap_state(buf, sizeof(buf), trap));
+  }
+  int flags = data()->flags();
+  if (flags != 0)
+    st->print("flags(%d) ", flags);
+}
+
+void ProfileData::tab(outputStream* st) {
+  st->fill_to(tab_width_two);
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// BitData
+//
+// A BitData corresponds to a one-bit flag.  This is used to indicate
+// whether a checkcast bytecode has seen a null value.
+
+
+#ifndef PRODUCT
+void BitData::print_data_on(outputStream* st) {
+  print_shared(st, "BitData");
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// CounterData
+//
+// A CounterData corresponds to a simple counter.
+
+#ifndef PRODUCT
+void CounterData::print_data_on(outputStream* st) {
+  print_shared(st, "CounterData");
+  st->print_cr("count(%u)", count());
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// JumpData
+//
+// A JumpData is used to access profiling information for a direct
+// branch.  It is a counter, used for counting the number of branches,
+// plus a data displacement, used for realigning the data pointer to
+// the corresponding target bci.
+
+void JumpData::post_initialize(BytecodeStream* stream, MethodData* mdo) {
+  assert(stream->bci() == bci(), "wrong pos");
+  int target;
+  Bytecodes::Code c = stream->code();
+  if (c == Bytecodes::_goto_w || c == Bytecodes::_jsr_w) {
+    target = stream->dest_w();
+  } else {
+    target = stream->dest();
+  }
+  int my_di = mdo->dp_to_di(dp());
+  int target_di = mdo->bci_to_di(target);
+  int offset = target_di - my_di;
+  set_displacement(offset);
+}
+
+#ifndef PRODUCT
+void JumpData::print_data_on(outputStream* st) {
+  print_shared(st, "JumpData");
+  st->print_cr("taken(%u) displacement(%d)", taken(), displacement());
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// ReceiverTypeData
+//
+// A ReceiverTypeData is used to access profiling information about a
+// dynamic type check.  It consists of a counter which counts the total times
+// that the check is reached, and a series of (Klass*, count) pairs
+// which are used to store a type profile for the receiver of the check.
+
+void ReceiverTypeData::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) {
+    for (uint row = 0; row < row_limit(); row++) {
+    Klass* p = receiver(row);
+    if (p != NULL && !p->is_loader_alive(is_alive_cl)) {
+      clear_row(row);
+    }
+  }
+}
+
+#ifndef PRODUCT
+void ReceiverTypeData::print_receiver_data_on(outputStream* st) {
+  uint row;
+  int entries = 0;
+  for (row = 0; row < row_limit(); row++) {
+    if (receiver(row) != NULL)  entries++;
+  }
+  st->print_cr("count(%u) entries(%u)", count(), entries);
+  int total = count();
+  for (row = 0; row < row_limit(); row++) {
+    if (receiver(row) != NULL) {
+      total += receiver_count(row);
+    }
+  }
+  for (row = 0; row < row_limit(); row++) {
+    if (receiver(row) != NULL) {
+      tab(st);
+      receiver(row)->print_value_on(st);
+      st->print_cr("(%u %4.2f)", receiver_count(row), (float) receiver_count(row) / (float) total);
+    }
+  }
+}
+void ReceiverTypeData::print_data_on(outputStream* st) {
+  print_shared(st, "ReceiverTypeData");
+  print_receiver_data_on(st);
+}
+void VirtualCallData::print_data_on(outputStream* st) {
+  print_shared(st, "VirtualCallData");
+  print_receiver_data_on(st);
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// RetData
+//
+// A RetData is used to access profiling information for a ret bytecode.
+// It is composed of a count of the number of times that the ret has
+// been executed, followed by a series of triples of the form
+// (bci, count, di) which count the number of times that some bci was the
+// target of the ret and cache a corresponding displacement.
+
+void RetData::post_initialize(BytecodeStream* stream, MethodData* mdo) {
+  for (uint row = 0; row < row_limit(); row++) {
+    set_bci_displacement(row, -1);
+    set_bci(row, no_bci);
+  }
+  // release so other threads see a consistent state.  bci is used as
+  // a valid flag for bci_displacement.
+  OrderAccess::release();
+}
+
+// This routine needs to atomically update the RetData structure, so the
+// caller needs to hold the RetData_lock before it gets here.  Since taking
+// the lock can block (and allow GC) and since RetData is a ProfileData is a
+// wrapper around a derived oop, taking the lock in _this_ method will
+// basically cause the 'this' pointer's _data field to contain junk after the
+// lock.  We require the caller to take the lock before making the ProfileData
+// structure.  Currently the only caller is InterpreterRuntime::update_mdp_for_ret
+address RetData::fixup_ret(int return_bci, MethodData* h_mdo) {
+  // First find the mdp which corresponds to the return bci.
+  address mdp = h_mdo->bci_to_dp(return_bci);
+
+  // Now check to see if any of the cache slots are open.
+  for (uint row = 0; row < row_limit(); row++) {
+    if (bci(row) == no_bci) {
+      set_bci_displacement(row, mdp - dp());
+      set_bci_count(row, DataLayout::counter_increment);
+      // Barrier to ensure displacement is written before the bci; allows
+      // the interpreter to read displacement without fear of race condition.
+      release_set_bci(row, return_bci);
+      break;
+    }
+  }
+  return mdp;
+}
+
+
+#ifndef PRODUCT
+void RetData::print_data_on(outputStream* st) {
+  print_shared(st, "RetData");
+  uint row;
+  int entries = 0;
+  for (row = 0; row < row_limit(); row++) {
+    if (bci(row) != no_bci)  entries++;
+  }
+  st->print_cr("count(%u) entries(%u)", count(), entries);
+  for (row = 0; row < row_limit(); row++) {
+    if (bci(row) != no_bci) {
+      tab(st);
+      st->print_cr("bci(%d: count(%u) displacement(%d))",
+                   bci(row), bci_count(row), bci_displacement(row));
+    }
+  }
+}
+#endif // !PRODUCT
+
+// ==================================================================
+// BranchData
+//
+// A BranchData is used to access profiling data for a two-way branch.
+// It consists of taken and not_taken counts as well as a data displacement
+// for the taken case.
+
+void BranchData::post_initialize(BytecodeStream* stream, MethodData* mdo) {
+  assert(stream->bci() == bci(), "wrong pos");
+  int target = stream->dest();
+  int my_di = mdo->dp_to_di(dp());
+  int target_di = mdo->bci_to_di(target);
+  int offset = target_di - my_di;
+  set_displacement(offset);
+}
+
+#ifndef PRODUCT
+void BranchData::print_data_on(outputStream* st) {
+  print_shared(st, "BranchData");
+  st->print_cr("taken(%u) displacement(%d)",
+               taken(), displacement());
+  tab(st);
+  st->print_cr("not taken(%u)", not_taken());
+}
+#endif
+
+// ==================================================================
+// MultiBranchData
+//
+// A MultiBranchData is used to access profiling information for
+// a multi-way branch (*switch bytecodes).  It consists of a series
+// of (count, displacement) pairs, which count the number of times each
+// case was taken and specify the data displacment for each branch target.
+
+int MultiBranchData::compute_cell_count(BytecodeStream* stream) {
+  int cell_count = 0;
+  if (stream->code() == Bytecodes::_tableswitch) {
+    Bytecode_tableswitch sw(stream->method()(), stream->bcp());
+    cell_count = 1 + per_case_cell_count * (1 + sw.length()); // 1 for default
+  } else {
+    Bytecode_lookupswitch sw(stream->method()(), stream->bcp());
+    cell_count = 1 + per_case_cell_count * (sw.number_of_pairs() + 1); // 1 for default
+  }
+  return cell_count;
+}
+
+void MultiBranchData::post_initialize(BytecodeStream* stream,
+                                      MethodData* mdo) {
+  assert(stream->bci() == bci(), "wrong pos");
+  int target;
+  int my_di;
+  int target_di;
+  int offset;
+  if (stream->code() == Bytecodes::_tableswitch) {
+    Bytecode_tableswitch sw(stream->method()(), stream->bcp());
+    int len = sw.length();
+    assert(array_len() == per_case_cell_count * (len + 1), "wrong len");
+    for (int count = 0; count < len; count++) {
+      target = sw.dest_offset_at(count) + bci();
+      my_di = mdo->dp_to_di(dp());
+      target_di = mdo->bci_to_di(target);
+      offset = target_di - my_di;
+      set_displacement_at(count, offset);
+    }
+    target = sw.default_offset() + bci();
+    my_di = mdo->dp_to_di(dp());
+    target_di = mdo->bci_to_di(target);
+    offset = target_di - my_di;
+    set_default_displacement(offset);
+
+  } else {
+    Bytecode_lookupswitch sw(stream->method()(), stream->bcp());
+    int npairs = sw.number_of_pairs();
+    assert(array_len() == per_case_cell_count * (npairs + 1), "wrong len");
+    for (int count = 0; count < npairs; count++) {
+      LookupswitchPair pair = sw.pair_at(count);
+      target = pair.offset() + bci();
+      my_di = mdo->dp_to_di(dp());
+      target_di = mdo->bci_to_di(target);
+      offset = target_di - my_di;
+      set_displacement_at(count, offset);
+    }
+    target = sw.default_offset() + bci();
+    my_di = mdo->dp_to_di(dp());
+    target_di = mdo->bci_to_di(target);
+    offset = target_di - my_di;
+    set_default_displacement(offset);
+  }
+}
+
+#ifndef PRODUCT
+void MultiBranchData::print_data_on(outputStream* st) {
+  print_shared(st, "MultiBranchData");
+  st->print_cr("default_count(%u) displacement(%d)",
+               default_count(), default_displacement());
+  int cases = number_of_cases();
+  for (int i = 0; i < cases; i++) {
+    tab(st);
+    st->print_cr("count(%u) displacement(%d)",
+                 count_at(i), displacement_at(i));
+  }
+}
+#endif
+
+#ifndef PRODUCT
+void ArgInfoData::print_data_on(outputStream* st) {
+  print_shared(st, "ArgInfoData");
+  int nargs = number_of_args();
+  for (int i = 0; i < nargs; i++) {
+    st->print("  0x%x", arg_modified(i));
+  }
+  st->cr();
+}
+
+#endif
+// ==================================================================
+// MethodData*
+//
+// A MethodData* holds information which has been collected about
+// a method.
+
+MethodData* MethodData::allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS) {
+  int size = MethodData::compute_allocation_size_in_words(method);
+
+  return new (loader_data, size, false, THREAD) MethodData(method(), size, CHECK_NULL);
+}
+
+int MethodData::bytecode_cell_count(Bytecodes::Code code) {
+  switch (code) {
+  case Bytecodes::_checkcast:
+  case Bytecodes::_instanceof:
+  case Bytecodes::_aastore:
+    if (TypeProfileCasts) {
+      return ReceiverTypeData::static_cell_count();
+    } else {
+      return BitData::static_cell_count();
+    }
+  case Bytecodes::_invokespecial:
+  case Bytecodes::_invokestatic:
+    return CounterData::static_cell_count();
+  case Bytecodes::_goto:
+  case Bytecodes::_goto_w:
+  case Bytecodes::_jsr:
+  case Bytecodes::_jsr_w:
+    return JumpData::static_cell_count();
+  case Bytecodes::_invokevirtual:
+  case Bytecodes::_invokeinterface:
+    return VirtualCallData::static_cell_count();
+  case Bytecodes::_invokedynamic:
+    return CounterData::static_cell_count();
+  case Bytecodes::_ret:
+    return RetData::static_cell_count();
+  case Bytecodes::_ifeq:
+  case Bytecodes::_ifne:
+  case Bytecodes::_iflt:
+  case Bytecodes::_ifge:
+  case Bytecodes::_ifgt:
+  case Bytecodes::_ifle:
+  case Bytecodes::_if_icmpeq:
+  case Bytecodes::_if_icmpne:
+  case Bytecodes::_if_icmplt:
+  case Bytecodes::_if_icmpge:
+  case Bytecodes::_if_icmpgt:
+  case Bytecodes::_if_icmple:
+  case Bytecodes::_if_acmpeq:
+  case Bytecodes::_if_acmpne:
+  case Bytecodes::_ifnull:
+  case Bytecodes::_ifnonnull:
+    return BranchData::static_cell_count();
+  case Bytecodes::_lookupswitch:
+  case Bytecodes::_tableswitch:
+    return variable_cell_count;
+  }
+  return no_profile_data;
+}
+
+// Compute the size of the profiling information corresponding to
+// the current bytecode.
+int MethodData::compute_data_size(BytecodeStream* stream) {
+  int cell_count = bytecode_cell_count(stream->code());
+  if (cell_count == no_profile_data) {
+    return 0;
+  }
+  if (cell_count == variable_cell_count) {
+    cell_count = MultiBranchData::compute_cell_count(stream);
+  }
+  // Note:  cell_count might be zero, meaning that there is just
+  //        a DataLayout header, with no extra cells.
+  assert(cell_count >= 0, "sanity");
+  return DataLayout::compute_size_in_bytes(cell_count);
+}
+
+int MethodData::compute_extra_data_count(int data_size, int empty_bc_count) {
+  if (ProfileTraps) {
+    // Assume that up to 3% of BCIs with no MDP will need to allocate one.
+    int extra_data_count = (uint)(empty_bc_count * 3) / 128 + 1;
+    // If the method is large, let the extra BCIs grow numerous (to ~1%).
+    int one_percent_of_data
+      = (uint)data_size / (DataLayout::header_size_in_bytes()*128);
+    if (extra_data_count < one_percent_of_data)
+      extra_data_count = one_percent_of_data;
+    if (extra_data_count > empty_bc_count)
+      extra_data_count = empty_bc_count;  // no need for more
+    return extra_data_count;
+  } else {
+    return 0;
+  }
+}
+
+// Compute the size of the MethodData* necessary to store
+// profiling information about a given method.  Size is in bytes.
+int MethodData::compute_allocation_size_in_bytes(methodHandle method) {
+  int data_size = 0;
+  BytecodeStream stream(method);
+  Bytecodes::Code c;
+  int empty_bc_count = 0;  // number of bytecodes lacking data
+  while ((c = stream.next()) >= 0) {
+    int size_in_bytes = compute_data_size(&stream);
+    data_size += size_in_bytes;
+    if (size_in_bytes == 0)  empty_bc_count += 1;
+  }
+  int object_size = in_bytes(data_offset()) + data_size;
+
+  // Add some extra DataLayout cells (at least one) to track stray traps.
+  int extra_data_count = compute_extra_data_count(data_size, empty_bc_count);
+  object_size += extra_data_count * DataLayout::compute_size_in_bytes(0);
+
+  // Add a cell to record information about modified arguments.
+  int arg_size = method->size_of_parameters();
+  object_size += DataLayout::compute_size_in_bytes(arg_size+1);
+  return object_size;
+}
+
+// Compute the size of the MethodData* necessary to store
+// profiling information about a given method.  Size is in words
+int MethodData::compute_allocation_size_in_words(methodHandle method) {
+  int byte_size = compute_allocation_size_in_bytes(method);
+  int word_size = align_size_up(byte_size, BytesPerWord) / BytesPerWord;
+  return align_object_size(word_size);
+}
+
+// Initialize an individual data segment.  Returns the size of
+// the segment in bytes.
+int MethodData::initialize_data(BytecodeStream* stream,
+                                       int data_index) {
+  int cell_count = -1;
+  int tag = DataLayout::no_tag;
+  DataLayout* data_layout = data_layout_at(data_index);
+  Bytecodes::Code c = stream->code();
+  switch (c) {
+  case Bytecodes::_checkcast:
+  case Bytecodes::_instanceof:
+  case Bytecodes::_aastore:
+    if (TypeProfileCasts) {
+      cell_count = ReceiverTypeData::static_cell_count();
+      tag = DataLayout::receiver_type_data_tag;
+    } else {
+      cell_count = BitData::static_cell_count();
+      tag = DataLayout::bit_data_tag;
+    }
+    break;
+  case Bytecodes::_invokespecial:
+  case Bytecodes::_invokestatic:
+    cell_count = CounterData::static_cell_count();
+    tag = DataLayout::counter_data_tag;
+    break;
+  case Bytecodes::_goto:
+  case Bytecodes::_goto_w:
+  case Bytecodes::_jsr:
+  case Bytecodes::_jsr_w:
+    cell_count = JumpData::static_cell_count();
+    tag = DataLayout::jump_data_tag;
+    break;
+  case Bytecodes::_invokevirtual:
+  case Bytecodes::_invokeinterface:
+    cell_count = VirtualCallData::static_cell_count();
+    tag = DataLayout::virtual_call_data_tag;
+    break;
+  case Bytecodes::_invokedynamic:
+    // %%% should make a type profile for any invokedynamic that takes a ref argument
+    cell_count = CounterData::static_cell_count();
+    tag = DataLayout::counter_data_tag;
+    break;
+  case Bytecodes::_ret:
+    cell_count = RetData::static_cell_count();
+    tag = DataLayout::ret_data_tag;
+    break;
+  case Bytecodes::_ifeq:
+  case Bytecodes::_ifne:
+  case Bytecodes::_iflt:
+  case Bytecodes::_ifge:
+  case Bytecodes::_ifgt:
+  case Bytecodes::_ifle:
+  case Bytecodes::_if_icmpeq:
+  case Bytecodes::_if_icmpne:
+  case Bytecodes::_if_icmplt:
+  case Bytecodes::_if_icmpge:
+  case Bytecodes::_if_icmpgt:
+  case Bytecodes::_if_icmple:
+  case Bytecodes::_if_acmpeq:
+  case Bytecodes::_if_acmpne:
+  case Bytecodes::_ifnull:
+  case Bytecodes::_ifnonnull:
+    cell_count = BranchData::static_cell_count();
+    tag = DataLayout::branch_data_tag;
+    break;
+  case Bytecodes::_lookupswitch:
+  case Bytecodes::_tableswitch:
+    cell_count = MultiBranchData::compute_cell_count(stream);
+    tag = DataLayout::multi_branch_data_tag;
+    break;
+  }
+  assert(tag == DataLayout::multi_branch_data_tag ||
+         cell_count == bytecode_cell_count(c), "cell counts must agree");
+  if (cell_count >= 0) {
+    assert(tag != DataLayout::no_tag, "bad tag");
+    assert(bytecode_has_profile(c), "agree w/ BHP");
+    data_layout->initialize(tag, stream->bci(), cell_count);
+    return DataLayout::compute_size_in_bytes(cell_count);
+  } else {
+    assert(!bytecode_has_profile(c), "agree w/ !BHP");
+    return 0;
+  }
+}
+
+// Get the data at an arbitrary (sort of) data index.
+ProfileData* MethodData::data_at(int data_index) const {
+  if (out_of_bounds(data_index)) {
+    return NULL;
+  }
+  DataLayout* data_layout = data_layout_at(data_index);
+  return data_layout->data_in();
+}
+
+ProfileData* DataLayout::data_in() {
+  switch (tag()) {
+  case DataLayout::no_tag:
+  default:
+    ShouldNotReachHere();
+    return NULL;
+  case DataLayout::bit_data_tag:
+    return new BitData(this);
+  case DataLayout::counter_data_tag:
+    return new CounterData(this);
+  case DataLayout::jump_data_tag:
+    return new JumpData(this);
+  case DataLayout::receiver_type_data_tag:
+    return new ReceiverTypeData(this);
+  case DataLayout::virtual_call_data_tag:
+    return new VirtualCallData(this);
+  case DataLayout::ret_data_tag:
+    return new RetData(this);
+  case DataLayout::branch_data_tag:
+    return new BranchData(this);
+  case DataLayout::multi_branch_data_tag:
+    return new MultiBranchData(this);
+  case DataLayout::arg_info_data_tag:
+    return new ArgInfoData(this);
+  };
+}
+
+// Iteration over data.
+ProfileData* MethodData::next_data(ProfileData* current) const {
+  int current_index = dp_to_di(current->dp());
+  int next_index = current_index + current->size_in_bytes();
+  ProfileData* next = data_at(next_index);
+  return next;
+}
+
+// Give each of the data entries a chance to perform specific
+// data initialization.
+void MethodData::post_initialize(BytecodeStream* stream) {
+  ResourceMark rm;
+  ProfileData* data;
+  for (data = first_data(); is_valid(data); data = next_data(data)) {
+    stream->set_start(data->bci());
+    stream->next();
+    data->post_initialize(stream, this);
+  }
+}
+
+// Initialize the MethodData* corresponding to a given method.
+MethodData::MethodData(methodHandle method, int size, TRAPS) {
+  No_Safepoint_Verifier no_safepoint;  // init function atomic wrt GC
+  ResourceMark rm;
+  // Set the method back-pointer.
+  _method = method();
+
+  if (TieredCompilation) {
+    _invocation_counter.init();
+    _backedge_counter.init();
+    _invocation_counter_start = 0;
+    _backedge_counter_start = 0;
+    _num_loops = 0;
+    _num_blocks = 0;
+    _highest_comp_level = 0;
+    _highest_osr_comp_level = 0;
+    _would_profile = true;
+  }
+  set_creation_mileage(mileage_of(method()));
+
+  // Initialize flags and trap history.
+  _nof_decompiles = 0;
+  _nof_overflow_recompiles = 0;
+  _nof_overflow_traps = 0;
+  assert(sizeof(_trap_hist) % sizeof(HeapWord) == 0, "align");
+  Copy::zero_to_words((HeapWord*) &_trap_hist,
+                      sizeof(_trap_hist) / sizeof(HeapWord));
+
+  // Go through the bytecodes and allocate and initialize the
+  // corresponding data cells.
+  int data_size = 0;
+  int empty_bc_count = 0;  // number of bytecodes lacking data
+  BytecodeStream stream(method);
+  Bytecodes::Code c;
+  while ((c = stream.next()) >= 0) {
+    int size_in_bytes = initialize_data(&stream, data_size);
+    data_size += size_in_bytes;
+    if (size_in_bytes == 0)  empty_bc_count += 1;
+  }
+  _data_size = data_size;
+  int object_size = in_bytes(data_offset()) + data_size;
+
+  // Add some extra DataLayout cells (at least one) to track stray traps.
+  int extra_data_count = compute_extra_data_count(data_size, empty_bc_count);
+  int extra_size = extra_data_count * DataLayout::compute_size_in_bytes(0);
+
+  // Add a cell to record information about modified arguments.
+  // Set up _args_modified array after traps cells so that
+  // the code for traps cells works.
+  DataLayout *dp = data_layout_at(data_size + extra_size);
+
+  int arg_size = method->size_of_parameters();
+  dp->initialize(DataLayout::arg_info_data_tag, 0, arg_size+1);
+
+  object_size += extra_size + DataLayout::compute_size_in_bytes(arg_size+1);
+
+  // Set an initial hint. Don't use set_hint_di() because
+  // first_di() may be out of bounds if data_size is 0.
+  // In that situation, _hint_di is never used, but at
+  // least well-defined.
+  _hint_di = first_di();
+
+  post_initialize(&stream);
+
+  set_size(object_size);
+}
+
+// Get a measure of how much mileage the method has on it.
+int MethodData::mileage_of(Method* method) {
+  int mileage = 0;
+  if (TieredCompilation) {
+    mileage = MAX2(method->invocation_count(), method->backedge_count());
+  } else {
+    int iic = method->interpreter_invocation_count();
+    if (mileage < iic)  mileage = iic;
+    InvocationCounter* ic = method->invocation_counter();
+    InvocationCounter* bc = method->backedge_counter();
+    int icval = ic->count();
+    if (ic->carry()) icval += CompileThreshold;
+    if (mileage < icval)  mileage = icval;
+    int bcval = bc->count();
+    if (bc->carry()) bcval += CompileThreshold;
+    if (mileage < bcval)  mileage = bcval;
+  }
+  return mileage;
+}
+
+bool MethodData::is_mature() const {
+  return CompilationPolicy::policy()->is_mature(_method);
+}
+
+// Translate a bci to its corresponding data index (di).
+address MethodData::bci_to_dp(int bci) {
+  ResourceMark rm;
+  ProfileData* data = data_before(bci);
+  ProfileData* prev = NULL;
+  for ( ; is_valid(data); data = next_data(data)) {
+    if (data->bci() >= bci) {
+      if (data->bci() == bci)  set_hint_di(dp_to_di(data->dp()));
+      else if (prev != NULL)   set_hint_di(dp_to_di(prev->dp()));
+      return data->dp();
+    }
+    prev = data;
+  }
+  return (address)limit_data_position();
+}
+
+// Translate a bci to its corresponding data, or NULL.
+ProfileData* MethodData::bci_to_data(int bci) {
+  ProfileData* data = data_before(bci);
+  for ( ; is_valid(data); data = next_data(data)) {
+    if (data->bci() == bci) {
+      set_hint_di(dp_to_di(data->dp()));
+      return data;
+    } else if (data->bci() > bci) {
+      break;
+    }
+  }
+  return bci_to_extra_data(bci, false);
+}
+
+// Translate a bci to its corresponding extra data, or NULL.
+ProfileData* MethodData::bci_to_extra_data(int bci, bool create_if_missing) {
+  DataLayout* dp    = extra_data_base();
+  DataLayout* end   = extra_data_limit();
+  DataLayout* avail = NULL;
+  for (; dp < end; dp = next_extra(dp)) {
+    // No need for "OrderAccess::load_acquire" ops,
+    // since the data structure is monotonic.
+    if (dp->tag() == DataLayout::no_tag)  break;
+    if (dp->tag() == DataLayout::arg_info_data_tag) {
+      dp = end; // ArgInfoData is at the end of extra data section.
+      break;
+    }
+    if (dp->bci() == bci) {
+      assert(dp->tag() == DataLayout::bit_data_tag, "sane");
+      return new BitData(dp);
+    }
+  }
+  if (create_if_missing && dp < end) {
+    // Allocate this one.  There is no mutual exclusion,
+    // so two threads could allocate different BCIs to the
+    // same data layout.  This means these extra data
+    // records, like most other MDO contents, must not be
+    // trusted too much.
+    DataLayout temp;
+    temp.initialize(DataLayout::bit_data_tag, bci, 0);
+    dp->release_set_header(temp.header());
+    assert(dp->tag() == DataLayout::bit_data_tag, "sane");
+    //NO: assert(dp->bci() == bci, "no concurrent allocation");
+    return new BitData(dp);
+  }
+  return NULL;
+}
+
+ArgInfoData *MethodData::arg_info() {
+  DataLayout* dp    = extra_data_base();
+  DataLayout* end   = extra_data_limit();
+  for (; dp < end; dp = next_extra(dp)) {
+    if (dp->tag() == DataLayout::arg_info_data_tag)
+      return new ArgInfoData(dp);
+  }
+  return NULL;
+}
+
+// Printing
+
+#ifndef PRODUCT
+
+void MethodData::print_on(outputStream* st) const {
+  assert(is_methodData(), "should be method data");
+  st->print("method data for ");
+  method()->print_value_on(st);
+  st->cr();
+  print_data_on(st);
+}
+
+#endif //PRODUCT
+
+void MethodData::print_value_on(outputStream* st) const {
+  assert(is_methodData(), "should be method data");
+  st->print("method data for ");
+  method()->print_value_on(st);
+}
+
+#ifndef PRODUCT
+void MethodData::print_data_on(outputStream* st) const {
+  ResourceMark rm;
+  ProfileData* data = first_data();
+  for ( ; is_valid(data); data = next_data(data)) {
+    st->print("%d", dp_to_di(data->dp()));
+    st->fill_to(6);
+    data->print_data_on(st);
+  }
+  st->print_cr("--- Extra data:");
+  DataLayout* dp    = extra_data_base();
+  DataLayout* end   = extra_data_limit();
+  for (; dp < end; dp = next_extra(dp)) {
+    // No need for "OrderAccess::load_acquire" ops,
+    // since the data structure is monotonic.
+    if (dp->tag() == DataLayout::no_tag)  continue;
+    if (dp->tag() == DataLayout::bit_data_tag) {
+      data = new BitData(dp);
+    } else {
+      assert(dp->tag() == DataLayout::arg_info_data_tag, "must be BitData or ArgInfo");
+      data = new ArgInfoData(dp);
+      dp = end; // ArgInfoData is at the end of extra data section.
+    }
+    st->print("%d", dp_to_di(data->dp()));
+    st->fill_to(6);
+    data->print_data_on(st);
+  }
+}
+#endif
+
+
+// Verification
+
+void MethodData::verify_on(outputStream* st) {
+  guarantee(is_methodData(), "object must be method data");
+  // guarantee(m->is_perm(), "should be in permspace");
+  this->verify_data_on(st);
+}
+
+void MethodData::verify_data_on(outputStream* st) {
+  NEEDS_CLEANUP;
+  // not yet implemented.
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/share/vm/oops/methodData.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -0,0 +1,1508 @@
+/*
+ * Copyright (c) 2000, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ *
+ */
+
+#ifndef SHARE_VM_OOPS_METHODDATAOOP_HPP
+#define SHARE_VM_OOPS_METHODDATAOOP_HPP
+
+#include "interpreter/bytecodes.hpp"
+#include "memory/universe.hpp"
+#include "oops/method.hpp"
+#include "oops/oop.hpp"
+#include "runtime/orderAccess.hpp"
+
+class BytecodeStream;
+
+// The MethodData object collects counts and other profile information
+// during zeroth-tier (interpretive) and first-tier execution.
+// The profile is used later by compilation heuristics.  Some heuristics
+// enable use of aggressive (or "heroic") optimizations.  An aggressive
+// optimization often has a down-side, a corner case that it handles
+// poorly, but which is thought to be rare.  The profile provides
+// evidence of this rarity for a given method or even BCI.  It allows
+// the compiler to back out of the optimization at places where it
+// has historically been a poor choice.  Other heuristics try to use
+// specific information gathered about types observed at a given site.
+//
+// All data in the profile is approximate.  It is expected to be accurate
+// on the whole, but the system expects occasional inaccuraces, due to
+// counter overflow, multiprocessor races during data collection, space
+// limitations, missing MDO blocks, etc.  Bad or missing data will degrade
+// optimization quality but will not affect correctness.  Also, each MDO
+// is marked with its birth-date ("creation_mileage") which can be used
+// to assess the quality ("maturity") of its data.
+//
+// Short (<32-bit) counters are designed to overflow to a known "saturated"
+// state.  Also, certain recorded per-BCI events are given one-bit counters
+// which overflow to a saturated state which applied to all counters at
+// that BCI.  In other words, there is a small lattice which approximates
+// the ideal of an infinite-precision counter for each event at each BCI,
+// and the lattice quickly "bottoms out" in a state where all counters
+// are taken to be indefinitely large.
+//
+// The reader will find many data races in profile gathering code, starting
+// with invocation counter incrementation.  None of these races harm correct
+// execution of the compiled code.
+
+// forward decl
+class ProfileData;
+
+// DataLayout
+//
+// Overlay for generic profiling data.
+class DataLayout VALUE_OBJ_CLASS_SPEC {
+private:
+  // Every data layout begins with a header.  This header
+  // contains a tag, which is used to indicate the size/layout
+  // of the data, 4 bits of flags, which can be used in any way,
+  // 4 bits of trap history (none/one reason/many reasons),
+  // and a bci, which is used to tie this piece of data to a
+  // specific bci in the bytecodes.
+  union {
+    intptr_t _bits;
+    struct {
+      u1 _tag;
+      u1 _flags;
+      u2 _bci;
+    } _struct;
+  } _header;
+
+  // The data layout has an arbitrary number of cells, each sized
+  // to accomodate a pointer or an integer.
+  intptr_t _cells[1];
+
+  // Some types of data layouts need a length field.
+  static bool needs_array_len(u1 tag);
+
+public:
+  enum {
+    counter_increment = 1
+  };
+
+  enum {
+    cell_size = sizeof(intptr_t)
+  };
+
+  // Tag values
+  enum {
+    no_tag,
+    bit_data_tag,
+    counter_data_tag,
+    jump_data_tag,
+    receiver_type_data_tag,
+    virtual_call_data_tag,
+    ret_data_tag,
+    branch_data_tag,
+    multi_branch_data_tag,
+    arg_info_data_tag
+  };
+
+  enum {
+    // The _struct._flags word is formatted as [trap_state:4 | flags:4].
+    // The trap state breaks down further as [recompile:1 | reason:3].
+    // This further breakdown is defined in deoptimization.cpp.
+    // See Deoptimization::trap_state_reason for an assert that
+    // trap_bits is big enough to hold reasons < Reason_RECORDED_LIMIT.
+    //
+    // The trap_state is collected only if ProfileTraps is true.
+    trap_bits = 1+3,  // 3: enough to distinguish [0..Reason_RECORDED_LIMIT].
+    trap_shift = BitsPerByte - trap_bits,
+    trap_mask = right_n_bits(trap_bits),
+    trap_mask_in_place = (trap_mask << trap_shift),
+    flag_limit = trap_shift,
+    flag_mask = right_n_bits(flag_limit),
+    first_flag = 0
+  };
+
+  // Size computation
+  static int header_size_in_bytes() {
+    return cell_size;
+  }
+  static int header_size_in_cells() {
+    return 1;
+  }
+
+  static int compute_size_in_bytes(int cell_count) {
+    return header_size_in_bytes() + cell_count * cell_size;
+  }
+
+  // Initialization
+  void initialize(u1 tag, u2 bci, int cell_count);
+
+  // Accessors
+  u1 tag() {
+    return _header._struct._tag;
+  }
+
+  // Return a few bits of trap state.  Range is [0..trap_mask].
+  // The state tells if traps with zero, one, or many reasons have occurred.
+  // It also tells whether zero or many recompilations have occurred.
+  // The associated trap histogram in the MDO itself tells whether
+  // traps are common or not.  If a BCI shows that a trap X has
+  // occurred, and the MDO shows N occurrences of X, we make the
+  // simplifying assumption that all N occurrences can be blamed
+  // on that BCI.
+  int trap_state() {
+    return ((_header._struct._flags >> trap_shift) & trap_mask);
+  }
+
+  void set_trap_state(int new_state) {
+    assert(ProfileTraps, "used only under +ProfileTraps");
+    uint old_flags = (_header._struct._flags & flag_mask);
+    _header._struct._flags = (new_state << trap_shift) | old_flags;
+  }
+
+  u1 flags() {
+    return _header._struct._flags;
+  }
+
+  u2 bci() {
+    return _header._struct._bci;
+  }
+
+  void set_header(intptr_t value) {
+    _header._bits = value;
+  }
+  void release_set_header(intptr_t value) {
+    OrderAccess::release_store_ptr(&_header._bits, value);
+  }
+  intptr_t header() {
+    return _header._bits;
+  }
+  void set_cell_at(int index, intptr_t value) {
+    _cells[index] = value;
+  }
+  void release_set_cell_at(int index, intptr_t value) {
+    OrderAccess::release_store_ptr(&_cells[index], value);
+  }
+  intptr_t cell_at(int index) {
+    return _cells[index];
+  }
+
+  void set_flag_at(int flag_number) {
+    assert(flag_number < flag_limit, "oob");
+    _header._struct._flags |= (0x1 << flag_number);
+  }
+  bool flag_at(int flag_number) {
+    assert(flag_number < flag_limit, "oob");
+    return (_header._struct._flags & (0x1 << flag_number)) != 0;
+  }
+
+  // Low-level support for code generation.
+  static ByteSize header_offset() {
+    return byte_offset_of(DataLayout, _header);
+  }
+  static ByteSize tag_offset() {
+    return byte_offset_of(DataLayout, _header._struct._tag);
+  }
+  static ByteSize flags_offset() {
+    return byte_offset_of(DataLayout, _header._struct._flags);
+  }
+  static ByteSize bci_offset() {
+    return byte_offset_of(DataLayout, _header._struct._bci);
+  }
+  static ByteSize cell_offset(int index) {
+    return byte_offset_of(DataLayout, _cells) + in_ByteSize(index * cell_size);
+  }
+  // Return a value which, when or-ed as a byte into _flags, sets the flag.
+  static int flag_number_to_byte_constant(int flag_number) {
+    assert(0 <= flag_number && flag_number < flag_limit, "oob");
+    DataLayout temp; temp.set_header(0);
+    temp.set_flag_at(flag_number);
+    return temp._header._struct._flags;
+  }
+  // Return a value which, when or-ed as a word into _header, sets the flag.
+  static intptr_t flag_mask_to_header_mask(int byte_constant) {
+    DataLayout temp; temp.set_header(0);
+    temp._header._struct._flags = byte_constant;
+    return temp._header._bits;
+  }
+
+  ProfileData* data_in();
+
+  // GC support
+  void clean_weak_klass_links(BoolObjectClosure* cl);
+};
+
+
+// ProfileData class hierarchy
+class ProfileData;
+class   BitData;
+class     CounterData;
+class       ReceiverTypeData;
+class         VirtualCallData;
+class       RetData;
+class   JumpData;
+class     BranchData;
+class   ArrayData;
+class     MultiBranchData;
+class     ArgInfoData;
+
+
+// ProfileData
+//
+// A ProfileData object is created to refer to a section of profiling
+// data in a structured way.
+class ProfileData : public ResourceObj {
+private:
+#ifndef PRODUCT
+  enum {
+    tab_width_one = 16,
+    tab_width_two = 36
+  };
+#endif // !PRODUCT
+
+  // This is a pointer to a section of profiling data.
+  DataLayout* _data;
+
+protected:
+  DataLayout* data() { return _data; }
+
+  enum {
+    cell_size = DataLayout::cell_size
+  };
+
+public:
+  // How many cells are in this?
+  virtual int cell_count() {
+    ShouldNotReachHere();
+    return -1;
+  }
+
+  // Return the size of this data.
+  int size_in_bytes() {
+    return DataLayout::compute_size_in_bytes(cell_count());
+  }
+
+protected:
+  // Low-level accessors for underlying data
+  void set_intptr_at(int index, intptr_t value) {
+    assert(0 <= index && index < cell_count(), "oob");
+    data()->set_cell_at(index, value);
+  }
+  void release_set_intptr_at(int index, intptr_t value) {
+    assert(0 <= index && index < cell_count(), "oob");
+    data()->release_set_cell_at(index, value);
+  }
+  intptr_t intptr_at(int index) {
+    assert(0 <= index && index < cell_count(), "oob");
+    return data()->cell_at(index);
+  }
+  void set_uint_at(int index, uint value) {
+    set_intptr_at(index, (intptr_t) value);
+  }
+  void release_set_uint_at(int index, uint value) {
+    release_set_intptr_at(index, (intptr_t) value);
+  }
+  uint uint_at(int index) {
+    return (uint)intptr_at(index);
+  }
+  void set_int_at(int index, int value) {
+    set_intptr_at(index, (intptr_t) value);
+  }
+  void release_set_int_at(int index, int value) {
+    release_set_intptr_at(index, (intptr_t) value);
+  }
+  int int_at(int index) {
+    return (int)intptr_at(index);
+  }
+  int int_at_unchecked(int index) {
+    return (int)data()->cell_at(index);
+  }
+  void set_oop_at(int index, oop value) {
+    set_intptr_at(index, (intptr_t) value);
+  }
+  oop oop_at(int index) {
+    return (oop)intptr_at(index);
+  }
+
+  void set_flag_at(int flag_number) {
+    data()->set_flag_at(flag_number);
+  }
+  bool flag_at(int flag_number) {
+    return data()->flag_at(flag_number);
+  }
+
+  // two convenient imports for use by subclasses:
+  static ByteSize cell_offset(int index) {
+    return DataLayout::cell_offset(index);
+  }
+  static int flag_number_to_byte_constant(int flag_number) {
+    return DataLayout::flag_number_to_byte_constant(flag_number);
+  }
+
+  ProfileData(DataLayout* data) {
+    _data = data;
+  }
+
+public:
+  // Constructor for invalid ProfileData.
+  ProfileData();
+
+  u2 bci() {
+    return data()->bci();
+  }
+
+  address dp() {
+    return (address)_data;
+  }
+
+  int trap_state() {
+    return data()->trap_state();
+  }
+  void set_trap_state(int new_state) {
+    data()->set_trap_state(new_state);
+  }
+
+  // Type checking
+  virtual bool is_BitData()         { return false; }
+  virtual bool is_CounterData()     { return false; }
+  virtual bool is_JumpData()        { return false; }
+  virtual bool is_ReceiverTypeData(){ return false; }
+  virtual bool is_VirtualCallData() { return false; }
+  virtual bool is_RetData()         { return false; }
+  virtual bool is_BranchData()      { return false; }
+  virtual bool is_ArrayData()       { return false; }
+  virtual bool is_MultiBranchData() { return false; }
+  virtual bool is_ArgInfoData()     { return false; }
+
+
+  BitData* as_BitData() {
+    assert(is_BitData(), "wrong type");
+    return is_BitData()         ? (BitData*)        this : NULL;
+  }
+  CounterData* as_CounterData() {
+    assert(is_CounterData(), "wrong type");
+    return is_CounterData()     ? (CounterData*)    this : NULL;
+  }
+  JumpData* as_JumpData() {
+    assert(is_JumpData(), "wrong type");
+    return is_JumpData()        ? (JumpData*)       this : NULL;
+  }
+  ReceiverTypeData* as_ReceiverTypeData() {
+    assert(is_ReceiverTypeData(), "wrong type");
+    return is_ReceiverTypeData() ? (ReceiverTypeData*)this : NULL;
+  }
+  VirtualCallData* as_VirtualCallData() {
+    assert(is_VirtualCallData(), "wrong type");
+    return is_VirtualCallData() ? (VirtualCallData*)this : NULL;
+  }
+  RetData* as_RetData() {
+    assert(is_RetData(), "wrong type");
+    return is_RetData()         ? (RetData*)        this : NULL;
+  }
+  BranchData* as_BranchData() {
+    assert(is_BranchData(), "wrong type");
+    return is_BranchData()      ? (BranchData*)     this : NULL;
+  }
+  ArrayData* as_ArrayData() {
+    assert(is_ArrayData(), "wrong type");
+    return is_ArrayData()       ? (ArrayData*)      this : NULL;
+  }
+  MultiBranchData* as_MultiBranchData() {
+    assert(is_MultiBranchData(), "wrong type");
+    return is_MultiBranchData() ? (MultiBranchData*)this : NULL;
+  }
+  ArgInfoData* as_ArgInfoData() {
+    assert(is_ArgInfoData(), "wrong type");
+    return is_ArgInfoData() ? (ArgInfoData*)this : NULL;
+  }
+
+
+  // Subclass specific initialization
+  virtual void post_initialize(BytecodeStream* stream, MethodData* mdo) {}
+
+  // GC support
+  virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
+
+  // CI translation: ProfileData can represent both MethodDataOop data
+  // as well as CIMethodData data. This function is provided for translating
+  // an oop in a ProfileData to the ci equivalent. Generally speaking,
+  // most ProfileData don't require any translation, so we provide the null
+  // translation here, and the required translators are in the ci subclasses.
+  virtual void translate_from(ProfileData* data) {}
+
+  virtual void print_data_on(outputStream* st) {
+    ShouldNotReachHere();
+  }
+
+#ifndef PRODUCT
+  void print_shared(outputStream* st, const char* name);
+  void tab(outputStream* st);
+#endif
+};
+
+// BitData
+//
+// A BitData holds a flag or two in its header.
+class BitData : public ProfileData {
+protected:
+  enum {
+    // null_seen:
+    //  saw a null operand (cast/aastore/instanceof)
+    null_seen_flag              = DataLayout::first_flag + 0
+  };
+  enum { bit_cell_count = 0 };  // no additional data fields needed.
+public:
+  BitData(DataLayout* layout) : ProfileData(layout) {
+  }
+
+  virtual bool is_BitData() { return true; }
+
+  static int static_cell_count() {
+    return bit_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Accessor
+
+  // The null_seen flag bit is specially known to the interpreter.
+  // Consulting it allows the compiler to avoid setting up null_check traps.
+  bool null_seen()     { return flag_at(null_seen_flag); }
+  void set_null_seen()    { set_flag_at(null_seen_flag); }
+
+
+  // Code generation support
+  static int null_seen_byte_constant() {
+    return flag_number_to_byte_constant(null_seen_flag);
+  }
+
+  static ByteSize bit_data_size() {
+    return cell_offset(bit_cell_count);
+  }
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// CounterData
+//
+// A CounterData corresponds to a simple counter.
+class CounterData : public BitData {
+protected:
+  enum {
+    count_off,
+    counter_cell_count
+  };
+public:
+  CounterData(DataLayout* layout) : BitData(layout) {}
+
+  virtual bool is_CounterData() { return true; }
+
+  static int static_cell_count() {
+    return counter_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Direct accessor
+  uint count() {
+    return uint_at(count_off);
+  }
+
+  // Code generation support
+  static ByteSize count_offset() {
+    return cell_offset(count_off);
+  }
+  static ByteSize counter_data_size() {
+    return cell_offset(counter_cell_count);
+  }
+
+  void set_count(uint count) {
+    set_uint_at(count_off, count);
+  }
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// JumpData
+//
+// A JumpData is used to access profiling information for a direct
+// branch.  It is a counter, used for counting the number of branches,
+// plus a data displacement, used for realigning the data pointer to
+// the corresponding target bci.
+class JumpData : public ProfileData {
+protected:
+  enum {
+    taken_off_set,
+    displacement_off_set,
+    jump_cell_count
+  };
+
+  void set_displacement(int displacement) {
+    set_int_at(displacement_off_set, displacement);
+  }
+
+public:
+  JumpData(DataLayout* layout) : ProfileData(layout) {
+    assert(layout->tag() == DataLayout::jump_data_tag ||
+      layout->tag() == DataLayout::branch_data_tag, "wrong type");
+  }
+
+  virtual bool is_JumpData() { return true; }
+
+  static int static_cell_count() {
+    return jump_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Direct accessor
+  uint taken() {
+    return uint_at(taken_off_set);
+  }
+
+  void set_taken(uint cnt) {
+    set_uint_at(taken_off_set, cnt);
+  }
+
+  // Saturating counter
+  uint inc_taken() {
+    uint cnt = taken() + 1;
+    // Did we wrap? Will compiler screw us??
+    if (cnt == 0) cnt--;
+    set_uint_at(taken_off_set, cnt);
+    return cnt;
+  }
+
+  int displacement() {
+    return int_at(displacement_off_set);
+  }
+
+  // Code generation support
+  static ByteSize taken_offset() {
+    return cell_offset(taken_off_set);
+  }
+
+  static ByteSize displacement_offset() {
+    return cell_offset(displacement_off_set);
+  }
+
+  // Specific initialization.
+  void post_initialize(BytecodeStream* stream, MethodData* mdo);
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// ReceiverTypeData
+//
+// A ReceiverTypeData is used to access profiling information about a
+// dynamic type check.  It consists of a counter which counts the total times
+// that the check is reached, and a series of (Klass*, count) pairs
+// which are used to store a type profile for the receiver of the check.
+class ReceiverTypeData : public CounterData {
+protected:
+  enum {
+    receiver0_offset = counter_cell_count,
+    count0_offset,
+    receiver_type_row_cell_count = (count0_offset + 1) - receiver0_offset
+  };
+
+public:
+  ReceiverTypeData(DataLayout* layout) : CounterData(layout) {
+    assert(layout->tag() == DataLayout::receiver_type_data_tag ||
+           layout->tag() == DataLayout::virtual_call_data_tag, "wrong type");
+  }
+
+  virtual bool is_ReceiverTypeData() { return true; }
+
+  static int static_cell_count() {
+    return counter_cell_count + (uint) TypeProfileWidth * receiver_type_row_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Direct accessors
+  static uint row_limit() {
+    return TypeProfileWidth;
+  }
+  static int receiver_cell_index(uint row) {
+    return receiver0_offset + row * receiver_type_row_cell_count;
+  }
+  static int receiver_count_cell_index(uint row) {
+    return count0_offset + row * receiver_type_row_cell_count;
+  }
+
+  Klass* receiver(uint row) {
+    assert(row < row_limit(), "oob");
+
+    Klass* recv = (Klass*)intptr_at(receiver_cell_index(row));
+    assert(recv == NULL || recv->is_klass(), "wrong type");
+    return recv;
+  }
+
+  void set_receiver(uint row, Klass* k) {
+    assert((uint)row < row_limit(), "oob");
+    set_intptr_at(receiver_cell_index(row), (uintptr_t)k);
+  }
+
+  uint receiver_count(uint row) {
+    assert(row < row_limit(), "oob");
+    return uint_at(receiver_count_cell_index(row));
+  }
+
+  void set_receiver_count(uint row, uint count) {
+    assert(row < row_limit(), "oob");
+    set_uint_at(receiver_count_cell_index(row), count);
+  }
+
+  void clear_row(uint row) {
+    assert(row < row_limit(), "oob");
+    // Clear total count - indicator of polymorphic call site.
+    // The site may look like as monomorphic after that but
+    // it allow to have more accurate profiling information because
+    // there was execution phase change since klasses were unloaded.
+    // If the site is still polymorphic then MDO will be updated
+    // to reflect it. But it could be the case that the site becomes
+    // only bimorphic. Then keeping total count not 0 will be wrong.
+    // Even if we use monomorphic (when it is not) for compilation
+    // we will only have trap, deoptimization and recompile again
+    // with updated MDO after executing method in Interpreter.
+    // An additional receiver will be recorded in the cleaned row
+    // during next call execution.
+    //
+    // Note: our profiling logic works with empty rows in any slot.
+    // We do sorting a profiling info (ciCallProfile) for compilation.
+    //
+    set_count(0);
+    set_receiver(row, NULL);
+    set_receiver_count(row, 0);
+  }
+
+  // Code generation support
+  static ByteSize receiver_offset(uint row) {
+    return cell_offset(receiver_cell_index(row));
+  }
+  static ByteSize receiver_count_offset(uint row) {
+    return cell_offset(receiver_count_cell_index(row));
+  }
+  static ByteSize receiver_type_data_size() {
+    return cell_offset(static_cell_count());
+  }
+
+  // GC support
+  virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure);
+
+#ifndef PRODUCT
+  void print_receiver_data_on(outputStream* st);
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// VirtualCallData
+//
+// A VirtualCallData is used to access profiling information about a
+// virtual call.  For now, it has nothing more than a ReceiverTypeData.
+class VirtualCallData : public ReceiverTypeData {
+public:
+  VirtualCallData(DataLayout* layout) : ReceiverTypeData(layout) {
+    assert(layout->tag() == DataLayout::virtual_call_data_tag, "wrong type");
+  }
+
+  virtual bool is_VirtualCallData() { return true; }
+
+  static int static_cell_count() {
+    // At this point we could add more profile state, e.g., for arguments.
+    // But for now it's the same size as the base record type.
+    return ReceiverTypeData::static_cell_count();
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Direct accessors
+  static ByteSize virtual_call_data_size() {
+    return cell_offset(static_cell_count());
+  }
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// RetData
+//
+// A RetData is used to access profiling information for a ret bytecode.
+// It is composed of a count of the number of times that the ret has
+// been executed, followed by a series of triples of the form
+// (bci, count, di) which count the number of times that some bci was the
+// target of the ret and cache a corresponding data displacement.
+class RetData : public CounterData {
+protected:
+  enum {
+    bci0_offset = counter_cell_count,
+    count0_offset,
+    displacement0_offset,
+    ret_row_cell_count = (displacement0_offset + 1) - bci0_offset
+  };
+
+  void set_bci(uint row, int bci) {
+    assert((uint)row < row_limit(), "oob");
+    set_int_at(bci0_offset + row * ret_row_cell_count, bci);
+  }
+  void release_set_bci(uint row, int bci) {
+    assert((uint)row < row_limit(), "oob");
+    // 'release' when setting the bci acts as a valid flag for other
+    // threads wrt bci_count and bci_displacement.
+    release_set_int_at(bci0_offset + row * ret_row_cell_count, bci);
+  }
+  void set_bci_count(uint row, uint count) {
+    assert((uint)row < row_limit(), "oob");
+    set_uint_at(count0_offset + row * ret_row_cell_count, count);
+  }
+  void set_bci_displacement(uint row, int disp) {
+    set_int_at(displacement0_offset + row * ret_row_cell_count, disp);
+  }
+
+public:
+  RetData(DataLayout* layout) : CounterData(layout) {
+    assert(layout->tag() == DataLayout::ret_data_tag, "wrong type");
+  }
+
+  virtual bool is_RetData() { return true; }
+
+  enum {
+    no_bci = -1 // value of bci when bci1/2 are not in use.
+  };
+
+  static int static_cell_count() {
+    return counter_cell_count + (uint) BciProfileWidth * ret_row_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  static uint row_limit() {
+    return BciProfileWidth;
+  }
+  static int bci_cell_index(uint row) {
+    return bci0_offset + row * ret_row_cell_count;
+  }
+  static int bci_count_cell_index(uint row) {
+    return count0_offset + row * ret_row_cell_count;
+  }
+  static int bci_displacement_cell_index(uint row) {
+    return displacement0_offset + row * ret_row_cell_count;
+  }
+
+  // Direct accessors
+  int bci(uint row) {
+    return int_at(bci_cell_index(row));
+  }
+  uint bci_count(uint row) {
+    return uint_at(bci_count_cell_index(row));
+  }
+  int bci_displacement(uint row) {
+    return int_at(bci_displacement_cell_index(row));
+  }
+
+  // Interpreter Runtime support
+  address fixup_ret(int return_bci, MethodData* mdo);
+
+  // Code generation support
+  static ByteSize bci_offset(uint row) {
+    return cell_offset(bci_cell_index(row));
+  }
+  static ByteSize bci_count_offset(uint row) {
+    return cell_offset(bci_count_cell_index(row));
+  }
+  static ByteSize bci_displacement_offset(uint row) {
+    return cell_offset(bci_displacement_cell_index(row));
+  }
+
+  // Specific initialization.
+  void post_initialize(BytecodeStream* stream, MethodData* mdo);
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// BranchData
+//
+// A BranchData is used to access profiling data for a two-way branch.
+// It consists of taken and not_taken counts as well as a data displacement
+// for the taken case.
+class BranchData : public JumpData {
+protected:
+  enum {
+    not_taken_off_set = jump_cell_count,
+    branch_cell_count
+  };
+
+  void set_displacement(int displacement) {
+    set_int_at(displacement_off_set, displacement);
+  }
+
+public:
+  BranchData(DataLayout* layout) : JumpData(layout) {
+    assert(layout->tag() == DataLayout::branch_data_tag, "wrong type");
+  }
+
+  virtual bool is_BranchData() { return true; }
+
+  static int static_cell_count() {
+    return branch_cell_count;
+  }
+
+  virtual int cell_count() {
+    return static_cell_count();
+  }
+
+  // Direct accessor
+  uint not_taken() {
+    return uint_at(not_taken_off_set);
+  }
+
+  void set_not_taken(uint cnt) {
+    set_uint_at(not_taken_off_set, cnt);
+  }
+
+  uint inc_not_taken() {
+    uint cnt = not_taken() + 1;
+    // Did we wrap? Will compiler screw us??
+    if (cnt == 0) cnt--;
+    set_uint_at(not_taken_off_set, cnt);
+    return cnt;
+  }
+
+  // Code generation support
+  static ByteSize not_taken_offset() {
+    return cell_offset(not_taken_off_set);
+  }
+  static ByteSize branch_data_size() {
+    return cell_offset(branch_cell_count);
+  }
+
+  // Specific initialization.
+  void post_initialize(BytecodeStream* stream, MethodData* mdo);
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// ArrayData
+//
+// A ArrayData is a base class for accessing profiling data which does
+// not have a statically known size.  It consists of an array length
+// and an array start.
+class ArrayData : public ProfileData {
+protected:
+  friend class DataLayout;
+
+  enum {
+    array_len_off_set,
+    array_start_off_set
+  };
+
+  uint array_uint_at(int index) {
+    int aindex = index + array_start_off_set;
+    return uint_at(aindex);
+  }
+  int array_int_at(int index) {
+    int aindex = index + array_start_off_set;
+    return int_at(aindex);
+  }
+  oop array_oop_at(int index) {
+    int aindex = index + array_start_off_set;
+    return oop_at(aindex);
+  }
+  void array_set_int_at(int index, int value) {
+    int aindex = index + array_start_off_set;
+    set_int_at(aindex, value);
+  }
+
+  // Code generation support for subclasses.
+  static ByteSize array_element_offset(int index) {
+    return cell_offset(array_start_off_set + index);
+  }
+
+public:
+  ArrayData(DataLayout* layout) : ProfileData(layout) {}
+
+  virtual bool is_ArrayData() { return true; }
+
+  static int static_cell_count() {
+    return -1;
+  }
+
+  int array_len() {
+    return int_at_unchecked(array_len_off_set);
+  }
+
+  virtual int cell_count() {
+    return array_len() + 1;
+  }
+
+  // Code generation support
+  static ByteSize array_len_offset() {
+    return cell_offset(array_len_off_set);
+  }
+  static ByteSize array_start_offset() {
+    return cell_offset(array_start_off_set);
+  }
+};
+
+// MultiBranchData
+//
+// A MultiBranchData is used to access profiling information for
+// a multi-way branch (*switch bytecodes).  It consists of a series
+// of (count, displacement) pairs, which count the number of times each
+// case was taken and specify the data displacment for each branch target.
+class MultiBranchData : public ArrayData {
+protected:
+  enum {
+    default_count_off_set,
+    default_disaplacement_off_set,
+    case_array_start
+  };
+  enum {
+    relative_count_off_set,
+    relative_displacement_off_set,
+    per_case_cell_count
+  };
+
+  void set_default_displacement(int displacement) {
+    array_set_int_at(default_disaplacement_off_set, displacement);
+  }
+  void set_displacement_at(int index, int displacement) {
+    array_set_int_at(case_array_start +
+                     index * per_case_cell_count +
+                     relative_displacement_off_set,
+                     displacement);
+  }
+
+public:
+  MultiBranchData(DataLayout* layout) : ArrayData(layout) {
+    assert(layout->tag() == DataLayout::multi_branch_data_tag, "wrong type");
+  }
+
+  virtual bool is_MultiBranchData() { return true; }
+
+  static int compute_cell_count(BytecodeStream* stream);
+
+  int number_of_cases() {
+    int alen = array_len() - 2; // get rid of default case here.
+    assert(alen % per_case_cell_count == 0, "must be even");
+    return (alen / per_case_cell_count);
+  }
+
+  uint default_count() {
+    return array_uint_at(default_count_off_set);
+  }
+  int default_displacement() {
+    return array_int_at(default_disaplacement_off_set);
+  }
+
+  uint count_at(int index) {
+    return array_uint_at(case_array_start +
+                         index * per_case_cell_count +
+                         relative_count_off_set);
+  }
+  int displacement_at(int index) {
+    return array_int_at(case_array_start +
+                        index * per_case_cell_count +
+                        relative_displacement_off_set);
+  }
+
+  // Code generation support
+  static ByteSize default_count_offset() {
+    return array_element_offset(default_count_off_set);
+  }
+  static ByteSize default_displacement_offset() {
+    return array_element_offset(default_disaplacement_off_set);
+  }
+  static ByteSize case_count_offset(int index) {
+    return case_array_offset() +
+           (per_case_size() * index) +
+           relative_count_offset();
+  }
+  static ByteSize case_array_offset() {
+    return array_element_offset(case_array_start);
+  }
+  static ByteSize per_case_size() {
+    return in_ByteSize(per_case_cell_count) * cell_size;
+  }
+  static ByteSize relative_count_offset() {
+    return in_ByteSize(relative_count_off_set) * cell_size;
+  }
+  static ByteSize relative_displacement_offset() {
+    return in_ByteSize(relative_displacement_off_set) * cell_size;
+  }
+
+  // Specific initialization.
+  void post_initialize(BytecodeStream* stream, MethodData* mdo);
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+class ArgInfoData : public ArrayData {
+
+public:
+  ArgInfoData(DataLayout* layout) : ArrayData(layout) {
+    assert(layout->tag() == DataLayout::arg_info_data_tag, "wrong type");
+  }
+
+  virtual bool is_ArgInfoData() { return true; }
+
+
+  int number_of_args() {
+    return array_len();
+  }
+
+  uint arg_modified(int arg) {
+    return array_uint_at(arg);
+  }
+
+  void set_arg_modified(int arg, uint val) {
+    array_set_int_at(arg, val);
+  }
+
+#ifndef PRODUCT
+  void print_data_on(outputStream* st);
+#endif
+};
+
+// MethodData*
+//
+// A MethodData* holds information which has been collected about
+// a method.  Its layout looks like this:
+//
+// -----------------------------
+// | header                    |
+// | klass                     |
+// -----------------------------
+// | method                    |
+// | size of the MethodData* |
+// -----------------------------
+// | Data entries...           |
+// |   (variable size)         |
+// |                           |
+// .                           .
+// .                           .
+// .                           .
+// |                           |
+// -----------------------------
+//
+// The data entry area is a heterogeneous array of DataLayouts. Each
+// DataLayout in the array corresponds to a specific bytecode in the
+// method.  The entries in the array are sorted by the corresponding
+// bytecode.  Access to the data is via resource-allocated ProfileData,
+// which point to the underlying blocks of DataLayout structures.
+//
+// During interpretation, if profiling in enabled, the interpreter
+// maintains a method data pointer (mdp), which points at the entry
+// in the array corresponding to the current bci.  In the course of
+// intepretation, when a bytecode is encountered that has profile data
+// associated with it, the entry pointed to by mdp is updated, then the
+// mdp is adjusted to point to the next appropriate DataLayout.  If mdp
+// is NULL to begin with, the interpreter assumes that the current method
+// is not (yet) being profiled.
+//
+// In MethodData* parlance, "dp" is a "data pointer", the actual address
+// of a DataLayout element.  A "di" is a "data index", the offset in bytes
+// from the base of the data entry array.  A "displacement" is the byte offset
+// in certain ProfileData objects that indicate the amount the mdp must be
+// adjusted in the event of a change in control flow.
+//
+
+class MethodData : public Metadata {
+  friend class VMStructs;
+private:
+  friend class ProfileData;
+
+  // Back pointer to the Method*
+  Method* _method;
+
+  // Size of this oop in bytes
+  int _size;
+
+  // Cached hint for bci_to_dp and bci_to_data
+  int _hint_di;
+
+  MethodData(methodHandle method, int size, TRAPS);
+public:
+  static MethodData* allocate(ClassLoaderData* loader_data, methodHandle method, TRAPS);
+  MethodData() {}; // For ciMethodData
+
+  bool is_methodData() const volatile { return true; }
+
+  // Whole-method sticky bits and flags
+  enum {
+    _trap_hist_limit    = 17,   // decoupled from Deoptimization::Reason_LIMIT
+    _trap_hist_mask     = max_jubyte,
+    _extra_data_count   = 4     // extra DataLayout headers, for trap history
+  }; // Public flag values
+private:
+  uint _nof_decompiles;             // count of all nmethod removals
+  uint _nof_overflow_recompiles;    // recompile count, excluding recomp. bits
+  uint _nof_overflow_traps;         // trap count, excluding _trap_hist
+  union {
+    intptr_t _align;
+    u1 _array[_trap_hist_limit];
+  } _trap_hist;
+
+  // Support for interprocedural escape analysis, from Thomas Kotzmann.
+  intx              _eflags;          // flags on escape information
+  intx              _arg_local;       // bit set of non-escaping arguments
+  intx              _arg_stack;       // bit set of stack-allocatable arguments
+  intx              _arg_returned;    // bit set of returned arguments
+
+  int _creation_mileage;              // method mileage at MDO creation
+
+  // How many invocations has this MDO seen?
+  // These counters are used to determine the exact age of MDO.
+  // We need those because in tiered a method can be concurrently
+  // executed at different levels.
+  InvocationCounter _invocation_counter;
+  // Same for backedges.
+  InvocationCounter _backedge_counter;
+  // Counter values at the time profiling started.
+  int               _invocation_counter_start;
+  int               _backedge_counter_start;
+  // Number of loops and blocks is computed when compiling the first
+  // time with C1. It is used to determine if method is trivial.
+  short             _num_loops;
+  short             _num_blocks;
+  // Highest compile level this method has ever seen.
+  u1                _highest_comp_level;
+  // Same for OSR level
+  u1                _highest_osr_comp_level;
+  // Does this method contain anything worth profiling?
+  bool              _would_profile;
+
+  // Size of _data array in bytes.  (Excludes header and extra_data fields.)
+  int _data_size;
+
+  // Beginning of the data entries
+  intptr_t _data[1];
+
+  // Helper for size computation
+  static int compute_data_size(BytecodeStream* stream);
+  static int bytecode_cell_count(Bytecodes::Code code);
+  enum { no_profile_data = -1, variable_cell_count = -2 };
+
+  // Helper for initialization
+  DataLayout* data_layout_at(int data_index) const {
+    assert(data_index % sizeof(intptr_t) == 0, "unaligned");
+    return (DataLayout*) (((address)_data) + data_index);
+  }
+
+  // Initialize an individual data segment.  Returns the size of
+  // the segment in bytes.
+  int initialize_data(BytecodeStream* stream, int data_index);
+
+  // Helper for data_at
+  DataLayout* limit_data_position() const {
+    return (DataLayout*)((address)data_base() + _data_size);
+  }
+  bool out_of_bounds(int data_index) const {
+    return data_index >= data_size();
+  }
+
+  // Give each of the data entries a chance to perform specific
+  // data initialization.
+  void post_initialize(BytecodeStream* stream);
+
+  // hint accessors
+  int      hint_di() const  { return _hint_di; }
+  void set_hint_di(int di)  {
+    assert(!out_of_bounds(di), "hint_di out of bounds");
+    _hint_di = di;
+  }
+  ProfileData* data_before(int bci) {
+    // avoid SEGV on this edge case
+    if (data_size() == 0)
+      return NULL;
+    int hint = hint_di();
+    if (data_layout_at(hint)->bci() <= bci)
+      return data_at(hint);
+    return first_data();
+  }
+
+  // What is the index of the first data entry?
+  int first_di() const { return 0; }
+
+  // Find or create an extra ProfileData:
+  ProfileData* bci_to_extra_data(int bci, bool create_if_missing);
+
+  // return the argument info cell
+  ArgInfoData *arg_info();
+
+public:
+  static int header_size() {
+    return sizeof(MethodData)/wordSize;
+  }
+
+  // Compute the size of a MethodData* before it is created.
+  static int compute_allocation_size_in_bytes(methodHandle method);
+  static int compute_allocation_size_in_words(methodHandle method);
+  static int compute_extra_data_count(int data_size, int empty_bc_count);
+
+  // Determine if a given bytecode can have profile information.
+  static bool bytecode_has_profile(Bytecodes::Code code) {
+    return bytecode_cell_count(code) != no_profile_data;
+  }
+
+  // Perform initialization of a new MethodData*
+  void initialize(methodHandle method);
+
+  // My size
+  int size_in_bytes() const { return _size; }
+  int size() const    { return align_object_size(align_size_up(_size, BytesPerWord)/BytesPerWord); }
+
+  int      creation_mileage() const  { return _creation_mileage; }
+  void set_creation_mileage(int x)   { _creation_mileage = x; }
+
+  int invocation_count() {
+    if (invocation_counter()->carry()) {
+      return InvocationCounter::count_limit;
+    }
+    return invocation_counter()->count();
+  }
+  int backedge_count() {
+    if (backedge_counter()->carry()) {
+      return InvocationCounter::count_limit;
+    }
+    return backedge_counter()->count();
+  }
+
+  int invocation_count_start() {
+    if (invocation_counter()->carry()) {
+      return 0;
+    }
+    return _invocation_counter_start;
+  }
+
+  int backedge_count_start() {
+    if (backedge_counter()->carry()) {
+      return 0;
+    }
+    return _backedge_counter_start;
+  }
+
+  int invocation_count_delta() { return invocation_count() - invocation_count_start(); }
+  int backedge_count_delta()   { return backedge_count()   - backedge_count_start();   }
+
+  void reset_start_counters() {
+    _invocation_counter_start = invocation_count();
+    _backedge_counter_start = backedge_count();
+  }
+
+  InvocationCounter* invocation_counter()     { return &_invocation_counter; }
+  InvocationCounter* backedge_counter()       { return &_backedge_counter;   }
+
+  void set_would_profile(bool p)              { _would_profile = p;    }
+  bool would_profile() const                  { return _would_profile; }
+
+  int highest_comp_level()                    { return _highest_comp_level;      }
+  void set_highest_comp_level(int level)      { _highest_comp_level = level;     }
+  int highest_osr_comp_level()                { return _highest_osr_comp_level;  }
+  void set_highest_osr_comp_level(int level)  { _highest_osr_comp_level = level; }
+
+  int num_loops() const                       { return _num_loops;  }
+  void set_num_loops(int n)                   { _num_loops = n;     }
+  int num_blocks() const                      { return _num_blocks; }
+  void set_num_blocks(int n)                  { _num_blocks = n;    }
+
+  bool is_mature() const;  // consult mileage and ProfileMaturityPercentage
+  static int mileage_of(Method* m);
+
+  // Support for interprocedural escape analysis, from Thomas Kotzmann.
+  enum EscapeFlag {
+    estimated    = 1 << 0,
+    return_local = 1 << 1,
+    return_allocated = 1 << 2,
+    allocated_escapes = 1 << 3,
+    unknown_modified = 1 << 4
+  };
+
+  intx eflags()                                  { return _eflags; }
+  intx arg_local()                               { return _arg_local; }
+  intx arg_stack()                               { return _arg_stack; }
+  intx arg_returned()                            { return _arg_returned; }
+  uint arg_modified(int a)                       { ArgInfoData *aid = arg_info();
+                                                   assert(a >= 0 && a < aid->number_of_args(), "valid argument number");
+                                                   return aid->arg_modified(a); }
+
+  void set_eflags(intx v)                        { _eflags = v; }
+  void set_arg_local(intx v)                     { _arg_local = v; }
+  void set_arg_stack(intx v)                     { _arg_stack = v; }
+  void set_arg_returned(intx v)                  { _arg_returned = v; }
+  void set_arg_modified(int a, uint v)           { ArgInfoData *aid = arg_info();
+                                                   assert(a >= 0 && a < aid->number_of_args(), "valid argument number");
+
+                                                   aid->set_arg_modified(a, v); }
+
+  void clear_escape_info()                       { _eflags = _arg_local = _arg_stack = _arg_returned = 0; }
+
+  // Location and size of data area
+  address data_base() const {
+    return (address) _data;
+  }
+  int data_size() const {
+    return _data_size;
+  }
+
+  // Accessors
+  Method* method() const { return _method; }
+
+  // Get the data at an arbitrary (sort of) data index.
+  ProfileData* data_at(int data_index) const;
+
+  // Walk through the data in order.
+  ProfileData* first_data() const { return data_at(first_di()); }
+  ProfileData* next_data(ProfileData* current) const;
+  bool is_valid(ProfileData* current) const { return current != NULL; }
+
+  // Convert a dp (data pointer) to a di (data index).
+  int dp_to_di(address dp) const {
+    return dp - ((address)_data);
+  }
+
+  address di_to_dp(int di) {
+    return (address)data_layout_at(di);
+  }
+
+  // bci to di/dp conversion.
+  address bci_to_dp(int bci);
+  int bci_to_di(int bci) {
+    return dp_to_di(bci_to_dp(bci));
+  }
+
+  // Get the data at an arbitrary bci, or NULL if there is none.
+  ProfileData* bci_to_data(int bci);
+
+  // Same, but try to create an extra_data record if one is needed:
+  ProfileData* allocate_bci_to_data(int bci) {
+    ProfileData* data = bci_to_data(bci);
+    return (data != NULL) ? data : bci_to_extra_data(bci, true);
+  }
+
+  // Add a handful of extra data records, for trap tracking.
+  DataLayout* extra_data_base() const { return limit_data_position(); }
+  DataLayout* extra_data_limit() const { return (DataLayout*)((address)this + size_in_bytes()); }
+  int extra_data_size() const { return (address)extra_data_limit()
+                               - (address)extra_data_base(); }
+  static DataLayout* next_extra(DataLayout* dp) { return (DataLayout*)((address)dp + in_bytes(DataLayout::cell_offset(0))); }
+
+  // Return (uint)-1 for overflow.
+  uint trap_count(int reason) const {
+    assert((uint)reason < _trap_hist_limit, "oob");
+    return (int)((_trap_hist._array[reason]+1) & _trap_hist_mask) - 1;
+  }
+  // For loops:
+  static uint trap_reason_limit() { return _trap_hist_limit; }
+  static uint trap_count_limit()  { return _trap_hist_mask; }
+  uint inc_trap_count(int reason) {
+    // Count another trap, anywhere in this method.
+    assert(reason >= 0, "must be single trap");
+    if ((uint)reason < _trap_hist_limit) {
+      uint cnt1 = 1 + _trap_hist._array[reason];
+      if ((cnt1 & _trap_hist_mask) != 0) {  // if no counter overflow...
+        _trap_hist._array[reason] = cnt1;
+        return cnt1;
+      } else {
+        return _trap_hist_mask + (++_nof_overflow_traps);
+      }
+    } else {
+      // Could not represent the count in the histogram.
+      return (++_nof_overflow_traps);
+    }
+  }
+
+  uint overflow_trap_count() const {
+    return _nof_overflow_traps;
+  }
+  uint overflow_recompile_count() const {
+    return _nof_overflow_recompiles;
+  }
+  void inc_overflow_recompile_count() {
+    _nof_overflow_recompiles += 1;
+  }
+  uint decompile_count() const {
+    return _nof_decompiles;
+  }
+  void inc_decompile_count() {
+    _nof_decompiles += 1;
+    if (decompile_count() > (uint)PerMethodRecompilationCutoff) {
+      method()->set_not_compilable(CompLevel_full_optimization);
+    }
+  }
+
+  // Support for code generation
+  static ByteSize data_offset() {
+    return byte_offset_of(MethodData, _data[0]);
+  }
+
+  static ByteSize invocation_counter_offset() {
+    return byte_offset_of(MethodData, _invocation_counter);
+  }
+  static ByteSize backedge_counter_offset() {
+    return byte_offset_of(MethodData, _backedge_counter);
+  }
+
+  // Deallocation support - no pointer fields to deallocate
+  void deallocate_contents(ClassLoaderData* loader_data) {}
+
+  // GC support
+  void set_size(int object_size_in_bytes) { _size = object_size_in_bytes; }
+
+  // Printing
+#ifndef PRODUCT
+  void print_on      (outputStream* st) const;
+#endif
+  void print_value_on(outputStream* st) const;
+
+#ifndef PRODUCT
+  // printing support for method data
+  void print_data_on(outputStream* st) const;
+#endif
+
+  const char* internal_name() const { return "{method data}"; }
+
+  // verification
+  void verify_on(outputStream* st);
+  void verify_data_on(outputStream* st);
+};
+
+#endif // SHARE_VM_OOPS_METHODDATAOOP_HPP
--- a/src/share/vm/oops/methodDataKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
- * Copyright (c) 2000, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/gcLocker.hpp"
-#include "memory/resourceArea.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodDataKlass.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "runtime/handles.inline.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-klassOop methodDataKlass::create_klass(TRAPS) {
-  methodDataKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(),
-                                    o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()),
-         "wrong size for object");
-  return k();
-}
-
-
-int methodDataKlass::oop_size(oop obj) const {
-  assert(obj->is_methodData(), "must be method data oop");
-  return methodDataOop(obj)->object_size();
-}
-
-
-bool methodDataKlass::oop_is_parsable(oop obj) const {
-  assert(obj->is_methodData(), "must be method data oop");
-  return methodDataOop(obj)->object_is_parsable();
-}
-
-
-methodDataOop methodDataKlass::allocate(methodHandle method, TRAPS) {
-  int size = methodDataOopDesc::compute_allocation_size_in_words(method);
-  KlassHandle h_k(THREAD, as_klassOop());
-  methodDataOop mdo =
-    (methodDataOop)CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL);
-  assert(!mdo->is_parsable(), "not expecting parsability yet.");
-  No_Safepoint_Verifier no_safepoint;  // init function atomic wrt GC
-  mdo->initialize(method);
-
-  assert(mdo->is_parsable(), "should be parsable here.");
-  assert(size == mdo->object_size(), "wrong size for methodDataOop");
-  return mdo;
-}
-
-
-void methodDataKlass::oop_follow_contents(oop obj) {
-  assert (obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-
-  obj->follow_header();
-  MarkSweep::mark_and_push(m->adr_method());
-  ResourceMark rm;
-  for (ProfileData* data = m->first_data();
-       m->is_valid(data);
-       data = m->next_data(data)) {
-    data->follow_contents();
-  }
-}
-
-#ifndef SERIALGC
-void methodDataKlass::oop_follow_contents(ParCompactionManager* cm,
-                                          oop obj) {
-  assert (obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-
-  obj->follow_header(cm);
-  PSParallelCompact::mark_and_push(cm, m->adr_method());
-  ResourceMark rm;
-  for (ProfileData* data = m->first_data();
-       m->is_valid(data);
-       data = m->next_data(data)) {
-    data->follow_contents(cm);
-  }
-}
-#endif // SERIALGC
-
-
-int methodDataKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert (obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-  // Get size before changing pointers
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-
-  obj->oop_iterate_header(blk);
-  blk->do_oop(m->adr_method());
-  ResourceMark rm;
-  for (ProfileData* data = m->first_data();
-       m->is_valid(data);
-       data = m->next_data(data)) {
-    data->oop_iterate(blk);
-  }
-  return size;
-}
-
-int methodDataKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert (obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-  // Get size before changing pointers
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-
-  obj->oop_iterate_header(blk, mr);
-  oop* adr = m->adr_method();
-  if (mr.contains(adr)) {
-    blk->do_oop(m->adr_method());
-  }
-  ResourceMark rm;
-  for (ProfileData* data = m->first_data();
-       m->is_valid(data);
-       data = m->next_data(data)) {
-    data->oop_iterate_m(blk, mr);
-  }
-  return size;
-}
-
-int methodDataKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_methodData(), "should be method data");
-  methodDataOop m = methodDataOop(obj);
-  // Get size before changing pointers
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-
-  obj->adjust_header();
-  MarkSweep::adjust_pointer(m->adr_method());
-  ResourceMark rm;
-  ProfileData* data;
-  for (data = m->first_data(); m->is_valid(data); data = m->next_data(data)) {
-    data->adjust_pointers();
-  }
-  return size;
-}
-
-
-#ifndef SERIALGC
-void methodDataKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert (obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-  // This should never point into the young gen.
-  assert(!PSScavenge::should_scavenge(m->adr_method()), "Sanity");
-}
-
-int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_methodData(), "should be method data");
-  methodDataOop m = methodDataOop(obj);
-
-  PSParallelCompact::adjust_pointer(m->adr_method());
-
-  ResourceMark rm;
-  ProfileData* data;
-  for (data = m->first_data(); m->is_valid(data); data = m->next_data(data)) {
-    data->update_pointers();
-  }
-  return m->object_size();
-}
-#endif // SERIALGC
-
-#ifndef PRODUCT
-
-// Printing
-void methodDataKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_methodData(), "should be method data");
-  methodDataOop m = methodDataOop(obj);
-  st->print("method data for ");
-  m->method()->print_value_on(st);
-  st->cr();
-  m->print_data_on(st);
-}
-
-#endif //PRODUCT
-
-void methodDataKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_methodData(), "should be method data");
-  methodDataOop m = methodDataOop(obj);
-  st->print("method data for ");
-  m->method()->print_value_on(st);
-}
-
-const char* methodDataKlass::internal_name() const {
-  return "{method data}";
-}
-
-
-// Verification
-void methodDataKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_methodData(), "object must be method data");
-  methodDataOop m = methodDataOop(obj);
-  guarantee(m->is_perm(), "should be in permspace");
-  m->verify_data_on(st);
-}
--- a/src/share/vm/oops/methodDataKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2000, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_METHODDATAKLASS_HPP
-#define SHARE_VM_OOPS_METHODDATAKLASS_HPP
-
-#include "oops/klass.hpp"
-
-// a methodDataKlass is the klass of a methodDataOop
-
-class methodDataKlass : public Klass {
-  friend class VMStructs;
- private:
-  juint _alloc_size; // allocation profiling support
- public:
-  // Testing
-  bool oop_is_methodData() const { return true; }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(methodDataKlass);
-  methodDataOop allocate(methodHandle method, TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Sizing
-  int oop_size(oop obj) const;
-  int klass_oop_size() const { return object_size(); }
-
-  // Casting from klassOop
-  static methodDataKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_methodData(), "cast to methodDataKlass");
-    return (methodDataKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size() {
-    return oopDesc::header_size() + sizeof(methodDataKlass)/wordSize;
-  }
-  int object_size() const {
-    return align_object_size(header_size());
-  }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-  bool oop_is_parsable(oop obj) const;
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Allocation profiling support
-  juint alloc_size() const { return _alloc_size; }
-  void  set_alloc_size(juint n) { _alloc_size = n; }
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
- public:
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-#ifndef PRODUCT
-  void oop_print_on      (oop obj, outputStream* st);
-#endif //PRODUCT
-
-  // Verify operations
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-};
-
-#endif // SHARE_VM_OOPS_METHODDATAKLASS_HPP
--- a/src/share/vm/oops/methodDataOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,944 +0,0 @@
-/*
- * Copyright (c) 2000, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "interpreter/bytecode.hpp"
-#include "interpreter/bytecodeStream.hpp"
-#include "interpreter/linkResolver.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "runtime/compilationPolicy.hpp"
-#include "runtime/deoptimization.hpp"
-#include "runtime/handles.inline.hpp"
-
-// ==================================================================
-// DataLayout
-//
-// Overlay for generic profiling data.
-
-// Some types of data layouts need a length field.
-bool DataLayout::needs_array_len(u1 tag) {
-  return (tag == multi_branch_data_tag) || (tag == arg_info_data_tag);
-}
-
-// Perform generic initialization of the data.  More specific
-// initialization occurs in overrides of ProfileData::post_initialize.
-void DataLayout::initialize(u1 tag, u2 bci, int cell_count) {
-  _header._bits = (intptr_t)0;
-  _header._struct._tag = tag;
-  _header._struct._bci = bci;
-  for (int i = 0; i < cell_count; i++) {
-    set_cell_at(i, (intptr_t)0);
-  }
-  if (needs_array_len(tag)) {
-    set_cell_at(ArrayData::array_len_off_set, cell_count - 1); // -1 for header.
-  }
-}
-
-void DataLayout::follow_weak_refs(BoolObjectClosure* cl) {
-  ResourceMark m;
-  data_in()->follow_weak_refs(cl);
-}
-
-
-// ==================================================================
-// ProfileData
-//
-// A ProfileData object is created to refer to a section of profiling
-// data in a structured way.
-
-// Constructor for invalid ProfileData.
-ProfileData::ProfileData() {
-  _data = NULL;
-}
-
-#ifndef PRODUCT
-void ProfileData::print_shared(outputStream* st, const char* name) {
-  st->print("bci: %d", bci());
-  st->fill_to(tab_width_one);
-  st->print("%s", name);
-  tab(st);
-  int trap = trap_state();
-  if (trap != 0) {
-    char buf[100];
-    st->print("trap(%s) ", Deoptimization::format_trap_state(buf, sizeof(buf), trap));
-  }
-  int flags = data()->flags();
-  if (flags != 0)
-    st->print("flags(%d) ", flags);
-}
-
-void ProfileData::tab(outputStream* st) {
-  st->fill_to(tab_width_two);
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// BitData
-//
-// A BitData corresponds to a one-bit flag.  This is used to indicate
-// whether a checkcast bytecode has seen a null value.
-
-
-#ifndef PRODUCT
-void BitData::print_data_on(outputStream* st) {
-  print_shared(st, "BitData");
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// CounterData
-//
-// A CounterData corresponds to a simple counter.
-
-#ifndef PRODUCT
-void CounterData::print_data_on(outputStream* st) {
-  print_shared(st, "CounterData");
-  st->print_cr("count(%u)", count());
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// JumpData
-//
-// A JumpData is used to access profiling information for a direct
-// branch.  It is a counter, used for counting the number of branches,
-// plus a data displacement, used for realigning the data pointer to
-// the corresponding target bci.
-
-void JumpData::post_initialize(BytecodeStream* stream, methodDataOop mdo) {
-  assert(stream->bci() == bci(), "wrong pos");
-  int target;
-  Bytecodes::Code c = stream->code();
-  if (c == Bytecodes::_goto_w || c == Bytecodes::_jsr_w) {
-    target = stream->dest_w();
-  } else {
-    target = stream->dest();
-  }
-  int my_di = mdo->dp_to_di(dp());
-  int target_di = mdo->bci_to_di(target);
-  int offset = target_di - my_di;
-  set_displacement(offset);
-}
-
-#ifndef PRODUCT
-void JumpData::print_data_on(outputStream* st) {
-  print_shared(st, "JumpData");
-  st->print_cr("taken(%u) displacement(%d)", taken(), displacement());
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// ReceiverTypeData
-//
-// A ReceiverTypeData is used to access profiling information about a
-// dynamic type check.  It consists of a counter which counts the total times
-// that the check is reached, and a series of (klassOop, count) pairs
-// which are used to store a type profile for the receiver of the check.
-
-void ReceiverTypeData::follow_contents() {
-  // This is a set of weak references that need
-  // to be followed at the end of the strong marking
-  // phase. Memoize this object so it can be visited
-  // in the weak roots processing phase.
-  MarkSweep::revisit_mdo(data());
-}
-
-#ifndef SERIALGC
-void ReceiverTypeData::follow_contents(ParCompactionManager* cm) {
-  // This is a set of weak references that need
-  // to be followed at the end of the strong marking
-  // phase. Memoize this object so it can be visited
-  // in the weak roots processing phase.
-  PSParallelCompact::revisit_mdo(cm, data());
-}
-#endif // SERIALGC
-
-void ReceiverTypeData::oop_iterate(OopClosure* blk) {
-  if (blk->should_remember_mdo()) {
-    // This is a set of weak references that need
-    // to be followed at the end of the strong marking
-    // phase. Memoize this object so it can be visited
-    // in the weak roots processing phase.
-    blk->remember_mdo(data());
-  } else { // normal scan
-    for (uint row = 0; row < row_limit(); row++) {
-      if (receiver(row) != NULL) {
-        oop* adr = adr_receiver(row);
-        blk->do_oop(adr);
-      }
-    }
-  }
-}
-
-void ReceiverTypeData::oop_iterate_m(OopClosure* blk, MemRegion mr) {
-  // Currently, this interface is called only during card-scanning for
-  // a young gen gc, in which case this object cannot contribute anything,
-  // since it does not contain any references that cross out of
-  // the perm gen. However, for future more general use we allow
-  // the possibility of calling for instance from more general
-  // iterators (for example, a future regionalized perm gen for G1,
-  // or the possibility of moving some references out of perm in
-  // the case of other collectors). In that case, you will need
-  // to relax or remove some of the assertions below.
-#ifdef ASSERT
-  // Verify that none of the embedded oop references cross out of
-  // this generation.
-  for (uint row = 0; row < row_limit(); row++) {
-    if (receiver(row) != NULL) {
-      oop* adr = adr_receiver(row);
-      CollectedHeap* h = Universe::heap();
-      assert(h->is_permanent(adr) && h->is_permanent_or_null(*adr), "Not intra-perm");
-    }
-  }
-#endif // ASSERT
-  assert(!blk->should_remember_mdo(), "Not expected to remember MDO");
-  return;   // Nothing to do, see comment above
-#if 0
-  if (blk->should_remember_mdo()) {
-    // This is a set of weak references that need
-    // to be followed at the end of the strong marking
-    // phase. Memoize this object so it can be visited
-    // in the weak roots processing phase.
-    blk->remember_mdo(data());
-  } else { // normal scan
-    for (uint row = 0; row < row_limit(); row++) {
-      if (receiver(row) != NULL) {
-        oop* adr = adr_receiver(row);
-        if (mr.contains(adr)) {
-          blk->do_oop(adr);
-        } else if ((HeapWord*)adr >= mr.end()) {
-          // Test that the current cursor and the two ends of the range
-          // that we may have skipped iterating over are monotonically ordered;
-          // this is just a paranoid assertion, just in case represetations
-          // should change in the future rendering the short-circuit return
-          // here invalid.
-          assert((row+1 >= row_limit() || adr_receiver(row+1) > adr) &&
-                 (row+2 >= row_limit() || adr_receiver(row_limit()-1) > adr_receiver(row+1)), "Reducing?");
-          break; // remaining should be outside this mr too
-        }
-      }
-    }
-  }
-#endif
-}
-
-void ReceiverTypeData::adjust_pointers() {
-  for (uint row = 0; row < row_limit(); row++) {
-    if (receiver(row) != NULL) {
-      MarkSweep::adjust_pointer(adr_receiver(row));
-    }
-  }
-}
-
-void ReceiverTypeData::follow_weak_refs(BoolObjectClosure* is_alive_cl) {
-  for (uint row = 0; row < row_limit(); row++) {
-    klassOop p = receiver(row);
-    if (p != NULL && !is_alive_cl->do_object_b(p)) {
-      clear_row(row);
-    }
-  }
-}
-
-#ifndef SERIALGC
-void ReceiverTypeData::update_pointers() {
-  for (uint row = 0; row < row_limit(); row++) {
-    if (receiver_unchecked(row) != NULL) {
-      PSParallelCompact::adjust_pointer(adr_receiver(row));
-    }
-  }
-}
-#endif // SERIALGC
-
-#ifndef PRODUCT
-void ReceiverTypeData::print_receiver_data_on(outputStream* st) {
-  uint row;
-  int entries = 0;
-  for (row = 0; row < row_limit(); row++) {
-    if (receiver(row) != NULL)  entries++;
-  }
-  st->print_cr("count(%u) entries(%u)", count(), entries);
-  int total = count();
-  for (row = 0; row < row_limit(); row++) {
-    if (receiver(row) != NULL) {
-      total += receiver_count(row);
-    }
-  }
-  for (row = 0; row < row_limit(); row++) {
-    if (receiver(row) != NULL) {
-      tab(st);
-      receiver(row)->print_value_on(st);
-      st->print_cr("(%u %4.2f)", receiver_count(row), (float) receiver_count(row) / (float) total);
-    }
-  }
-}
-void ReceiverTypeData::print_data_on(outputStream* st) {
-  print_shared(st, "ReceiverTypeData");
-  print_receiver_data_on(st);
-}
-void VirtualCallData::print_data_on(outputStream* st) {
-  print_shared(st, "VirtualCallData");
-  print_receiver_data_on(st);
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// RetData
-//
-// A RetData is used to access profiling information for a ret bytecode.
-// It is composed of a count of the number of times that the ret has
-// been executed, followed by a series of triples of the form
-// (bci, count, di) which count the number of times that some bci was the
-// target of the ret and cache a corresponding displacement.
-
-void RetData::post_initialize(BytecodeStream* stream, methodDataOop mdo) {
-  for (uint row = 0; row < row_limit(); row++) {
-    set_bci_displacement(row, -1);
-    set_bci(row, no_bci);
-  }
-  // release so other threads see a consistent state.  bci is used as
-  // a valid flag for bci_displacement.
-  OrderAccess::release();
-}
-
-// This routine needs to atomically update the RetData structure, so the
-// caller needs to hold the RetData_lock before it gets here.  Since taking
-// the lock can block (and allow GC) and since RetData is a ProfileData is a
-// wrapper around a derived oop, taking the lock in _this_ method will
-// basically cause the 'this' pointer's _data field to contain junk after the
-// lock.  We require the caller to take the lock before making the ProfileData
-// structure.  Currently the only caller is InterpreterRuntime::update_mdp_for_ret
-address RetData::fixup_ret(int return_bci, methodDataHandle h_mdo) {
-  // First find the mdp which corresponds to the return bci.
-  address mdp = h_mdo->bci_to_dp(return_bci);
-
-  // Now check to see if any of the cache slots are open.
-  for (uint row = 0; row < row_limit(); row++) {
-    if (bci(row) == no_bci) {
-      set_bci_displacement(row, mdp - dp());
-      set_bci_count(row, DataLayout::counter_increment);
-      // Barrier to ensure displacement is written before the bci; allows
-      // the interpreter to read displacement without fear of race condition.
-      release_set_bci(row, return_bci);
-      break;
-    }
-  }
-  return mdp;
-}
-
-
-#ifndef PRODUCT
-void RetData::print_data_on(outputStream* st) {
-  print_shared(st, "RetData");
-  uint row;
-  int entries = 0;
-  for (row = 0; row < row_limit(); row++) {
-    if (bci(row) != no_bci)  entries++;
-  }
-  st->print_cr("count(%u) entries(%u)", count(), entries);
-  for (row = 0; row < row_limit(); row++) {
-    if (bci(row) != no_bci) {
-      tab(st);
-      st->print_cr("bci(%d: count(%u) displacement(%d))",
-                   bci(row), bci_count(row), bci_displacement(row));
-    }
-  }
-}
-#endif // !PRODUCT
-
-// ==================================================================
-// BranchData
-//
-// A BranchData is used to access profiling data for a two-way branch.
-// It consists of taken and not_taken counts as well as a data displacement
-// for the taken case.
-
-void BranchData::post_initialize(BytecodeStream* stream, methodDataOop mdo) {
-  assert(stream->bci() == bci(), "wrong pos");
-  int target = stream->dest();
-  int my_di = mdo->dp_to_di(dp());
-  int target_di = mdo->bci_to_di(target);
-  int offset = target_di - my_di;
-  set_displacement(offset);
-}
-
-#ifndef PRODUCT
-void BranchData::print_data_on(outputStream* st) {
-  print_shared(st, "BranchData");
-  st->print_cr("taken(%u) displacement(%d)",
-               taken(), displacement());
-  tab(st);
-  st->print_cr("not taken(%u)", not_taken());
-}
-#endif
-
-// ==================================================================
-// MultiBranchData
-//
-// A MultiBranchData is used to access profiling information for
-// a multi-way branch (*switch bytecodes).  It consists of a series
-// of (count, displacement) pairs, which count the number of times each
-// case was taken and specify the data displacment for each branch target.
-
-int MultiBranchData::compute_cell_count(BytecodeStream* stream) {
-  int cell_count = 0;
-  if (stream->code() == Bytecodes::_tableswitch) {
-    Bytecode_tableswitch sw(stream->method()(), stream->bcp());
-    cell_count = 1 + per_case_cell_count * (1 + sw.length()); // 1 for default
-  } else {
-    Bytecode_lookupswitch sw(stream->method()(), stream->bcp());
-    cell_count = 1 + per_case_cell_count * (sw.number_of_pairs() + 1); // 1 for default
-  }
-  return cell_count;
-}
-
-void MultiBranchData::post_initialize(BytecodeStream* stream,
-                                      methodDataOop mdo) {
-  assert(stream->bci() == bci(), "wrong pos");
-  int target;
-  int my_di;
-  int target_di;
-  int offset;
-  if (stream->code() == Bytecodes::_tableswitch) {
-    Bytecode_tableswitch sw(stream->method()(), stream->bcp());
-    int len = sw.length();
-    assert(array_len() == per_case_cell_count * (len + 1), "wrong len");
-    for (int count = 0; count < len; count++) {
-      target = sw.dest_offset_at(count) + bci();
-      my_di = mdo->dp_to_di(dp());
-      target_di = mdo->bci_to_di(target);
-      offset = target_di - my_di;
-      set_displacement_at(count, offset);
-    }
-    target = sw.default_offset() + bci();
-    my_di = mdo->dp_to_di(dp());
-    target_di = mdo->bci_to_di(target);
-    offset = target_di - my_di;
-    set_default_displacement(offset);
-
-  } else {
-    Bytecode_lookupswitch sw(stream->method()(), stream->bcp());
-    int npairs = sw.number_of_pairs();
-    assert(array_len() == per_case_cell_count * (npairs + 1), "wrong len");
-    for (int count = 0; count < npairs; count++) {
-      LookupswitchPair pair = sw.pair_at(count);
-      target = pair.offset() + bci();
-      my_di = mdo->dp_to_di(dp());
-      target_di = mdo->bci_to_di(target);
-      offset = target_di - my_di;
-      set_displacement_at(count, offset);
-    }
-    target = sw.default_offset() + bci();
-    my_di = mdo->dp_to_di(dp());
-    target_di = mdo->bci_to_di(target);
-    offset = target_di - my_di;
-    set_default_displacement(offset);
-  }
-}
-
-#ifndef PRODUCT
-void MultiBranchData::print_data_on(outputStream* st) {
-  print_shared(st, "MultiBranchData");
-  st->print_cr("default_count(%u) displacement(%d)",
-               default_count(), default_displacement());
-  int cases = number_of_cases();
-  for (int i = 0; i < cases; i++) {
-    tab(st);
-    st->print_cr("count(%u) displacement(%d)",
-                 count_at(i), displacement_at(i));
-  }
-}
-#endif
-
-#ifndef PRODUCT
-void ArgInfoData::print_data_on(outputStream* st) {
-  print_shared(st, "ArgInfoData");
-  int nargs = number_of_args();
-  for (int i = 0; i < nargs; i++) {
-    st->print("  0x%x", arg_modified(i));
-  }
-  st->cr();
-}
-
-#endif
-// ==================================================================
-// methodDataOop
-//
-// A methodDataOop holds information which has been collected about
-// a method.
-
-int methodDataOopDesc::bytecode_cell_count(Bytecodes::Code code) {
-  switch (code) {
-  case Bytecodes::_checkcast:
-  case Bytecodes::_instanceof:
-  case Bytecodes::_aastore:
-    if (TypeProfileCasts) {
-      return ReceiverTypeData::static_cell_count();
-    } else {
-      return BitData::static_cell_count();
-    }
-  case Bytecodes::_invokespecial:
-  case Bytecodes::_invokestatic:
-    return CounterData::static_cell_count();
-  case Bytecodes::_goto:
-  case Bytecodes::_goto_w:
-  case Bytecodes::_jsr:
-  case Bytecodes::_jsr_w:
-    return JumpData::static_cell_count();
-  case Bytecodes::_invokevirtual:
-  case Bytecodes::_invokeinterface:
-    return VirtualCallData::static_cell_count();
-  case Bytecodes::_invokedynamic:
-    return CounterData::static_cell_count();
-  case Bytecodes::_ret:
-    return RetData::static_cell_count();
-  case Bytecodes::_ifeq:
-  case Bytecodes::_ifne:
-  case Bytecodes::_iflt:
-  case Bytecodes::_ifge:
-  case Bytecodes::_ifgt:
-  case Bytecodes::_ifle:
-  case Bytecodes::_if_icmpeq:
-  case Bytecodes::_if_icmpne:
-  case Bytecodes::_if_icmplt:
-  case Bytecodes::_if_icmpge:
-  case Bytecodes::_if_icmpgt:
-  case Bytecodes::_if_icmple:
-  case Bytecodes::_if_acmpeq:
-  case Bytecodes::_if_acmpne:
-  case Bytecodes::_ifnull:
-  case Bytecodes::_ifnonnull:
-    return BranchData::static_cell_count();
-  case Bytecodes::_lookupswitch:
-  case Bytecodes::_tableswitch:
-    return variable_cell_count;
-  }
-  return no_profile_data;
-}
-
-// Compute the size of the profiling information corresponding to
-// the current bytecode.
-int methodDataOopDesc::compute_data_size(BytecodeStream* stream) {
-  int cell_count = bytecode_cell_count(stream->code());
-  if (cell_count == no_profile_data) {
-    return 0;
-  }
-  if (cell_count == variable_cell_count) {
-    cell_count = MultiBranchData::compute_cell_count(stream);
-  }
-  // Note:  cell_count might be zero, meaning that there is just
-  //        a DataLayout header, with no extra cells.
-  assert(cell_count >= 0, "sanity");
-  return DataLayout::compute_size_in_bytes(cell_count);
-}
-
-int methodDataOopDesc::compute_extra_data_count(int data_size, int empty_bc_count) {
-  if (ProfileTraps) {
-    // Assume that up to 3% of BCIs with no MDP will need to allocate one.
-    int extra_data_count = (uint)(empty_bc_count * 3) / 128 + 1;
-    // If the method is large, let the extra BCIs grow numerous (to ~1%).
-    int one_percent_of_data
-      = (uint)data_size / (DataLayout::header_size_in_bytes()*128);
-    if (extra_data_count < one_percent_of_data)
-      extra_data_count = one_percent_of_data;
-    if (extra_data_count > empty_bc_count)
-      extra_data_count = empty_bc_count;  // no need for more
-    return extra_data_count;
-  } else {
-    return 0;
-  }
-}
-
-// Compute the size of the methodDataOop necessary to store
-// profiling information about a given method.  Size is in bytes.
-int methodDataOopDesc::compute_allocation_size_in_bytes(methodHandle method) {
-  int data_size = 0;
-  BytecodeStream stream(method);
-  Bytecodes::Code c;
-  int empty_bc_count = 0;  // number of bytecodes lacking data
-  while ((c = stream.next()) >= 0) {
-    int size_in_bytes = compute_data_size(&stream);
-    data_size += size_in_bytes;
-    if (size_in_bytes == 0)  empty_bc_count += 1;
-  }
-  int object_size = in_bytes(data_offset()) + data_size;
-
-  // Add some extra DataLayout cells (at least one) to track stray traps.
-  int extra_data_count = compute_extra_data_count(data_size, empty_bc_count);
-  object_size += extra_data_count * DataLayout::compute_size_in_bytes(0);
-
-  // Add a cell to record information about modified arguments.
-  int arg_size = method->size_of_parameters();
-  object_size += DataLayout::compute_size_in_bytes(arg_size+1);
-  return object_size;
-}
-
-// Compute the size of the methodDataOop necessary to store
-// profiling information about a given method.  Size is in words
-int methodDataOopDesc::compute_allocation_size_in_words(methodHandle method) {
-  int byte_size = compute_allocation_size_in_bytes(method);
-  int word_size = align_size_up(byte_size, BytesPerWord) / BytesPerWord;
-  return align_object_size(word_size);
-}
-
-// Initialize an individual data segment.  Returns the size of
-// the segment in bytes.
-int methodDataOopDesc::initialize_data(BytecodeStream* stream,
-                                       int data_index) {
-  int cell_count = -1;
-  int tag = DataLayout::no_tag;
-  DataLayout* data_layout = data_layout_at(data_index);
-  Bytecodes::Code c = stream->code();
-  switch (c) {
-  case Bytecodes::_checkcast:
-  case Bytecodes::_instanceof:
-  case Bytecodes::_aastore:
-    if (TypeProfileCasts) {
-      cell_count = ReceiverTypeData::static_cell_count();
-      tag = DataLayout::receiver_type_data_tag;
-    } else {
-      cell_count = BitData::static_cell_count();
-      tag = DataLayout::bit_data_tag;
-    }
-    break;
-  case Bytecodes::_invokespecial:
-  case Bytecodes::_invokestatic:
-    cell_count = CounterData::static_cell_count();
-    tag = DataLayout::counter_data_tag;
-    break;
-  case Bytecodes::_goto:
-  case Bytecodes::_goto_w:
-  case Bytecodes::_jsr:
-  case Bytecodes::_jsr_w:
-    cell_count = JumpData::static_cell_count();
-    tag = DataLayout::jump_data_tag;
-    break;
-  case Bytecodes::_invokevirtual:
-  case Bytecodes::_invokeinterface:
-    cell_count = VirtualCallData::static_cell_count();
-    tag = DataLayout::virtual_call_data_tag;
-    break;
-  case Bytecodes::_invokedynamic:
-    // %%% should make a type profile for any invokedynamic that takes a ref argument
-    cell_count = CounterData::static_cell_count();
-    tag = DataLayout::counter_data_tag;
-    break;
-  case Bytecodes::_ret:
-    cell_count = RetData::static_cell_count();
-    tag = DataLayout::ret_data_tag;
-    break;
-  case Bytecodes::_ifeq:
-  case Bytecodes::_ifne:
-  case Bytecodes::_iflt:
-  case Bytecodes::_ifge:
-  case Bytecodes::_ifgt:
-  case Bytecodes::_ifle:
-  case Bytecodes::_if_icmpeq:
-  case Bytecodes::_if_icmpne:
-  case Bytecodes::_if_icmplt:
-  case Bytecodes::_if_icmpge:
-  case Bytecodes::_if_icmpgt:
-  case Bytecodes::_if_icmple:
-  case Bytecodes::_if_acmpeq:
-  case Bytecodes::_if_acmpne:
-  case Bytecodes::_ifnull:
-  case Bytecodes::_ifnonnull:
-    cell_count = BranchData::static_cell_count();
-    tag = DataLayout::branch_data_tag;
-    break;
-  case Bytecodes::_lookupswitch:
-  case Bytecodes::_tableswitch:
-    cell_count = MultiBranchData::compute_cell_count(stream);
-    tag = DataLayout::multi_branch_data_tag;
-    break;
-  }
-  assert(tag == DataLayout::multi_branch_data_tag ||
-         cell_count == bytecode_cell_count(c), "cell counts must agree");
-  if (cell_count >= 0) {
-    assert(tag != DataLayout::no_tag, "bad tag");
-    assert(bytecode_has_profile(c), "agree w/ BHP");
-    data_layout->initialize(tag, stream->bci(), cell_count);
-    return DataLayout::compute_size_in_bytes(cell_count);
-  } else {
-    assert(!bytecode_has_profile(c), "agree w/ !BHP");
-    return 0;
-  }
-}
-
-// Get the data at an arbitrary (sort of) data index.
-ProfileData* methodDataOopDesc::data_at(int data_index) {
-  if (out_of_bounds(data_index)) {
-    return NULL;
-  }
-  DataLayout* data_layout = data_layout_at(data_index);
-  return data_layout->data_in();
-}
-
-ProfileData* DataLayout::data_in() {
-  switch (tag()) {
-  case DataLayout::no_tag:
-  default:
-    ShouldNotReachHere();
-    return NULL;
-  case DataLayout::bit_data_tag:
-    return new BitData(this);
-  case DataLayout::counter_data_tag:
-    return new CounterData(this);
-  case DataLayout::jump_data_tag:
-    return new JumpData(this);
-  case DataLayout::receiver_type_data_tag:
-    return new ReceiverTypeData(this);
-  case DataLayout::virtual_call_data_tag:
-    return new VirtualCallData(this);
-  case DataLayout::ret_data_tag:
-    return new RetData(this);
-  case DataLayout::branch_data_tag:
-    return new BranchData(this);
-  case DataLayout::multi_branch_data_tag:
-    return new MultiBranchData(this);
-  case DataLayout::arg_info_data_tag:
-    return new ArgInfoData(this);
-  };
-}
-
-// Iteration over data.
-ProfileData* methodDataOopDesc::next_data(ProfileData* current) {
-  int current_index = dp_to_di(current->dp());
-  int next_index = current_index + current->size_in_bytes();
-  ProfileData* next = data_at(next_index);
-  return next;
-}
-
-// Give each of the data entries a chance to perform specific
-// data initialization.
-void methodDataOopDesc::post_initialize(BytecodeStream* stream) {
-  ResourceMark rm;
-  ProfileData* data;
-  for (data = first_data(); is_valid(data); data = next_data(data)) {
-    stream->set_start(data->bci());
-    stream->next();
-    data->post_initialize(stream, this);
-  }
-}
-
-// Initialize the methodDataOop corresponding to a given method.
-void methodDataOopDesc::initialize(methodHandle method) {
-  ResourceMark rm;
-  // Set the method back-pointer.
-  _method = method();
-
-  if (TieredCompilation) {
-    _invocation_counter.init();
-    _backedge_counter.init();
-    _invocation_counter_start = 0;
-    _backedge_counter_start = 0;
-    _num_loops = 0;
-    _num_blocks = 0;
-    _highest_comp_level = 0;
-    _highest_osr_comp_level = 0;
-    _would_profile = true;
-  }
-  set_creation_mileage(mileage_of(method()));
-
-  // Initialize flags and trap history.
-  _nof_decompiles = 0;
-  _nof_overflow_recompiles = 0;
-  _nof_overflow_traps = 0;
-  assert(sizeof(_trap_hist) % sizeof(HeapWord) == 0, "align");
-  Copy::zero_to_words((HeapWord*) &_trap_hist,
-                      sizeof(_trap_hist) / sizeof(HeapWord));
-
-  // Go through the bytecodes and allocate and initialize the
-  // corresponding data cells.
-  int data_size = 0;
-  int empty_bc_count = 0;  // number of bytecodes lacking data
-  BytecodeStream stream(method);
-  Bytecodes::Code c;
-  while ((c = stream.next()) >= 0) {
-    int size_in_bytes = initialize_data(&stream, data_size);
-    data_size += size_in_bytes;
-    if (size_in_bytes == 0)  empty_bc_count += 1;
-  }
-  _data_size = data_size;
-  int object_size = in_bytes(data_offset()) + data_size;
-
-  // Add some extra DataLayout cells (at least one) to track stray traps.
-  int extra_data_count = compute_extra_data_count(data_size, empty_bc_count);
-  int extra_size = extra_data_count * DataLayout::compute_size_in_bytes(0);
-
-  // Add a cell to record information about modified arguments.
-  // Set up _args_modified array after traps cells so that
-  // the code for traps cells works.
-  DataLayout *dp = data_layout_at(data_size + extra_size);
-
-  int arg_size = method->size_of_parameters();
-  dp->initialize(DataLayout::arg_info_data_tag, 0, arg_size+1);
-
-  object_size += extra_size + DataLayout::compute_size_in_bytes(arg_size+1);
-
-  // Set an initial hint. Don't use set_hint_di() because
-  // first_di() may be out of bounds if data_size is 0.
-  // In that situation, _hint_di is never used, but at
-  // least well-defined.
-  _hint_di = first_di();
-
-  post_initialize(&stream);
-
-  set_object_is_parsable(object_size);
-}
-
-// Get a measure of how much mileage the method has on it.
-int methodDataOopDesc::mileage_of(methodOop method) {
-  int mileage = 0;
-  if (TieredCompilation) {
-    mileage = MAX2(method->invocation_count(), method->backedge_count());
-  } else {
-    int iic = method->interpreter_invocation_count();
-    if (mileage < iic)  mileage = iic;
-    InvocationCounter* ic = method->invocation_counter();
-    InvocationCounter* bc = method->backedge_counter();
-    int icval = ic->count();
-    if (ic->carry()) icval += CompileThreshold;
-    if (mileage < icval)  mileage = icval;
-    int bcval = bc->count();
-    if (bc->carry()) bcval += CompileThreshold;
-    if (mileage < bcval)  mileage = bcval;
-  }
-  return mileage;
-}
-
-bool methodDataOopDesc::is_mature() const {
-  return CompilationPolicy::policy()->is_mature(_method);
-}
-
-// Translate a bci to its corresponding data index (di).
-address methodDataOopDesc::bci_to_dp(int bci) {
-  ResourceMark rm;
-  ProfileData* data = data_before(bci);
-  ProfileData* prev = NULL;
-  for ( ; is_valid(data); data = next_data(data)) {
-    if (data->bci() >= bci) {
-      if (data->bci() == bci)  set_hint_di(dp_to_di(data->dp()));
-      else if (prev != NULL)   set_hint_di(dp_to_di(prev->dp()));
-      return data->dp();
-    }
-    prev = data;
-  }
-  return (address)limit_data_position();
-}
-
-// Translate a bci to its corresponding data, or NULL.
-ProfileData* methodDataOopDesc::bci_to_data(int bci) {
-  ProfileData* data = data_before(bci);
-  for ( ; is_valid(data); data = next_data(data)) {
-    if (data->bci() == bci) {
-      set_hint_di(dp_to_di(data->dp()));
-      return data;
-    } else if (data->bci() > bci) {
-      break;
-    }
-  }
-  return bci_to_extra_data(bci, false);
-}
-
-// Translate a bci to its corresponding extra data, or NULL.
-ProfileData* methodDataOopDesc::bci_to_extra_data(int bci, bool create_if_missing) {
-  DataLayout* dp    = extra_data_base();
-  DataLayout* end   = extra_data_limit();
-  DataLayout* avail = NULL;
-  for (; dp < end; dp = next_extra(dp)) {
-    // No need for "OrderAccess::load_acquire" ops,
-    // since the data structure is monotonic.
-    if (dp->tag() == DataLayout::no_tag)  break;
-    if (dp->tag() == DataLayout::arg_info_data_tag) {
-      dp = end; // ArgInfoData is at the end of extra data section.
-      break;
-    }
-    if (dp->bci() == bci) {
-      assert(dp->tag() == DataLayout::bit_data_tag, "sane");
-      return new BitData(dp);
-    }
-  }
-  if (create_if_missing && dp < end) {
-    // Allocate this one.  There is no mutual exclusion,
-    // so two threads could allocate different BCIs to the
-    // same data layout.  This means these extra data
-    // records, like most other MDO contents, must not be
-    // trusted too much.
-    DataLayout temp;
-    temp.initialize(DataLayout::bit_data_tag, bci, 0);
-    dp->release_set_header(temp.header());
-    assert(dp->tag() == DataLayout::bit_data_tag, "sane");
-    //NO: assert(dp->bci() == bci, "no concurrent allocation");
-    return new BitData(dp);
-  }
-  return NULL;
-}
-
-ArgInfoData *methodDataOopDesc::arg_info() {
-  DataLayout* dp    = extra_data_base();
-  DataLayout* end   = extra_data_limit();
-  for (; dp < end; dp = next_extra(dp)) {
-    if (dp->tag() == DataLayout::arg_info_data_tag)
-      return new ArgInfoData(dp);
-  }
-  return NULL;
-}
-
-#ifndef PRODUCT
-void methodDataOopDesc::print_data_on(outputStream* st) {
-  ResourceMark rm;
-  ProfileData* data = first_data();
-  for ( ; is_valid(data); data = next_data(data)) {
-    st->print("%d", dp_to_di(data->dp()));
-    st->fill_to(6);
-    data->print_data_on(st);
-  }
-  st->print_cr("--- Extra data:");
-  DataLayout* dp    = extra_data_base();
-  DataLayout* end   = extra_data_limit();
-  for (; dp < end; dp = next_extra(dp)) {
-    // No need for "OrderAccess::load_acquire" ops,
-    // since the data structure is monotonic.
-    if (dp->tag() == DataLayout::no_tag)  continue;
-    if (dp->tag() == DataLayout::bit_data_tag) {
-      data = new BitData(dp);
-    } else {
-      assert(dp->tag() == DataLayout::arg_info_data_tag, "must be BitData or ArgInfo");
-      data = new ArgInfoData(dp);
-      dp = end; // ArgInfoData is at the end of extra data section.
-    }
-    st->print("%d", dp_to_di(data->dp()));
-    st->fill_to(6);
-    data->print_data_on(st);
-  }
-}
-#endif
-
-void methodDataOopDesc::verify_data_on(outputStream* st) {
-  NEEDS_CLEANUP;
-  // not yet implemented.
-}
--- a/src/share/vm/oops/methodDataOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1535 +0,0 @@
-/*
- * Copyright (c) 2000, 2011, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_METHODDATAOOP_HPP
-#define SHARE_VM_OOPS_METHODDATAOOP_HPP
-
-#include "interpreter/bytecodes.hpp"
-#include "memory/universe.hpp"
-#include "oops/methodOop.hpp"
-#include "oops/oop.hpp"
-#include "runtime/orderAccess.hpp"
-
-class BytecodeStream;
-
-// The MethodData object collects counts and other profile information
-// during zeroth-tier (interpretive) and first-tier execution.
-// The profile is used later by compilation heuristics.  Some heuristics
-// enable use of aggressive (or "heroic") optimizations.  An aggressive
-// optimization often has a down-side, a corner case that it handles
-// poorly, but which is thought to be rare.  The profile provides
-// evidence of this rarity for a given method or even BCI.  It allows
-// the compiler to back out of the optimization at places where it
-// has historically been a poor choice.  Other heuristics try to use
-// specific information gathered about types observed at a given site.
-//
-// All data in the profile is approximate.  It is expected to be accurate
-// on the whole, but the system expects occasional inaccuraces, due to
-// counter overflow, multiprocessor races during data collection, space
-// limitations, missing MDO blocks, etc.  Bad or missing data will degrade
-// optimization quality but will not affect correctness.  Also, each MDO
-// is marked with its birth-date ("creation_mileage") which can be used
-// to assess the quality ("maturity") of its data.
-//
-// Short (<32-bit) counters are designed to overflow to a known "saturated"
-// state.  Also, certain recorded per-BCI events are given one-bit counters
-// which overflow to a saturated state which applied to all counters at
-// that BCI.  In other words, there is a small lattice which approximates
-// the ideal of an infinite-precision counter for each event at each BCI,
-// and the lattice quickly "bottoms out" in a state where all counters
-// are taken to be indefinitely large.
-//
-// The reader will find many data races in profile gathering code, starting
-// with invocation counter incrementation.  None of these races harm correct
-// execution of the compiled code.
-
-// forward decl
-class ProfileData;
-
-// DataLayout
-//
-// Overlay for generic profiling data.
-class DataLayout VALUE_OBJ_CLASS_SPEC {
-private:
-  // Every data layout begins with a header.  This header
-  // contains a tag, which is used to indicate the size/layout
-  // of the data, 4 bits of flags, which can be used in any way,
-  // 4 bits of trap history (none/one reason/many reasons),
-  // and a bci, which is used to tie this piece of data to a
-  // specific bci in the bytecodes.
-  union {
-    intptr_t _bits;
-    struct {
-      u1 _tag;
-      u1 _flags;
-      u2 _bci;
-    } _struct;
-  } _header;
-
-  // The data layout has an arbitrary number of cells, each sized
-  // to accomodate a pointer or an integer.
-  intptr_t _cells[1];
-
-  // Some types of data layouts need a length field.
-  static bool needs_array_len(u1 tag);
-
-public:
-  enum {
-    counter_increment = 1
-  };
-
-  enum {
-    cell_size = sizeof(intptr_t)
-  };
-
-  // Tag values
-  enum {
-    no_tag,
-    bit_data_tag,
-    counter_data_tag,
-    jump_data_tag,
-    receiver_type_data_tag,
-    virtual_call_data_tag,
-    ret_data_tag,
-    branch_data_tag,
-    multi_branch_data_tag,
-    arg_info_data_tag
-  };
-
-  enum {
-    // The _struct._flags word is formatted as [trap_state:4 | flags:4].
-    // The trap state breaks down further as [recompile:1 | reason:3].
-    // This further breakdown is defined in deoptimization.cpp.
-    // See Deoptimization::trap_state_reason for an assert that
-    // trap_bits is big enough to hold reasons < Reason_RECORDED_LIMIT.
-    //
-    // The trap_state is collected only if ProfileTraps is true.
-    trap_bits = 1+3,  // 3: enough to distinguish [0..Reason_RECORDED_LIMIT].
-    trap_shift = BitsPerByte - trap_bits,
-    trap_mask = right_n_bits(trap_bits),
-    trap_mask_in_place = (trap_mask << trap_shift),
-    flag_limit = trap_shift,
-    flag_mask = right_n_bits(flag_limit),
-    first_flag = 0
-  };
-
-  // Size computation
-  static int header_size_in_bytes() {
-    return cell_size;
-  }
-  static int header_size_in_cells() {
-    return 1;
-  }
-
-  static int compute_size_in_bytes(int cell_count) {
-    return header_size_in_bytes() + cell_count * cell_size;
-  }
-
-  // Initialization
-  void initialize(u1 tag, u2 bci, int cell_count);
-
-  // Accessors
-  u1 tag() {
-    return _header._struct._tag;
-  }
-
-  // Return a few bits of trap state.  Range is [0..trap_mask].
-  // The state tells if traps with zero, one, or many reasons have occurred.
-  // It also tells whether zero or many recompilations have occurred.
-  // The associated trap histogram in the MDO itself tells whether
-  // traps are common or not.  If a BCI shows that a trap X has
-  // occurred, and the MDO shows N occurrences of X, we make the
-  // simplifying assumption that all N occurrences can be blamed
-  // on that BCI.
-  int trap_state() {
-    return ((_header._struct._flags >> trap_shift) & trap_mask);
-  }
-
-  void set_trap_state(int new_state) {
-    assert(ProfileTraps, "used only under +ProfileTraps");
-    uint old_flags = (_header._struct._flags & flag_mask);
-    _header._struct._flags = (new_state << trap_shift) | old_flags;
-  }
-
-  u1 flags() {
-    return _header._struct._flags;
-  }
-
-  u2 bci() {
-    return _header._struct._bci;
-  }
-
-  void set_header(intptr_t value) {
-    _header._bits = value;
-  }
-  void release_set_header(intptr_t value) {
-    OrderAccess::release_store_ptr(&_header._bits, value);
-  }
-  intptr_t header() {
-    return _header._bits;
-  }
-  void set_cell_at(int index, intptr_t value) {
-    _cells[index] = value;
-  }
-  void release_set_cell_at(int index, intptr_t value) {
-    OrderAccess::release_store_ptr(&_cells[index], value);
-  }
-  intptr_t cell_at(int index) {
-    return _cells[index];
-  }
-  intptr_t* adr_cell_at(int index) {
-    return &_cells[index];
-  }
-  oop* adr_oop_at(int index) {
-    return (oop*)&(_cells[index]);
-  }
-
-  void set_flag_at(int flag_number) {
-    assert(flag_number < flag_limit, "oob");
-    _header._struct._flags |= (0x1 << flag_number);
-  }
-  bool flag_at(int flag_number) {
-    assert(flag_number < flag_limit, "oob");
-    return (_header._struct._flags & (0x1 << flag_number)) != 0;
-  }
-
-  // Low-level support for code generation.
-  static ByteSize header_offset() {
-    return byte_offset_of(DataLayout, _header);
-  }
-  static ByteSize tag_offset() {
-    return byte_offset_of(DataLayout, _header._struct._tag);
-  }
-  static ByteSize flags_offset() {
-    return byte_offset_of(DataLayout, _header._struct._flags);
-  }
-  static ByteSize bci_offset() {
-    return byte_offset_of(DataLayout, _header._struct._bci);
-  }
-  static ByteSize cell_offset(int index) {
-    return byte_offset_of(DataLayout, _cells) + in_ByteSize(index * cell_size);
-  }
-  // Return a value which, when or-ed as a byte into _flags, sets the flag.
-  static int flag_number_to_byte_constant(int flag_number) {
-    assert(0 <= flag_number && flag_number < flag_limit, "oob");
-    DataLayout temp; temp.set_header(0);
-    temp.set_flag_at(flag_number);
-    return temp._header._struct._flags;
-  }
-  // Return a value which, when or-ed as a word into _header, sets the flag.
-  static intptr_t flag_mask_to_header_mask(int byte_constant) {
-    DataLayout temp; temp.set_header(0);
-    temp._header._struct._flags = byte_constant;
-    return temp._header._bits;
-  }
-
-  // GC support
-  ProfileData* data_in();
-  void follow_weak_refs(BoolObjectClosure* cl);
-};
-
-
-// ProfileData class hierarchy
-class ProfileData;
-class   BitData;
-class     CounterData;
-class       ReceiverTypeData;
-class         VirtualCallData;
-class       RetData;
-class   JumpData;
-class     BranchData;
-class   ArrayData;
-class     MultiBranchData;
-class     ArgInfoData;
-
-
-// ProfileData
-//
-// A ProfileData object is created to refer to a section of profiling
-// data in a structured way.
-class ProfileData : public ResourceObj {
-private:
-#ifndef PRODUCT
-  enum {
-    tab_width_one = 16,
-    tab_width_two = 36
-  };
-#endif // !PRODUCT
-
-  // This is a pointer to a section of profiling data.
-  DataLayout* _data;
-
-protected:
-  DataLayout* data() { return _data; }
-
-  enum {
-    cell_size = DataLayout::cell_size
-  };
-
-public:
-  // How many cells are in this?
-  virtual int cell_count() {
-    ShouldNotReachHere();
-    return -1;
-  }
-
-  // Return the size of this data.
-  int size_in_bytes() {
-    return DataLayout::compute_size_in_bytes(cell_count());
-  }
-
-protected:
-  // Low-level accessors for underlying data
-  void set_intptr_at(int index, intptr_t value) {
-    assert(0 <= index && index < cell_count(), "oob");
-    data()->set_cell_at(index, value);
-  }
-  void release_set_intptr_at(int index, intptr_t value) {
-    assert(0 <= index && index < cell_count(), "oob");
-    data()->release_set_cell_at(index, value);
-  }
-  intptr_t intptr_at(int index) {
-    assert(0 <= index && index < cell_count(), "oob");
-    return data()->cell_at(index);
-  }
-  void set_uint_at(int index, uint value) {
-    set_intptr_at(index, (intptr_t) value);
-  }
-  void release_set_uint_at(int index, uint value) {
-    release_set_intptr_at(index, (intptr_t) value);
-  }
-  uint uint_at(int index) {
-    return (uint)intptr_at(index);
-  }
-  void set_int_at(int index, int value) {
-    set_intptr_at(index, (intptr_t) value);
-  }
-  void release_set_int_at(int index, int value) {
-    release_set_intptr_at(index, (intptr_t) value);
-  }
-  int int_at(int index) {
-    return (int)intptr_at(index);
-  }
-  int int_at_unchecked(int index) {
-    return (int)data()->cell_at(index);
-  }
-  void set_oop_at(int index, oop value) {
-    set_intptr_at(index, (intptr_t) value);
-  }
-  oop oop_at(int index) {
-    return (oop)intptr_at(index);
-  }
-  oop* adr_oop_at(int index) {
-    assert(0 <= index && index < cell_count(), "oob");
-    return data()->adr_oop_at(index);
-  }
-
-  void set_flag_at(int flag_number) {
-    data()->set_flag_at(flag_number);
-  }
-  bool flag_at(int flag_number) {
-    return data()->flag_at(flag_number);
-  }
-
-  // two convenient imports for use by subclasses:
-  static ByteSize cell_offset(int index) {
-    return DataLayout::cell_offset(index);
-  }
-  static int flag_number_to_byte_constant(int flag_number) {
-    return DataLayout::flag_number_to_byte_constant(flag_number);
-  }
-
-  ProfileData(DataLayout* data) {
-    _data = data;
-  }
-
-public:
-  // Constructor for invalid ProfileData.
-  ProfileData();
-
-  u2 bci() {
-    return data()->bci();
-  }
-
-  address dp() {
-    return (address)_data;
-  }
-
-  int trap_state() {
-    return data()->trap_state();
-  }
-  void set_trap_state(int new_state) {
-    data()->set_trap_state(new_state);
-  }
-
-  // Type checking
-  virtual bool is_BitData()         { return false; }
-  virtual bool is_CounterData()     { return false; }
-  virtual bool is_JumpData()        { return false; }
-  virtual bool is_ReceiverTypeData(){ return false; }
-  virtual bool is_VirtualCallData() { return false; }
-  virtual bool is_RetData()         { return false; }
-  virtual bool is_BranchData()      { return false; }
-  virtual bool is_ArrayData()       { return false; }
-  virtual bool is_MultiBranchData() { return false; }
-  virtual bool is_ArgInfoData()     { return false; }
-
-
-  BitData* as_BitData() {
-    assert(is_BitData(), "wrong type");
-    return is_BitData()         ? (BitData*)        this : NULL;
-  }
-  CounterData* as_CounterData() {
-    assert(is_CounterData(), "wrong type");
-    return is_CounterData()     ? (CounterData*)    this : NULL;
-  }
-  JumpData* as_JumpData() {
-    assert(is_JumpData(), "wrong type");
-    return is_JumpData()        ? (JumpData*)       this : NULL;
-  }
-  ReceiverTypeData* as_ReceiverTypeData() {
-    assert(is_ReceiverTypeData(), "wrong type");
-    return is_ReceiverTypeData() ? (ReceiverTypeData*)this : NULL;
-  }
-  VirtualCallData* as_VirtualCallData() {
-    assert(is_VirtualCallData(), "wrong type");
-    return is_VirtualCallData() ? (VirtualCallData*)this : NULL;
-  }
-  RetData* as_RetData() {
-    assert(is_RetData(), "wrong type");
-    return is_RetData()         ? (RetData*)        this : NULL;
-  }
-  BranchData* as_BranchData() {
-    assert(is_BranchData(), "wrong type");
-    return is_BranchData()      ? (BranchData*)     this : NULL;
-  }
-  ArrayData* as_ArrayData() {
-    assert(is_ArrayData(), "wrong type");
-    return is_ArrayData()       ? (ArrayData*)      this : NULL;
-  }
-  MultiBranchData* as_MultiBranchData() {
-    assert(is_MultiBranchData(), "wrong type");
-    return is_MultiBranchData() ? (MultiBranchData*)this : NULL;
-  }
-  ArgInfoData* as_ArgInfoData() {
-    assert(is_ArgInfoData(), "wrong type");
-    return is_ArgInfoData() ? (ArgInfoData*)this : NULL;
-  }
-
-
-  // Subclass specific initialization
-  virtual void post_initialize(BytecodeStream* stream, methodDataOop mdo) {}
-
-  // GC support
-  virtual void follow_contents() {}
-  virtual void oop_iterate(OopClosure* blk) {}
-  virtual void oop_iterate_m(OopClosure* blk, MemRegion mr) {}
-  virtual void adjust_pointers() {}
-  virtual void follow_weak_refs(BoolObjectClosure* is_alive_closure) {}
-
-#ifndef SERIALGC
-  // Parallel old support
-  virtual void follow_contents(ParCompactionManager* cm) {}
-  virtual void update_pointers() {}
-#endif // SERIALGC
-
-  // CI translation: ProfileData can represent both MethodDataOop data
-  // as well as CIMethodData data. This function is provided for translating
-  // an oop in a ProfileData to the ci equivalent. Generally speaking,
-  // most ProfileData don't require any translation, so we provide the null
-  // translation here, and the required translators are in the ci subclasses.
-  virtual void translate_from(ProfileData* data) {}
-
-  virtual void print_data_on(outputStream* st) {
-    ShouldNotReachHere();
-  }
-
-#ifndef PRODUCT
-  void print_shared(outputStream* st, const char* name);
-  void tab(outputStream* st);
-#endif
-};
-
-// BitData
-//
-// A BitData holds a flag or two in its header.
-class BitData : public ProfileData {
-protected:
-  enum {
-    // null_seen:
-    //  saw a null operand (cast/aastore/instanceof)
-    null_seen_flag              = DataLayout::first_flag + 0
-  };
-  enum { bit_cell_count = 0 };  // no additional data fields needed.
-public:
-  BitData(DataLayout* layout) : ProfileData(layout) {
-  }
-
-  virtual bool is_BitData() { return true; }
-
-  static int static_cell_count() {
-    return bit_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Accessor
-
-  // The null_seen flag bit is specially known to the interpreter.
-  // Consulting it allows the compiler to avoid setting up null_check traps.
-  bool null_seen()     { return flag_at(null_seen_flag); }
-  void set_null_seen()    { set_flag_at(null_seen_flag); }
-
-
-  // Code generation support
-  static int null_seen_byte_constant() {
-    return flag_number_to_byte_constant(null_seen_flag);
-  }
-
-  static ByteSize bit_data_size() {
-    return cell_offset(bit_cell_count);
-  }
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// CounterData
-//
-// A CounterData corresponds to a simple counter.
-class CounterData : public BitData {
-protected:
-  enum {
-    count_off,
-    counter_cell_count
-  };
-public:
-  CounterData(DataLayout* layout) : BitData(layout) {}
-
-  virtual bool is_CounterData() { return true; }
-
-  static int static_cell_count() {
-    return counter_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Direct accessor
-  uint count() {
-    return uint_at(count_off);
-  }
-
-  // Code generation support
-  static ByteSize count_offset() {
-    return cell_offset(count_off);
-  }
-  static ByteSize counter_data_size() {
-    return cell_offset(counter_cell_count);
-  }
-
-  void set_count(uint count) {
-    set_uint_at(count_off, count);
-  }
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// JumpData
-//
-// A JumpData is used to access profiling information for a direct
-// branch.  It is a counter, used for counting the number of branches,
-// plus a data displacement, used for realigning the data pointer to
-// the corresponding target bci.
-class JumpData : public ProfileData {
-protected:
-  enum {
-    taken_off_set,
-    displacement_off_set,
-    jump_cell_count
-  };
-
-  void set_displacement(int displacement) {
-    set_int_at(displacement_off_set, displacement);
-  }
-
-public:
-  JumpData(DataLayout* layout) : ProfileData(layout) {
-    assert(layout->tag() == DataLayout::jump_data_tag ||
-      layout->tag() == DataLayout::branch_data_tag, "wrong type");
-  }
-
-  virtual bool is_JumpData() { return true; }
-
-  static int static_cell_count() {
-    return jump_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Direct accessor
-  uint taken() {
-    return uint_at(taken_off_set);
-  }
-
-  void set_taken(uint cnt) {
-    set_uint_at(taken_off_set, cnt);
-  }
-
-  // Saturating counter
-  uint inc_taken() {
-    uint cnt = taken() + 1;
-    // Did we wrap? Will compiler screw us??
-    if (cnt == 0) cnt--;
-    set_uint_at(taken_off_set, cnt);
-    return cnt;
-  }
-
-  int displacement() {
-    return int_at(displacement_off_set);
-  }
-
-  // Code generation support
-  static ByteSize taken_offset() {
-    return cell_offset(taken_off_set);
-  }
-
-  static ByteSize displacement_offset() {
-    return cell_offset(displacement_off_set);
-  }
-
-  // Specific initialization.
-  void post_initialize(BytecodeStream* stream, methodDataOop mdo);
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// ReceiverTypeData
-//
-// A ReceiverTypeData is used to access profiling information about a
-// dynamic type check.  It consists of a counter which counts the total times
-// that the check is reached, and a series of (klassOop, count) pairs
-// which are used to store a type profile for the receiver of the check.
-class ReceiverTypeData : public CounterData {
-protected:
-  enum {
-    receiver0_offset = counter_cell_count,
-    count0_offset,
-    receiver_type_row_cell_count = (count0_offset + 1) - receiver0_offset
-  };
-
-public:
-  ReceiverTypeData(DataLayout* layout) : CounterData(layout) {
-    assert(layout->tag() == DataLayout::receiver_type_data_tag ||
-           layout->tag() == DataLayout::virtual_call_data_tag, "wrong type");
-  }
-
-  virtual bool is_ReceiverTypeData() { return true; }
-
-  static int static_cell_count() {
-    return counter_cell_count + (uint) TypeProfileWidth * receiver_type_row_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Direct accessors
-  static uint row_limit() {
-    return TypeProfileWidth;
-  }
-  static int receiver_cell_index(uint row) {
-    return receiver0_offset + row * receiver_type_row_cell_count;
-  }
-  static int receiver_count_cell_index(uint row) {
-    return count0_offset + row * receiver_type_row_cell_count;
-  }
-
-  // Get the receiver at row.  The 'unchecked' version is needed by parallel old
-  // gc; it does not assert the receiver is a klass.  During compaction of the
-  // perm gen, the klass may already have moved, so the is_klass() predicate
-  // would fail.  The 'normal' version should be used whenever possible.
-  klassOop receiver_unchecked(uint row) {
-    assert(row < row_limit(), "oob");
-    oop recv = oop_at(receiver_cell_index(row));
-    return (klassOop)recv;
-  }
-
-  klassOop receiver(uint row) {
-    klassOop recv = receiver_unchecked(row);
-    assert(recv == NULL || ((oop)recv)->is_klass(), "wrong type");
-    return recv;
-  }
-
-  void set_receiver(uint row, oop p) {
-    assert((uint)row < row_limit(), "oob");
-    set_oop_at(receiver_cell_index(row), p);
-  }
-
-  uint receiver_count(uint row) {
-    assert(row < row_limit(), "oob");
-    return uint_at(receiver_count_cell_index(row));
-  }
-
-  void set_receiver_count(uint row, uint count) {
-    assert(row < row_limit(), "oob");
-    set_uint_at(receiver_count_cell_index(row), count);
-  }
-
-  void clear_row(uint row) {
-    assert(row < row_limit(), "oob");
-    // Clear total count - indicator of polymorphic call site.
-    // The site may look like as monomorphic after that but
-    // it allow to have more accurate profiling information because
-    // there was execution phase change since klasses were unloaded.
-    // If the site is still polymorphic then MDO will be updated
-    // to reflect it. But it could be the case that the site becomes
-    // only bimorphic. Then keeping total count not 0 will be wrong.
-    // Even if we use monomorphic (when it is not) for compilation
-    // we will only have trap, deoptimization and recompile again
-    // with updated MDO after executing method in Interpreter.
-    // An additional receiver will be recorded in the cleaned row
-    // during next call execution.
-    //
-    // Note: our profiling logic works with empty rows in any slot.
-    // We do sorting a profiling info (ciCallProfile) for compilation.
-    //
-    set_count(0);
-    set_receiver(row, NULL);
-    set_receiver_count(row, 0);
-  }
-
-  // Code generation support
-  static ByteSize receiver_offset(uint row) {
-    return cell_offset(receiver_cell_index(row));
-  }
-  static ByteSize receiver_count_offset(uint row) {
-    return cell_offset(receiver_count_cell_index(row));
-  }
-  static ByteSize receiver_type_data_size() {
-    return cell_offset(static_cell_count());
-  }
-
-  // GC support
-  virtual void follow_contents();
-  virtual void oop_iterate(OopClosure* blk);
-  virtual void oop_iterate_m(OopClosure* blk, MemRegion mr);
-  virtual void adjust_pointers();
-  virtual void follow_weak_refs(BoolObjectClosure* is_alive_closure);
-
-#ifndef SERIALGC
-  // Parallel old support
-  virtual void follow_contents(ParCompactionManager* cm);
-  virtual void update_pointers();
-#endif // SERIALGC
-
-  oop* adr_receiver(uint row) {
-    return adr_oop_at(receiver_cell_index(row));
-  }
-
-#ifndef PRODUCT
-  void print_receiver_data_on(outputStream* st);
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// VirtualCallData
-//
-// A VirtualCallData is used to access profiling information about a
-// virtual call.  For now, it has nothing more than a ReceiverTypeData.
-class VirtualCallData : public ReceiverTypeData {
-public:
-  VirtualCallData(DataLayout* layout) : ReceiverTypeData(layout) {
-    assert(layout->tag() == DataLayout::virtual_call_data_tag, "wrong type");
-  }
-
-  virtual bool is_VirtualCallData() { return true; }
-
-  static int static_cell_count() {
-    // At this point we could add more profile state, e.g., for arguments.
-    // But for now it's the same size as the base record type.
-    return ReceiverTypeData::static_cell_count();
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Direct accessors
-  static ByteSize virtual_call_data_size() {
-    return cell_offset(static_cell_count());
-  }
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// RetData
-//
-// A RetData is used to access profiling information for a ret bytecode.
-// It is composed of a count of the number of times that the ret has
-// been executed, followed by a series of triples of the form
-// (bci, count, di) which count the number of times that some bci was the
-// target of the ret and cache a corresponding data displacement.
-class RetData : public CounterData {
-protected:
-  enum {
-    bci0_offset = counter_cell_count,
-    count0_offset,
-    displacement0_offset,
-    ret_row_cell_count = (displacement0_offset + 1) - bci0_offset
-  };
-
-  void set_bci(uint row, int bci) {
-    assert((uint)row < row_limit(), "oob");
-    set_int_at(bci0_offset + row * ret_row_cell_count, bci);
-  }
-  void release_set_bci(uint row, int bci) {
-    assert((uint)row < row_limit(), "oob");
-    // 'release' when setting the bci acts as a valid flag for other
-    // threads wrt bci_count and bci_displacement.
-    release_set_int_at(bci0_offset + row * ret_row_cell_count, bci);
-  }
-  void set_bci_count(uint row, uint count) {
-    assert((uint)row < row_limit(), "oob");
-    set_uint_at(count0_offset + row * ret_row_cell_count, count);
-  }
-  void set_bci_displacement(uint row, int disp) {
-    set_int_at(displacement0_offset + row * ret_row_cell_count, disp);
-  }
-
-public:
-  RetData(DataLayout* layout) : CounterData(layout) {
-    assert(layout->tag() == DataLayout::ret_data_tag, "wrong type");
-  }
-
-  virtual bool is_RetData() { return true; }
-
-  enum {
-    no_bci = -1 // value of bci when bci1/2 are not in use.
-  };
-
-  static int static_cell_count() {
-    return counter_cell_count + (uint) BciProfileWidth * ret_row_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  static uint row_limit() {
-    return BciProfileWidth;
-  }
-  static int bci_cell_index(uint row) {
-    return bci0_offset + row * ret_row_cell_count;
-  }
-  static int bci_count_cell_index(uint row) {
-    return count0_offset + row * ret_row_cell_count;
-  }
-  static int bci_displacement_cell_index(uint row) {
-    return displacement0_offset + row * ret_row_cell_count;
-  }
-
-  // Direct accessors
-  int bci(uint row) {
-    return int_at(bci_cell_index(row));
-  }
-  uint bci_count(uint row) {
-    return uint_at(bci_count_cell_index(row));
-  }
-  int bci_displacement(uint row) {
-    return int_at(bci_displacement_cell_index(row));
-  }
-
-  // Interpreter Runtime support
-  address fixup_ret(int return_bci, methodDataHandle mdo);
-
-  // Code generation support
-  static ByteSize bci_offset(uint row) {
-    return cell_offset(bci_cell_index(row));
-  }
-  static ByteSize bci_count_offset(uint row) {
-    return cell_offset(bci_count_cell_index(row));
-  }
-  static ByteSize bci_displacement_offset(uint row) {
-    return cell_offset(bci_displacement_cell_index(row));
-  }
-
-  // Specific initialization.
-  void post_initialize(BytecodeStream* stream, methodDataOop mdo);
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// BranchData
-//
-// A BranchData is used to access profiling data for a two-way branch.
-// It consists of taken and not_taken counts as well as a data displacement
-// for the taken case.
-class BranchData : public JumpData {
-protected:
-  enum {
-    not_taken_off_set = jump_cell_count,
-    branch_cell_count
-  };
-
-  void set_displacement(int displacement) {
-    set_int_at(displacement_off_set, displacement);
-  }
-
-public:
-  BranchData(DataLayout* layout) : JumpData(layout) {
-    assert(layout->tag() == DataLayout::branch_data_tag, "wrong type");
-  }
-
-  virtual bool is_BranchData() { return true; }
-
-  static int static_cell_count() {
-    return branch_cell_count;
-  }
-
-  virtual int cell_count() {
-    return static_cell_count();
-  }
-
-  // Direct accessor
-  uint not_taken() {
-    return uint_at(not_taken_off_set);
-  }
-
-  void set_not_taken(uint cnt) {
-    set_uint_at(not_taken_off_set, cnt);
-  }
-
-  uint inc_not_taken() {
-    uint cnt = not_taken() + 1;
-    // Did we wrap? Will compiler screw us??
-    if (cnt == 0) cnt--;
-    set_uint_at(not_taken_off_set, cnt);
-    return cnt;
-  }
-
-  // Code generation support
-  static ByteSize not_taken_offset() {
-    return cell_offset(not_taken_off_set);
-  }
-  static ByteSize branch_data_size() {
-    return cell_offset(branch_cell_count);
-  }
-
-  // Specific initialization.
-  void post_initialize(BytecodeStream* stream, methodDataOop mdo);
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// ArrayData
-//
-// A ArrayData is a base class for accessing profiling data which does
-// not have a statically known size.  It consists of an array length
-// and an array start.
-class ArrayData : public ProfileData {
-protected:
-  friend class DataLayout;
-
-  enum {
-    array_len_off_set,
-    array_start_off_set
-  };
-
-  uint array_uint_at(int index) {
-    int aindex = index + array_start_off_set;
-    return uint_at(aindex);
-  }
-  int array_int_at(int index) {
-    int aindex = index + array_start_off_set;
-    return int_at(aindex);
-  }
-  oop array_oop_at(int index) {
-    int aindex = index + array_start_off_set;
-    return oop_at(aindex);
-  }
-  void array_set_int_at(int index, int value) {
-    int aindex = index + array_start_off_set;
-    set_int_at(aindex, value);
-  }
-
-  // Code generation support for subclasses.
-  static ByteSize array_element_offset(int index) {
-    return cell_offset(array_start_off_set + index);
-  }
-
-public:
-  ArrayData(DataLayout* layout) : ProfileData(layout) {}
-
-  virtual bool is_ArrayData() { return true; }
-
-  static int static_cell_count() {
-    return -1;
-  }
-
-  int array_len() {
-    return int_at_unchecked(array_len_off_set);
-  }
-
-  virtual int cell_count() {
-    return array_len() + 1;
-  }
-
-  // Code generation support
-  static ByteSize array_len_offset() {
-    return cell_offset(array_len_off_set);
-  }
-  static ByteSize array_start_offset() {
-    return cell_offset(array_start_off_set);
-  }
-};
-
-// MultiBranchData
-//
-// A MultiBranchData is used to access profiling information for
-// a multi-way branch (*switch bytecodes).  It consists of a series
-// of (count, displacement) pairs, which count the number of times each
-// case was taken and specify the data displacment for each branch target.
-class MultiBranchData : public ArrayData {
-protected:
-  enum {
-    default_count_off_set,
-    default_disaplacement_off_set,
-    case_array_start
-  };
-  enum {
-    relative_count_off_set,
-    relative_displacement_off_set,
-    per_case_cell_count
-  };
-
-  void set_default_displacement(int displacement) {
-    array_set_int_at(default_disaplacement_off_set, displacement);
-  }
-  void set_displacement_at(int index, int displacement) {
-    array_set_int_at(case_array_start +
-                     index * per_case_cell_count +
-                     relative_displacement_off_set,
-                     displacement);
-  }
-
-public:
-  MultiBranchData(DataLayout* layout) : ArrayData(layout) {
-    assert(layout->tag() == DataLayout::multi_branch_data_tag, "wrong type");
-  }
-
-  virtual bool is_MultiBranchData() { return true; }
-
-  static int compute_cell_count(BytecodeStream* stream);
-
-  int number_of_cases() {
-    int alen = array_len() - 2; // get rid of default case here.
-    assert(alen % per_case_cell_count == 0, "must be even");
-    return (alen / per_case_cell_count);
-  }
-
-  uint default_count() {
-    return array_uint_at(default_count_off_set);
-  }
-  int default_displacement() {
-    return array_int_at(default_disaplacement_off_set);
-  }
-
-  uint count_at(int index) {
-    return array_uint_at(case_array_start +
-                         index * per_case_cell_count +
-                         relative_count_off_set);
-  }
-  int displacement_at(int index) {
-    return array_int_at(case_array_start +
-                        index * per_case_cell_count +
-                        relative_displacement_off_set);
-  }
-
-  // Code generation support
-  static ByteSize default_count_offset() {
-    return array_element_offset(default_count_off_set);
-  }
-  static ByteSize default_displacement_offset() {
-    return array_element_offset(default_disaplacement_off_set);
-  }
-  static ByteSize case_count_offset(int index) {
-    return case_array_offset() +
-           (per_case_size() * index) +
-           relative_count_offset();
-  }
-  static ByteSize case_array_offset() {
-    return array_element_offset(case_array_start);
-  }
-  static ByteSize per_case_size() {
-    return in_ByteSize(per_case_cell_count) * cell_size;
-  }
-  static ByteSize relative_count_offset() {
-    return in_ByteSize(relative_count_off_set) * cell_size;
-  }
-  static ByteSize relative_displacement_offset() {
-    return in_ByteSize(relative_displacement_off_set) * cell_size;
-  }
-
-  // Specific initialization.
-  void post_initialize(BytecodeStream* stream, methodDataOop mdo);
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-class ArgInfoData : public ArrayData {
-
-public:
-  ArgInfoData(DataLayout* layout) : ArrayData(layout) {
-    assert(layout->tag() == DataLayout::arg_info_data_tag, "wrong type");
-  }
-
-  virtual bool is_ArgInfoData() { return true; }
-
-
-  int number_of_args() {
-    return array_len();
-  }
-
-  uint arg_modified(int arg) {
-    return array_uint_at(arg);
-  }
-
-  void set_arg_modified(int arg, uint val) {
-    array_set_int_at(arg, val);
-  }
-
-#ifndef PRODUCT
-  void print_data_on(outputStream* st);
-#endif
-};
-
-// methodDataOop
-//
-// A methodDataOop holds information which has been collected about
-// a method.  Its layout looks like this:
-//
-// -----------------------------
-// | header                    |
-// | klass                     |
-// -----------------------------
-// | method                    |
-// | size of the methodDataOop |
-// -----------------------------
-// | Data entries...           |
-// |   (variable size)         |
-// |                           |
-// .                           .
-// .                           .
-// .                           .
-// |                           |
-// -----------------------------
-//
-// The data entry area is a heterogeneous array of DataLayouts. Each
-// DataLayout in the array corresponds to a specific bytecode in the
-// method.  The entries in the array are sorted by the corresponding
-// bytecode.  Access to the data is via resource-allocated ProfileData,
-// which point to the underlying blocks of DataLayout structures.
-//
-// During interpretation, if profiling in enabled, the interpreter
-// maintains a method data pointer (mdp), which points at the entry
-// in the array corresponding to the current bci.  In the course of
-// intepretation, when a bytecode is encountered that has profile data
-// associated with it, the entry pointed to by mdp is updated, then the
-// mdp is adjusted to point to the next appropriate DataLayout.  If mdp
-// is NULL to begin with, the interpreter assumes that the current method
-// is not (yet) being profiled.
-//
-// In methodDataOop parlance, "dp" is a "data pointer", the actual address
-// of a DataLayout element.  A "di" is a "data index", the offset in bytes
-// from the base of the data entry array.  A "displacement" is the byte offset
-// in certain ProfileData objects that indicate the amount the mdp must be
-// adjusted in the event of a change in control flow.
-//
-
-class methodDataOopDesc : public oopDesc {
-  friend class VMStructs;
-private:
-  friend class ProfileData;
-
-  // Back pointer to the methodOop
-  methodOop _method;
-
-  // Size of this oop in bytes
-  int _size;
-
-  // Cached hint for bci_to_dp and bci_to_data
-  int _hint_di;
-
-  // Whole-method sticky bits and flags
-public:
-  enum {
-    _trap_hist_limit    = 17,   // decoupled from Deoptimization::Reason_LIMIT
-    _trap_hist_mask     = max_jubyte,
-    _extra_data_count   = 4     // extra DataLayout headers, for trap history
-  }; // Public flag values
-private:
-  uint _nof_decompiles;             // count of all nmethod removals
-  uint _nof_overflow_recompiles;    // recompile count, excluding recomp. bits
-  uint _nof_overflow_traps;         // trap count, excluding _trap_hist
-  union {
-    intptr_t _align;
-    u1 _array[_trap_hist_limit];
-  } _trap_hist;
-
-  // Support for interprocedural escape analysis, from Thomas Kotzmann.
-  intx              _eflags;          // flags on escape information
-  intx              _arg_local;       // bit set of non-escaping arguments
-  intx              _arg_stack;       // bit set of stack-allocatable arguments
-  intx              _arg_returned;    // bit set of returned arguments
-
-  int _creation_mileage;              // method mileage at MDO creation
-
-  // How many invocations has this MDO seen?
-  // These counters are used to determine the exact age of MDO.
-  // We need those because in tiered a method can be concurrently
-  // executed at different levels.
-  InvocationCounter _invocation_counter;
-  // Same for backedges.
-  InvocationCounter _backedge_counter;
-  // Counter values at the time profiling started.
-  int               _invocation_counter_start;
-  int               _backedge_counter_start;
-  // Number of loops and blocks is computed when compiling the first
-  // time with C1. It is used to determine if method is trivial.
-  short             _num_loops;
-  short             _num_blocks;
-  // Highest compile level this method has ever seen.
-  u1                _highest_comp_level;
-  // Same for OSR level
-  u1                _highest_osr_comp_level;
-  // Does this method contain anything worth profiling?
-  bool              _would_profile;
-
-  // Size of _data array in bytes.  (Excludes header and extra_data fields.)
-  int _data_size;
-
-  // Beginning of the data entries
-  intptr_t _data[1];
-
-  // Helper for size computation
-  static int compute_data_size(BytecodeStream* stream);
-  static int bytecode_cell_count(Bytecodes::Code code);
-  enum { no_profile_data = -1, variable_cell_count = -2 };
-
-  // Helper for initialization
-  DataLayout* data_layout_at(int data_index) {
-    assert(data_index % sizeof(intptr_t) == 0, "unaligned");
-    return (DataLayout*) (((address)_data) + data_index);
-  }
-
-  // Initialize an individual data segment.  Returns the size of
-  // the segment in bytes.
-  int initialize_data(BytecodeStream* stream, int data_index);
-
-  // Helper for data_at
-  DataLayout* limit_data_position() {
-    return (DataLayout*)((address)data_base() + _data_size);
-  }
-  bool out_of_bounds(int data_index) {
-    return data_index >= data_size();
-  }
-
-  // Give each of the data entries a chance to perform specific
-  // data initialization.
-  void post_initialize(BytecodeStream* stream);
-
-  // hint accessors
-  int      hint_di() const  { return _hint_di; }
-  void set_hint_di(int di)  {
-    assert(!out_of_bounds(di), "hint_di out of bounds");
-    _hint_di = di;
-  }
-  ProfileData* data_before(int bci) {
-    // avoid SEGV on this edge case
-    if (data_size() == 0)
-      return NULL;
-    int hint = hint_di();
-    if (data_layout_at(hint)->bci() <= bci)
-      return data_at(hint);
-    return first_data();
-  }
-
-  // What is the index of the first data entry?
-  int first_di() { return 0; }
-
-  // Find or create an extra ProfileData:
-  ProfileData* bci_to_extra_data(int bci, bool create_if_missing);
-
-  // return the argument info cell
-  ArgInfoData *arg_info();
-
-public:
-  static int header_size() {
-    return sizeof(methodDataOopDesc)/wordSize;
-  }
-
-  // Compute the size of a methodDataOop before it is created.
-  static int compute_allocation_size_in_bytes(methodHandle method);
-  static int compute_allocation_size_in_words(methodHandle method);
-  static int compute_extra_data_count(int data_size, int empty_bc_count);
-
-  // Determine if a given bytecode can have profile information.
-  static bool bytecode_has_profile(Bytecodes::Code code) {
-    return bytecode_cell_count(code) != no_profile_data;
-  }
-
-  // Perform initialization of a new methodDataOop
-  void initialize(methodHandle method);
-
-  // My size
-  int object_size_in_bytes() { return _size; }
-  int object_size() {
-    return align_object_size(align_size_up(_size, BytesPerWord)/BytesPerWord);
-  }
-
-  int      creation_mileage() const  { return _creation_mileage; }
-  void set_creation_mileage(int x)   { _creation_mileage = x; }
-
-  int invocation_count() {
-    if (invocation_counter()->carry()) {
-      return InvocationCounter::count_limit;
-    }
-    return invocation_counter()->count();
-  }
-  int backedge_count() {
-    if (backedge_counter()->carry()) {
-      return InvocationCounter::count_limit;
-    }
-    return backedge_counter()->count();
-  }
-
-  int invocation_count_start() {
-    if (invocation_counter()->carry()) {
-      return 0;
-    }
-    return _invocation_counter_start;
-  }
-
-  int backedge_count_start() {
-    if (backedge_counter()->carry()) {
-      return 0;
-    }
-    return _backedge_counter_start;
-  }
-
-  int invocation_count_delta() { return invocation_count() - invocation_count_start(); }
-  int backedge_count_delta()   { return backedge_count()   - backedge_count_start();   }
-
-  void reset_start_counters() {
-    _invocation_counter_start = invocation_count();
-    _backedge_counter_start = backedge_count();
-  }
-
-  InvocationCounter* invocation_counter()     { return &_invocation_counter; }
-  InvocationCounter* backedge_counter()       { return &_backedge_counter;   }
-
-  void set_would_profile(bool p)              { _would_profile = p;    }
-  bool would_profile() const                  { return _would_profile; }
-
-  int highest_comp_level()                    { return _highest_comp_level;      }
-  void set_highest_comp_level(int level)      { _highest_comp_level = level;     }
-  int highest_osr_comp_level()                { return _highest_osr_comp_level;  }
-  void set_highest_osr_comp_level(int level)  { _highest_osr_comp_level = level; }
-
-  int num_loops() const                       { return _num_loops;  }
-  void set_num_loops(int n)                   { _num_loops = n;     }
-  int num_blocks() const                      { return _num_blocks; }
-  void set_num_blocks(int n)                  { _num_blocks = n;    }
-
-  bool is_mature() const;  // consult mileage and ProfileMaturityPercentage
-  static int mileage_of(methodOop m);
-
-  // Support for interprocedural escape analysis, from Thomas Kotzmann.
-  enum EscapeFlag {
-    estimated    = 1 << 0,
-    return_local = 1 << 1,
-    return_allocated = 1 << 2,
-    allocated_escapes = 1 << 3,
-    unknown_modified = 1 << 4
-  };
-
-  intx eflags()                                  { return _eflags; }
-  intx arg_local()                               { return _arg_local; }
-  intx arg_stack()                               { return _arg_stack; }
-  intx arg_returned()                            { return _arg_returned; }
-  uint arg_modified(int a)                       { ArgInfoData *aid = arg_info();
-                                                   assert(a >= 0 && a < aid->number_of_args(), "valid argument number");
-                                                   return aid->arg_modified(a); }
-
-  void set_eflags(intx v)                        { _eflags = v; }
-  void set_arg_local(intx v)                     { _arg_local = v; }
-  void set_arg_stack(intx v)                     { _arg_stack = v; }
-  void set_arg_returned(intx v)                  { _arg_returned = v; }
-  void set_arg_modified(int a, uint v)           { ArgInfoData *aid = arg_info();
-                                                   assert(a >= 0 && a < aid->number_of_args(), "valid argument number");
-
-                                                   aid->set_arg_modified(a, v); }
-
-  void clear_escape_info()                       { _eflags = _arg_local = _arg_stack = _arg_returned = 0; }
-
-  // Location and size of data area
-  address data_base() const {
-    return (address) _data;
-  }
-  int data_size() {
-    return _data_size;
-  }
-
-  // Accessors
-  methodOop method() { return _method; }
-
-  // Get the data at an arbitrary (sort of) data index.
-  ProfileData* data_at(int data_index);
-
-  // Walk through the data in order.
-  ProfileData* first_data() { return data_at(first_di()); }
-  ProfileData* next_data(ProfileData* current);
-  bool is_valid(ProfileData* current) { return current != NULL; }
-
-  // Convert a dp (data pointer) to a di (data index).
-  int dp_to_di(address dp) {
-    return dp - ((address)_data);
-  }
-
-  address di_to_dp(int di) {
-    return (address)data_layout_at(di);
-  }
-
-  // bci to di/dp conversion.
-  address bci_to_dp(int bci);
-  int bci_to_di(int bci) {
-    return dp_to_di(bci_to_dp(bci));
-  }
-
-  // Get the data at an arbitrary bci, or NULL if there is none.
-  ProfileData* bci_to_data(int bci);
-
-  // Same, but try to create an extra_data record if one is needed:
-  ProfileData* allocate_bci_to_data(int bci) {
-    ProfileData* data = bci_to_data(bci);
-    return (data != NULL) ? data : bci_to_extra_data(bci, true);
-  }
-
-  // Add a handful of extra data records, for trap tracking.
-  DataLayout* extra_data_base() { return limit_data_position(); }
-  DataLayout* extra_data_limit() { return (DataLayout*)((address)this + object_size_in_bytes()); }
-  int extra_data_size() { return (address)extra_data_limit()
-                               - (address)extra_data_base(); }
-  static DataLayout* next_extra(DataLayout* dp) { return (DataLayout*)((address)dp + in_bytes(DataLayout::cell_offset(0))); }
-
-  // Return (uint)-1 for overflow.
-  uint trap_count(int reason) const {
-    assert((uint)reason < _trap_hist_limit, "oob");
-    return (int)((_trap_hist._array[reason]+1) & _trap_hist_mask) - 1;
-  }
-  // For loops:
-  static uint trap_reason_limit() { return _trap_hist_limit; }
-  static uint trap_count_limit()  { return _trap_hist_mask; }
-  uint inc_trap_count(int reason) {
-    // Count another trap, anywhere in this method.
-    assert(reason >= 0, "must be single trap");
-    if ((uint)reason < _trap_hist_limit) {
-      uint cnt1 = 1 + _trap_hist._array[reason];
-      if ((cnt1 & _trap_hist_mask) != 0) {  // if no counter overflow...
-        _trap_hist._array[reason] = cnt1;
-        return cnt1;
-      } else {
-        return _trap_hist_mask + (++_nof_overflow_traps);
-      }
-    } else {
-      // Could not represent the count in the histogram.
-      return (++_nof_overflow_traps);
-    }
-  }
-
-  uint overflow_trap_count() const {
-    return _nof_overflow_traps;
-  }
-  uint overflow_recompile_count() const {
-    return _nof_overflow_recompiles;
-  }
-  void inc_overflow_recompile_count() {
-    _nof_overflow_recompiles += 1;
-  }
-  uint decompile_count() const {
-    return _nof_decompiles;
-  }
-  void inc_decompile_count() {
-    _nof_decompiles += 1;
-    if (decompile_count() > (uint)PerMethodRecompilationCutoff) {
-      method()->set_not_compilable(CompLevel_full_optimization);
-    }
-  }
-
-  // Support for code generation
-  static ByteSize data_offset() {
-    return byte_offset_of(methodDataOopDesc, _data[0]);
-  }
-
-  static ByteSize invocation_counter_offset() {
-    return byte_offset_of(methodDataOopDesc, _invocation_counter);
-  }
-  static ByteSize backedge_counter_offset() {
-    return byte_offset_of(methodDataOopDesc, _backedge_counter);
-  }
-
-  // GC support
-  oop* adr_method() const { return (oop*)&_method; }
-  bool object_is_parsable() const { return _size != 0; }
-  void set_object_is_parsable(int object_size_in_bytes) { _size = object_size_in_bytes; }
-
-#ifndef PRODUCT
-  // printing support for method data
-  void print_data_on(outputStream* st);
-#endif
-
-  // verification
-  void verify_data_on(outputStream* st);
-};
-
-#endif // SHARE_VM_OOPS_METHODDATAOOP_HPP
--- a/src/share/vm/oops/methodKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,356 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "interpreter/interpreter.hpp"
-#include "memory/gcLocker.hpp"
-#include "memory/resourceArea.hpp"
-#include "memory/universe.inline.hpp"
-#include "oops/constMethodKlass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#include "oops/symbol.hpp"
-#include "runtime/handles.inline.hpp"
-
-klassOop methodKlass::create_klass(TRAPS) {
-  methodKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  // Make sure size calculation is right
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-
-int methodKlass::oop_size(oop obj) const {
-  assert(obj->is_method(), "must be method oop");
-  return methodOop(obj)->object_size();
-}
-
-
-bool methodKlass::oop_is_parsable(oop obj) const {
-  assert(obj->is_method(), "must be method oop");
-  return methodOop(obj)->object_is_parsable();
-}
-
-
-methodOop methodKlass::allocate(constMethodHandle xconst,
-                                AccessFlags access_flags, TRAPS) {
-  int size = methodOopDesc::object_size(access_flags.is_native());
-  KlassHandle h_k(THREAD, as_klassOop());
-  assert(xconst()->is_parsable(), "possible publication protocol violation");
-  methodOop m = (methodOop)CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL);
-  assert(!m->is_parsable(), "not expecting parsability yet.");
-
-  No_Safepoint_Verifier no_safepoint;  // until m becomes parsable below
-  m->set_constMethod(xconst());
-  m->set_access_flags(access_flags);
-  m->set_method_size(size);
-  m->set_name_index(0);
-  m->set_signature_index(0);
-#ifdef CC_INTERP
-  m->set_result_index(T_VOID);
-#endif
-  m->set_constants(NULL);
-  m->set_max_stack(0);
-  m->set_max_locals(0);
-  m->set_intrinsic_id(vmIntrinsics::_none);
-  m->set_jfr_towrite(false);
-  m->set_method_data(NULL);
-  m->set_interpreter_throwout_count(0);
-  m->set_vtable_index(methodOopDesc::garbage_vtable_index);
-
-  // Fix and bury in methodOop
-  m->set_interpreter_entry(NULL); // sets i2i entry and from_int
-  m->set_adapter_entry(NULL);
-  m->clear_code(); // from_c/from_i get set to c2i/i2i
-
-  if (access_flags.is_native()) {
-    m->clear_native_function();
-    m->set_signature_handler(NULL);
-  }
-
-  NOT_PRODUCT(m->set_compiled_invocation_count(0);)
-  m->set_interpreter_invocation_count(0);
-  m->invocation_counter()->init();
-  m->backedge_counter()->init();
-  m->clear_number_of_breakpoints();
-
-#ifdef TIERED
-  m->set_rate(0);
-  m->set_prev_event_count(0);
-  m->set_prev_time(0);
-#endif
-
-  assert(m->is_parsable(), "must be parsable here.");
-  assert(m->size() == size, "wrong size for object");
-  return m;
-}
-
-
-void methodKlass::oop_follow_contents(oop obj) {
-  assert (obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::methodKlassObj never moves.
-  MarkSweep::mark_and_push(m->adr_constMethod());
-  if (m->method_data() != NULL) {
-    MarkSweep::mark_and_push(m->adr_method_data());
-  }
-}
-
-#ifndef SERIALGC
-void methodKlass::oop_follow_contents(ParCompactionManager* cm,
-                                      oop obj) {
-  assert (obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::methodKlassObj never moves.
-  PSParallelCompact::mark_and_push(cm, m->adr_constMethod());
-#ifdef COMPILER2
-  if (m->method_data() != NULL) {
-    PSParallelCompact::mark_and_push(cm, m->adr_method_data());
-  }
-#endif // COMPILER2
-}
-#endif // SERIALGC
-
-int methodKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert (obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::methodKlassObj never moves
-  blk->do_oop(m->adr_constMethod());
-  if (m->method_data() != NULL) {
-    blk->do_oop(m->adr_method_data());
-  }
-  return size;
-}
-
-
-int methodKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert (obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::methodKlassObj never moves.
-  oop* adr;
-  adr = m->adr_constMethod();
-  if (mr.contains(adr)) blk->do_oop(adr);
-  if (m->method_data() != NULL) {
-    adr = m->adr_method_data();
-    if (mr.contains(adr)) blk->do_oop(adr);
-  }
-  return size;
-}
-
-
-int methodKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_method(), "should be method");
-  methodOop m = methodOop(obj);
-  // Get size before changing pointers.
-  // Don't call size() or oop_size() since that is a virtual call.
-  int size = m->object_size();
-  // Performance tweak: We skip iterating over the klass pointer since we
-  // know that Universe::methodKlassObj never moves.
-  MarkSweep::adjust_pointer(m->adr_constMethod());
-  if (m->method_data() != NULL) {
-    MarkSweep::adjust_pointer(m->adr_method_data());
-  }
-  return size;
-}
-
-#ifndef SERIALGC
-void methodKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->is_method(), "should be method");
-}
-
-int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_method(), "should be method");
-  methodOop m = methodOop(obj);
-  PSParallelCompact::adjust_pointer(m->adr_constMethod());
-#ifdef COMPILER2
-  if (m->method_data() != NULL) {
-    PSParallelCompact::adjust_pointer(m->adr_method_data());
-  }
-#endif // COMPILER2
-  return m->object_size();
-}
-#endif // SERIALGC
-
-#ifndef PRODUCT
-
-// Printing
-
-void methodKlass::oop_print_on(oop obj, outputStream* st) {
-  ResourceMark rm;
-  assert(obj->is_method(), "must be method");
-  Klass::oop_print_on(obj, st);
-  methodOop m = methodOop(obj);
-  // get the effect of PrintOopAddress, always, for methods:
-  st->print_cr(" - this oop:          "INTPTR_FORMAT, (intptr_t)m);
-  st->print   (" - method holder:     ");    m->method_holder()->print_value_on(st); st->cr();
-  st->print   (" - constants:         "INTPTR_FORMAT" ", (address)m->constants());
-  m->constants()->print_value_on(st); st->cr();
-  st->print   (" - access:            0x%x  ", m->access_flags().as_int()); m->access_flags().print_on(st); st->cr();
-  st->print   (" - name:              ");    m->name()->print_value_on(st); st->cr();
-  st->print   (" - signature:         ");    m->signature()->print_value_on(st); st->cr();
-  st->print_cr(" - max stack:         %d",   m->max_stack());
-  st->print_cr(" - max locals:        %d",   m->max_locals());
-  st->print_cr(" - size of params:    %d",   m->size_of_parameters());
-  st->print_cr(" - method size:       %d",   m->method_size());
-  if (m->intrinsic_id() != vmIntrinsics::_none)
-    st->print_cr(" - intrinsic id:      %d %s", m->intrinsic_id(), vmIntrinsics::name_at(m->intrinsic_id()));
-  if (m->highest_comp_level() != CompLevel_none)
-    st->print_cr(" - highest level:     %d", m->highest_comp_level());
-  st->print_cr(" - vtable index:      %d",   m->_vtable_index);
-  st->print_cr(" - i2i entry:         " INTPTR_FORMAT, m->interpreter_entry());
-  st->print(   " - adapters:          ");
-  if (m->adapter() == NULL)
-    st->print_cr(INTPTR_FORMAT, m->adapter());
-  else
-    m->adapter()->print_adapter_on(st);
-  st->print_cr(" - compiled entry     " INTPTR_FORMAT, m->from_compiled_entry());
-  st->print_cr(" - code size:         %d",   m->code_size());
-  if (m->code_size() != 0) {
-    st->print_cr(" - code start:        " INTPTR_FORMAT, m->code_base());
-    st->print_cr(" - code end (excl):   " INTPTR_FORMAT, m->code_base() + m->code_size());
-  }
-  if (m->method_data() != NULL) {
-    st->print_cr(" - method data:       " INTPTR_FORMAT, (address)m->method_data());
-  }
-  st->print_cr(" - checked ex length: %d",   m->checked_exceptions_length());
-  if (m->checked_exceptions_length() > 0) {
-    CheckedExceptionElement* table = m->checked_exceptions_start();
-    st->print_cr(" - checked ex start:  " INTPTR_FORMAT, table);
-    if (Verbose) {
-      for (int i = 0; i < m->checked_exceptions_length(); i++) {
-        st->print_cr("   - throws %s", m->constants()->printable_name_at(table[i].class_cp_index));
-      }
-    }
-  }
-  if (m->has_linenumber_table()) {
-    u_char* table = m->compressed_linenumber_table();
-    st->print_cr(" - linenumber start:  " INTPTR_FORMAT, table);
-    if (Verbose) {
-      CompressedLineNumberReadStream stream(table);
-      while (stream.read_pair()) {
-        st->print_cr("   - line %d: %d", stream.line(), stream.bci());
-      }
-    }
-  }
-  st->print_cr(" - localvar length:   %d",   m->localvariable_table_length());
-  if (m->localvariable_table_length() > 0) {
-    LocalVariableTableElement* table = m->localvariable_table_start();
-    st->print_cr(" - localvar start:    " INTPTR_FORMAT, table);
-    if (Verbose) {
-      for (int i = 0; i < m->localvariable_table_length(); i++) {
-        int bci = table[i].start_bci;
-        int len = table[i].length;
-        const char* name = m->constants()->printable_name_at(table[i].name_cp_index);
-        const char* desc = m->constants()->printable_name_at(table[i].descriptor_cp_index);
-        int slot = table[i].slot;
-        st->print_cr("   - %s %s bci=%d len=%d slot=%d", desc, name, bci, len, slot);
-      }
-    }
-  }
-  if (m->code() != NULL) {
-    st->print   (" - compiled code: ");
-    m->code()->print_value_on(st);
-  }
-  if (m->is_native()) {
-    st->print_cr(" - native function:   " INTPTR_FORMAT, m->native_function());
-    st->print_cr(" - signature handler: " INTPTR_FORMAT, m->signature_handler());
-  }
-}
-
-#endif //PRODUCT
-
-void methodKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_method(), "must be method");
-  Klass::oop_print_value_on(obj, st);
-  methodOop m = methodOop(obj);
-  st->print(" ");
-  m->name()->print_value_on(st);
-  st->print(" ");
-  m->signature()->print_value_on(st);
-  st->print(" in ");
-  m->method_holder()->print_value_on(st);
-  if (WizardMode) st->print("[%d,%d]", m->size_of_parameters(), m->max_locals());
-  if (WizardMode && m->code() != NULL) st->print(" ((nmethod*)%p)", m->code());
-}
-
-const char* methodKlass::internal_name() const {
-  return "{method}";
-}
-
-
-// Verification
-
-void methodKlass::oop_verify_on(oop obj, outputStream* st) {
-  Klass::oop_verify_on(obj, st);
-  guarantee(obj->is_method(), "object must be method");
-  if (!obj->partially_loaded()) {
-    methodOop m = methodOop(obj);
-    guarantee(m->is_perm(),  "should be in permspace");
-    guarantee(m->constMethod()->is_constMethod(), "should be constMethodOop");
-    guarantee(m->constMethod()->is_perm(), "should be in permspace");
-    methodDataOop method_data = m->method_data();
-    guarantee(method_data == NULL ||
-              method_data->is_perm(), "should be in permspace");
-    guarantee(method_data == NULL ||
-              method_data->is_methodData(), "should be method data");
-  }
-}
-
-bool methodKlass::oop_partially_loaded(oop obj) const {
-  assert(obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  constMethodOop xconst = m->constMethod();
-  assert(xconst != NULL, "const method must be set");
-  constMethodKlass* ck = constMethodKlass::cast(xconst->klass());
-  return ck->oop_partially_loaded(xconst);
-}
-
-
-void methodKlass::oop_set_partially_loaded(oop obj) {
-  assert(obj->is_method(), "object must be method");
-  methodOop m = methodOop(obj);
-  constMethodOop xconst = m->constMethod();
-  assert(xconst != NULL, "const method must be set");
-  constMethodKlass* ck = constMethodKlass::cast(xconst->klass());
-  ck->oop_set_partially_loaded(xconst);
-}
--- a/src/share/vm/oops/methodKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_METHODKLASS_HPP
-#define SHARE_VM_OOPS_METHODKLASS_HPP
-
-#include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodOop.hpp"
-
-// a methodKlass is the klass of a methodOop
-
-class methodKlass : public Klass {
-  friend class VMStructs;
- private:
-  juint    _alloc_size;        // allocation profiling support
- public:
-  // Testing
-  bool oop_is_method() const { return true; }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(methodKlass);
-  methodOop allocate(constMethodHandle xconst, AccessFlags access_flags,
-                     TRAPS);
-  static klassOop create_klass(TRAPS);
-
-  // Sizing
-  int oop_size(oop obj) const;
-  int klass_oop_size() const     { return object_size(); }
-
-  // Casting from klassOop
-  static methodKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_method(), "cast to methodKlass");
-    return (methodKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()       { return oopDesc::header_size() + sizeof(methodKlass)/HeapWordSize; }
-  int object_size() const        { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int  oop_adjust_pointers(oop obj);
-  bool oop_is_parsable(oop obj) const;
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Allocation profiling support
-  juint alloc_size() const              { return _alloc_size; }
-  void set_alloc_size(juint n)          { _alloc_size = n; }
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
- public:
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-#ifndef PRODUCT
-  void oop_print_on      (oop obj, outputStream* st);
-#endif //PRODUCT
-
-  // Verify operations
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-  bool oop_partially_loaded(oop obj) const;
-  void oop_set_partially_loaded(oop obj);
-};
-
-#endif // SHARE_VM_OOPS_METHODKLASS_HPP
--- a/src/share/vm/oops/methodOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1562 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "code/debugInfoRec.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "interpreter/bytecodeStream.hpp"
-#include "interpreter/bytecodeTracer.hpp"
-#include "interpreter/bytecodes.hpp"
-#include "interpreter/interpreter.hpp"
-#include "interpreter/oopMapCache.hpp"
-#include "memory/gcLocker.hpp"
-#include "memory/generation.hpp"
-#include "memory/oopFactory.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/symbol.hpp"
-#include "prims/jvmtiExport.hpp"
-#include "prims/methodHandles.hpp"
-#include "prims/nativeLookup.hpp"
-#include "runtime/arguments.hpp"
-#include "runtime/compilationPolicy.hpp"
-#include "runtime/frame.inline.hpp"
-#include "runtime/handles.inline.hpp"
-#include "runtime/relocator.hpp"
-#include "runtime/sharedRuntime.hpp"
-#include "runtime/signature.hpp"
-#include "utilities/quickSort.hpp"
-#include "utilities/xmlstream.hpp"
-
-
-// Implementation of methodOopDesc
-
-address methodOopDesc::get_i2c_entry() {
-  assert(_adapter != NULL, "must have");
-  return _adapter->get_i2c_entry();
-}
-
-address methodOopDesc::get_c2i_entry() {
-  assert(_adapter != NULL, "must have");
-  return _adapter->get_c2i_entry();
-}
-
-address methodOopDesc::get_c2i_unverified_entry() {
-  assert(_adapter != NULL, "must have");
-  return _adapter->get_c2i_unverified_entry();
-}
-
-char* methodOopDesc::name_and_sig_as_C_string() const {
-  return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature());
-}
-
-char* methodOopDesc::name_and_sig_as_C_string(char* buf, int size) const {
-  return name_and_sig_as_C_string(Klass::cast(constants()->pool_holder()), name(), signature(), buf, size);
-}
-
-char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature) {
-  const char* klass_name = klass->external_name();
-  int klass_name_len  = (int)strlen(klass_name);
-  int method_name_len = method_name->utf8_length();
-  int len             = klass_name_len + 1 + method_name_len + signature->utf8_length();
-  char* dest          = NEW_RESOURCE_ARRAY(char, len + 1);
-  strcpy(dest, klass_name);
-  dest[klass_name_len] = '.';
-  strcpy(&dest[klass_name_len + 1], method_name->as_C_string());
-  strcpy(&dest[klass_name_len + 1 + method_name_len], signature->as_C_string());
-  dest[len] = 0;
-  return dest;
-}
-
-char* methodOopDesc::name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size) {
-  Symbol* klass_name = klass->name();
-  klass_name->as_klass_external_name(buf, size);
-  int len = (int)strlen(buf);
-
-  if (len < size - 1) {
-    buf[len++] = '.';
-
-    method_name->as_C_string(&(buf[len]), size - len);
-    len = (int)strlen(buf);
-
-    signature->as_C_string(&(buf[len]), size - len);
-  }
-
-  return buf;
-}
-
-int  methodOopDesc::fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS) {
-  // exception table holds quadruple entries of the form (beg_bci, end_bci, handler_bci, klass_index)
-  // access exception table
-  ExceptionTable table(this);
-  int length = table.length();
-  // iterate through all entries sequentially
-  constantPoolHandle pool(THREAD, constants());
-  for (int i = 0; i < length; i ++) {
-    //reacquire the table in case a GC happened
-    ExceptionTable table(this);
-    int beg_bci = table.start_pc(i);
-    int end_bci = table.end_pc(i);
-    assert(beg_bci <= end_bci, "inconsistent exception table");
-    if (beg_bci <= throw_bci && throw_bci < end_bci) {
-      // exception handler bci range covers throw_bci => investigate further
-      int handler_bci = table.handler_pc(i);
-      int klass_index = table.catch_type_index(i);
-      if (klass_index == 0) {
-        return handler_bci;
-      } else if (ex_klass.is_null()) {
-        return handler_bci;
-      } else {
-        // we know the exception class => get the constraint class
-        // this may require loading of the constraint class; if verification
-        // fails or some other exception occurs, return handler_bci
-        klassOop k = pool->klass_at(klass_index, CHECK_(handler_bci));
-        KlassHandle klass = KlassHandle(THREAD, k);
-        assert(klass.not_null(), "klass not loaded");
-        if (ex_klass->is_subtype_of(klass())) {
-          return handler_bci;
-        }
-      }
-    }
-  }
-
-  return -1;
-}
-
-void methodOopDesc::mask_for(int bci, InterpreterOopMap* mask) {
-
-  Thread* myThread    = Thread::current();
-  methodHandle h_this(myThread, this);
-#ifdef ASSERT
-  bool has_capability = myThread->is_VM_thread() ||
-                        myThread->is_ConcurrentGC_thread() ||
-                        myThread->is_GC_task_thread();
-
-  if (!has_capability) {
-    if (!VerifyStack && !VerifyLastFrame) {
-      // verify stack calls this outside VM thread
-      warning("oopmap should only be accessed by the "
-              "VM, GC task or CMS threads (or during debugging)");
-      InterpreterOopMap local_mask;
-      instanceKlass::cast(method_holder())->mask_for(h_this, bci, &local_mask);
-      local_mask.print();
-    }
-  }
-#endif
-  instanceKlass::cast(method_holder())->mask_for(h_this, bci, mask);
-  return;
-}
-
-
-int methodOopDesc::bci_from(address bcp) const {
-  assert(is_native() && bcp == code_base() || contains(bcp) || is_error_reported(),
-         err_msg("bcp doesn't belong to this method: bcp: " INTPTR_FORMAT ", method: %s", bcp, name_and_sig_as_C_string()));
-  return bcp - code_base();
-}
-
-
-// Return (int)bcx if it appears to be a valid BCI.
-// Return bci_from((address)bcx) if it appears to be a valid BCP.
-// Return -1 otherwise.
-// Used by profiling code, when invalid data is a possibility.
-// The caller is responsible for validating the methodOop itself.
-int methodOopDesc::validate_bci_from_bcx(intptr_t bcx) const {
-  // keep bci as -1 if not a valid bci
-  int bci = -1;
-  if (bcx == 0 || (address)bcx == code_base()) {
-    // code_size() may return 0 and we allow 0 here
-    // the method may be native
-    bci = 0;
-  } else if (frame::is_bci(bcx)) {
-    if (bcx < code_size()) {
-      bci = (int)bcx;
-    }
-  } else if (contains((address)bcx)) {
-    bci = (address)bcx - code_base();
-  }
-  // Assert that if we have dodged any asserts, bci is negative.
-  assert(bci == -1 || bci == bci_from(bcp_from(bci)), "sane bci if >=0");
-  return bci;
-}
-
-address methodOopDesc::bcp_from(int bci) const {
-  assert((is_native() && bci == 0)  || (!is_native() && 0 <= bci && bci < code_size()), "illegal bci");
-  address bcp = code_base() + bci;
-  assert(is_native() && bcp == code_base() || contains(bcp), "bcp doesn't belong to this method");
-  return bcp;
-}
-
-
-int methodOopDesc::object_size(bool is_native) {
-  // If native, then include pointers for native_function and signature_handler
-  int extra_bytes = (is_native) ? 2*sizeof(address*) : 0;
-  int extra_words = align_size_up(extra_bytes, BytesPerWord) / BytesPerWord;
-  return align_object_size(header_size() + extra_words);
-}
-
-
-Symbol* methodOopDesc::klass_name() const {
-  klassOop k = method_holder();
-  assert(k->is_klass(), "must be klass");
-  instanceKlass* ik = (instanceKlass*) k->klass_part();
-  return ik->name();
-}
-
-
-void methodOopDesc::set_interpreter_kind() {
-  int kind = Interpreter::method_kind(methodOop(this));
-  assert(kind != Interpreter::invalid,
-         "interpreter entry must be valid");
-  set_interpreter_kind(kind);
-}
-
-
-// Attempt to return method oop to original state.  Clear any pointers
-// (to objects outside the shared spaces).  We won't be able to predict
-// where they should point in a new JVM.  Further initialize some
-// entries now in order allow them to be write protected later.
-
-void methodOopDesc::remove_unshareable_info() {
-  unlink_method();
-  set_interpreter_kind();
-}
-
-
-bool methodOopDesc::was_executed_more_than(int n) {
-  // Invocation counter is reset when the methodOop is compiled.
-  // If the method has compiled code we therefore assume it has
-  // be excuted more than n times.
-  if (is_accessor() || is_empty_method() || (code() != NULL)) {
-    // interpreter doesn't bump invocation counter of trivial methods
-    // compiler does not bump invocation counter of compiled methods
-    return true;
-  }
-  else if (_invocation_counter.carry() || (method_data() != NULL && method_data()->invocation_counter()->carry())) {
-    // The carry bit is set when the counter overflows and causes
-    // a compilation to occur.  We don't know how many times
-    // the counter has been reset, so we simply assume it has
-    // been executed more than n times.
-    return true;
-  } else {
-    return invocation_count() > n;
-  }
-}
-
-#ifndef PRODUCT
-void methodOopDesc::print_invocation_count() {
-  if (is_static()) tty->print("static ");
-  if (is_final()) tty->print("final ");
-  if (is_synchronized()) tty->print("synchronized ");
-  if (is_native()) tty->print("native ");
-  method_holder()->klass_part()->name()->print_symbol_on(tty);
-  tty->print(".");
-  name()->print_symbol_on(tty);
-  signature()->print_symbol_on(tty);
-
-  if (WizardMode) {
-    // dump the size of the byte codes
-    tty->print(" {%d}", code_size());
-  }
-  tty->cr();
-
-  tty->print_cr ("  interpreter_invocation_count: %8d ", interpreter_invocation_count());
-  tty->print_cr ("  invocation_counter:           %8d ", invocation_count());
-  tty->print_cr ("  backedge_counter:             %8d ", backedge_count());
-  if (CountCompiledCalls) {
-    tty->print_cr ("  compiled_invocation_count: %8d ", compiled_invocation_count());
-  }
-
-}
-#endif
-
-// Build a methodDataOop object to hold information about this method
-// collected in the interpreter.
-void methodOopDesc::build_interpreter_method_data(methodHandle method, TRAPS) {
-  // Do not profile method if current thread holds the pending list lock,
-  // which avoids deadlock for acquiring the MethodData_lock.
-  if (instanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) {
-    return;
-  }
-
-  // Grab a lock here to prevent multiple
-  // methodDataOops from being created.
-  MutexLocker ml(MethodData_lock, THREAD);
-  if (method->method_data() == NULL) {
-    methodDataOop method_data = oopFactory::new_methodData(method, CHECK);
-    method->set_method_data(method_data);
-    if (PrintMethodData && (Verbose || WizardMode)) {
-      ResourceMark rm(THREAD);
-      tty->print("build_interpreter_method_data for ");
-      method->print_name(tty);
-      tty->cr();
-      // At the end of the run, the MDO, full of data, will be dumped.
-    }
-  }
-}
-
-void methodOopDesc::cleanup_inline_caches() {
-  // The current system doesn't use inline caches in the interpreter
-  // => nothing to do (keep this method around for future use)
-}
-
-
-int methodOopDesc::extra_stack_words() {
-  // not an inline function, to avoid a header dependency on Interpreter
-  return extra_stack_entries() * Interpreter::stackElementSize;
-}
-
-
-void methodOopDesc::compute_size_of_parameters(Thread *thread) {
-  ArgumentSizeComputer asc(signature());
-  set_size_of_parameters(asc.size() + (is_static() ? 0 : 1));
-}
-
-#ifdef CC_INTERP
-void methodOopDesc::set_result_index(BasicType type)          {
-  _result_index = Interpreter::BasicType_as_index(type);
-}
-#endif
-
-BasicType methodOopDesc::result_type() const {
-  ResultTypeFinder rtf(signature());
-  return rtf.type();
-}
-
-
-bool methodOopDesc::is_empty_method() const {
-  return  code_size() == 1
-      && *code_base() == Bytecodes::_return;
-}
-
-
-bool methodOopDesc::is_vanilla_constructor() const {
-  // Returns true if this method is a vanilla constructor, i.e. an "<init>" "()V" method
-  // which only calls the superclass vanilla constructor and possibly does stores of
-  // zero constants to local fields:
-  //
-  //   aload_0
-  //   invokespecial
-  //   indexbyte1
-  //   indexbyte2
-  //
-  // followed by an (optional) sequence of:
-  //
-  //   aload_0
-  //   aconst_null / iconst_0 / fconst_0 / dconst_0
-  //   putfield
-  //   indexbyte1
-  //   indexbyte2
-  //
-  // followed by:
-  //
-  //   return
-
-  assert(name() == vmSymbols::object_initializer_name(),    "Should only be called for default constructors");
-  assert(signature() == vmSymbols::void_method_signature(), "Should only be called for default constructors");
-  int size = code_size();
-  // Check if size match
-  if (size == 0 || size % 5 != 0) return false;
-  address cb = code_base();
-  int last = size - 1;
-  if (cb[0] != Bytecodes::_aload_0 || cb[1] != Bytecodes::_invokespecial || cb[last] != Bytecodes::_return) {
-    // Does not call superclass default constructor
-    return false;
-  }
-  // Check optional sequence
-  for (int i = 4; i < last; i += 5) {
-    if (cb[i] != Bytecodes::_aload_0) return false;
-    if (!Bytecodes::is_zero_const(Bytecodes::cast(cb[i+1]))) return false;
-    if (cb[i+2] != Bytecodes::_putfield) return false;
-  }
-  return true;
-}
-
-
-bool methodOopDesc::compute_has_loops_flag() {
-  BytecodeStream bcs(methodOop(this));
-  Bytecodes::Code bc;
-
-  while ((bc = bcs.next()) >= 0) {
-    switch( bc ) {
-      case Bytecodes::_ifeq:
-      case Bytecodes::_ifnull:
-      case Bytecodes::_iflt:
-      case Bytecodes::_ifle:
-      case Bytecodes::_ifne:
-      case Bytecodes::_ifnonnull:
-      case Bytecodes::_ifgt:
-      case Bytecodes::_ifge:
-      case Bytecodes::_if_icmpeq:
-      case Bytecodes::_if_icmpne:
-      case Bytecodes::_if_icmplt:
-      case Bytecodes::_if_icmpgt:
-      case Bytecodes::_if_icmple:
-      case Bytecodes::_if_icmpge:
-      case Bytecodes::_if_acmpeq:
-      case Bytecodes::_if_acmpne:
-      case Bytecodes::_goto:
-      case Bytecodes::_jsr:
-        if( bcs.dest() < bcs.next_bci() ) _access_flags.set_has_loops();
-        break;
-
-      case Bytecodes::_goto_w:
-      case Bytecodes::_jsr_w:
-        if( bcs.dest_w() < bcs.next_bci() ) _access_flags.set_has_loops();
-        break;
-    }
-  }
-  _access_flags.set_loops_flag_init();
-  return _access_flags.has_loops();
-}
-
-
-bool methodOopDesc::is_final_method() const {
-  // %%% Should return true for private methods also,
-  // since there is no way to override them.
-  return is_final() || Klass::cast(method_holder())->is_final();
-}
-
-
-bool methodOopDesc::is_strict_method() const {
-  return is_strict();
-}
-
-
-bool methodOopDesc::can_be_statically_bound() const {
-  if (is_final_method())  return true;
-  return vtable_index() == nonvirtual_vtable_index;
-}
-
-
-bool methodOopDesc::is_accessor() const {
-  if (code_size() != 5) return false;
-  if (size_of_parameters() != 1) return false;
-  if (java_code_at(0) != Bytecodes::_aload_0 ) return false;
-  if (java_code_at(1) != Bytecodes::_getfield) return false;
-  if (java_code_at(4) != Bytecodes::_areturn &&
-      java_code_at(4) != Bytecodes::_ireturn ) return false;
-  return true;
-}
-
-
-bool methodOopDesc::is_initializer() const {
-  return name() == vmSymbols::object_initializer_name() || is_static_initializer();
-}
-
-bool methodOopDesc::has_valid_initializer_flags() const {
-  return (is_static() ||
-          instanceKlass::cast(method_holder())->major_version() < 51);
-}
-
-bool methodOopDesc::is_static_initializer() const {
-  // For classfiles version 51 or greater, ensure that the clinit method is
-  // static.  Non-static methods with the name "<clinit>" are not static
-  // initializers. (older classfiles exempted for backward compatibility)
-  return name() == vmSymbols::class_initializer_name() &&
-         has_valid_initializer_flags();
-}
-
-
-objArrayHandle methodOopDesc::resolved_checked_exceptions_impl(methodOop this_oop, TRAPS) {
-  int length = this_oop->checked_exceptions_length();
-  if (length == 0) {  // common case
-    return objArrayHandle(THREAD, Universe::the_empty_class_klass_array());
-  } else {
-    methodHandle h_this(THREAD, this_oop);
-    objArrayOop m_oop = oopFactory::new_objArray(SystemDictionary::Class_klass(), length, CHECK_(objArrayHandle()));
-    objArrayHandle mirrors (THREAD, m_oop);
-    for (int i = 0; i < length; i++) {
-      CheckedExceptionElement* table = h_this->checked_exceptions_start(); // recompute on each iteration, not gc safe
-      klassOop k = h_this->constants()->klass_at(table[i].class_cp_index, CHECK_(objArrayHandle()));
-      assert(Klass::cast(k)->is_subclass_of(SystemDictionary::Throwable_klass()), "invalid exception class");
-      mirrors->obj_at_put(i, Klass::cast(k)->java_mirror());
-    }
-    return mirrors;
-  }
-};
-
-
-int methodOopDesc::line_number_from_bci(int bci) const {
-  if (bci == SynchronizationEntryBCI) bci = 0;
-  assert(bci == 0 || 0 <= bci && bci < code_size(), "illegal bci");
-  int best_bci  =  0;
-  int best_line = -1;
-
-  if (has_linenumber_table()) {
-    // The line numbers are a short array of 2-tuples [start_pc, line_number].
-    // Not necessarily sorted and not necessarily one-to-one.
-    CompressedLineNumberReadStream stream(compressed_linenumber_table());
-    while (stream.read_pair()) {
-      if (stream.bci() == bci) {
-        // perfect match
-        return stream.line();
-      } else {
-        // update best_bci/line
-        if (stream.bci() < bci && stream.bci() >= best_bci) {
-          best_bci  = stream.bci();
-          best_line = stream.line();
-        }
-      }
-    }
-  }
-  return best_line;
-}
-
-
-bool methodOopDesc::is_klass_loaded_by_klass_index(int klass_index) const {
-  if( constants()->tag_at(klass_index).is_unresolved_klass() ) {
-    Thread *thread = Thread::current();
-    Symbol* klass_name = constants()->klass_name_at(klass_index);
-    Handle loader(thread, instanceKlass::cast(method_holder())->class_loader());
-    Handle prot  (thread, Klass::cast(method_holder())->protection_domain());
-    return SystemDictionary::find(klass_name, loader, prot, thread) != NULL;
-  } else {
-    return true;
-  }
-}
-
-
-bool methodOopDesc::is_klass_loaded(int refinfo_index, bool must_be_resolved) const {
-  int klass_index = constants()->klass_ref_index_at(refinfo_index);
-  if (must_be_resolved) {
-    // Make sure klass is resolved in constantpool.
-    if (constants()->tag_at(klass_index).is_unresolved_klass()) return false;
-  }
-  return is_klass_loaded_by_klass_index(klass_index);
-}
-
-
-void methodOopDesc::set_native_function(address function, bool post_event_flag) {
-  assert(function != NULL, "use clear_native_function to unregister natives");
-  assert(!is_method_handle_intrinsic() || function == SharedRuntime::native_method_throw_unsatisfied_link_error_entry(), "");
-  address* native_function = native_function_addr();
-
-  // We can see racers trying to place the same native function into place. Once
-  // is plenty.
-  address current = *native_function;
-  if (current == function) return;
-  if (post_event_flag && JvmtiExport::should_post_native_method_bind() &&
-      function != NULL) {
-    // native_method_throw_unsatisfied_link_error_entry() should only
-    // be passed when post_event_flag is false.
-    assert(function !=
-      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
-      "post_event_flag mis-match");
-
-    // post the bind event, and possible change the bind function
-    JvmtiExport::post_native_method_bind(this, &function);
-  }
-  *native_function = function;
-  // This function can be called more than once. We must make sure that we always
-  // use the latest registered method -> check if a stub already has been generated.
-  // If so, we have to make it not_entrant.
-  nmethod* nm = code(); // Put it into local variable to guard against concurrent updates
-  if (nm != NULL) {
-    nm->make_not_entrant();
-  }
-}
-
-
-bool methodOopDesc::has_native_function() const {
-  if (is_method_handle_intrinsic())
-    return false;  // special-cased in SharedRuntime::generate_native_wrapper
-  address func = native_function();
-  return (func != NULL && func != SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
-}
-
-
-void methodOopDesc::clear_native_function() {
-  // Note: is_method_handle_intrinsic() is allowed here.
-  set_native_function(
-    SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
-    !native_bind_event_is_interesting);
-  clear_code();
-}
-
-address methodOopDesc::critical_native_function() {
-  methodHandle mh(this);
-  return NativeLookup::lookup_critical_entry(mh);
-}
-
-
-void methodOopDesc::set_signature_handler(address handler) {
-  address* signature_handler =  signature_handler_addr();
-  *signature_handler = handler;
-}
-
-
-bool methodOopDesc::is_not_compilable(int comp_level) const {
-  if (number_of_breakpoints() > 0) {
-    return true;
-  }
-  if (is_method_handle_intrinsic()) {
-    return !is_synthetic();  // the generated adapters must be compiled
-  }
-  if (comp_level == CompLevel_any) {
-    return is_not_c1_compilable() || is_not_c2_compilable();
-  }
-  if (is_c1_compile(comp_level)) {
-    return is_not_c1_compilable();
-  }
-  if (is_c2_compile(comp_level)) {
-    return is_not_c2_compilable();
-  }
-  return false;
-}
-
-// call this when compiler finds that this method is not compilable
-void methodOopDesc::set_not_compilable(int comp_level, bool report) {
-  if (PrintCompilation && report) {
-    ttyLocker ttyl;
-    tty->print("made not compilable ");
-    this->print_short_name(tty);
-    int size = this->code_size();
-    if (size > 0)
-      tty->print(" (%d bytes)", size);
-    tty->cr();
-  }
-  if ((TraceDeoptimization || LogCompilation) && (xtty != NULL)) {
-    ttyLocker ttyl;
-    xtty->begin_elem("make_not_compilable thread='%d'", (int) os::current_thread_id());
-    xtty->method(methodOop(this));
-    xtty->stamp();
-    xtty->end_elem();
-  }
-  if (comp_level == CompLevel_all) {
-    set_not_c1_compilable();
-    set_not_c2_compilable();
-  } else {
-    if (is_c1_compile(comp_level)) {
-      set_not_c1_compilable();
-    } else
-      if (is_c2_compile(comp_level)) {
-        set_not_c2_compilable();
-      }
-  }
-  CompilationPolicy::policy()->disable_compilation(this);
-}
-
-// Revert to using the interpreter and clear out the nmethod
-void methodOopDesc::clear_code() {
-
-  // this may be NULL if c2i adapters have not been made yet
-  // Only should happen at allocate time.
-  if (_adapter == NULL) {
-    _from_compiled_entry    = NULL;
-  } else {
-    _from_compiled_entry    = _adapter->get_c2i_entry();
-  }
-  OrderAccess::storestore();
-  _from_interpreted_entry = _i2i_entry;
-  OrderAccess::storestore();
-  _code = NULL;
-}
-
-// Called by class data sharing to remove any entry points (which are not shared)
-void methodOopDesc::unlink_method() {
-  _code = NULL;
-  _i2i_entry = NULL;
-  _from_interpreted_entry = NULL;
-  if (is_native()) {
-    *native_function_addr() = NULL;
-    set_signature_handler(NULL);
-  }
-  NOT_PRODUCT(set_compiled_invocation_count(0);)
-  invocation_counter()->reset();
-  backedge_counter()->reset();
-  _adapter = NULL;
-  _from_compiled_entry = NULL;
-  assert(_method_data == NULL, "unexpected method data?");
-  set_method_data(NULL);
-  set_interpreter_throwout_count(0);
-  set_interpreter_invocation_count(0);
-}
-
-// Called when the method_holder is getting linked. Setup entrypoints so the method
-// is ready to be called from interpreter, compiler, and vtables.
-void methodOopDesc::link_method(methodHandle h_method, TRAPS) {
-  // If the code cache is full, we may reenter this function for the
-  // leftover methods that weren't linked.
-  if (_i2i_entry != NULL) return;
-
-  assert(_adapter == NULL, "init'd to NULL" );
-  assert( _code == NULL, "nothing compiled yet" );
-
-  // Setup interpreter entrypoint
-  assert(this == h_method(), "wrong h_method()" );
-  address entry = Interpreter::entry_for_method(h_method);
-  assert(entry != NULL, "interpreter entry must be non-null");
-  // Sets both _i2i_entry and _from_interpreted_entry
-  set_interpreter_entry(entry);
-  if (is_native() && !is_method_handle_intrinsic()) {
-    set_native_function(
-      SharedRuntime::native_method_throw_unsatisfied_link_error_entry(),
-      !native_bind_event_is_interesting);
-  }
-
-  // Setup compiler entrypoint.  This is made eagerly, so we do not need
-  // special handling of vtables.  An alternative is to make adapters more
-  // lazily by calling make_adapter() from from_compiled_entry() for the
-  // normal calls.  For vtable calls life gets more complicated.  When a
-  // call-site goes mega-morphic we need adapters in all methods which can be
-  // called from the vtable.  We need adapters on such methods that get loaded
-  // later.  Ditto for mega-morphic itable calls.  If this proves to be a
-  // problem we'll make these lazily later.
-  (void) make_adapters(h_method, CHECK);
-
-  // ONLY USE the h_method now as make_adapter may have blocked
-
-}
-
-address methodOopDesc::make_adapters(methodHandle mh, TRAPS) {
-  // Adapters for compiled code are made eagerly here.  They are fairly
-  // small (generally < 100 bytes) and quick to make (and cached and shared)
-  // so making them eagerly shouldn't be too expensive.
-  AdapterHandlerEntry* adapter = AdapterHandlerLibrary::get_adapter(mh);
-  if (adapter == NULL ) {
-    THROW_MSG_NULL(vmSymbols::java_lang_VirtualMachineError(), "out of space in CodeCache for adapters");
-  }
-
-  mh->set_adapter_entry(adapter);
-  mh->_from_compiled_entry = adapter->get_c2i_entry();
-  return adapter->get_c2i_entry();
-}
-
-// The verified_code_entry() must be called when a invoke is resolved
-// on this method.
-
-// It returns the compiled code entry point, after asserting not null.
-// This function is called after potential safepoints so that nmethod
-// or adapter that it points to is still live and valid.
-// This function must not hit a safepoint!
-address methodOopDesc::verified_code_entry() {
-  debug_only(No_Safepoint_Verifier nsv;)
-  nmethod *code = (nmethod *)OrderAccess::load_ptr_acquire(&_code);
-  if (code == NULL && UseCodeCacheFlushing) {
-    nmethod *saved_code = CodeCache::find_and_remove_saved_code(this);
-    if (saved_code != NULL) {
-      methodHandle method(this);
-      assert( ! saved_code->is_osr_method(), "should not get here for osr" );
-      set_code( method, saved_code );
-    }
-  }
-
-  assert(_from_compiled_entry != NULL, "must be set");
-  return _from_compiled_entry;
-}
-
-// Check that if an nmethod ref exists, it has a backlink to this or no backlink at all
-// (could be racing a deopt).
-// Not inline to avoid circular ref.
-bool methodOopDesc::check_code() const {
-  // cached in a register or local.  There's a race on the value of the field.
-  nmethod *code = (nmethod *)OrderAccess::load_ptr_acquire(&_code);
-  return code == NULL || (code->method() == NULL) || (code->method() == (methodOop)this && !code->is_osr_method());
-}
-
-// Install compiled code.  Instantly it can execute.
-void methodOopDesc::set_code(methodHandle mh, nmethod *code) {
-  assert( code, "use clear_code to remove code" );
-  assert( mh->check_code(), "" );
-
-  guarantee(mh->adapter() != NULL, "Adapter blob must already exist!");
-
-  // These writes must happen in this order, because the interpreter will
-  // directly jump to from_interpreted_entry which jumps to an i2c adapter
-  // which jumps to _from_compiled_entry.
-  mh->_code = code;             // Assign before allowing compiled code to exec
-
-  int comp_level = code->comp_level();
-  // In theory there could be a race here. In practice it is unlikely
-  // and not worth worrying about.
-  if (comp_level > mh->highest_comp_level()) {
-    mh->set_highest_comp_level(comp_level);
-  }
-
-  OrderAccess::storestore();
-#ifdef SHARK
-  mh->_from_interpreted_entry = code->insts_begin();
-#else //!SHARK
-  mh->_from_compiled_entry = code->verified_entry_point();
-  OrderAccess::storestore();
-  // Instantly compiled code can execute.
-  if (!mh->is_method_handle_intrinsic())
-    mh->_from_interpreted_entry = mh->get_i2c_entry();
-#endif //!SHARK
-}
-
-
-bool methodOopDesc::is_overridden_in(klassOop k) const {
-  instanceKlass* ik = instanceKlass::cast(k);
-
-  if (ik->is_interface()) return false;
-
-  // If method is an interface, we skip it - except if it
-  // is a miranda method
-  if (instanceKlass::cast(method_holder())->is_interface()) {
-    // Check that method is not a miranda method
-    if (ik->lookup_method(name(), signature()) == NULL) {
-      // No implementation exist - so miranda method
-      return false;
-    }
-    return true;
-  }
-
-  assert(ik->is_subclass_of(method_holder()), "should be subklass");
-  assert(ik->vtable() != NULL, "vtable should exist");
-  if (vtable_index() == nonvirtual_vtable_index) {
-    return false;
-  } else {
-    methodOop vt_m = ik->method_at_vtable(vtable_index());
-    return vt_m != methodOop(this);
-  }
-}
-
-
-// give advice about whether this methodOop should be cached or not
-bool methodOopDesc::should_not_be_cached() const {
-  if (is_old()) {
-    // This method has been redefined. It is either EMCP or obsolete
-    // and we don't want to cache it because that would pin the method
-    // down and prevent it from being collectible if and when it
-    // finishes executing.
-    return true;
-  }
-
-  if (mark()->should_not_be_cached()) {
-    // It is either not safe or not a good idea to cache this
-    // method at this time because of the state of the embedded
-    // markOop. See markOop.cpp for the gory details.
-    return true;
-  }
-
-  // caching this method should be just fine
-  return false;
-}
-
-// Constant pool structure for invoke methods:
-enum {
-  _imcp_invoke_name = 1,        // utf8: 'invokeExact', etc.
-  _imcp_invoke_signature,       // utf8: (variable Symbol*)
-  _imcp_limit
-};
-
-// Test if this method is an MH adapter frame generated by Java code.
-// Cf. java/lang/invoke/InvokerBytecodeGenerator
-bool methodOopDesc::is_compiled_lambda_form() const {
-  return intrinsic_id() == vmIntrinsics::_compiledLambdaForm;
-}
-
-// Test if this method is an internal MH primitive method.
-bool methodOopDesc::is_method_handle_intrinsic() const {
-  vmIntrinsics::ID iid = intrinsic_id();
-  return (MethodHandles::is_signature_polymorphic(iid) &&
-          MethodHandles::is_signature_polymorphic_intrinsic(iid));
-}
-
-bool methodOopDesc::has_member_arg() const {
-  vmIntrinsics::ID iid = intrinsic_id();
-  return (MethodHandles::is_signature_polymorphic(iid) &&
-          MethodHandles::has_member_arg(iid));
-}
-
-// Make an instance of a signature-polymorphic internal MH primitive.
-methodHandle methodOopDesc::make_method_handle_intrinsic(vmIntrinsics::ID iid,
-                                                         Symbol* signature,
-                                                         TRAPS) {
-  ResourceMark rm;
-  methodHandle empty;
-
-  KlassHandle holder = SystemDictionary::MethodHandle_klass();
-  Symbol* name = MethodHandles::signature_polymorphic_intrinsic_name(iid);
-  assert(iid == MethodHandles::signature_polymorphic_name_id(name), "");
-  if (TraceMethodHandles) {
-    tty->print_cr("make_method_handle_intrinsic MH.%s%s", name->as_C_string(), signature->as_C_string());
-  }
-
-  // invariant:   cp->symbol_at_put is preceded by a refcount increment (more usually a lookup)
-  name->increment_refcount();
-  signature->increment_refcount();
-
-  int cp_length = _imcp_limit;
-  constantPoolHandle cp;
-  {
-    constantPoolOop cp_oop = oopFactory::new_constantPool(cp_length, IsSafeConc, CHECK_(empty));
-    cp = constantPoolHandle(THREAD, cp_oop);
-  }
-  cp->symbol_at_put(_imcp_invoke_name,       name);
-  cp->symbol_at_put(_imcp_invoke_signature,  signature);
-  cp->set_preresolution();
-  cp->set_pool_holder(holder());
-
-  // decide on access bits:  public or not?
-  int flags_bits = (JVM_ACC_NATIVE | JVM_ACC_SYNTHETIC | JVM_ACC_FINAL);
-  bool must_be_static = MethodHandles::is_signature_polymorphic_static(iid);
-  if (must_be_static)  flags_bits |= JVM_ACC_STATIC;
-  assert((flags_bits & JVM_ACC_PUBLIC) == 0, "do not expose these methods");
-
-  methodHandle m;
-  {
-    methodOop m_oop = oopFactory::new_method(0, accessFlags_from(flags_bits),
-                                             0, 0, 0, 0, IsSafeConc, CHECK_(empty));
-    m = methodHandle(THREAD, m_oop);
-  }
-  m->set_constants(cp());
-  m->set_name_index(_imcp_invoke_name);
-  m->set_signature_index(_imcp_invoke_signature);
-  assert(MethodHandles::is_signature_polymorphic_name(m->name()), "");
-  assert(m->signature() == signature, "");
-#ifdef CC_INTERP
-  ResultTypeFinder rtf(signature);
-  m->set_result_index(rtf.type());
-#endif
-  m->compute_size_of_parameters(THREAD);
-  m->init_intrinsic_id();
-  assert(m->is_method_handle_intrinsic(), "");
-#ifdef ASSERT
-  if (!MethodHandles::is_signature_polymorphic(m->intrinsic_id()))  m->print();
-  assert(MethodHandles::is_signature_polymorphic(m->intrinsic_id()), "must be an invoker");
-  assert(m->intrinsic_id() == iid, "correctly predicted iid");
-#endif //ASSERT
-
-  // Finally, set up its entry points.
-  assert(m->can_be_statically_bound(), "");
-  m->set_vtable_index(methodOopDesc::nonvirtual_vtable_index);
-  m->link_method(m, CHECK_(empty));
-
-  if (TraceMethodHandles && (Verbose || WizardMode))
-    m->print_on(tty);
-
-  return m;
-}
-
-klassOop methodOopDesc::check_non_bcp_klass(klassOop klass) {
-  if (klass != NULL && Klass::cast(klass)->class_loader() != NULL) {
-    if (Klass::cast(klass)->oop_is_objArray())
-      klass = objArrayKlass::cast(klass)->bottom_klass();
-    return klass;
-  }
-  return NULL;
-}
-
-
-methodHandle methodOopDesc::clone_with_new_data(methodHandle m, u_char* new_code, int new_code_length,
-                                                u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS) {
-  // Code below does not work for native methods - they should never get rewritten anyway
-  assert(!m->is_native(), "cannot rewrite native methods");
-  // Allocate new methodOop
-  AccessFlags flags = m->access_flags();
-  int checked_exceptions_len = m->checked_exceptions_length();
-  int localvariable_len = m->localvariable_table_length();
-  int exception_table_len = m->exception_table_length();
-  // Allocate newm_oop with the is_conc_safe parameter set
-  // to IsUnsafeConc to indicate that newm_oop is not yet
-  // safe for concurrent processing by a GC.
-  methodOop newm_oop = oopFactory::new_method(new_code_length,
-                                              flags,
-                                              new_compressed_linenumber_size,
-                                              localvariable_len,
-                                              exception_table_len,
-                                              checked_exceptions_len,
-                                              IsUnsafeConc,
-                                              CHECK_(methodHandle()));
-  methodHandle newm (THREAD, newm_oop);
-  NOT_PRODUCT(int nmsz = newm->is_parsable() ? newm->size() : -1;)
-  int new_method_size = newm->method_size();
-  // Create a shallow copy of methodOopDesc part, but be careful to preserve the new constMethodOop
-  constMethodOop newcm = newm->constMethod();
-  NOT_PRODUCT(int ncmsz = newcm->is_parsable() ? newcm->size() : -1;)
-  int new_const_method_size = newm->constMethod()->object_size();
-
-  memcpy(newm(), m(), sizeof(methodOopDesc));
-  // Create shallow copy of constMethodOopDesc, but be careful to preserve the methodOop
-  // is_conc_safe is set to false because that is the value of
-  // is_conc_safe initialzied into newcm and the copy should
-  // not overwrite that value.  During the window during which it is
-  // tagged as unsafe, some extra work could be needed during precleaning
-  // or concurrent marking but those phases will be correct.  Setting and
-  // resetting is done in preference to a careful copying into newcm to
-  // avoid having to know the precise layout of a constMethodOop.
-  m->constMethod()->set_is_conc_safe(oopDesc::IsUnsafeConc);
-  assert(m->constMethod()->is_parsable(), "Should remain parsable");
-
-  // NOTE: this is a reachable object that transiently signals "conc_unsafe"
-  // However, no allocations are done during this window
-  // during which it is tagged conc_unsafe, so we are assured that any concurrent
-  // thread will not wait forever for the object to revert to "conc_safe".
-  // Further, any such conc_unsafe object will indicate a stable size
-  // through the transition.
-  memcpy(newcm, m->constMethod(), sizeof(constMethodOopDesc));
-  m->constMethod()->set_is_conc_safe(oopDesc::IsSafeConc);
-  assert(m->constMethod()->is_parsable(), "Should remain parsable");
-
-  // Reset correct method/const method, method size, and parameter info
-  newm->set_constMethod(newcm);
-  newm->constMethod()->set_code_size(new_code_length);
-  newm->constMethod()->set_constMethod_size(new_const_method_size);
-  newm->set_method_size(new_method_size);
-  assert(newm->code_size() == new_code_length, "check");
-  assert(newm->checked_exceptions_length() == checked_exceptions_len, "check");
-  assert(newm->exception_table_length() == exception_table_len, "check");
-  assert(newm->localvariable_table_length() == localvariable_len, "check");
-  // Copy new byte codes
-  memcpy(newm->code_base(), new_code, new_code_length);
-  // Copy line number table
-  if (new_compressed_linenumber_size > 0) {
-    memcpy(newm->compressed_linenumber_table(),
-           new_compressed_linenumber_table,
-           new_compressed_linenumber_size);
-  }
-  // Copy checked_exceptions
-  if (checked_exceptions_len > 0) {
-    memcpy(newm->checked_exceptions_start(),
-           m->checked_exceptions_start(),
-           checked_exceptions_len * sizeof(CheckedExceptionElement));
-  }
-  // Copy exception table
-  if (exception_table_len > 0) {
-    memcpy(newm->exception_table_start(),
-           m->exception_table_start(),
-           exception_table_len * sizeof(ExceptionTableElement));
-  }
-  // Copy local variable number table
-  if (localvariable_len > 0) {
-    memcpy(newm->localvariable_table_start(),
-           m->localvariable_table_start(),
-           localvariable_len * sizeof(LocalVariableTableElement));
-  }
-
-  // Only set is_conc_safe to true when changes to newcm are
-  // complete.
-  assert(!newm->is_parsable()  || nmsz  < 0 || newm->size()  == nmsz,  "newm->size()  inconsistency");
-  assert(!newcm->is_parsable() || ncmsz < 0 || newcm->size() == ncmsz, "newcm->size() inconsistency");
-  newcm->set_is_conc_safe(true);
-  return newm;
-}
-
-vmSymbols::SID methodOopDesc::klass_id_for_intrinsics(klassOop holder) {
-  // if loader is not the default loader (i.e., != NULL), we can't know the intrinsics
-  // because we are not loading from core libraries
-  if (instanceKlass::cast(holder)->class_loader() != NULL)
-    return vmSymbols::NO_SID;   // regardless of name, no intrinsics here
-
-  // see if the klass name is well-known:
-  Symbol* klass_name = instanceKlass::cast(holder)->name();
-  return vmSymbols::find_sid(klass_name);
-}
-
-void methodOopDesc::init_intrinsic_id() {
-  assert(_intrinsic_id == vmIntrinsics::_none, "do this just once");
-  const uintptr_t max_id_uint = right_n_bits((int)(sizeof(_intrinsic_id) * BitsPerByte));
-  assert((uintptr_t)vmIntrinsics::ID_LIMIT <= max_id_uint, "else fix size");
-  assert(intrinsic_id_size_in_bytes() == sizeof(_intrinsic_id), "");
-
-  // the klass name is well-known:
-  vmSymbols::SID klass_id = klass_id_for_intrinsics(method_holder());
-  assert(klass_id != vmSymbols::NO_SID, "caller responsibility");
-
-  // ditto for method and signature:
-  vmSymbols::SID  name_id = vmSymbols::find_sid(name());
-  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
-      && name_id == vmSymbols::NO_SID)
-    return;
-  vmSymbols::SID   sig_id = vmSymbols::find_sid(signature());
-  if (klass_id != vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle)
-      && sig_id == vmSymbols::NO_SID)  return;
-  jshort flags = access_flags().as_short();
-
-  vmIntrinsics::ID id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
-  if (id != vmIntrinsics::_none) {
-    set_intrinsic_id(id);
-    return;
-  }
-
-  // A few slightly irregular cases:
-  switch (klass_id) {
-  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_StrictMath):
-    // Second chance: check in regular Math.
-    switch (name_id) {
-    case vmSymbols::VM_SYMBOL_ENUM_NAME(min_name):
-    case vmSymbols::VM_SYMBOL_ENUM_NAME(max_name):
-    case vmSymbols::VM_SYMBOL_ENUM_NAME(sqrt_name):
-      // pretend it is the corresponding method in the non-strict class:
-      klass_id = vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_Math);
-      id = vmIntrinsics::find_id(klass_id, name_id, sig_id, flags);
-      break;
-    }
-    break;
-
-  // Signature-polymorphic methods: MethodHandle.invoke*, InvokeDynamic.*.
-  case vmSymbols::VM_SYMBOL_ENUM_NAME(java_lang_invoke_MethodHandle):
-    if (!is_native())  break;
-    id = MethodHandles::signature_polymorphic_name_id(method_holder(), name());
-    if (is_static() != MethodHandles::is_signature_polymorphic_static(id))
-      id = vmIntrinsics::_none;
-    break;
-  }
-
-  if (id != vmIntrinsics::_none) {
-    // Set up its iid.  It is an alias method.
-    set_intrinsic_id(id);
-    return;
-  }
-}
-
-// These two methods are static since a GC may move the methodOopDesc
-bool methodOopDesc::load_signature_classes(methodHandle m, TRAPS) {
-  if (THREAD->is_Compiler_thread()) {
-    // There is nothing useful this routine can do from within the Compile thread.
-    // Hopefully, the signature contains only well-known classes.
-    // We could scan for this and return true/false, but the caller won't care.
-    return false;
-  }
-  bool sig_is_loaded = true;
-  Handle class_loader(THREAD, instanceKlass::cast(m->method_holder())->class_loader());
-  Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain());
-  ResourceMark rm(THREAD);
-  Symbol*  signature = m->signature();
-  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
-    if (ss.is_object()) {
-      Symbol* sym = ss.as_symbol(CHECK_(false));
-      Symbol*  name  = sym;
-      klassOop klass = SystemDictionary::resolve_or_null(name, class_loader,
-                                             protection_domain, THREAD);
-      // We are loading classes eagerly. If a ClassNotFoundException or
-      // a LinkageError was generated, be sure to ignore it.
-      if (HAS_PENDING_EXCEPTION) {
-        if (PENDING_EXCEPTION->is_a(SystemDictionary::ClassNotFoundException_klass()) ||
-            PENDING_EXCEPTION->is_a(SystemDictionary::LinkageError_klass())) {
-          CLEAR_PENDING_EXCEPTION;
-        } else {
-          return false;
-        }
-      }
-      if( klass == NULL) { sig_is_loaded = false; }
-    }
-  }
-  return sig_is_loaded;
-}
-
-bool methodOopDesc::has_unloaded_classes_in_signature(methodHandle m, TRAPS) {
-  Handle class_loader(THREAD, instanceKlass::cast(m->method_holder())->class_loader());
-  Handle protection_domain(THREAD, Klass::cast(m->method_holder())->protection_domain());
-  ResourceMark rm(THREAD);
-  Symbol*  signature = m->signature();
-  for(SignatureStream ss(signature); !ss.is_done(); ss.next()) {
-    if (ss.type() == T_OBJECT) {
-      Symbol* name = ss.as_symbol_or_null();
-      if (name == NULL) return true;
-      klassOop klass = SystemDictionary::find(name, class_loader, protection_domain, THREAD);
-      if (klass == NULL) return true;
-    }
-  }
-  return false;
-}
-
-// Exposed so field engineers can debug VM
-void methodOopDesc::print_short_name(outputStream* st) {
-  ResourceMark rm;
-#ifdef PRODUCT
-  st->print(" %s::", method_holder()->klass_part()->external_name());
-#else
-  st->print(" %s::", method_holder()->klass_part()->internal_name());
-#endif
-  name()->print_symbol_on(st);
-  if (WizardMode) signature()->print_symbol_on(st);
-  else if (MethodHandles::is_signature_polymorphic(intrinsic_id()))
-    MethodHandles::print_as_basic_type_signature_on(st, signature(), true);
-}
-
-// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
-static void reorder_based_on_method_index(objArrayOop methods,
-                                          objArrayOop annotations,
-                                          GrowableArray<oop>* temp_array) {
-  if (annotations == NULL) {
-    return;
-  }
-
-  int length = methods->length();
-  int i;
-  // Copy to temp array
-  temp_array->clear();
-  for (i = 0; i < length; i++) {
-    temp_array->append(annotations->obj_at(i));
-  }
-
-  // Copy back using old method indices
-  for (i = 0; i < length; i++) {
-    methodOop m = (methodOop) methods->obj_at(i);
-    annotations->obj_at_put(i, temp_array->at(m->method_idnum()));
-  }
-}
-
-// Comparer for sorting an object array containing
-// methodOops.
-// Used non-template method_comparator methods since
-// Visual Studio 2003 compiler generates incorrect
-// optimized code for it.
-static int method_comparator_narrowOop(narrowOop a, narrowOop b) {
-  methodOop m = (methodOop)oopDesc::decode_heap_oop_not_null(a);
-  methodOop n = (methodOop)oopDesc::decode_heap_oop_not_null(b);
-  return m->name()->fast_compare(n->name());
-}
-static int method_comparator_oop(oop a, oop b) {
-  methodOop m = (methodOop)a;
-  methodOop n = (methodOop)b;
-  return m->name()->fast_compare(n->name());
-}
-
-// This is only done during class loading, so it is OK to assume method_idnum matches the methods() array
-void methodOopDesc::sort_methods(objArrayOop methods,
-                                 objArrayOop methods_annotations,
-                                 objArrayOop methods_parameter_annotations,
-                                 objArrayOop methods_default_annotations,
-                                 bool idempotent) {
-  int length = methods->length();
-  if (length > 1) {
-    bool do_annotations = false;
-    if (methods_annotations != NULL ||
-        methods_parameter_annotations != NULL ||
-        methods_default_annotations != NULL) {
-      do_annotations = true;
-    }
-    if (do_annotations) {
-      // Remember current method ordering so we can reorder annotations
-      for (int i = 0; i < length; i++) {
-        methodOop m = (methodOop) methods->obj_at(i);
-        m->set_method_idnum(i);
-      }
-    }
-    {
-      No_Safepoint_Verifier nsv;
-      if (UseCompressedOops) {
-        QuickSort::sort<narrowOop>((narrowOop*)(methods->base()), length, method_comparator_narrowOop, idempotent);
-      } else {
-        QuickSort::sort<oop>((oop*)(methods->base()), length, method_comparator_oop, idempotent);
-      }
-      if (UseConcMarkSweepGC) {
-        // For CMS we need to dirty the cards for the array
-        BarrierSet* bs = Universe::heap()->barrier_set();
-        assert(bs->has_write_ref_array_opt(), "Barrier set must have ref array opt");
-        bs->write_ref_array(methods->base(), length);
-      }
-    }
-
-    // Sort annotations if necessary
-    assert(methods_annotations == NULL           || methods_annotations->length() == methods->length(), "");
-    assert(methods_parameter_annotations == NULL || methods_parameter_annotations->length() == methods->length(), "");
-    assert(methods_default_annotations == NULL   || methods_default_annotations->length() == methods->length(), "");
-    if (do_annotations) {
-      ResourceMark rm;
-      // Allocate temporary storage
-      GrowableArray<oop>* temp_array = new GrowableArray<oop>(length);
-      reorder_based_on_method_index(methods, methods_annotations, temp_array);
-      reorder_based_on_method_index(methods, methods_parameter_annotations, temp_array);
-      reorder_based_on_method_index(methods, methods_default_annotations, temp_array);
-    }
-
-    // Reset method ordering
-    for (int i = 0; i < length; i++) {
-      methodOop m = (methodOop) methods->obj_at(i);
-      m->set_method_idnum(i);
-    }
-  }
-}
-
-
-//-----------------------------------------------------------------------------------
-// Non-product code
-
-#ifndef PRODUCT
-class SignatureTypePrinter : public SignatureTypeNames {
- private:
-  outputStream* _st;
-  bool _use_separator;
-
-  void type_name(const char* name) {
-    if (_use_separator) _st->print(", ");
-    _st->print(name);
-    _use_separator = true;
-  }
-
- public:
-  SignatureTypePrinter(Symbol* signature, outputStream* st) : SignatureTypeNames(signature) {
-    _st = st;
-    _use_separator = false;
-  }
-
-  void print_parameters()              { _use_separator = false; iterate_parameters(); }
-  void print_returntype()              { _use_separator = false; iterate_returntype(); }
-};
-
-
-void methodOopDesc::print_name(outputStream* st) {
-  Thread *thread = Thread::current();
-  ResourceMark rm(thread);
-  SignatureTypePrinter sig(signature(), st);
-  st->print("%s ", is_static() ? "static" : "virtual");
-  sig.print_returntype();
-  st->print(" %s.", method_holder()->klass_part()->internal_name());
-  name()->print_symbol_on(st);
-  st->print("(");
-  sig.print_parameters();
-  st->print(")");
-}
-
-
-void methodOopDesc::print_codes_on(outputStream* st) const {
-  print_codes_on(0, code_size(), st);
-}
-
-void methodOopDesc::print_codes_on(int from, int to, outputStream* st) const {
-  Thread *thread = Thread::current();
-  ResourceMark rm(thread);
-  methodHandle mh (thread, (methodOop)this);
-  BytecodeStream s(mh);
-  s.set_interval(from, to);
-  BytecodeTracer::set_closure(BytecodeTracer::std_closure());
-  while (s.next() >= 0) BytecodeTracer::trace(mh, s.bcp(), st);
-}
-#endif // not PRODUCT
-
-
-// Simple compression of line number tables. We use a regular compressed stream, except that we compress deltas
-// between (bci,line) pairs since they are smaller. If (bci delta, line delta) fits in (5-bit unsigned, 3-bit unsigned)
-// we save it as one byte, otherwise we write a 0xFF escape character and use regular compression. 0x0 is used
-// as end-of-stream terminator.
-
-void CompressedLineNumberWriteStream::write_pair_regular(int bci_delta, int line_delta) {
-  // bci and line number does not compress into single byte.
-  // Write out escape character and use regular compression for bci and line number.
-  write_byte((jubyte)0xFF);
-  write_signed_int(bci_delta);
-  write_signed_int(line_delta);
-}
-
-// See comment in methodOop.hpp which explains why this exists.
-#if defined(_M_AMD64) && _MSC_VER >= 1400
-#pragma optimize("", off)
-void CompressedLineNumberWriteStream::write_pair(int bci, int line) {
-  write_pair_inline(bci, line);
-}
-#pragma optimize("", on)
-#endif
-
-CompressedLineNumberReadStream::CompressedLineNumberReadStream(u_char* buffer) : CompressedReadStream(buffer) {
-  _bci = 0;
-  _line = 0;
-};
-
-
-bool CompressedLineNumberReadStream::read_pair() {
-  jubyte next = read_byte();
-  // Check for terminator
-  if (next == 0) return false;
-  if (next == 0xFF) {
-    // Escape character, regular compression used
-    _bci  += read_signed_int();
-    _line += read_signed_int();
-  } else {
-    // Single byte compression used
-    _bci  += next >> 3;
-    _line += next & 0x7;
-  }
-  return true;
-}
-
-
-Bytecodes::Code methodOopDesc::orig_bytecode_at(int bci) const {
-  BreakpointInfo* bp = instanceKlass::cast(method_holder())->breakpoints();
-  for (; bp != NULL; bp = bp->next()) {
-    if (bp->match(this, bci)) {
-      return bp->orig_bytecode();
-    }
-  }
-  ShouldNotReachHere();
-  return Bytecodes::_shouldnotreachhere;
-}
-
-void methodOopDesc::set_orig_bytecode_at(int bci, Bytecodes::Code code) {
-  assert(code != Bytecodes::_breakpoint, "cannot patch breakpoints this way");
-  BreakpointInfo* bp = instanceKlass::cast(method_holder())->breakpoints();
-  for (; bp != NULL; bp = bp->next()) {
-    if (bp->match(this, bci)) {
-      bp->set_orig_bytecode(code);
-      // and continue, in case there is more than one
-    }
-  }
-}
-
-void methodOopDesc::set_breakpoint(int bci) {
-  instanceKlass* ik = instanceKlass::cast(method_holder());
-  BreakpointInfo *bp = new BreakpointInfo(this, bci);
-  bp->set_next(ik->breakpoints());
-  ik->set_breakpoints(bp);
-  // do this last:
-  bp->set(this);
-}
-
-static void clear_matches(methodOop m, int bci) {
-  instanceKlass* ik = instanceKlass::cast(m->method_holder());
-  BreakpointInfo* prev_bp = NULL;
-  BreakpointInfo* next_bp;
-  for (BreakpointInfo* bp = ik->breakpoints(); bp != NULL; bp = next_bp) {
-    next_bp = bp->next();
-    // bci value of -1 is used to delete all breakpoints in method m (ex: clear_all_breakpoint).
-    if (bci >= 0 ? bp->match(m, bci) : bp->match(m)) {
-      // do this first:
-      bp->clear(m);
-      // unhook it
-      if (prev_bp != NULL)
-        prev_bp->set_next(next_bp);
-      else
-        ik->set_breakpoints(next_bp);
-      delete bp;
-      // When class is redefined JVMTI sets breakpoint in all versions of EMCP methods
-      // at same location. So we have multiple matching (method_index and bci)
-      // BreakpointInfo nodes in BreakpointInfo list. We should just delete one
-      // breakpoint for clear_breakpoint request and keep all other method versions
-      // BreakpointInfo for future clear_breakpoint request.
-      // bcivalue of -1 is used to clear all breakpoints (see clear_all_breakpoints)
-      // which is being called when class is unloaded. We delete all the Breakpoint
-      // information for all versions of method. We may not correctly restore the original
-      // bytecode in all method versions, but that is ok. Because the class is being unloaded
-      // so these methods won't be used anymore.
-      if (bci >= 0) {
-        break;
-      }
-    } else {
-      // This one is a keeper.
-      prev_bp = bp;
-    }
-  }
-}
-
-void methodOopDesc::clear_breakpoint(int bci) {
-  assert(bci >= 0, "");
-  clear_matches(this, bci);
-}
-
-void methodOopDesc::clear_all_breakpoints() {
-  clear_matches(this, -1);
-}
-
-
-int methodOopDesc::invocation_count() {
-  if (TieredCompilation) {
-    const methodDataOop mdo = method_data();
-    if (invocation_counter()->carry() || ((mdo != NULL) ? mdo->invocation_counter()->carry() : false)) {
-      return InvocationCounter::count_limit;
-    } else {
-      return invocation_counter()->count() + ((mdo != NULL) ? mdo->invocation_counter()->count() : 0);
-    }
-  } else {
-    return invocation_counter()->count();
-  }
-}
-
-int methodOopDesc::backedge_count() {
-  if (TieredCompilation) {
-    const methodDataOop mdo = method_data();
-    if (backedge_counter()->carry() || ((mdo != NULL) ? mdo->backedge_counter()->carry() : false)) {
-      return InvocationCounter::count_limit;
-    } else {
-      return backedge_counter()->count() + ((mdo != NULL) ? mdo->backedge_counter()->count() : 0);
-    }
-  } else {
-    return backedge_counter()->count();
-  }
-}
-
-int methodOopDesc::highest_comp_level() const {
-  methodDataOop mdo = method_data();
-  if (mdo != NULL) {
-    return mdo->highest_comp_level();
-  } else {
-    return CompLevel_none;
-  }
-}
-
-int methodOopDesc::highest_osr_comp_level() const {
-  methodDataOop mdo = method_data();
-  if (mdo != NULL) {
-    return mdo->highest_osr_comp_level();
-  } else {
-    return CompLevel_none;
-  }
-}
-
-void methodOopDesc::set_highest_comp_level(int level) {
-  methodDataOop mdo = method_data();
-  if (mdo != NULL) {
-    mdo->set_highest_comp_level(level);
-  }
-}
-
-void methodOopDesc::set_highest_osr_comp_level(int level) {
-  methodDataOop mdo = method_data();
-  if (mdo != NULL) {
-    mdo->set_highest_osr_comp_level(level);
-  }
-}
-
-BreakpointInfo::BreakpointInfo(methodOop m, int bci) {
-  _bci = bci;
-  _name_index = m->name_index();
-  _signature_index = m->signature_index();
-  _orig_bytecode = (Bytecodes::Code) *m->bcp_from(_bci);
-  if (_orig_bytecode == Bytecodes::_breakpoint)
-    _orig_bytecode = m->orig_bytecode_at(_bci);
-  _next = NULL;
-}
-
-void BreakpointInfo::set(methodOop method) {
-#ifdef ASSERT
-  {
-    Bytecodes::Code code = (Bytecodes::Code) *method->bcp_from(_bci);
-    if (code == Bytecodes::_breakpoint)
-      code = method->orig_bytecode_at(_bci);
-    assert(orig_bytecode() == code, "original bytecode must be the same");
-  }
-#endif
-  *method->bcp_from(_bci) = Bytecodes::_breakpoint;
-  method->incr_number_of_breakpoints();
-  SystemDictionary::notice_modification();
-  {
-    // Deoptimize all dependents on this method
-    Thread *thread = Thread::current();
-    HandleMark hm(thread);
-    methodHandle mh(thread, method);
-    Universe::flush_dependents_on_method(mh);
-  }
-}
-
-void BreakpointInfo::clear(methodOop method) {
-  *method->bcp_from(_bci) = orig_bytecode();
-  assert(method->number_of_breakpoints() > 0, "must not go negative");
-  method->decr_number_of_breakpoints();
-}
--- a/src/share/vm/oops/methodOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,903 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_METHODOOP_HPP
-#define SHARE_VM_OOPS_METHODOOP_HPP
-
-#include "classfile/vmSymbols.hpp"
-#include "code/compressedStream.hpp"
-#include "compiler/oopMap.hpp"
-#include "interpreter/invocationCounter.hpp"
-#include "oops/constMethodOop.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/instanceKlass.hpp"
-#include "oops/oop.hpp"
-#include "oops/typeArrayOop.hpp"
-#include "utilities/accessFlags.hpp"
-#include "utilities/growableArray.hpp"
-
-// A methodOop represents a Java method.
-//
-// Memory layout (each line represents a word). Note that most applications load thousands of methods,
-// so keeping the size of this structure small has a big impact on footprint.
-//
-// We put all oops and method_size first for better gc cache locality.
-//
-// The actual bytecodes are inlined after the end of the methodOopDesc struct.
-//
-// There are bits in the access_flags telling whether inlined tables are present.
-// Note that accessing the line number and local variable tables is not performance critical at all.
-// Accessing the checked exceptions table is used by reflection, so we put that last to make access
-// to it fast.
-//
-// The line number table is compressed and inlined following the byte codes. It is found as the first
-// byte following the byte codes. The checked exceptions table and the local variable table are inlined
-// after the line number table, and indexed from the end of the method. We do not compress the checked
-// exceptions table since the average length is less than 2, and do not bother to compress the local
-// variable table either since it is mostly absent.
-//
-// Note that native_function and signature_handler has to be at fixed offsets (required by the interpreter)
-//
-// |------------------------------------------------------|
-// | header                                               |
-// | klass                                                |
-// |------------------------------------------------------|
-// | constMethodOop                 (oop)                 |
-// |------------------------------------------------------|
-// | methodData                     (oop)                 |
-// | interp_invocation_count                              |
-// |------------------------------------------------------|
-// | access_flags                                         |
-// | vtable_index                                         |
-// |------------------------------------------------------|
-// | result_index (C++ interpreter only)                  |
-// |------------------------------------------------------|
-// | method_size             | max_stack                  |
-// | max_locals              | size_of_parameters         |
-// |------------------------------------------------------|
-// |intrinsic_id|   flags    |  throwout_count            |
-// |------------------------------------------------------|
-// | num_breakpoints         |  (unused)                  |
-// |------------------------------------------------------|
-// | invocation_counter                                   |
-// | backedge_counter                                     |
-// |------------------------------------------------------|
-// |           prev_time (tiered only, 64 bit wide)       |
-// |                                                      |
-// |------------------------------------------------------|
-// |                  rate (tiered)                       |
-// |------------------------------------------------------|
-// | code                           (pointer)             |
-// | i2i                            (pointer)             |
-// | adapter                        (pointer)             |
-// | from_compiled_entry            (pointer)             |
-// | from_interpreted_entry         (pointer)             |
-// |------------------------------------------------------|
-// | native_function       (present only if native)       |
-// | signature_handler     (present only if native)       |
-// |------------------------------------------------------|
-
-
-class CheckedExceptionElement;
-class LocalVariableTableElement;
-class AdapterHandlerEntry;
-class methodDataOopDesc;
-
-class methodOopDesc : public oopDesc {
- friend class methodKlass;
- friend class VMStructs;
- private:
-  constMethodOop    _constMethod;                // Method read-only data.
-  methodDataOop     _method_data;
-  int               _interpreter_invocation_count; // Count of times invoked (reused as prev_event_count in tiered)
-  AccessFlags       _access_flags;               // Access flags
-  int               _vtable_index;               // vtable index of this method (see VtableIndexFlag)
-                                                 // note: can have vtables with >2**16 elements (because of inheritance)
-#ifdef CC_INTERP
-  int               _result_index;               // C++ interpreter needs for converting results to/from stack
-#endif
-  u2                _method_size;                // size of this object
-  u2                _max_stack;                  // Maximum number of entries on the expression stack
-  u2                _max_locals;                 // Number of local variables used by this method
-  u2                _size_of_parameters;         // size of the parameter block (receiver + arguments) in words
-  u1                _intrinsic_id;               // vmSymbols::intrinsic_id (0 == _none)
-  u1                _jfr_towrite  : 1,           // Flags
-                    _force_inline : 1,
-                    _hidden       : 1,
-                    _dont_inline  : 1,
-                                  : 4;
-  u2                _interpreter_throwout_count; // Count of times method was exited via exception while interpreting
-  u2                _number_of_breakpoints;      // fullspeed debugging support
-  InvocationCounter _invocation_counter;         // Incremented before each activation of the method - used to trigger frequency-based optimizations
-  InvocationCounter _backedge_counter;           // Incremented before each backedge taken - used to trigger frequencey-based optimizations
-
-#ifdef TIERED
-  jlong             _prev_time;                   // Previous time the rate was acquired
-  float             _rate;                        // Events (invocation and backedge counter increments) per millisecond
-#endif
-
-#ifndef PRODUCT
-  int               _compiled_invocation_count;  // Number of nmethod invocations so far (for perf. debugging)
-#endif
-  // Entry point for calling both from and to the interpreter.
-  address _i2i_entry;           // All-args-on-stack calling convention
-  // Adapter blob (i2c/c2i) for this methodOop. Set once when method is linked.
-  AdapterHandlerEntry* _adapter;
-  // Entry point for calling from compiled code, to compiled code if it exists
-  // or else the interpreter.
-  volatile address _from_compiled_entry;        // Cache of: _code ? _code->entry_point() : _adapter->c2i_entry()
-  // The entry point for calling both from and to compiled code is
-  // "_code->entry_point()".  Because of tiered compilation and de-opt, this
-  // field can come and go.  It can transition from NULL to not-null at any
-  // time (whenever a compile completes).  It can transition from not-null to
-  // NULL only at safepoints (because of a de-opt).
-  nmethod* volatile _code;                       // Points to the corresponding piece of native code
-  volatile address           _from_interpreted_entry; // Cache of _code ? _adapter->i2c_entry() : _i2i_entry
-
- public:
-
-  // accessors for instance variables
-  constMethodOop constMethod() const             { return _constMethod; }
-  void set_constMethod(constMethodOop xconst)    { oop_store_without_check((oop*)&_constMethod, (oop)xconst); }
-
-
-  static address make_adapters(methodHandle mh, TRAPS);
-  volatile address from_compiled_entry() const   { return (address)OrderAccess::load_ptr_acquire(&_from_compiled_entry); }
-  volatile address from_interpreted_entry() const{ return (address)OrderAccess::load_ptr_acquire(&_from_interpreted_entry); }
-
-  // access flag
-  AccessFlags access_flags() const               { return _access_flags;  }
-  void set_access_flags(AccessFlags flags)       { _access_flags = flags; }
-
-  // name
-  Symbol* name() const                           { return constants()->symbol_at(name_index()); }
-  int name_index() const                         { return constMethod()->name_index();         }
-  void set_name_index(int index)                 { constMethod()->set_name_index(index);       }
-
-  // signature
-  Symbol* signature() const                      { return constants()->symbol_at(signature_index()); }
-  int signature_index() const                    { return constMethod()->signature_index();         }
-  void set_signature_index(int index)            { constMethod()->set_signature_index(index);       }
-
-  // generics support
-  Symbol* generic_signature() const              { int idx = generic_signature_index(); return ((idx != 0) ? constants()->symbol_at(idx) : (Symbol*)NULL); }
-  int generic_signature_index() const            { return constMethod()->generic_signature_index(); }
-  void set_generic_signature_index(int index)    { constMethod()->set_generic_signature_index(index); }
-
-  // annotations support
-  typeArrayOop annotations() const               { return instanceKlass::cast(method_holder())->get_method_annotations_of(method_idnum()); }
-  typeArrayOop parameter_annotations() const     { return instanceKlass::cast(method_holder())->get_method_parameter_annotations_of(method_idnum()); }
-  typeArrayOop annotation_default() const        { return instanceKlass::cast(method_holder())->get_method_default_annotations_of(method_idnum()); }
-
-#ifdef CC_INTERP
-  void set_result_index(BasicType type);
-  int  result_index()                            { return _result_index; }
-#endif
-
-  // Helper routine: get klass name + "." + method name + signature as
-  // C string, for the purpose of providing more useful NoSuchMethodErrors
-  // and fatal error handling. The string is allocated in resource
-  // area if a buffer is not provided by the caller.
-  char* name_and_sig_as_C_string() const;
-  char* name_and_sig_as_C_string(char* buf, int size) const;
-
-  // Static routine in the situations we don't have a methodOop
-  static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature);
-  static char* name_and_sig_as_C_string(Klass* klass, Symbol* method_name, Symbol* signature, char* buf, int size);
-
-  Bytecodes::Code java_code_at(int bci) const {
-    return Bytecodes::java_code_at(this, bcp_from(bci));
-  }
-  Bytecodes::Code code_at(int bci) const {
-    return Bytecodes::code_at(this, bcp_from(bci));
-  }
-
-  // JVMTI breakpoints
-  Bytecodes::Code orig_bytecode_at(int bci) const;
-  void        set_orig_bytecode_at(int bci, Bytecodes::Code code);
-  void set_breakpoint(int bci);
-  void clear_breakpoint(int bci);
-  void clear_all_breakpoints();
-  // Tracking number of breakpoints, for fullspeed debugging.
-  // Only mutated by VM thread.
-  u2   number_of_breakpoints() const             { return _number_of_breakpoints; }
-  void incr_number_of_breakpoints()              { ++_number_of_breakpoints; }
-  void decr_number_of_breakpoints()              { --_number_of_breakpoints; }
-  // Initialization only
-  void clear_number_of_breakpoints()             { _number_of_breakpoints = 0; }
-
-  // index into instanceKlass methods() array
-  // note: also used by jfr
-  u2 method_idnum() const           { return constMethod()->method_idnum(); }
-  void set_method_idnum(u2 idnum)   { constMethod()->set_method_idnum(idnum); }
-
-  // code size
-  int code_size() const                  { return constMethod()->code_size(); }
-
-  // method size
-  int method_size() const                        { return _method_size; }
-  void set_method_size(int size) {
-    assert(0 <= size && size < (1 << 16), "invalid method size");
-    _method_size = size;
-  }
-
-  // constant pool for klassOop holding this method
-  constantPoolOop constants() const              { return constMethod()->constants(); }
-  void set_constants(constantPoolOop c)          { constMethod()->set_constants(c); }
-
-  // max stack
-  // return original max stack size for method verification
-  int  verifier_max_stack() const                { return _max_stack; }
-  int           max_stack() const                { return _max_stack + extra_stack_entries(); }
-  void      set_max_stack(int size)              {        _max_stack = size; }
-
-  // max locals
-  int  max_locals() const                        { return _max_locals; }
-  void set_max_locals(int size)                  { _max_locals = size; }
-
-  int highest_comp_level() const;
-  void set_highest_comp_level(int level);
-  int highest_osr_comp_level() const;
-  void set_highest_osr_comp_level(int level);
-
-  // Count of times method was exited via exception while interpreting
-  void interpreter_throwout_increment() {
-    if (_interpreter_throwout_count < 65534) {
-      _interpreter_throwout_count++;
-    }
-  }
-
-  int  interpreter_throwout_count() const        { return _interpreter_throwout_count; }
-  void set_interpreter_throwout_count(int count) { _interpreter_throwout_count = count; }
-
-  // size of parameters
-  int  size_of_parameters() const                { return _size_of_parameters; }
-
-  bool has_stackmap_table() const {
-    return constMethod()->has_stackmap_table();
-  }
-
-  typeArrayOop stackmap_data() const {
-    return constMethod()->stackmap_data();
-  }
-
-  void set_stackmap_data(typeArrayOop sd) {
-    constMethod()->set_stackmap_data(sd);
-  }
-
-  // exception handler table
-  bool has_exception_handler() const
-                             { return constMethod()->has_exception_handler(); }
-  int exception_table_length() const
-                             { return constMethod()->exception_table_length(); }
-  ExceptionTableElement* exception_table_start() const
-                             { return constMethod()->exception_table_start(); }
-
-  // Finds the first entry point bci of an exception handler for an
-  // exception of klass ex_klass thrown at throw_bci. A value of NULL
-  // for ex_klass indicates that the exception klass is not known; in
-  // this case it matches any constraint class. Returns -1 if the
-  // exception cannot be handled in this method. The handler
-  // constraint classes are loaded if necessary. Note that this may
-  // throw an exception if loading of the constraint classes causes
-  // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
-  // If an exception is thrown, returns the bci of the
-  // exception handler which caused the exception to be thrown, which
-  // is needed for proper retries. See, for example,
-  // InterpreterRuntime::exception_handler_for_exception.
-  int fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS);
-
-  // method data access
-  methodDataOop method_data() const              {
-    return _method_data;
-  }
-  void set_method_data(methodDataOop data)       {
-    oop_store_without_check((oop*)&_method_data, (oop)data);
-  }
-
-  // invocation counter
-  InvocationCounter* invocation_counter() { return &_invocation_counter; }
-  InvocationCounter* backedge_counter()   { return &_backedge_counter; }
-
-#ifdef TIERED
-  // We are reusing interpreter_invocation_count as a holder for the previous event count!
-  // We can do that since interpreter_invocation_count is not used in tiered.
-  int prev_event_count() const                   { return _interpreter_invocation_count;  }
-  void set_prev_event_count(int count)           { _interpreter_invocation_count = count; }
-  jlong prev_time() const                        { return _prev_time; }
-  void set_prev_time(jlong time)                 { _prev_time = time; }
-  float rate() const                             { return _rate; }
-  void set_rate(float rate)                      { _rate = rate; }
-#endif
-
-  int invocation_count();
-  int backedge_count();
-
-  bool was_executed_more_than(int n);
-  bool was_never_executed()                      { return !was_executed_more_than(0); }
-
-  static void build_interpreter_method_data(methodHandle method, TRAPS);
-
-  int interpreter_invocation_count() {
-    if (TieredCompilation) return invocation_count();
-    else return _interpreter_invocation_count;
-  }
-  void set_interpreter_invocation_count(int count) { _interpreter_invocation_count = count; }
-  int increment_interpreter_invocation_count() {
-    if (TieredCompilation) ShouldNotReachHere();
-    return ++_interpreter_invocation_count;
-  }
-
-#ifndef PRODUCT
-  int  compiled_invocation_count() const         { return _compiled_invocation_count;  }
-  void set_compiled_invocation_count(int count)  { _compiled_invocation_count = count; }
-#endif // not PRODUCT
-
-  // Clear (non-shared space) pointers which could not be relevant
-  // if this (shared) method were mapped into another JVM.
-  void remove_unshareable_info();
-
-  // nmethod/verified compiler entry
-  address verified_code_entry();
-  bool check_code() const;      // Not inline to avoid circular ref
-  nmethod* volatile code() const                 { assert( check_code(), "" ); return (nmethod *)OrderAccess::load_ptr_acquire(&_code); }
-  void clear_code();            // Clear out any compiled code
-  static void set_code(methodHandle mh, nmethod* code);
-  void set_adapter_entry(AdapterHandlerEntry* adapter) {  _adapter = adapter; }
-  address get_i2c_entry();
-  address get_c2i_entry();
-  address get_c2i_unverified_entry();
-  AdapterHandlerEntry* adapter() {  return _adapter; }
-  // setup entry points
-  void link_method(methodHandle method, TRAPS);
-  // clear entry points. Used by sharing code
-  void unlink_method();
-
-  // vtable index
-  enum VtableIndexFlag {
-    // Valid vtable indexes are non-negative (>= 0).
-    // These few negative values are used as sentinels.
-    highest_unused_vtable_index_value = -5,
-    invalid_vtable_index    = -4,  // distinct from any valid vtable index
-    garbage_vtable_index    = -3,  // not yet linked; no vtable layout yet
-    nonvirtual_vtable_index = -2   // there is no need for vtable dispatch
-    // 6330203 Note:  Do not use -1, which was overloaded with many meanings.
-  };
-  DEBUG_ONLY(bool valid_vtable_index() const     { return _vtable_index >= nonvirtual_vtable_index; })
-  int  vtable_index() const                      { assert(valid_vtable_index(), "");
-                                                   return _vtable_index; }
-  void set_vtable_index(int index)               { _vtable_index = index; }
-
-  // interpreter entry
-  address interpreter_entry() const              { return _i2i_entry; }
-  // Only used when first initialize so we can set _i2i_entry and _from_interpreted_entry
-  void set_interpreter_entry(address entry)      { _i2i_entry = entry;  _from_interpreted_entry = entry; }
-  int  interpreter_kind(void) {
-     return constMethod()->interpreter_kind();
-  }
-  void set_interpreter_kind();
-  void set_interpreter_kind(int kind) {
-    constMethod()->set_interpreter_kind(kind);
-  }
-
-  // native function (used for native methods only)
-  enum {
-    native_bind_event_is_interesting = true
-  };
-  address native_function() const                { return *(native_function_addr()); }
-  address critical_native_function();
-
-  // Must specify a real function (not NULL).
-  // Use clear_native_function() to unregister.
-  void set_native_function(address function, bool post_event_flag);
-  bool has_native_function() const;
-  void clear_native_function();
-
-  // signature handler (used for native methods only)
-  address signature_handler() const              { return *(signature_handler_addr()); }
-  void set_signature_handler(address handler);
-
-  // Interpreter oopmap support
-  void mask_for(int bci, InterpreterOopMap* mask);
-
-#ifndef PRODUCT
-  // operations on invocation counter
-  void print_invocation_count();
-#endif
-
-  // byte codes
-  void    set_code(address code)      { return constMethod()->set_code(code); }
-  address code_base() const           { return constMethod()->code_base(); }
-  bool    contains(address bcp) const { return constMethod()->contains(bcp); }
-
-  // prints byte codes
-  void print_codes() const            { print_codes_on(tty); }
-  void print_codes_on(outputStream* st) const                      PRODUCT_RETURN;
-  void print_codes_on(int from, int to, outputStream* st) const    PRODUCT_RETURN;
-
-  // checked exceptions
-  int checked_exceptions_length() const
-                         { return constMethod()->checked_exceptions_length(); }
-  CheckedExceptionElement* checked_exceptions_start() const
-                          { return constMethod()->checked_exceptions_start(); }
-
-  // localvariable table
-  bool has_localvariable_table() const
-                          { return constMethod()->has_localvariable_table(); }
-  int localvariable_table_length() const
-                        { return constMethod()->localvariable_table_length(); }
-  LocalVariableTableElement* localvariable_table_start() const
-                         { return constMethod()->localvariable_table_start(); }
-
-  bool has_linenumber_table() const
-                              { return constMethod()->has_linenumber_table(); }
-  u_char* compressed_linenumber_table() const
-                       { return constMethod()->compressed_linenumber_table(); }
-
-  // method holder (the klassOop holding this method)
-  klassOop method_holder() const                 { return constants()->pool_holder(); }
-
-  void compute_size_of_parameters(Thread *thread); // word size of parameters (receiver if any + arguments)
-  Symbol* klass_name() const;                    // returns the name of the method holder
-  BasicType result_type() const;                 // type of the method result
-  int result_type_index() const;                 // type index of the method result
-  bool is_returning_oop() const                  { BasicType r = result_type(); return (r == T_OBJECT || r == T_ARRAY); }
-  bool is_returning_fp() const                   { BasicType r = result_type(); return (r == T_FLOAT || r == T_DOUBLE); }
-
-  // Checked exceptions thrown by this method (resolved to mirrors)
-  objArrayHandle resolved_checked_exceptions(TRAPS) { return resolved_checked_exceptions_impl(this, THREAD); }
-
-  // Access flags
-  bool is_public() const                         { return access_flags().is_public();      }
-  bool is_private() const                        { return access_flags().is_private();     }
-  bool is_protected() const                      { return access_flags().is_protected();   }
-  bool is_package_private() const                { return !is_public() && !is_private() && !is_protected(); }
-  bool is_static() const                         { return access_flags().is_static();      }
-  bool is_final() const                          { return access_flags().is_final();       }
-  bool is_synchronized() const                   { return access_flags().is_synchronized();}
-  bool is_native() const                         { return access_flags().is_native();      }
-  bool is_abstract() const                       { return access_flags().is_abstract();    }
-  bool is_strict() const                         { return access_flags().is_strict();      }
-  bool is_synthetic() const                      { return access_flags().is_synthetic();   }
-
-  // returns true if contains only return operation
-  bool is_empty_method() const;
-
-  // returns true if this is a vanilla constructor
-  bool is_vanilla_constructor() const;
-
-  // checks method and its method holder
-  bool is_final_method() const;
-  bool is_strict_method() const;
-
-  // true if method needs no dynamic dispatch (final and/or no vtable entry)
-  bool can_be_statically_bound() const;
-
-  // returns true if the method has any backward branches.
-  bool has_loops() {
-    return access_flags().loops_flag_init() ? access_flags().has_loops() : compute_has_loops_flag();
-  };
-
-  bool compute_has_loops_flag();
-
-  bool has_jsrs() {
-    return access_flags().has_jsrs();
-  };
-  void set_has_jsrs() {
-    _access_flags.set_has_jsrs();
-  }
-
-  // returns true if the method has any monitors.
-  bool has_monitors() const                      { return is_synchronized() || access_flags().has_monitor_bytecodes(); }
-  bool has_monitor_bytecodes() const             { return access_flags().has_monitor_bytecodes(); }
-
-  void set_has_monitor_bytecodes()               { _access_flags.set_has_monitor_bytecodes(); }
-
-  // monitor matching. This returns a conservative estimate of whether the monitorenter/monitorexit bytecodes
-  // propererly nest in the method. It might return false, even though they actually nest properly, since the info.
-  // has not been computed yet.
-  bool guaranteed_monitor_matching() const       { return access_flags().is_monitor_matching(); }
-  void set_guaranteed_monitor_matching()         { _access_flags.set_monitor_matching(); }
-
-  // returns true if the method is an accessor function (setter/getter).
-  bool is_accessor() const;
-
-  // returns true if the method is an initializer (<init> or <clinit>).
-  bool is_initializer() const;
-
-  // returns true if the method is static OR if the classfile version < 51
-  bool has_valid_initializer_flags() const;
-
-  // returns true if the method name is <clinit> and the method has
-  // valid static initializer flags.
-  bool is_static_initializer() const;
-
-  // compiled code support
-  // NOTE: code() is inherently racy as deopt can be clearing code
-  // simultaneously. Use with caution.
-  bool has_compiled_code() const                 { return code() != NULL; }
-
-  // sizing
-  static int object_size(bool is_native);
-  static int header_size()                       { return sizeof(methodOopDesc)/HeapWordSize; }
-  int object_size() const                        { return method_size(); }
-
-  bool object_is_parsable() const                { return method_size() > 0; }
-
-  // interpreter support
-  static ByteSize const_offset()                 { return byte_offset_of(methodOopDesc, _constMethod       ); }
-  static ByteSize access_flags_offset()          { return byte_offset_of(methodOopDesc, _access_flags      ); }
-#ifdef CC_INTERP
-  static ByteSize result_index_offset()          { return byte_offset_of(methodOopDesc, _result_index ); }
-#endif /* CC_INTERP */
-  static ByteSize size_of_locals_offset()        { return byte_offset_of(methodOopDesc, _max_locals        ); }
-  static ByteSize size_of_parameters_offset()    { return byte_offset_of(methodOopDesc, _size_of_parameters); }
-  static ByteSize from_compiled_offset()         { return byte_offset_of(methodOopDesc, _from_compiled_entry); }
-  static ByteSize code_offset()                  { return byte_offset_of(methodOopDesc, _code); }
-  static ByteSize invocation_counter_offset()    { return byte_offset_of(methodOopDesc, _invocation_counter); }
-  static ByteSize backedge_counter_offset()      { return byte_offset_of(methodOopDesc, _backedge_counter); }
-  static ByteSize method_data_offset()           {
-    return byte_offset_of(methodOopDesc, _method_data);
-  }
-  static ByteSize interpreter_invocation_counter_offset() { return byte_offset_of(methodOopDesc, _interpreter_invocation_count); }
-#ifndef PRODUCT
-  static ByteSize compiled_invocation_counter_offset() { return byte_offset_of(methodOopDesc, _compiled_invocation_count); }
-#endif // not PRODUCT
-  static ByteSize native_function_offset()       { return in_ByteSize(sizeof(methodOopDesc));                 }
-  static ByteSize from_interpreted_offset()      { return byte_offset_of(methodOopDesc, _from_interpreted_entry ); }
-  static ByteSize interpreter_entry_offset()     { return byte_offset_of(methodOopDesc, _i2i_entry ); }
-  static ByteSize signature_handler_offset()     { return in_ByteSize(sizeof(methodOopDesc) + wordSize);      }
-  static ByteSize max_stack_offset()             { return byte_offset_of(methodOopDesc, _max_stack         ); }
-
-  // for code generation
-  static int method_data_offset_in_bytes()       { return offset_of(methodOopDesc, _method_data); }
-  static int interpreter_invocation_counter_offset_in_bytes()
-                                                 { return offset_of(methodOopDesc, _interpreter_invocation_count); }
-  static int intrinsic_id_offset_in_bytes()      { return offset_of(methodOopDesc, _intrinsic_id); }
-  static int intrinsic_id_size_in_bytes()        { return sizeof(u1); }
-
-  // Static methods that are used to implement member methods where an exposed this pointer
-  // is needed due to possible GCs
-  static objArrayHandle resolved_checked_exceptions_impl(methodOop this_oop, TRAPS);
-
-  // Returns the byte code index from the byte code pointer
-  int     bci_from(address bcp) const;
-  address bcp_from(int     bci) const;
-  int validate_bci_from_bcx(intptr_t bcx) const;
-
-  // Returns the line number for a bci if debugging information for the method is prowided,
-  // -1 is returned otherwise.
-  int line_number_from_bci(int bci) const;
-
-  // Reflection support
-  bool is_overridden_in(klassOop k) const;
-
-  // JSR 292 support
-  bool is_method_handle_intrinsic() const;          // MethodHandles::is_signature_polymorphic_intrinsic(intrinsic_id)
-  bool is_compiled_lambda_form() const;             // intrinsic_id() == vmIntrinsics::_compiledLambdaForm
-  bool has_member_arg() const;                      // intrinsic_id() == vmIntrinsics::_linkToSpecial, etc.
-  static methodHandle make_method_handle_intrinsic(vmIntrinsics::ID iid, // _invokeBasic, _linkToVirtual
-                                                   Symbol* signature, //anything at all
-                                                   TRAPS);
-  static klassOop check_non_bcp_klass(klassOop klass);
-  // these operate only on invoke methods:
-  // presize interpreter frames for extra interpreter stack entries, if needed
-  // method handles want to be able to push a few extra values (e.g., a bound receiver), and
-  // invokedynamic sometimes needs to push a bootstrap method, call site, and arglist,
-  // all without checking for a stack overflow
-  static int extra_stack_entries() { return EnableInvokeDynamic ? 2 : 0; }
-  static int extra_stack_words();  // = extra_stack_entries() * Interpreter::stackElementSize()
-
-  // RedefineClasses() support:
-  bool is_old() const                               { return access_flags().is_old(); }
-  void set_is_old()                                 { _access_flags.set_is_old(); }
-  bool is_obsolete() const                          { return access_flags().is_obsolete(); }
-  void set_is_obsolete()                            { _access_flags.set_is_obsolete(); }
-  // see the definition in methodOop.cpp for the gory details
-  bool should_not_be_cached() const;
-
-  // JVMTI Native method prefixing support:
-  bool is_prefixed_native() const                   { return access_flags().is_prefixed_native(); }
-  void set_is_prefixed_native()                     { _access_flags.set_is_prefixed_native(); }
-
-  // Rewriting support
-  static methodHandle clone_with_new_data(methodHandle m, u_char* new_code, int new_code_length,
-                                          u_char* new_compressed_linenumber_table, int new_compressed_linenumber_size, TRAPS);
-
-  // Get this method's jmethodID -- allocate if it doesn't exist
-  jmethodID jmethod_id()                            { methodHandle this_h(this);
-                                                      return instanceKlass::get_jmethod_id(method_holder(), this_h); }
-
-  // Lookup the jmethodID for this method.  Return NULL if not found.
-  // NOTE that this function can be called from a signal handler
-  // (see AsyncGetCallTrace support for Forte Analyzer) and this
-  // needs to be async-safe. No allocation should be done and
-  // so handles are not used to avoid deadlock.
-  jmethodID find_jmethod_id_or_null()               { return instanceKlass::cast(method_holder())->jmethod_id_or_null(this); }
-
-  // JNI static invoke cached itable index accessors
-  int cached_itable_index()                         { return instanceKlass::cast(method_holder())->cached_itable_index(method_idnum()); }
-  void set_cached_itable_index(int index)           { instanceKlass::cast(method_holder())->set_cached_itable_index(method_idnum(), index); }
-
-  // Support for inlining of intrinsic methods
-  vmIntrinsics::ID intrinsic_id() const          { return (vmIntrinsics::ID) _intrinsic_id;           }
-  void     set_intrinsic_id(vmIntrinsics::ID id) {                           _intrinsic_id = (u1) id; }
-
-  // Helper routines for intrinsic_id() and vmIntrinsics::method().
-  void init_intrinsic_id();     // updates from _none if a match
-  static vmSymbols::SID klass_id_for_intrinsics(klassOop holder);
-
-  bool jfr_towrite()                 { return _jfr_towrite; }
-  void set_jfr_towrite(bool towrite) { _jfr_towrite = towrite; }
-
-  bool     force_inline()       { return _force_inline;     }
-  void set_force_inline(bool x) {        _force_inline = x; }
-  bool     dont_inline()        { return _dont_inline;      }
-  void set_dont_inline(bool x)  {        _dont_inline = x;  }
-  bool  is_hidden()             { return _hidden;           }
-  void set_hidden(bool x)       {        _hidden = x;       }
-
-  // On-stack replacement support
-  bool has_osr_nmethod(int level, bool match_level) {
-   return instanceKlass::cast(method_holder())->lookup_osr_nmethod(this, InvocationEntryBci, level, match_level) != NULL;
-  }
-
-  nmethod* lookup_osr_nmethod_for(int bci, int level, bool match_level) {
-    return instanceKlass::cast(method_holder())->lookup_osr_nmethod(this, bci, level, match_level);
-  }
-
-  // Inline cache support
-  void cleanup_inline_caches();
-
-  // Find if klass for method is loaded
-  bool is_klass_loaded_by_klass_index(int klass_index) const;
-  bool is_klass_loaded(int refinfo_index, bool must_be_resolved = false) const;
-
-  // Indicates whether compilation failed earlier for this method, or
-  // whether it is not compilable for another reason like having a
-  // breakpoint set in it.
-  bool is_not_compilable(int comp_level = CompLevel_any) const;
-  void set_not_compilable(int comp_level = CompLevel_all, bool report = true);
-  void set_not_compilable_quietly(int comp_level = CompLevel_all) {
-    set_not_compilable(comp_level, false);
-  }
-  bool is_not_osr_compilable(int comp_level = CompLevel_any) const {
-    return is_not_compilable(comp_level) || access_flags().is_not_osr_compilable();
-  }
-  void set_not_osr_compilable()               { _access_flags.set_not_osr_compilable();       }
-  bool is_not_c1_compilable() const           { return access_flags().is_not_c1_compilable(); }
-  void set_not_c1_compilable()                { _access_flags.set_not_c1_compilable();        }
-  bool is_not_c2_compilable() const           { return access_flags().is_not_c2_compilable(); }
-  void set_not_c2_compilable()                { _access_flags.set_not_c2_compilable();        }
-
-  // Background compilation support
-  bool queued_for_compilation() const  { return access_flags().queued_for_compilation(); }
-  void set_queued_for_compilation()    { _access_flags.set_queued_for_compilation();     }
-  void clear_queued_for_compilation()  { _access_flags.clear_queued_for_compilation();   }
-
-  // Resolve all classes in signature, return 'true' if successful
-  static bool load_signature_classes(methodHandle m, TRAPS);
-
-  // Return if true if not all classes references in signature, including return type, has been loaded
-  static bool has_unloaded_classes_in_signature(methodHandle m, TRAPS);
-
-  // Printing
-  void print_short_name(outputStream* st = tty)  /*PRODUCT_RETURN*/; // prints as klassname::methodname; Exposed so field engineers can debug VM
-  void print_name(outputStream* st = tty)        PRODUCT_RETURN; // prints as "virtual void foo(int)"
-
-  // Helper routine used for method sorting
-  static void sort_methods(objArrayOop methods,
-                           objArrayOop methods_annotations,
-                           objArrayOop methods_parameter_annotations,
-                           objArrayOop methods_default_annotations,
-                           bool idempotent = false);
-
-  // size of parameters
-  void set_size_of_parameters(int size)          { _size_of_parameters = size; }
- private:
-
-  // Inlined elements
-  address* native_function_addr() const          { assert(is_native(), "must be native"); return (address*) (this+1); }
-  address* signature_handler_addr() const        { return native_function_addr() + 1; }
-
-  // Garbage collection support
-  oop*  adr_constMethod() const                  { return (oop*)&_constMethod;     }
-  oop*  adr_method_data() const                  { return (oop*)&_method_data;     }
-};
-
-
-// Utility class for compressing line number tables
-
-class CompressedLineNumberWriteStream: public CompressedWriteStream {
- private:
-  int _bci;
-  int _line;
- public:
-  // Constructor
-  CompressedLineNumberWriteStream(int initial_size) : CompressedWriteStream(initial_size), _bci(0), _line(0) {}
-  CompressedLineNumberWriteStream(u_char* buffer, int initial_size) : CompressedWriteStream(buffer, initial_size), _bci(0), _line(0) {}
-
-  // Write (bci, line number) pair to stream
-  void write_pair_regular(int bci_delta, int line_delta);
-
-  inline void write_pair_inline(int bci, int line) {
-    int bci_delta = bci - _bci;
-    int line_delta = line - _line;
-    _bci = bci;
-    _line = line;
-    // Skip (0,0) deltas - they do not add information and conflict with terminator.
-    if (bci_delta == 0 && line_delta == 0) return;
-    // Check if bci is 5-bit and line number 3-bit unsigned.
-    if (((bci_delta & ~0x1F) == 0) && ((line_delta & ~0x7) == 0)) {
-      // Compress into single byte.
-      jubyte value = ((jubyte) bci_delta << 3) | (jubyte) line_delta;
-      // Check that value doesn't match escape character.
-      if (value != 0xFF) {
-        write_byte(value);
-        return;
-      }
-    }
-    write_pair_regular(bci_delta, line_delta);
-  }
-
-// Windows AMD64 + Apr 2005 PSDK with /O2 generates bad code for write_pair.
-// Disabling optimization doesn't work for methods in header files
-// so we force it to call through the non-optimized version in the .cpp.
-// It's gross, but it's the only way we can ensure that all callers are
-// fixed.  _MSC_VER is defined by the windows compiler
-#if defined(_M_AMD64) && _MSC_VER >= 1400
-  void write_pair(int bci, int line);
-#else
-  void write_pair(int bci, int line) { write_pair_inline(bci, line); }
-#endif
-
-  // Write end-of-stream marker
-  void write_terminator()                        { write_byte(0); }
-};
-
-
-// Utility class for decompressing line number tables
-
-class CompressedLineNumberReadStream: public CompressedReadStream {
- private:
-  int _bci;
-  int _line;
- public:
-  // Constructor
-  CompressedLineNumberReadStream(u_char* buffer);
-  // Read (bci, line number) pair from stream. Returns false at end-of-stream.
-  bool read_pair();
-  // Accessing bci and line number (after calling read_pair)
-  int bci() const                               { return _bci; }
-  int line() const                              { return _line; }
-};
-
-
-/// Fast Breakpoints.
-
-// If this structure gets more complicated (because bpts get numerous),
-// move it into its own header.
-
-// There is presently no provision for concurrent access
-// to breakpoint lists, which is only OK for JVMTI because
-// breakpoints are written only at safepoints, and are read
-// concurrently only outside of safepoints.
-
-class BreakpointInfo : public CHeapObj<mtClass> {
-  friend class VMStructs;
- private:
-  Bytecodes::Code  _orig_bytecode;
-  int              _bci;
-  u2               _name_index;       // of method
-  u2               _signature_index;  // of method
-  BreakpointInfo*  _next;             // simple storage allocation
-
- public:
-  BreakpointInfo(methodOop m, int bci);
-
-  // accessors
-  Bytecodes::Code orig_bytecode()                     { return _orig_bytecode; }
-  void        set_orig_bytecode(Bytecodes::Code code) { _orig_bytecode = code; }
-  int         bci()                                   { return _bci; }
-
-  BreakpointInfo*          next() const               { return _next; }
-  void                 set_next(BreakpointInfo* n)    { _next = n; }
-
-  // helps for searchers
-  bool match(const methodOopDesc* m, int bci) {
-    return bci == _bci && match(m);
-  }
-
-  bool match(const methodOopDesc* m) {
-    return _name_index == m->name_index() &&
-      _signature_index == m->signature_index();
-  }
-
-  void set(methodOop method);
-  void clear(methodOop method);
-};
-
-// Utility class for access exception handlers
-class ExceptionTable : public StackObj {
- private:
-  ExceptionTableElement* _table;
-  u2  _length;
-
- public:
-  ExceptionTable(methodOop m) {
-    if (m->has_exception_handler()) {
-      _table = m->exception_table_start();
-      _length = m->exception_table_length();
-    } else {
-      _table = NULL;
-      _length = 0;
-    }
-  }
-
-  int length() const {
-    return _length;
-  }
-
-  u2 start_pc(int idx) const {
-    assert(idx < _length, "out of bounds");
-    return _table[idx].start_pc;
-  }
-
-  void set_start_pc(int idx, u2 value) {
-    assert(idx < _length, "out of bounds");
-    _table[idx].start_pc = value;
-  }
-
-  u2 end_pc(int idx) const {
-    assert(idx < _length, "out of bounds");
-    return _table[idx].end_pc;
-  }
-
-  void set_end_pc(int idx, u2 value) {
-    assert(idx < _length, "out of bounds");
-    _table[idx].end_pc = value;
-  }
-
-  u2 handler_pc(int idx) const {
-    assert(idx < _length, "out of bounds");
-    return _table[idx].handler_pc;
-  }
-
-  void set_handler_pc(int idx, u2 value) {
-    assert(idx < _length, "out of bounds");
-    _table[idx].handler_pc = value;
-  }
-
-  u2 catch_type_index(int idx) const {
-    assert(idx < _length, "out of bounds");
-    return _table[idx].catch_type_index;
-  }
-
-  void set_catch_type_index(int idx, u2 value) {
-    assert(idx < _length, "out of bounds");
-    _table[idx].catch_type_index = value;
-  }
-};
-
-#endif // SHARE_VM_OOPS_METHODOOP_HPP
--- a/src/share/vm/oops/objArrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/objArrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,17 +23,19 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "gc_implementation/shared/markSweep.inline.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
 #include "memory/genOopClosures.inline.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/instanceKlass.hpp"
+#include "oops/klass.inline.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/objArrayKlass.inline.hpp"
-#include "oops/objArrayKlassKlass.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
@@ -42,6 +44,7 @@
 #include "runtime/mutexLocker.hpp"
 #include "utilities/copy.hpp"
 #ifndef SERIALGC
+#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
 #include "gc_implementation/g1/g1OopClosures.inline.hpp"
 #include "gc_implementation/g1/g1RemSet.inline.hpp"
@@ -53,6 +56,131 @@
 #include "oops/oop.pcgc.inline.hpp"
 #endif
 
+objArrayKlass* objArrayKlass::allocate(ClassLoaderData* loader_data, int n, KlassHandle klass_handle, Symbol* name, TRAPS) {
+  assert(objArrayKlass::header_size() <= InstanceKlass::header_size(),
+      "array klasses must be same size as InstanceKlass");
+
+  int size = arrayKlass::static_size(objArrayKlass::header_size());
+
+  return new (loader_data, size, THREAD) objArrayKlass(n, klass_handle, name);
+}
+
+Klass* objArrayKlass::allocate_objArray_klass(ClassLoaderData* loader_data,
+                                                int n, KlassHandle element_klass, TRAPS) {
+
+  // Eagerly allocate the direct array supertype.
+  KlassHandle super_klass = KlassHandle();
+  if (!Universe::is_bootstrapping() || SystemDictionary::Object_klass_loaded()) {
+    KlassHandle element_super (THREAD, element_klass->super());
+    if (element_super.not_null()) {
+      // The element type has a direct super.  E.g., String[] has direct super of Object[].
+      super_klass = KlassHandle(THREAD, element_super->array_klass_or_null());
+      bool supers_exist = super_klass.not_null();
+      // Also, see if the element has secondary supertypes.
+      // We need an array type for each.
+      Array<Klass*>* element_supers = element_klass->secondary_supers();
+      for( int i = element_supers->length()-1; i >= 0; i-- ) {
+        Klass* elem_super = element_supers->at(i);
+        if (Klass::cast(elem_super)->array_klass_or_null() == NULL) {
+          supers_exist = false;
+          break;
+        }
+      }
+      if (!supers_exist) {
+        // Oops.  Not allocated yet.  Back out, allocate it, and retry.
+#ifndef PRODUCT
+        if (WizardMode) {
+          tty->print_cr("Must retry array klass creation for depth %d",n);
+        }
+#endif
+        KlassHandle ek;
+        {
+          MutexUnlocker mu(MultiArray_lock);
+          MutexUnlocker mc(Compile_lock);   // for vtables
+          Klass* sk = element_super->array_klass(CHECK_0);
+          super_klass = KlassHandle(THREAD, sk);
+          for( int i = element_supers->length()-1; i >= 0; i-- ) {
+            KlassHandle elem_super (THREAD, element_supers->at(i));
+            elem_super->array_klass(CHECK_0);
+          }
+          // Now retry from the beginning
+          Klass* klass_oop = element_klass->array_klass(n, CHECK_0);
+          // Create a handle because the enclosing brace, when locking
+          // can cause a gc.  Better to have this function return a Handle.
+          ek = KlassHandle(THREAD, klass_oop);
+        }  // re-lock
+        return ek();
+      }
+    } else {
+      // The element type is already Object.  Object[] has direct super of Object.
+      super_klass = KlassHandle(THREAD, SystemDictionary::Object_klass());
+    }
+  }
+
+  // Create type name for klass.
+  Symbol* name = NULL;
+  if (!element_klass->oop_is_instance() ||
+      (name = InstanceKlass::cast(element_klass())->array_name()) == NULL) {
+
+    ResourceMark rm(THREAD);
+    char *name_str = element_klass->name()->as_C_string();
+    int len = element_klass->name()->utf8_length();
+    char *new_str = NEW_RESOURCE_ARRAY(char, len + 4);
+    int idx = 0;
+    new_str[idx++] = '[';
+    if (element_klass->oop_is_instance()) { // it could be an array or simple type
+      new_str[idx++] = 'L';
+    }
+    memcpy(&new_str[idx], name_str, len * sizeof(char));
+    idx += len;
+    if (element_klass->oop_is_instance()) {
+      new_str[idx++] = ';';
+    }
+    new_str[idx++] = '\0';
+    name = SymbolTable::new_permanent_symbol(new_str, CHECK_0);
+    if (element_klass->oop_is_instance()) {
+      InstanceKlass* ik = InstanceKlass::cast(element_klass());
+      ik->set_array_name(name);
+    }
+  }
+
+  // Initialize instance variables
+  objArrayKlass* oak = objArrayKlass::allocate(loader_data, n, element_klass, name, CHECK_0);
+
+  // Add all classes to our internal class loader list here,
+  // including classes in the bootstrap (NULL) class loader.
+  // GC walks these as strong roots.
+  loader_data->add_class(oak);
+
+  // Call complete_create_array_klass after all instance variables has been initialized.
+  arrayKlass::complete_create_array_klass(oak, super_klass, CHECK_0);
+
+  return oak;
+}
+
+objArrayKlass::objArrayKlass(int n, KlassHandle element_klass, Symbol* name) : arrayKlass(name) {
+  this->set_dimension(n);
+  this->set_element_klass(element_klass());
+  // decrement refcount because object arrays are not explicitly freed.  The
+  // InstanceKlass array_name() keeps the name counted while the klass is
+  // loaded.
+  name->decrement_refcount();
+
+  Klass* bk;
+  if (element_klass->oop_is_objArray()) {
+    bk = objArrayKlass::cast(element_klass())->bottom_klass();
+  } else {
+    bk = element_klass();
+  }
+  assert(bk != NULL && (Klass::cast(bk)->oop_is_instance() || Klass::cast(bk)->oop_is_typeArray()), "invalid bottom klass");
+  this->set_bottom_klass(bk);
+  this->set_class_loader_data(bk->class_loader_data());
+
+  this->set_layout_helper(array_layout_helper(T_OBJECT));
+  assert(this->oop_is_array(), "sanity");
+  assert(this->oop_is_objArray(), "sanity");
+}
+
 int objArrayKlass::oop_size(oop obj) const {
   assert(obj->is_objArray(), "must be object array");
   return objArrayOop(obj)->object_size();
@@ -62,10 +190,8 @@
   if (length >= 0) {
     if (length <= arrayOopDesc::max_array_length(T_OBJECT)) {
       int size = objArrayOopDesc::object_size(length);
-      KlassHandle h_k(THREAD, as_klassOop());
-      objArrayOop a = (objArrayOop)CollectedHeap::array_allocate(h_k, size, length, CHECK_NULL);
-      assert(a->is_parsable(), "Can't publish unless parsable");
-      return a;
+      KlassHandle h_k(THREAD, this);
+      return (objArrayOop)CollectedHeap::array_allocate(h_k, size, length, CHECK_NULL);
     } else {
       report_java_out_of_memory("Requested array size exceeds VM limit");
       JvmtiExport::post_array_size_exhausted();
@@ -85,14 +211,12 @@
   KlassHandle h_lower_dimension(THREAD, lower_dimension());
   // If length < 0 allocate will throw an exception.
   objArrayOop array = allocate(length, CHECK_NULL);
-  assert(array->is_parsable(), "Don't handlize unless parsable");
   objArrayHandle h_array (THREAD, array);
   if (rank > 1) {
     if (length != 0) {
       for (int index = 0; index < length; index++) {
         arrayKlass* ak = arrayKlass::cast(h_lower_dimension());
         oop sub_array = ak->multi_allocate(rank-1, &sizes[1], CHECK_NULL);
-        assert(sub_array->is_parsable(), "Don't publish until parsable");
         h_array->obj_at_put(index, sub_array);
       }
     } else {
@@ -128,8 +252,8 @@
     Copy::conjoint_oops_atomic(src, dst, length);
   } else {
     // We have to make sure all elements conform to the destination array
-    klassOop bound = objArrayKlass::cast(d->klass())->element_klass();
-    klassOop stype = objArrayKlass::cast(s->klass())->element_klass();
+    Klass* bound = objArrayKlass::cast(d->klass())->element_klass();
+    Klass* stype = objArrayKlass::cast(s->klass())->element_klass();
     if (stype == bound || Klass::cast(stype)->is_subtype_of(bound)) {
       // elements are guaranteed to be subtypes, so no check necessary
       bs->write_ref_array_pre(dst, length);
@@ -203,21 +327,13 @@
 }
 
 
-klassOop objArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
-  objArrayKlassHandle h_this(THREAD, as_klassOop());
-  return array_klass_impl(h_this, or_null, n, CHECK_NULL);
-}
-
-
-klassOop objArrayKlass::array_klass_impl(objArrayKlassHandle this_oop, bool or_null, int n, TRAPS) {
+Klass* objArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
 
-  assert(this_oop->dimension() <= n, "check order of chain");
-  int dimension = this_oop->dimension();
-  if (dimension == n)
-    return this_oop();
+  assert(dimension() <= n, "check order of chain");
+  int dim = dimension();
+  if (dim == n) return this;
 
-  objArrayKlassHandle ak (THREAD, this_oop->higher_dimension());
-  if (ak.is_null()) {
+  if (higher_dimension() == NULL) {
     if (or_null)  return NULL;
 
     ResourceMark rm;
@@ -228,17 +344,15 @@
       MutexLocker mu(MultiArray_lock, THREAD);
 
       // Check if another thread beat us
-      ak = objArrayKlassHandle(THREAD, this_oop->higher_dimension());
-      if( ak.is_null() ) {
+      if (higher_dimension() == NULL) {
 
         // Create multi-dim klass object and link them together
-        klassOop new_klass =
-          objArrayKlassKlass::cast(Universe::objArrayKlassKlassObj())->
-          allocate_objArray_klass(dimension + 1, this_oop, CHECK_NULL);
-        ak = objArrayKlassHandle(THREAD, new_klass);
-        ak->set_lower_dimension(this_oop());
+        Klass* k =
+          objArrayKlass::allocate_objArray_klass(class_loader_data(), dim + 1, this, CHECK_NULL);
+        objArrayKlass* ak = objArrayKlass::cast(k);
+        ak->set_lower_dimension(this);
         OrderAccess::storestore();
-        this_oop->set_higher_dimension(ak());
+        set_higher_dimension(ak);
         assert(ak->oop_is_objArray(), "incorrect initialization of objArrayKlass");
       }
     }
@@ -246,58 +360,58 @@
     CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
   }
 
+  objArrayKlass *ak = objArrayKlass::cast(higher_dimension());
   if (or_null) {
     return ak->array_klass_or_null(n);
   }
   return ak->array_klass(n, CHECK_NULL);
 }
 
-klassOop objArrayKlass::array_klass_impl(bool or_null, TRAPS) {
+Klass* objArrayKlass::array_klass_impl(bool or_null, TRAPS) {
   return array_klass_impl(or_null, dimension() +  1, CHECK_NULL);
 }
 
 bool objArrayKlass::can_be_primary_super_slow() const {
-  if (!bottom_klass()->klass_part()->can_be_primary_super())
+  if (!bottom_klass()->can_be_primary_super())
     // array of interfaces
     return false;
   else
     return Klass::can_be_primary_super_slow();
 }
 
-objArrayOop objArrayKlass::compute_secondary_supers(int num_extra_slots, TRAPS) {
+GrowableArray<Klass*>* objArrayKlass::compute_secondary_supers(int num_extra_slots) {
   // interfaces = { cloneable_klass, serializable_klass, elemSuper[], ... };
-  objArrayOop es = Klass::cast(element_klass())->secondary_supers();
-  objArrayHandle elem_supers (THREAD, es);
-  int num_elem_supers = elem_supers.is_null() ? 0 : elem_supers->length();
+  Array<Klass*>* elem_supers = Klass::cast(element_klass())->secondary_supers();
+  int num_elem_supers = elem_supers == NULL ? 0 : elem_supers->length();
   int num_secondaries = num_extra_slots + 2 + num_elem_supers;
   if (num_secondaries == 2) {
     // Must share this for correct bootstrapping!
-    return Universe::the_array_interfaces_array();
+    set_secondary_supers(Universe::the_array_interfaces_array());
+    return NULL;
   } else {
-    objArrayOop sec_oop = oopFactory::new_system_objArray(num_secondaries, CHECK_NULL);
-    objArrayHandle secondaries(THREAD, sec_oop);
-    secondaries->obj_at_put(num_extra_slots+0, SystemDictionary::Cloneable_klass());
-    secondaries->obj_at_put(num_extra_slots+1, SystemDictionary::Serializable_klass());
+    GrowableArray<Klass*>* secondaries = new GrowableArray<Klass*>(num_elem_supers+2);
+    secondaries->push(SystemDictionary::Cloneable_klass());
+    secondaries->push(SystemDictionary::Serializable_klass());
     for (int i = 0; i < num_elem_supers; i++) {
-      klassOop elem_super = (klassOop) elem_supers->obj_at(i);
-      klassOop array_super = elem_super->klass_part()->array_klass_or_null();
+      Klass* elem_super = (Klass*) elem_supers->at(i);
+      Klass* array_super = elem_super->array_klass_or_null();
       assert(array_super != NULL, "must already have been created");
-      secondaries->obj_at_put(num_extra_slots+2+i, array_super);
+      secondaries->push(array_super);
     }
-    return secondaries();
+    return secondaries;
   }
 }
 
-bool objArrayKlass::compute_is_subtype_of(klassOop k) {
-  if (!k->klass_part()->oop_is_objArray())
+bool objArrayKlass::compute_is_subtype_of(Klass* k) {
+  if (!k->oop_is_objArray())
     return arrayKlass::compute_is_subtype_of(k);
 
   objArrayKlass* oak = objArrayKlass::cast(k);
-  return element_klass()->klass_part()->is_subtype_of(oak->element_klass());
+  return element_klass()->is_subtype_of(oak->element_klass());
 }
 
 void objArrayKlass::initialize(TRAPS) {
-  Klass::cast(bottom_klass())->initialize(THREAD);  // dispatches to either instanceKlass or typeArrayKlass
+  Klass::cast(bottom_klass())->initialize(THREAD);  // dispatches to either InstanceKlass or typeArrayKlass
 }
 
 #define ObjArrayKlass_SPECIALIZED_OOP_ITERATE(T, a, p, do_oop) \
@@ -344,7 +458,7 @@
 
 void objArrayKlass::oop_follow_contents(oop obj) {
   assert (obj->is_array(), "obj must be array");
-  objArrayOop(obj)->follow_header();
+  MarkSweep::follow_klass(obj->klass());
   if (UseCompressedOops) {
     objarray_follow_contents<narrowOop>(obj, 0);
   } else {
@@ -356,7 +470,7 @@
 void objArrayKlass::oop_follow_contents(ParCompactionManager* cm,
                                         oop obj) {
   assert(obj->is_array(), "obj must be array");
-  objArrayOop(obj)->follow_header(cm);
+  PSParallelCompact::follow_klass(cm, obj->klass());
   if (UseCompressedOops) {
     objarray_follow_contents<narrowOop>(cm, obj, 0);
   } else {
@@ -365,6 +479,12 @@
 }
 #endif // SERIALGC
 
+#define if_do_metadata_checked(closure, nv_suffix)                    \
+  /* Make sure the non-virtual and the virtual versions match. */     \
+  assert(closure->do_metadata##nv_suffix() == closure->do_metadata(), \
+      "Inconsistency in do_metadata");                                \
+  if (closure->do_metadata##nv_suffix())
+
 #define ObjArrayKlass_OOP_OOP_ITERATE_DEFN(OopClosureType, nv_suffix)           \
                                                                                 \
 int objArrayKlass::oop_oop_iterate##nv_suffix(oop obj,                          \
@@ -375,8 +495,8 @@
   /* Get size before changing pointers. */                                      \
   /* Don't call size() or oop_size() since that is a virtual call. */           \
   int size = a->object_size();                                                  \
-  if (closure->do_header()) {                                                   \
-    a->oop_iterate_header(closure);                                             \
+  if_do_metadata_checked(closure, nv_suffix) {                                  \
+    closure->do_klass##nv_suffix(obj->klass());                                 \
   }                                                                             \
   ObjArrayKlass_OOP_ITERATE(a, p, (closure)->do_oop##nv_suffix(p))              \
   return size;                                                                  \
@@ -393,8 +513,9 @@
   /* Get size before changing pointers. */                                      \
   /* Don't call size() or oop_size() since that is a virtual call */            \
   int size = a->object_size();                                                  \
-  if (closure->do_header()) {                                                   \
-    a->oop_iterate_header(closure, mr);                                         \
+  if_do_metadata_checked(closure, nv_suffix) {                                  \
+    /* SSS: Do we need to pass down mr here? */                                 \
+    closure->do_klass##nv_suffix(a->klass());                                   \
   }                                                                             \
   ObjArrayKlass_BOUNDED_OOP_ITERATE(                                            \
     a, p, mr.start(), mr.end(), (closure)->do_oop##nv_suffix(p))                \
@@ -419,8 +540,9 @@
     /* this might be wierd if end needs to be aligned on HeapWord boundary */   \
     HeapWord* high = (HeapWord*)((narrowOop*)a->base() + end);                  \
     MemRegion mr(low, high);                                                    \
-    if (closure->do_header()) {                                                 \
-      a->oop_iterate_header(closure, mr);                                       \
+    if_do_metadata_checked(closure, nv_suffix) {                                \
+      /* SSS: Do we need to pass down mr here? */                               \
+      closure->do_klass##nv_suffix(a->klass());                                 \
     }                                                                           \
     ObjArrayKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(narrowOop,                    \
       a, p, low, high, (closure)->do_oop##nv_suffix(p))                         \
@@ -428,8 +550,9 @@
     HeapWord* low = start == 0 ? (HeapWord*)a : (HeapWord*)a->obj_at_addr<oop>(start);  \
     HeapWord* high = (HeapWord*)((oop*)a->base() + end);                        \
     MemRegion mr(low, high);                                                    \
-    if (closure->do_header()) {                                                 \
-      a->oop_iterate_header(closure, mr);                                       \
+    if_do_metadata_checked(closure, nv_suffix) {                                \
+      /* SSS: Do we need to pass down mr here? */                               \
+      closure->do_klass##nv_suffix(a->klass());                                 \
     }                                                                           \
     ObjArrayKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(oop,                          \
       a, p, low, high, (closure)->do_oop##nv_suffix(p))                         \
@@ -450,7 +573,7 @@
   // Get size before changing pointers.
   // Don't call size() or oop_size() since that is a virtual call.
   int size = a->object_size();
-  a->adjust_header();
+  MarkSweep::adjust_klass(a->klass());
   ObjArrayKlass_OOP_ITERATE(a, p, MarkSweep::adjust_pointer(p))
   return size;
 }
@@ -468,8 +591,10 @@
 int objArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
   assert (obj->is_objArray(), "obj must be obj array");
   objArrayOop a = objArrayOop(obj);
+  int size = a->object_size();
+  a->update_header(cm);
   ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
-  return a->object_size();
+  return size;
 }
 #endif // SERIALGC
 
@@ -489,8 +614,25 @@
 }
 
 
+// Printing
+
+void objArrayKlass::print_on(outputStream* st) const {
 #ifndef PRODUCT
-// Printing
+  Klass::print_on(st);
+  st->print(" - instance klass: ");
+  element_klass()->print_value_on(st);
+  st->cr();
+#endif //PRODUCT
+}
+
+void objArrayKlass::print_value_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+
+  element_klass()->print_value_on(st);
+  st->print("[]");
+}
+
+#ifndef PRODUCT
 
 void objArrayKlass::oop_print_on(oop obj, outputStream* st) {
   arrayKlass::oop_print_on(obj, st);
@@ -535,8 +677,19 @@
   return external_name();
 }
 
+
 // Verification
 
+void objArrayKlass::verify_on(outputStream* st) {
+  arrayKlass::verify_on(st);
+  guarantee(element_klass()->is_metadata(), "should be in metaspace");
+  guarantee(element_klass()->is_klass(), "should be klass");
+  guarantee(bottom_klass()->is_metadata(), "should be in metaspace");
+  guarantee(bottom_klass()->is_klass(), "should be klass");
+  Klass* bk = Klass::cast(bottom_klass());
+  guarantee(bk->oop_is_instance() || bk->oop_is_typeArray(),  "invalid bottom klass");
+}
+
 void objArrayKlass::oop_verify_on(oop obj, outputStream* st) {
   arrayKlass::oop_verify_on(obj, st);
   guarantee(obj->is_objArray(), "must be objArray");
--- a/src/share/vm/oops/objArrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/objArrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,40 +25,48 @@
 #ifndef SHARE_VM_OOPS_OBJARRAYKLASS_HPP
 #define SHARE_VM_OOPS_OBJARRAYKLASS_HPP
 
+#include "classfile/classLoaderData.hpp"
 #include "memory/specialized_oop_closures.hpp"
 #include "oops/arrayKlass.hpp"
-#include "oops/instanceKlass.hpp"
 
 // objArrayKlass is the klass for objArrays
 
 class objArrayKlass : public arrayKlass {
   friend class VMStructs;
  private:
-  klassOop _element_klass;            // The klass of the elements of this array type
-  klassOop _bottom_klass;             // The one-dimensional type (instanceKlass or typeArrayKlass)
+  Klass* _element_klass;            // The klass of the elements of this array type
+  Klass* _bottom_klass;             // The one-dimensional type (InstanceKlass or typeArrayKlass)
+
+  // Constructor
+  objArrayKlass(int n, KlassHandle element_klass, Symbol* name);
+  static objArrayKlass* allocate(ClassLoaderData* loader_data, int n, KlassHandle klass_handle, Symbol* name, TRAPS);
  public:
+  // For dummy objects
+  objArrayKlass() {}
+
   // Instance variables
-  klassOop element_klass() const      { return _element_klass; }
-  void set_element_klass(klassOop k)  { oop_store_without_check((oop*) &_element_klass, (oop) k); }
-  oop* element_klass_addr()           { return (oop*)&_element_klass; }
+  Klass* element_klass() const      { return _element_klass; }
+  void set_element_klass(Klass* k)  { _element_klass = k; }
+  Klass** element_klass_addr()      { return &_element_klass; }
 
-  klassOop bottom_klass() const       { return _bottom_klass; }
-  void set_bottom_klass(klassOop k)   { oop_store_without_check((oop*) &_bottom_klass, (oop) k); }
-  oop* bottom_klass_addr()            { return (oop*)&_bottom_klass; }
+  Klass* bottom_klass() const       { return _bottom_klass; }
+  void set_bottom_klass(Klass* k)   { _bottom_klass = k; }
+  Klass** bottom_klass_addr()       { return &_bottom_klass; }
 
   // Compiler/Interpreter offset
-  static ByteSize element_klass_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(objArrayKlass, _element_klass)); }
+  static ByteSize element_klass_offset() { return in_ByteSize(offset_of(objArrayKlass, _element_klass)); }
 
   // Dispatched operation
   bool can_be_primary_super_slow() const;
-  objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
-  bool compute_is_subtype_of(klassOop k);
+  GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots);
+  bool compute_is_subtype_of(Klass* k);
   bool oop_is_objArray_slow()  const  { return true; }
   int oop_size(oop obj) const;
-  int klass_oop_size() const          { return object_size(); }
 
   // Allocation
-  DEFINE_ALLOCATE_PERMANENT(objArrayKlass);
+  static Klass* allocate_objArray_klass(ClassLoaderData* loader_data,
+                                          int n, KlassHandle element_klass, TRAPS);
+
   objArrayOop allocate(int length, TRAPS);
   oop multi_allocate(int rank, jint* sizes, TRAPS);
 
@@ -67,8 +75,6 @@
 
   // Compute protection domain
   oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); }
-  // Compute class loader
-  oop class_loader() const { return Klass::cast(bottom_klass())->class_loader(); }
 
  private:
   // Either oop or narrowOop depending on UseCompressedOops.
@@ -77,21 +83,21 @@
                                   T* dst, int length, TRAPS);
  protected:
   // Returns the objArrayKlass for n'th dimension.
-  virtual klassOop array_klass_impl(bool or_null, int n, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, int n, TRAPS);
 
   // Returns the array class with this class as element type.
-  virtual klassOop array_klass_impl(bool or_null, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, TRAPS);
 
  public:
-  // Casting from klassOop
-  static objArrayKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_objArray_slow(), "cast to objArrayKlass");
-    return (objArrayKlass*) k->klass_part();
+  // Casting from Klass*
+  static objArrayKlass* cast(Klass* k) {
+    assert(k->oop_is_objArray(), "cast to objArrayKlass");
+    return (objArrayKlass*) k;
   }
 
   // Sizing
-  static int header_size()                { return oopDesc::header_size() + sizeof(objArrayKlass)/HeapWordSize; }
-  int object_size() const                 { return arrayKlass::object_size(header_size()); }
+  static int header_size()                { return sizeof(objArrayKlass)/HeapWordSize; }
+  int size() const                        { return arrayKlass::static_size(header_size()); }
 
   // Initialization (virtual from Klass)
   void initialize(TRAPS);
@@ -112,10 +118,10 @@
 #endif // !SERIALGC
 
   // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk) {
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
     return oop_oop_iterate_v(obj, blk);
   }
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
     return oop_oop_iterate_v_m(obj, blk, mr);
   }
 #define ObjArrayKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)   \
@@ -131,18 +137,21 @@
   // JVM support
   jint compute_modifier_flags(TRAPS) const;
 
- private:
-   static klassOop array_klass_impl   (objArrayKlassHandle this_oop, bool or_null, int n, TRAPS);
-
  public:
   // Printing
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
   void oop_print_value_on(oop obj, outputStream* st);
 #ifndef PRODUCT
   void oop_print_on      (oop obj, outputStream* st);
 #endif //PRODUCT
 
+  const char* internal_name() const;
+
   // Verification
-  const char* internal_name() const;
+  void verify_on(outputStream* st);
+
   void oop_verify_on(oop obj, outputStream* st);
 };
 
--- a/src/share/vm/oops/objArrayKlass.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/objArrayKlass.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP
 #define SHARE_VM_OOPS_OBJARRAYKLASS_INLINE_HPP
 
+#include "gc_implementation/shared/markSweep.inline.hpp"
 #include "oops/objArrayKlass.hpp"
 #ifndef SERIALGC
 #include "gc_implementation/parallelScavenge/psCompactionManager.inline.hpp"
--- a/src/share/vm/oops/objArrayKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,316 +0,0 @@
-/*
- * 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "classfile/systemDictionary.hpp"
-#include "gc_implementation/shared/markSweep.inline.hpp"
-#include "gc_interface/collectedHeap.inline.hpp"
-#include "oops/instanceKlass.hpp"
-#include "oops/objArrayKlassKlass.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/oop.inline2.hpp"
-#ifndef SERIALGC
-#include "gc_implementation/parNew/parOopClosures.inline.hpp"
-#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
-#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
-#include "memory/cardTableRS.hpp"
-#include "oops/oop.pcgc.inline.hpp"
-#endif
-
-klassOop objArrayKlassKlass::create_klass(TRAPS) {
-  objArrayKlassKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_0);
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_0); // Allocate mirror
-  return k();
-}
-
-klassOop objArrayKlassKlass::allocate_system_objArray_klass(TRAPS) {
-  // system_objArrays have no instance klass, so allocate with fake class, then reset to NULL
-  KlassHandle kk(THREAD, Universe::intArrayKlassObj());
-  klassOop k = allocate_objArray_klass(1, kk, CHECK_0);
-  objArrayKlass* tk = (objArrayKlass*) k->klass_part();
-  tk->set_element_klass(NULL);
-  tk->set_bottom_klass(NULL);
-  return k;
-}
-
-
-klassOop objArrayKlassKlass::allocate_objArray_klass(int n, KlassHandle element_klass, TRAPS) {
-  objArrayKlassKlassHandle this_oop(THREAD, as_klassOop());
-  return allocate_objArray_klass_impl(this_oop, n, element_klass, THREAD);
-}
-
-klassOop objArrayKlassKlass::allocate_objArray_klass_impl(objArrayKlassKlassHandle this_oop,
-                                                          int n, KlassHandle element_klass, TRAPS) {
-
-  // Eagerly allocate the direct array supertype.
-  KlassHandle super_klass = KlassHandle();
-  if (!Universe::is_bootstrapping()) {
-    KlassHandle element_super (THREAD, element_klass->super());
-    if (element_super.not_null()) {
-      // The element type has a direct super.  E.g., String[] has direct super of Object[].
-      super_klass = KlassHandle(THREAD, element_super->array_klass_or_null());
-      bool supers_exist = super_klass.not_null();
-      // Also, see if the element has secondary supertypes.
-      // We need an array type for each.
-      objArrayHandle element_supers = objArrayHandle(THREAD,
-                                            element_klass->secondary_supers());
-      for( int i = element_supers->length()-1; i >= 0; i-- ) {
-        klassOop elem_super = (klassOop) element_supers->obj_at(i);
-        if (Klass::cast(elem_super)->array_klass_or_null() == NULL) {
-          supers_exist = false;
-          break;
-        }
-      }
-      if (!supers_exist) {
-        // Oops.  Not allocated yet.  Back out, allocate it, and retry.
-#ifndef PRODUCT
-        if (WizardMode) {
-          tty->print_cr("Must retry array klass creation for depth %d",n);
-        }
-#endif
-        KlassHandle ek;
-        {
-          MutexUnlocker mu(MultiArray_lock);
-          MutexUnlocker mc(Compile_lock);   // for vtables
-          klassOop sk = element_super->array_klass(CHECK_0);
-          super_klass = KlassHandle(THREAD, sk);
-          for( int i = element_supers->length()-1; i >= 0; i-- ) {
-            KlassHandle elem_super (THREAD, element_supers->obj_at(i));
-            elem_super->array_klass(CHECK_0);
-          }
-          // Now retry from the beginning
-          klassOop klass_oop = element_klass->array_klass(n, CHECK_0);
-          // Create a handle because the enclosing brace, when locking
-          // can cause a gc.  Better to have this function return a Handle.
-          ek = KlassHandle(THREAD, klass_oop);
-        }  // re-lock
-        return ek();
-      }
-    } else {
-      // The element type is already Object.  Object[] has direct super of Object.
-      super_klass = KlassHandle(THREAD, SystemDictionary::Object_klass());
-    }
-  }
-
-  // Create type name for klass.
-  Symbol* name = NULL;
-  if (!element_klass->oop_is_instance() ||
-      (name = instanceKlass::cast(element_klass())->array_name()) == NULL) {
-
-    ResourceMark rm(THREAD);
-    char *name_str = element_klass->name()->as_C_string();
-    int len = element_klass->name()->utf8_length();
-    char *new_str = NEW_RESOURCE_ARRAY(char, len + 4);
-    int idx = 0;
-    new_str[idx++] = '[';
-    if (element_klass->oop_is_instance()) { // it could be an array or simple type
-      new_str[idx++] = 'L';
-    }
-    memcpy(&new_str[idx], name_str, len * sizeof(char));
-    idx += len;
-    if (element_klass->oop_is_instance()) {
-      new_str[idx++] = ';';
-    }
-    new_str[idx++] = '\0';
-    name = SymbolTable::new_permanent_symbol(new_str, CHECK_0);
-    if (element_klass->oop_is_instance()) {
-      instanceKlass* ik = instanceKlass::cast(element_klass());
-      ik->set_array_name(name);
-    }
-  }
-
-  objArrayKlass o;
-  arrayKlassHandle k = arrayKlass::base_create_array_klass(o.vtbl_value(),
-                                                           objArrayKlass::header_size(),
-                                                          this_oop,
-                                                           CHECK_0);
-
-  // Initialize instance variables
-  objArrayKlass* oak = objArrayKlass::cast(k());
-  oak->set_dimension(n);
-  oak->set_element_klass(element_klass());
-  oak->set_name(name);
-  // decrement refcount because object arrays are not explicitly freed.  The
-  // instanceKlass array_name() keeps the name counted while the klass is
-  // loaded.
-  name->decrement_refcount();
-
-  klassOop bk;
-  if (element_klass->oop_is_objArray()) {
-    bk = objArrayKlass::cast(element_klass())->bottom_klass();
-  } else {
-    bk = element_klass();
-  }
-  assert(bk != NULL && (Klass::cast(bk)->oop_is_instance() || Klass::cast(bk)->oop_is_typeArray()), "invalid bottom klass");
-  oak->set_bottom_klass(bk);
-
-  oak->set_layout_helper(array_layout_helper(T_OBJECT));
-  assert(oak->oop_is_javaArray(), "sanity");
-  assert(oak->oop_is_objArray(), "sanity");
-
-  // Call complete_create_array_klass after all instance variables has been initialized.
-  arrayKlass::complete_create_array_klass(k, super_klass, CHECK_0);
-
-  return k();
-}
-
-
-void objArrayKlassKlass::oop_follow_contents(oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  MarkSweep::mark_and_push(oak->element_klass_addr());
-  MarkSweep::mark_and_push(oak->bottom_klass_addr());
-
-  arrayKlassKlass::oop_follow_contents(obj);
-}
-
-#ifndef SERIALGC
-void objArrayKlassKlass::oop_follow_contents(ParCompactionManager* cm,
-                                             oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  PSParallelCompact::mark_and_push(cm, oak->element_klass_addr());
-  PSParallelCompact::mark_and_push(cm, oak->bottom_klass_addr());
-
-  arrayKlassKlass::oop_follow_contents(cm, obj);
-}
-#endif // SERIALGC
-
-
-int objArrayKlassKlass::oop_adjust_pointers(oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  MarkSweep::adjust_pointer(oak->element_klass_addr());
-  MarkSweep::adjust_pointer(oak->bottom_klass_addr());
-
-  return arrayKlassKlass::oop_adjust_pointers(obj);
-}
-
-
-
-int objArrayKlassKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  blk->do_oop(oak->element_klass_addr());
-  blk->do_oop(oak->bottom_klass_addr());
-
-  return arrayKlassKlass::oop_oop_iterate(obj, blk);
-}
-
-
-int
-objArrayKlassKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  oop* addr;
-  addr = oak->element_klass_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-  addr = oak->bottom_klass_addr();
-  if (mr.contains(addr)) blk->do_oop(addr);
-
-  return arrayKlassKlass::oop_oop_iterate_m(obj, blk, mr);
-}
-
-#ifndef SERIALGC
-void objArrayKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
-  assert(obj->blueprint()->oop_is_objArrayKlass(),"must be an obj array klass");
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  oop* p = oak->element_klass_addr();
-  if (PSScavenge::should_scavenge(p)) {
-    pm->claim_or_forward_depth(p);
-  }
-  p = oak->bottom_klass_addr();
-  if (PSScavenge::should_scavenge(p)) {
-    pm->claim_or_forward_depth(p);
-  }
-
-  arrayKlassKlass::oop_push_contents(pm, obj);
-}
-
-int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
-  assert(obj->is_klass(), "must be klass");
-  assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
-
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  PSParallelCompact::adjust_pointer(oak->element_klass_addr());
-  PSParallelCompact::adjust_pointer(oak->bottom_klass_addr());
-
-  return arrayKlassKlass::oop_update_pointers(cm, obj);
-}
-#endif // SERIALGC
-
-#ifndef PRODUCT
-
-// Printing
-
-void objArrayKlassKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  objArrayKlass* oak = (objArrayKlass*) klassOop(obj)->klass_part();
-  klassKlass::oop_print_on(obj, st);
-  st->print(" - instance klass: ");
-  oak->element_klass()->print_value_on(st);
-  st->cr();
-}
-
-#endif //PRODUCT
-
-void objArrayKlassKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  objArrayKlass* oak = (objArrayKlass*) klassOop(obj)->klass_part();
-
-  oak->element_klass()->print_value_on(st);
-  st->print("[]");
-}
-
-const char* objArrayKlassKlass::internal_name() const {
-  return "{object array class}";
-}
-
-
-// Verification
-
-void objArrayKlassKlass::oop_verify_on(oop obj, outputStream* st) {
-  arrayKlassKlass::oop_verify_on(obj, st);
-  objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
-  guarantee(oak->element_klass()->is_perm(),  "should be in permspace");
-  guarantee(oak->element_klass()->is_klass(), "should be klass");
-  guarantee(oak->bottom_klass()->is_perm(),   "should be in permspace");
-  guarantee(oak->bottom_klass()->is_klass(),  "should be klass");
-  Klass* bk = Klass::cast(oak->bottom_klass());
-  guarantee(bk->oop_is_instance() || bk->oop_is_typeArray(),  "invalid bottom klass");
-}
--- a/src/share/vm/oops/objArrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
-#define SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
-
-#include "oops/arrayKlassKlass.hpp"
-#include "oops/objArrayKlass.hpp"
-
-// The objArrayKlassKlass is klass for all objArrayKlass'
-
-class objArrayKlassKlass : public arrayKlassKlass {
- public:
-  // Testing
-  virtual bool oop_is_objArrayKlass() const { return true; }
-
-  // Dispatched operation
-  int oop_size(oop obj) const { return objArrayKlass::cast(klassOop(obj))->object_size(); }
-  int klass_oop_size() const  { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(objArrayKlassKlass);
-  static klassOop create_klass(TRAPS);
-  klassOop allocate_objArray_klass(int n, KlassHandle element_klass, TRAPS);
-  klassOop allocate_system_objArray_klass(TRAPS); // Used for bootstrapping in Universe::genesis
-
-  // Casting from klassOop
-  static objArrayKlassKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_klass(), "cast to objArrayKlassKlass");
-    return (objArrayKlassKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size()  { return oopDesc::header_size() + sizeof(objArrayKlassKlass)/HeapWordSize; }
-  int object_size() const   { return align_object_size(header_size()); }
-
-  // Garbage collection
-  void oop_follow_contents(oop obj);
-  int oop_adjust_pointers(oop obj);
-
-  // Parallel Scavenge and Parallel Old
-  PARALLEL_GC_DECLS
-
-  // Iterators
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
-
- private:
-  // helpers
-  static klassOop allocate_objArray_klass_impl(objArrayKlassKlassHandle this_oop, int n, KlassHandle element_klass, TRAPS);
-
- public:
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-#ifndef PRODUCT
-  void oop_print_on(oop obj, outputStream* st);
-#endif //PRODUCT
-
-  // Verification
-  const char* internal_name() const;
-  void oop_verify_on(oop obj, outputStream* st);
-
-};
-
-#endif // SHARE_VM_OOPS_OBJARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/objArrayOop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/objArrayOop.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -31,7 +31,7 @@
                                                                                    \
 int objArrayOopDesc::oop_iterate_range(OopClosureType* blk, int start, int end) {  \
   SpecializationStats::record_call();                                              \
-  return ((objArrayKlass*)blueprint())->oop_oop_iterate_range##nv_suffix(this, blk, start, end); \
+  return ((objArrayKlass*)klass())->oop_oop_iterate_range##nv_suffix(this, blk, start, end); \
 }
 
 ALL_OOP_OOP_ITERATE_CLOSURES_1(ObjArrayOop_OOP_ITERATE_DEFN)
--- a/src/share/vm/oops/oop.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/altHashing.hpp"
 #include "classfile/javaClasses.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
@@ -48,7 +49,7 @@
   if (this == NULL) {
     st->print_cr("NULL");
   } else {
-    blueprint()->oop_print_on(oop(this), st);
+    klass()->oop_print_on(oop(this), st);
   }
 }
 
@@ -86,19 +87,15 @@
   } else if (java_lang_String::is_instance(obj)) {
     java_lang_String::print(obj, st);
     if (PrintOopAddress) print_address_on(st);
-#ifdef ASSERT
-  } else if (!Universe::heap()->is_in(obj) || !Universe::heap()->is_in(klass())) {
-    st->print("### BAD OOP %p ###", (address)obj);
-#endif //ASSERT
   } else {
-    blueprint()->oop_print_value_on(obj, st);
+    klass()->oop_print_value_on(obj, st);
   }
 }
 
 
 void oopDesc::verify_on(outputStream* st) {
   if (this != NULL) {
-    blueprint()->oop_verify_on(this, st);
+    klass()->oop_verify_on(this, st);
   }
 }
 
@@ -107,25 +104,23 @@
   verify_on(tty);
 }
 
-bool oopDesc::partially_loaded() {
-  return blueprint()->oop_partially_loaded(this);
-}
-
-
-void oopDesc::set_partially_loaded() {
-  blueprint()->oop_set_partially_loaded(this);
-}
-
-
 intptr_t oopDesc::slow_identity_hash() {
   // slow case; we have to acquire the micro lock in order to locate the header
   ResetNoHandleMark rnm; // Might be called from LEAF/QUICK ENTRY
   HandleMark hm;
-  Handle object((oop)this);
-  assert(!is_shared_readonly(), "using identity hash on readonly object?");
+  Handle object(this);
   return ObjectSynchronizer::identity_hash_value_for(object);
 }
 
+// When String table needs to rehash
+unsigned int oopDesc::new_hash(jint seed) {
+  ResourceMark rm;
+  int length;
+  jchar* chars = java_lang_String::as_unicode_string(this, length);
+  // Use alternate hashing algorithm on the string
+  return AltHashing::murmur3_32(seed, chars, length);
+}
+
 VerifyOopClosure VerifyOopClosure::verify_oop;
 
 void VerifyOopClosure::do_oop(oop* p)       { VerifyOopClosure::do_oop_work(p); }
--- a/src/share/vm/oops/oop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,6 +28,7 @@
 #include "memory/iterator.hpp"
 #include "memory/memRegion.hpp"
 #include "memory/specialized_oop_closures.hpp"
+#include "oops/metadata.hpp"
 #include "utilities/top.hpp"
 
 // oopDesc is the top baseclass for objects classes.  The {name}Desc classes describe
@@ -41,10 +42,6 @@
 template <class T> void oop_store(T* p, oop v);
 template <class T> void oop_store(volatile T* p, oop v);
 
-// store into oop without store check
-template <class T> void oop_store_without_check(T* p, oop v);
-template <class T> void oop_store_without_check(volatile T* p, oop v);
-
 extern bool always_do_update_barrier;
 
 // Forward declarations.
@@ -63,7 +60,7 @@
  private:
   volatile markOop  _mark;
   union _metadata {
-    wideKlassOop    _klass;
+    Klass*      _klass;
     narrowOop       _compressed_klass;
   } _metadata;
 
@@ -71,11 +68,6 @@
   static BarrierSet* _bs;
 
  public:
-  enum ConcSafeType {
-    IsUnsafeConc = false,
-    IsSafeConc   = true
-  };
-
   markOop  mark() const         { return _mark; }
   markOop* mark_addr() const    { return (markOop*) &_mark; }
 
@@ -88,26 +80,25 @@
   // objects during a GC) -- requires a valid klass pointer
   void init_mark();
 
-  klassOop klass() const;
-  klassOop klass_or_null() const volatile;
-  oop* klass_addr();
+  Klass* klass() const;
+  Klass* klass_or_null() const volatile;
+  Klass** klass_addr();
   narrowOop* compressed_klass_addr();
 
-  void set_klass(klassOop k);
+  void set_klass(Klass* k);
 
   // For klass field compression
   int klass_gap() const;
   void set_klass_gap(int z);
   // For when the klass pointer is being used as a linked list "next" field.
   void set_klass_to_list_ptr(oop k);
+  oop list_ptr_from_klass();
 
   // size of object header, aligned to platform wordSize
   static int header_size()          { return sizeof(oopDesc)/HeapWordSize; }
 
-  Klass* blueprint() const;
-
   // Returns whether this is an instance of k or an instance of a subclass of k
-  bool is_a(klassOop k)  const;
+  bool is_a(Klass* k)  const;
 
   // Returns the actual oop size of the object
   int size();
@@ -116,33 +107,13 @@
   // to be able to figure out the size of an object knowing its klass.
   int size_given_klass(Klass* klass);
 
-  // Some perm gen objects are not parseble immediately after
-  // installation of their klass pointer.
-  bool is_parsable();
-
-  // Some perm gen objects that have been allocated and initialized
-  // can be changed by the VM when not at a safe point (class rededfinition
-  // is an example).  Such objects should not be examined by the
-  // concurrent processing of a garbage collector if is_conc_safe()
-  // returns false.
-  bool is_conc_safe();
-
   // type test operations (inlined in oop.inline.h)
   bool is_instance()           const;
   bool is_instanceMirror()     const;
   bool is_instanceRef()        const;
   bool is_array()              const;
   bool is_objArray()           const;
-  bool is_klass()              const;
-  bool is_thread()             const;
-  bool is_method()             const;
-  bool is_constMethod()        const;
-  bool is_methodData()         const;
-  bool is_constantPool()       const;
-  bool is_constantPoolCache()  const;
   bool is_typeArray()          const;
-  bool is_javaArray()          const;
-  bool is_compiledICHolder()   const;
 
  private:
   // field addresses in oop
@@ -156,14 +127,18 @@
   jlong*    long_field_addr(int offset)   const;
   jfloat*   float_field_addr(int offset)  const;
   jdouble*  double_field_addr(int offset) const;
-  address*  address_field_addr(int offset) const;
+  Metadata** metadata_field_addr(int offset) const;
 
  public:
   // Need this as public for garbage collection.
   template <class T> T* obj_field_addr(int offset) const;
 
+  // Needed for javaClasses
+  address*  address_field_addr(int offset) const;
+
   static bool is_null(oop obj);
   static bool is_null(narrowOop obj);
+  static bool is_null(Klass* obj);
 
   // Decode an oop pointer from a narrowOop if compressed.
   // These are overloaded for oop and narrowOop as are the other functions
@@ -210,7 +185,15 @@
   static oop atomic_exchange_oop(oop exchange_value, volatile HeapWord *dest);
   static oop atomic_compare_exchange_oop(oop exchange_value,
                                          volatile HeapWord *dest,
-                                         oop compare_value);
+                                         oop compare_value,
+                                         bool prebarrier = false);
+
+  // klass encoding for klass pointer in objects.
+  static narrowOop encode_klass_not_null(Klass* v);
+  static narrowOop encode_klass(Klass* v);
+
+  static Klass* decode_klass_not_null(narrowOop v);
+  static Klass* decode_klass(narrowOop v);
 
   // Access to fields in a instanceOop through these methods.
   oop obj_field(int offset) const;
@@ -219,6 +202,9 @@
   void obj_field_put_raw(int offset, oop value);
   void obj_field_put_volatile(int offset, oop value);
 
+  Metadata* metadata_field(int offset) const;
+  void metadata_field_put(int offset, Metadata* value);
+
   jbyte byte_field(int offset) const;
   void byte_field_put(int offset, jbyte contents);
 
@@ -294,10 +280,6 @@
   void verify_on(outputStream* st);
   void verify();
 
-  // tells whether this oop is partially constructed (gc during class loading)
-  bool partially_loaded();
-  void set_partially_loaded();
-
   // locking operations
   bool is_locked()   const;
   bool is_unlocked() const;
@@ -315,7 +297,6 @@
   // Apply "MarkSweep::mark_and_push" to (the address of) every non-NULL
   // reference field in "this".
   void follow_contents(void);
-  void follow_header(void);
 
 #ifndef SERIALGC
   // Parallel Scavenge
@@ -325,15 +306,9 @@
   void update_contents(ParCompactionManager* cm);
 
   void follow_contents(ParCompactionManager* cm);
-  void follow_header(ParCompactionManager* cm);
 #endif // SERIALGC
 
-  bool is_perm() const;
-  bool is_perm_or_null() const;
   bool is_scavengable() const;
-  bool is_shared() const;
-  bool is_shared_readonly() const;
-  bool is_shared_readwrite() const;
 
   // Forward pointer operations for scavenge
   bool is_forwarded() const;
@@ -358,11 +333,10 @@
   // Adjust all pointers in this object to point at it's forwarded location and
   // return the size of this oop.  This is used by the MarkSweep collector.
   int adjust_pointers();
-  void adjust_header();
 
 #ifndef SERIALGC
   // Parallel old
-  void update_header();
+  void update_header(ParCompactionManager* cm);
 #endif // SERIALGC
 
   // mark-sweep support
@@ -389,8 +363,8 @@
   ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DECL)
 #endif
 
-  void oop_iterate_header(OopClosure* blk);
-  void oop_iterate_header(OopClosure* blk, MemRegion mr);
+  int oop_iterate_no_header(OopClosure* bk);
+  int oop_iterate_no_header(OopClosure* bk, MemRegion mr);
 
   // identity hash; returns the identity hash key (computes it if necessary)
   // NOTE with the introduction of UseBiasedLocking that identity_hash() might reach a
@@ -398,6 +372,9 @@
   intptr_t identity_hash();
   intptr_t slow_identity_hash();
 
+  // Alternate hashing code if string table is rehashed
+  unsigned int new_hash(jint seed);
+
   // marks are forwarded to stack when object is locked
   bool     has_displaced_mark() const;
   markOop  displaced_mark() const;
--- a/src/share/vm/oops/oop.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -30,15 +30,12 @@
 #include "gc_interface/collectedHeap.inline.hpp"
 #include "memory/barrierSet.inline.hpp"
 #include "memory/cardTableModRefBS.hpp"
-#include "memory/compactingPermGenGen.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/generation.hpp"
-#include "memory/permGen.hpp"
 #include "memory/specialized_oop_closures.hpp"
 #include "oops/arrayKlass.hpp"
 #include "oops/arrayOop.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/markOop.inline.hpp"
 #include "oops/oop.hpp"
 #include "runtime/atomic.hpp"
@@ -70,48 +67,48 @@
   return (markOop) Atomic::cmpxchg_ptr(new_mark, &_mark, old_mark);
 }
 
-inline klassOop oopDesc::klass() const {
-  if (UseCompressedOops) {
-    return (klassOop)decode_heap_oop_not_null(_metadata._compressed_klass);
+inline Klass* oopDesc::klass() const {
+  if (UseCompressedKlassPointers) {
+    return decode_klass_not_null(_metadata._compressed_klass);
   } else {
     return _metadata._klass;
   }
 }
 
-inline klassOop oopDesc::klass_or_null() const volatile {
+inline Klass* oopDesc::klass_or_null() const volatile {
   // can be NULL in CMS
-  if (UseCompressedOops) {
-    return (klassOop)decode_heap_oop(_metadata._compressed_klass);
+  if (UseCompressedKlassPointers) {
+    return decode_klass(_metadata._compressed_klass);
   } else {
     return _metadata._klass;
   }
 }
 
 inline int oopDesc::klass_gap_offset_in_bytes() {
-  assert(UseCompressedOops, "only applicable to compressed headers");
+  assert(UseCompressedKlassPointers, "only applicable to compressed klass pointers");
   return oopDesc::klass_offset_in_bytes() + sizeof(narrowOop);
 }
 
-inline oop* oopDesc::klass_addr() {
+inline Klass** oopDesc::klass_addr() {
   // Only used internally and with CMS and will not work with
   // UseCompressedOops
-  assert(!UseCompressedOops, "only supported with uncompressed oops");
-  return (oop*) &_metadata._klass;
+  assert(!UseCompressedKlassPointers, "only supported with uncompressed klass pointers");
+  return (Klass**) &_metadata._klass;
 }
 
 inline narrowOop* oopDesc::compressed_klass_addr() {
-  assert(UseCompressedOops, "only called by compressed oops");
+  assert(UseCompressedKlassPointers, "only called by compressed klass pointers");
   return (narrowOop*) &_metadata._compressed_klass;
 }
 
-inline void oopDesc::set_klass(klassOop k) {
+inline void oopDesc::set_klass(Klass* k) {
   // since klasses are promoted no store check is needed
-  assert(Universe::is_bootstrapping() || k != NULL, "must be a real klassOop");
-  assert(Universe::is_bootstrapping() || k->is_klass(), "not a klassOop");
-  if (UseCompressedOops) {
-    oop_store_without_check(compressed_klass_addr(), (oop)k);
+  assert(Universe::is_bootstrapping() || k != NULL, "must be a real Klass*");
+  assert(Universe::is_bootstrapping() || k->is_klass(), "not a Klass*");
+  if (UseCompressedKlassPointers) {
+    *compressed_klass_addr() = encode_klass_not_null(k);
   } else {
-    oop_store_without_check(klass_addr(), (oop) k);
+    *klass_addr() = k;
   }
 }
 
@@ -120,7 +117,7 @@
 }
 
 inline void oopDesc::set_klass_gap(int v) {
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     *(int*)(((intptr_t)this) + klass_gap_offset_in_bytes()) = v;
   }
 }
@@ -128,37 +125,38 @@
 inline void oopDesc::set_klass_to_list_ptr(oop k) {
   // This is only to be used during GC, for from-space objects, so no
   // barrier is needed.
-  if (UseCompressedOops) {
+  if (UseCompressedKlassPointers) {
     _metadata._compressed_klass = encode_heap_oop(k);  // may be null (parnew overflow handling)
   } else {
-    _metadata._klass = (klassOop)k;
+    _metadata._klass = (Klass*)(address)k;
+  }
+}
+
+inline oop oopDesc::list_ptr_from_klass() {
+  // This is only to be used during GC, for from-space objects.
+  if (UseCompressedKlassPointers) {
+    return decode_heap_oop(_metadata._compressed_klass);
+  } else {
+    // Special case for GC
+    return (oop)(address)_metadata._klass;
   }
 }
 
 inline void   oopDesc::init_mark()                 { set_mark(markOopDesc::prototype_for_object(this)); }
-inline Klass* oopDesc::blueprint()           const { return klass()->klass_part(); }
 
-inline bool oopDesc::is_a(klassOop k)        const { return blueprint()->is_subtype_of(k); }
+inline bool oopDesc::is_a(Klass* k)        const { return klass()->is_subtype_of(k); }
 
-inline bool oopDesc::is_instance()           const { return blueprint()->oop_is_instance(); }
-inline bool oopDesc::is_instanceMirror()     const { return blueprint()->oop_is_instanceMirror(); }
-inline bool oopDesc::is_instanceRef()        const { return blueprint()->oop_is_instanceRef(); }
-inline bool oopDesc::is_array()              const { return blueprint()->oop_is_array(); }
-inline bool oopDesc::is_objArray()           const { return blueprint()->oop_is_objArray(); }
-inline bool oopDesc::is_typeArray()          const { return blueprint()->oop_is_typeArray(); }
-inline bool oopDesc::is_javaArray()          const { return blueprint()->oop_is_javaArray(); }
-inline bool oopDesc::is_klass()              const { return blueprint()->oop_is_klass(); }
-inline bool oopDesc::is_thread()             const { return blueprint()->oop_is_thread(); }
-inline bool oopDesc::is_method()             const { return blueprint()->oop_is_method(); }
-inline bool oopDesc::is_constMethod()        const { return blueprint()->oop_is_constMethod(); }
-inline bool oopDesc::is_methodData()         const { return blueprint()->oop_is_methodData(); }
-inline bool oopDesc::is_constantPool()       const { return blueprint()->oop_is_constantPool(); }
-inline bool oopDesc::is_constantPoolCache()  const { return blueprint()->oop_is_constantPoolCache(); }
-inline bool oopDesc::is_compiledICHolder()   const { return blueprint()->oop_is_compiledICHolder(); }
+inline bool oopDesc::is_instance()           const { return klass()->oop_is_instance(); }
+inline bool oopDesc::is_instanceMirror()     const { return klass()->oop_is_instanceMirror(); }
+inline bool oopDesc::is_instanceRef()        const { return klass()->oop_is_instanceRef(); }
+inline bool oopDesc::is_array()              const { return klass()->oop_is_array(); }
+inline bool oopDesc::is_objArray()           const { return klass()->oop_is_objArray(); }
+inline bool oopDesc::is_typeArray()          const { return klass()->oop_is_typeArray(); }
 
 inline void*     oopDesc::field_base(int offset)        const { return (void*)&((char*)this)[offset]; }
 
 template <class T> inline T* oopDesc::obj_field_addr(int offset) const { return (T*)field_base(offset); }
+inline Metadata** oopDesc::metadata_field_addr(int offset) const { return (Metadata**)field_base(offset); }
 inline jbyte*    oopDesc::byte_field_addr(int offset)   const { return (jbyte*)   field_base(offset); }
 inline jchar*    oopDesc::char_field_addr(int offset)   const { return (jchar*)   field_base(offset); }
 inline jboolean* oopDesc::bool_field_addr(int offset)   const { return (jboolean*)field_base(offset); }
@@ -177,6 +175,7 @@
 // the right type and inlines the appopriate code).
 
 inline bool oopDesc::is_null(oop obj)       { return obj == NULL; }
+inline bool oopDesc::is_null(Klass* obj)  { return obj == NULL; }
 inline bool oopDesc::is_null(narrowOop obj) { return obj == 0; }
 
 // Algorithm for encoding and decoding oops from 64 bit pointers to 32 bit
@@ -186,6 +185,9 @@
 inline bool check_obj_alignment(oop obj) {
   return (intptr_t)obj % MinObjAlignmentInBytes == 0;
 }
+inline bool check_obj_alignment(Klass* obj) {
+  return (intptr_t)obj % MinObjAlignmentInBytes == 0;
+}
 
 inline narrowOop oopDesc::encode_heap_oop_not_null(oop v) {
   assert(!is_null(v), "oop value can never be zero");
@@ -221,6 +223,39 @@
 inline oop oopDesc::decode_heap_oop_not_null(oop v) { return v; }
 inline oop oopDesc::decode_heap_oop(oop v)  { return v; }
 
+// Encoding and decoding for klass field.  It is copied code, but someday
+// might not be the same as oop.
+
+inline narrowOop oopDesc::encode_klass_not_null(Klass* v) {
+  assert(!is_null(v), "oop value can never be zero");
+  assert(check_obj_alignment(v), "Address not aligned");
+  address base = Universe::narrow_oop_base();
+  int    shift = Universe::narrow_oop_shift();
+  uint64_t  pd = (uint64_t)(pointer_delta((void*)v, (void*)base, 1));
+  assert(OopEncodingHeapMax > pd, "change encoding max if new encoding");
+  uint64_t result = pd >> shift;
+  assert((result & CONST64(0xffffffff00000000)) == 0, "narrow klass pointer overflow");
+  assert(decode_klass(result) == v, "reversibility");
+  return (narrowOop)result;
+}
+
+inline narrowOop oopDesc::encode_klass(Klass* v) {
+  return (is_null(v)) ? (narrowOop)0 : encode_klass_not_null(v);
+}
+
+inline Klass* oopDesc::decode_klass_not_null(narrowOop v) {
+  assert(!is_null(v), "narrow oop value can never be zero");
+  address base = Universe::narrow_oop_base();
+  int    shift = Universe::narrow_oop_shift();
+  Klass* result = (Klass*)(void*)((uintptr_t)base + ((uintptr_t)v << shift));
+  assert(check_obj_alignment(result), err_msg("address not aligned: " PTR_FORMAT, (void*) result));
+  return result;
+}
+
+inline Klass* oopDesc::decode_klass(narrowOop v) {
+  return is_null(v) ? (Klass*)NULL : decode_klass_not_null(v);
+}
+
 // Load an oop out of the Java heap as is without decoding.
 // Called by GC to check for null before decoding.
 inline oop       oopDesc::load_heap_oop(oop* p)          { return *p; }
@@ -298,22 +333,6 @@
   }
 }
 
-inline oop oopDesc::atomic_compare_exchange_oop(oop exchange_value,
-                                                volatile HeapWord *dest,
-                                                oop compare_value) {
-  if (UseCompressedOops) {
-    // encode exchange and compare value from oop to T
-    narrowOop val = encode_heap_oop(exchange_value);
-    narrowOop cmp = encode_heap_oop(compare_value);
-
-    narrowOop old = (narrowOop) Atomic::cmpxchg(val, (narrowOop*)dest, cmp);
-    // decode old from T to oop
-    return decode_heap_oop(old);
-  } else {
-    return (oop)Atomic::cmpxchg_ptr(exchange_value, (oop*)dest, compare_value);
-  }
-}
-
 // In order to put or get a field out of an instance, must first check
 // if the field has been compressed and uncompress it.
 inline oop oopDesc::obj_field(int offset) const {
@@ -330,6 +349,15 @@
   UseCompressedOops ? oop_store(obj_field_addr<narrowOop>(offset), value) :
                       oop_store(obj_field_addr<oop>(offset),       value);
 }
+
+inline Metadata* oopDesc::metadata_field(int offset) const {
+  return *metadata_field_addr(offset);
+}
+
+inline void oopDesc::metadata_field_put(int offset, Metadata* value) {
+  *metadata_field_addr(offset) = value;
+}
+
 inline void oopDesc::obj_field_put_raw(int offset, oop value) {
   UseCompressedOops ?
     encode_store_heap_oop(obj_field_addr<narrowOop>(offset), value) :
@@ -495,15 +523,7 @@
 
 
 inline int oopDesc::size()  {
-  return size_given_klass(blueprint());
-}
-
-inline bool oopDesc::is_parsable() {
-  return blueprint()->oop_is_parsable(this);
-}
-
-inline bool oopDesc::is_conc_safe() {
-  return blueprint()->oop_is_conc_safe(this);
+  return size_given_klass(klass());
 }
 
 inline void update_barrier_set(void* p, oop v) {
@@ -532,29 +552,6 @@
   update_barrier_set((void*)p, v);    // cast away type
 }
 
-template <class T> inline void oop_store_without_check(T* p, oop v) {
-  // XXX YSR FIX ME!!!
-  if (always_do_update_barrier) {
-    oop_store(p, v);
-  } else {
-    assert(!Universe::heap()->barrier_set()->write_ref_needs_barrier(p, v),
-           "oop store without store check failed");
-    oopDesc::encode_store_heap_oop(p, v);
-  }
-}
-
-// When it absolutely has to get there.
-template <class T> inline void oop_store_without_check(volatile T* p, oop v) {
-  // XXX YSR FIX ME!!!
-  if (always_do_update_barrier) {
-    oop_store(p, v);
-  } else {
-    assert(!Universe::heap()->barrier_set()->write_ref_needs_barrier((T*)p, v),
-           "oop store without store check failed");
-    oopDesc::release_encode_store_heap_oop(p, v);
-  }
-}
-
 // Should replace *addr = oop assignments where addr type depends on UseCompressedOops
 // (without having to remember the function name this calls).
 inline void oop_store_raw(HeapWord* addr, oop value) {
@@ -565,6 +562,29 @@
   }
 }
 
+inline oop oopDesc::atomic_compare_exchange_oop(oop exchange_value,
+                                                volatile HeapWord *dest,
+                                                oop compare_value,
+                                                bool prebarrier) {
+  if (UseCompressedOops) {
+    if (prebarrier) {
+      update_barrier_set_pre((narrowOop*)dest, exchange_value);
+    }
+    // encode exchange and compare value from oop to T
+    narrowOop val = encode_heap_oop(exchange_value);
+    narrowOop cmp = encode_heap_oop(compare_value);
+
+    narrowOop old = (narrowOop) Atomic::cmpxchg(val, (narrowOop*)dest, cmp);
+    // decode old from T to oop
+    return decode_heap_oop(old);
+  } else {
+    if (prebarrier) {
+      update_barrier_set_pre((oop*)dest, exchange_value);
+    }
+    return (oop)Atomic::cmpxchg_ptr(exchange_value, (oop*)dest, compare_value);
+  }
+}
+
 // Used only for markSweep, scavenging
 inline bool oopDesc::is_gc_marked() const {
   return mark()->is_marked();
@@ -589,21 +609,7 @@
   if (!check_obj_alignment(obj)) return false;
   if (!Universe::heap()->is_in_reserved(obj)) return false;
   // obj is aligned and accessible in heap
-  // try to find metaclass cycle safely without seg faulting on bad input
-  // we should reach klassKlassObj by following klass link at most 3 times
-  for (int i = 0; i < 3; i++) {
-    obj = obj->klass_or_null();
-    // klass should be aligned and in permspace
-    if (!check_obj_alignment(obj)) return false;
-    if (!Universe::heap()->is_in_permanent(obj)) return false;
-  }
-  if (obj != Universe::klassKlassObj()) {
-    // During a dump, the _klassKlassObj moved to a shared space.
-    if (DumpSharedSpaces && Universe::klassKlassObj()->is_shared()) {
-      return true;
-    }
-    return false;
-  }
+  if (Universe::heap()->is_in_reserved(obj->klass_or_null())) return false;
 
   // Header verification: the mark is typically non-NULL. If we're
   // at a safepoint, it must not be null.
@@ -632,20 +638,11 @@
 }
 #endif // PRODUCT
 
-inline void oopDesc::follow_header() {
-  if (UseCompressedOops) {
-    MarkSweep::mark_and_push(compressed_klass_addr());
-  } else {
-    MarkSweep::mark_and_push(klass_addr());
-  }
-}
-
 inline void oopDesc::follow_contents(void) {
   assert (is_gc_marked(), "should be marked");
-  blueprint()->oop_follow_contents(this);
+  klass()->oop_follow_contents(this);
 }
 
-
 // Used by scavengers
 
 inline bool oopDesc::is_forwarded() const {
@@ -728,49 +725,36 @@
   }
 }
 
-inline void oopDesc::oop_iterate_header(OopClosure* blk) {
-  if (UseCompressedOops) {
-    blk->do_oop(compressed_klass_addr());
-  } else {
-    blk->do_oop(klass_addr());
-  }
-}
-
-inline void oopDesc::oop_iterate_header(OopClosure* blk, MemRegion mr) {
-  if (UseCompressedOops) {
-    if (mr.contains(compressed_klass_addr())) {
-      blk->do_oop(compressed_klass_addr());
-    }
-  } else {
-    if (mr.contains(klass_addr())) blk->do_oop(klass_addr());
-  }
-}
-
 inline int oopDesc::adjust_pointers() {
   debug_only(int check_size = size());
-  int s = blueprint()->oop_adjust_pointers(this);
+  int s = klass()->oop_adjust_pointers(this);
   assert(s == check_size, "should be the same");
   return s;
 }
 
-inline void oopDesc::adjust_header() {
-  if (UseCompressedOops) {
-    MarkSweep::adjust_pointer(compressed_klass_addr());
-  } else {
-    MarkSweep::adjust_pointer(klass_addr());
-  }
-}
-
 #define OOP_ITERATE_DEFN(OopClosureType, nv_suffix)                        \
                                                                            \
 inline int oopDesc::oop_iterate(OopClosureType* blk) {                     \
   SpecializationStats::record_call();                                      \
-  return blueprint()->oop_oop_iterate##nv_suffix(this, blk);               \
+  return klass()->oop_oop_iterate##nv_suffix(this, blk);               \
 }                                                                          \
                                                                            \
 inline int oopDesc::oop_iterate(OopClosureType* blk, MemRegion mr) {       \
   SpecializationStats::record_call();                                      \
-  return blueprint()->oop_oop_iterate##nv_suffix##_m(this, blk, mr);       \
+  return klass()->oop_oop_iterate##nv_suffix##_m(this, blk, mr);       \
+}
+
+
+inline int oopDesc::oop_iterate_no_header(OopClosure* blk) {
+  // The NoHeaderExtendedOopClosure wraps the OopClosure and proxies all
+  // the do_oop calls, but turns off all other features in ExtendedOopClosure.
+  NoHeaderExtendedOopClosure cl(blk);
+  return oop_iterate(&cl);
+}
+
+inline int oopDesc::oop_iterate_no_header(OopClosure* blk, MemRegion mr) {
+  NoHeaderExtendedOopClosure cl(blk);
+  return oop_iterate(&cl, mr);
 }
 
 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_DEFN)
@@ -781,23 +765,11 @@
                                                                            \
 inline int oopDesc::oop_iterate_backwards(OopClosureType* blk) {           \
   SpecializationStats::record_call();                                      \
-  return blueprint()->oop_oop_iterate_backwards##nv_suffix(this, blk);     \
+  return klass()->oop_oop_iterate_backwards##nv_suffix(this, blk);     \
 }
 
 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_BACKWARDS_DEFN)
 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DEFN)
 #endif // !SERIALGC
 
-inline bool oopDesc::is_shared() const {
-  return CompactingPermGenGen::is_shared(this);
-}
-
-inline bool oopDesc::is_shared_readonly() const {
-  return CompactingPermGenGen::is_shared_readonly(this);
-}
-
-inline bool oopDesc::is_shared_readwrite() const {
-  return CompactingPermGenGen::is_shared_readwrite(this);
-}
-
 #endif // SHARE_VM_OOPS_OOP_INLINE_HPP
--- a/src/share/vm/oops/oop.inline2.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.inline2.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,25 +27,13 @@
 
 #include "gc_interface/collectedHeap.hpp"
 #include "memory/generation.hpp"
-#include "memory/permGen.hpp"
 #include "memory/universe.hpp"
 #include "oops/oop.hpp"
 
 // Implementation of all inlined member functions defined in oop.hpp
 // We need a separate file to avoid circular references
 
-// Separate this out to break dependency.
-inline bool oopDesc::is_perm() const {
-  return Universe::heap()->is_in_permanent(this);
-}
-
-// Check for NULL also.
-inline bool oopDesc::is_perm_or_null() const {
-  return this == NULL || is_perm();
-}
-
 inline bool oopDesc::is_scavengable() const {
   return Universe::heap()->is_scavengable(this);
 }
-
 #endif // SHARE_VM_OOPS_OOP_INLINE2_HPP
--- a/src/share/vm/oops/oop.pcgc.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.pcgc.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -37,19 +37,9 @@
 inline void oopDesc::update_contents(ParCompactionManager* cm) {
   // The klass field must be updated before anything else
   // can be done.
-  DEBUG_ONLY(klassOopDesc* original_klass = klass());
-
-  // Can the option to update and/or copy be moved up in the
-  // call chain to avoid calling into here?
+  DEBUG_ONLY(Klass* original_klass = klass());
 
-  if (PSParallelCompact::should_update_klass(klass())) {
-    update_header();
-    assert(klass()->is_klass(), "Not updated correctly");
-  } else {
-    assert(klass()->is_klass(), "Not updated");
-  }
-
-  Klass* new_klass = blueprint();
+  Klass* new_klass = klass();
   if (!new_klass->oop_is_typeArray()) {
     // It might contain oops beyond the header, so take the virtual call.
     new_klass->oop_update_pointers(cm, this);
@@ -60,19 +50,11 @@
 inline void oopDesc::follow_contents(ParCompactionManager* cm) {
   assert (PSParallelCompact::mark_bitmap()->is_marked(this),
     "should be marked");
-  blueprint()->oop_follow_contents(cm, this);
+  klass()->oop_follow_contents(cm, this);
 }
 
 // Used by parallel old GC.
 
-inline void oopDesc::follow_header(ParCompactionManager* cm) {
-  if (UseCompressedOops) {
-    PSParallelCompact::mark_and_push(cm, compressed_klass_addr());
-  } else {
-    PSParallelCompact::mark_and_push(cm, klass_addr());
-  }
-}
-
 inline oop oopDesc::forward_to_atomic(oop p) {
   assert(ParNewGeneration::is_legal_forward_ptr(p),
          "illegal forwarding pointer value.");
@@ -97,12 +79,8 @@
   return forwardee();
 }
 
-inline void oopDesc::update_header() {
-  if (UseCompressedOops) {
-    PSParallelCompact::adjust_pointer(compressed_klass_addr());
-  } else {
-    PSParallelCompact::adjust_pointer(klass_addr());
-  }
+inline void oopDesc::update_header(ParCompactionManager* cm) {
+  PSParallelCompact::adjust_klass(cm, klass());
 }
 
 #endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
--- a/src/share/vm/oops/oop.psgc.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oop.psgc.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -34,10 +34,10 @@
 // ParallelScavengeHeap methods
 
 inline void oopDesc::push_contents(PSPromotionManager* pm) {
-  Klass* klass = blueprint();
-  if (!klass->oop_is_typeArray()) {
+  Klass* k = klass();
+  if (!k->oop_is_typeArray()) {
     // It might contain oops beyond the header, so take the virtual call.
-    klass->oop_push_contents(pm, this);
+    k->oop_push_contents(pm, this);
   }
   // Else skip it.  The typeArrayKlass in the header never needs scavenging.
 }
--- a/src/share/vm/oops/oopsHierarchy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/oopsHierarchy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -33,29 +33,19 @@
 // of B, A's representation is a prefix of B's representation.
 
 typedef juint narrowOop; // Offset instead of address for an oop within a java object
-typedef class klassOopDesc* wideKlassOop; // to keep SA happy and unhandled oop
-                                          // detector happy.
 typedef void* OopOrNarrowOopStar;
+typedef class   markOopDesc*                markOop;
 
 #ifndef CHECK_UNHANDLED_OOPS
 
 typedef class oopDesc*                            oop;
 typedef class   instanceOopDesc*            instanceOop;
-typedef class   methodOopDesc*                    methodOop;
-typedef class   constMethodOopDesc*            constMethodOop;
-typedef class   methodDataOopDesc*            methodDataOop;
 typedef class   arrayOopDesc*                    arrayOop;
 typedef class     objArrayOopDesc*            objArrayOop;
 typedef class     typeArrayOopDesc*            typeArrayOop;
-typedef class   constantPoolOopDesc*            constantPoolOop;
-typedef class   constantPoolCacheOopDesc*   constantPoolCacheOop;
-typedef class   klassOopDesc*                    klassOop;
-typedef class   markOopDesc*                    markOop;
-typedef class   compiledICHolderOopDesc*    compiledICHolderOop;
 
 #else
 
-
 // When CHECK_UNHANDLED_OOPS is defined, an "oop" is a class with a
 // carefully chosen set of constructors and conversion operators to go
 // to and from the underlying oopDesc pointer type.
@@ -71,7 +61,6 @@
 // instead, which generates less code anyway.
 
 class Thread;
-typedef class   markOopDesc*                markOop;
 class PromotedObject;
 
 
@@ -106,7 +95,7 @@
   oopDesc*  operator->() const        { return obj(); }
   bool operator==(const oop o) const  { return obj() == o.obj(); }
   bool operator==(void *p) const      { return obj() == p; }
-  bool operator!=(const oop o) const  { return obj() != o.obj(); }
+  bool operator!=(const volatile oop o) const  { return obj() != o.obj(); }
   bool operator!=(void *p) const      { return obj() != p; }
   bool operator==(intptr_t p) const   { return obj() == (oopDesc*)p; }
   bool operator!=(intptr_t p) const   { return obj() != (oopDesc*)p; }
@@ -126,7 +115,7 @@
   operator markOop () const           { return markOop(obj()); }
 
   operator address   () const         { return (address)obj(); }
-  operator intptr_t () const          { return (intptr_t)obj(); }
+  operator intptr_t () const volatile { return (intptr_t)obj(); }
 
   // from javaCalls.cpp
   operator jobject () const           { return (jobject)obj(); }
@@ -139,7 +128,7 @@
 #endif
 
   // from parNewGeneration and other things that want to get to the end of
-  // an oop for stuff (like constMethodKlass.cpp, objArrayKlass.cpp)
+  // an oop for stuff (like objArrayKlass.cpp)
   operator oop* () const              { return (oop *)obj(); }
 };
 
@@ -154,41 +143,37 @@
        type##OopDesc* operator->() const {                                 \
             return (type##OopDesc*)obj();                                  \
        }                                                                   \
-   };                                                                      \
+   };
 
 DEF_OOP(instance);
-DEF_OOP(method);
-DEF_OOP(methodData);
 DEF_OOP(array);
-DEF_OOP(constMethod);
-DEF_OOP(constantPool);
-DEF_OOP(constantPoolCache);
 DEF_OOP(objArray);
 DEF_OOP(typeArray);
-DEF_OOP(klass);
-DEF_OOP(compiledICHolder);
 
 #endif // CHECK_UNHANDLED_OOPS
 
+// The metadata hierarchy is separate from the oop hierarchy
+
+//      class MetaspaceObj
+class   ConstMethod;
+class   ConstantPoolCache;
+class   MethodData;
+//      class Metadata
+class   Method;
+class   ConstantPool;
+//      class CHeapObj
+class   CompiledICHolder;
+
+
 // The klass hierarchy is separate from the oop hierarchy.
 
 class Klass;
-class   instanceKlass;
-class     instanceMirrorKlass;
-class     instanceRefKlass;
-class   methodKlass;
-class   constMethodKlass;
-class   methodDataKlass;
-class   klassKlass;
-class     instanceKlassKlass;
-class     arrayKlassKlass;
-class       objArrayKlassKlass;
-class       typeArrayKlassKlass;
+class   InstanceKlass;
+class     InstanceMirrorKlass;
+class     InstanceClassLoaderKlass;
+class     InstanceRefKlass;
 class   arrayKlass;
 class     objArrayKlass;
 class     typeArrayKlass;
-class   constantPoolKlass;
-class   constantPoolCacheKlass;
-class   compiledICHolderKlass;
 
 #endif // SHARE_VM_OOPS_OOPSHIERARCHY_HPP
--- a/src/share/vm/oops/symbol.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/symbol.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -24,10 +24,12 @@
 
 
 #include "precompiled.hpp"
-#include "oops/oop.inline.hpp"
+#include "classfile/altHashing.hpp"
+#include "classfile/classLoaderData.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/os.hpp"
 #include "memory/allocation.inline.hpp"
+#include "memory/resourceArea.hpp"
 
 Symbol::Symbol(const u1* name, int length, int refcount) : _refcount(refcount), _length(length) {
   _identity_hash = os::random();
@@ -37,19 +39,30 @@
 }
 
 void* Symbol::operator new(size_t sz, int len, TRAPS) {
-  int alloc_size = object_size(len)*HeapWordSize;
+  int alloc_size = size(len)*HeapWordSize;
   address res = (address) AllocateHeap(alloc_size, mtSymbol);
-  DEBUG_ONLY(set_allocation_type(res, ResourceObj::C_HEAP);)
   return res;
 }
 
 void* Symbol::operator new(size_t sz, int len, Arena* arena, TRAPS) {
-  int alloc_size = object_size(len)*HeapWordSize;
+  int alloc_size = size(len)*HeapWordSize;
   address res = (address)arena->Amalloc(alloc_size);
-  DEBUG_ONLY(set_allocation_type(res, ResourceObj::ARENA);)
   return res;
 }
 
+void* Symbol::operator new(size_t sz, int len, ClassLoaderData* loader_data, TRAPS) {
+  address res;
+  int alloc_size = size(len)*HeapWordSize;
+  res = (address) Metaspace::allocate(loader_data, size(len), true,
+                                      Metaspace::NonClassType, CHECK_NULL);
+  return res;
+}
+
+void Symbol::operator delete(void *p) {
+  assert(((Symbol*)p)->refcount() == 0, "should not call this");
+  FreeHeap(p);
+}
+
 // ------------------------------------------------------------------
 // Symbol::equals
 //
@@ -191,6 +204,12 @@
   return str;
 }
 
+// Alternate hashing for unbalanced symbol tables.
+unsigned int Symbol::new_hash(jint seed) {
+  ResourceMark rm;
+  // Use alternate hashing algorithm on this symbol.
+  return AltHashing::murmur3_32(seed, (const jbyte*)as_C_string(), utf8_length());
+}
 
 void Symbol::print_on(outputStream* st) const {
   if (this == NULL) {
--- a/src/share/vm/oops/symbol.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/symbol.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -36,7 +36,7 @@
 //
 // All Symbols are allocated and added to the SymbolTable.
 // When a class is unloaded, the reference counts of the Symbol pointers in
-// the ConstantPool and in instanceKlass (see release_C_heap_structures) are
+// the ConstantPool and in InstanceKlass (see release_C_heap_structures) are
 // decremented.  When the reference count for a Symbol goes to 0, the garbage
 // collector can free the Symbol and remove it from the SymbolTable.
 //
@@ -96,7 +96,13 @@
 // TempNewSymbol (passed in as a parameter) so the reference count on its symbol
 // will be decremented when it goes out of scope.
 
-class Symbol : public ResourceObj {
+
+// This cannot be inherited from ResourceObj because it cannot have a vtable.
+// Since sometimes this is allocated from Metadata, pick a base allocation
+// type without virtual functions.
+class ClassLoaderData;
+
+class Symbol : public MetaspaceObj {
   friend class VMStructs;
   friend class SymbolTable;
   friend class MoveSymbols;
@@ -111,9 +117,9 @@
     max_symbol_length = (1 << 16) -1
   };
 
-  static int object_size(int length) {
-    size_t size = heap_word_size(sizeof(Symbol) + (length > 0 ? length - 1 : 0));
-    return align_object_size(size);
+  static int size(int length) {
+    size_t sz = heap_word_size(sizeof(Symbol) + (length > 0 ? length - 1 : 0));
+    return align_object_size(sz);
   }
 
   void byte_at_put(int index, int value) {
@@ -124,18 +130,24 @@
   Symbol(const u1* name, int length, int refcount);
   void* operator new(size_t size, int len, TRAPS);
   void* operator new(size_t size, int len, Arena* arena, TRAPS);
+  void* operator new(size_t size, int len, ClassLoaderData* loader_data, TRAPS);
+
+  void  operator delete(void* p);
 
  public:
   // Low-level access (used with care, since not GC-safe)
   const jbyte* base() const { return &_body[0]; }
 
-  int object_size()         { return object_size(utf8_length()); }
+  int size()                { return size(utf8_length()); }
 
   // Returns the largest size symbol we can safely hold.
   static int max_length()   { return max_symbol_length; }
 
   int identity_hash()       { return _identity_hash; }
 
+  // For symbol table alternate hashing
+  unsigned int new_hash(jint seed);
+
   // Reference counting.  See comments above this class for when to use.
   int refcount() const      { return _refcount; }
   inline void increment_refcount();
--- a/src/share/vm/oops/typeArrayKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/typeArrayKlass.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,23 +23,25 @@
  */
 
 #include "precompiled.hpp"
+#include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
 #include "gc_interface/collectedHeap.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/objArrayKlassKlass.hpp"
+#include "oops/klass.inline.hpp"
+#include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/typeArrayKlass.hpp"
 #include "oops/typeArrayOop.hpp"
 #include "runtime/handles.inline.hpp"
 
-bool typeArrayKlass::compute_is_subtype_of(klassOop k) {
-  if (!k->klass_part()->oop_is_typeArray()) {
+bool typeArrayKlass::compute_is_subtype_of(Klass* k) {
+  if (!k->oop_is_typeArray()) {
     return arrayKlass::compute_is_subtype_of(k);
   }
 
@@ -49,31 +51,46 @@
   return element_type() == tak->element_type();
 }
 
-klassOop typeArrayKlass::create_klass(BasicType type, int scale,
+typeArrayKlass* typeArrayKlass::create_klass(BasicType type,
                                       const char* name_str, TRAPS) {
-  typeArrayKlass o;
-
   Symbol* sym = NULL;
   if (name_str != NULL) {
     sym = SymbolTable::new_permanent_symbol(name_str, CHECK_NULL);
   }
-  KlassHandle klassklass (THREAD, Universe::typeArrayKlassKlassObj());
+
+  ClassLoaderData* null_loader_data = ClassLoaderData::the_null_class_loader_data();
+
+  typeArrayKlass* ak = typeArrayKlass::allocate(null_loader_data, type, sym, CHECK_NULL);
 
-  arrayKlassHandle k = base_create_array_klass(o.vtbl_value(), header_size(), klassklass, CHECK_NULL);
-  typeArrayKlass* ak = typeArrayKlass::cast(k());
-  ak->set_name(sym);
-  ak->set_layout_helper(array_layout_helper(type));
-  assert(scale == (1 << ak->log2_element_size()), "scale must check out");
-  assert(ak->oop_is_javaArray(), "sanity");
-  assert(ak->oop_is_typeArray(), "sanity");
-  ak->set_max_length(arrayOopDesc::max_array_length(type));
-  assert(k()->size() > header_size(), "bad size");
+  // Add all classes to our internal class loader list here,
+  // including classes in the bootstrap (NULL) class loader.
+  // GC walks these as strong roots.
+  null_loader_data->add_class(ak);
 
   // Call complete_create_array_klass after all instance variables have been initialized.
-  KlassHandle super (THREAD, k->super());
-  complete_create_array_klass(k, super, CHECK_NULL);
+  complete_create_array_klass(ak, ak->super(), CHECK_NULL);
+
+  return ak;
+}
+
+typeArrayKlass* typeArrayKlass::allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS) {
+  assert(typeArrayKlass::header_size() <= InstanceKlass::header_size(),
+      "array klasses must be same size as InstanceKlass");
+
+  int size = arrayKlass::static_size(typeArrayKlass::header_size());
 
-  return k();
+  return new (loader_data, size, THREAD) typeArrayKlass(type, name);
+}
+
+typeArrayKlass::typeArrayKlass(BasicType type, Symbol* name) : arrayKlass(name) {
+  set_layout_helper(array_layout_helper(type));
+  assert(oop_is_array(), "sanity");
+  assert(oop_is_typeArray(), "sanity");
+
+  set_max_length(arrayOopDesc::max_array_length(type));
+  assert(size() >= typeArrayKlass::header_size(), "bad size");
+
+  set_class_loader_data(ClassLoaderData::the_null_class_loader_data());
 }
 
 typeArrayOop typeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) {
@@ -81,7 +98,7 @@
   if (length >= 0) {
     if (length <= max_length()) {
       size_t size = typeArrayOopDesc::object_size(layout_helper(), length);
-      KlassHandle h_k(THREAD, as_klassOop());
+      KlassHandle h_k(THREAD, this);
       typeArrayOop t;
       CollectedHeap* ch = Universe::heap();
       if (do_zero) {
@@ -89,7 +106,6 @@
       } else {
         t = (typeArrayOop)CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL);
       }
-      assert(t->is_parsable(), "Don't publish unless parsable");
       return t;
     } else {
       report_java_out_of_memory("Requested array size exceeds VM limit");
@@ -101,16 +117,6 @@
   }
 }
 
-typeArrayOop typeArrayKlass::allocate_permanent(int length, TRAPS) {
-  if (length < 0) THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
-  int size = typeArrayOopDesc::object_size(layout_helper(), length);
-  KlassHandle h_k(THREAD, as_klassOop());
-  typeArrayOop t = (typeArrayOop)
-    CollectedHeap::permanent_array_allocate(h_k, size, length, CHECK_NULL);
-  assert(t->is_parsable(), "Can't publish until parsable");
-  return t;
-}
-
 oop typeArrayKlass::multi_allocate(int rank, jint* last_size, TRAPS) {
   // For typeArrays this is only called for the last dimension
   assert(rank == 1, "just checking");
@@ -150,19 +156,13 @@
 
 
 // create a klass of array holding typeArrays
-klassOop typeArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
-  typeArrayKlassHandle h_this(THREAD, as_klassOop());
-  return array_klass_impl(h_this, or_null, n, THREAD);
-}
+Klass* typeArrayKlass::array_klass_impl(bool or_null, int n, TRAPS) {
+  int dim = dimension();
+  assert(dim <= n, "check order of chain");
+    if (dim == n)
+      return this;
 
-klassOop typeArrayKlass::array_klass_impl(typeArrayKlassHandle h_this, bool or_null, int n, TRAPS) {
-  int dimension = h_this->dimension();
-  assert(dimension <= n, "check order of chain");
-    if (dimension == n)
-      return h_this();
-
-  objArrayKlassHandle  h_ak(THREAD, h_this->higher_dimension());
-  if (h_ak.is_null()) {
+  if (higher_dimension() == NULL) {
     if (or_null)  return NULL;
 
     ResourceMark rm;
@@ -172,28 +172,27 @@
       // Atomic create higher dimension and link into list
       MutexLocker mu(MultiArray_lock, THREAD);
 
-      h_ak = objArrayKlassHandle(THREAD, h_this->higher_dimension());
-      if (h_ak.is_null()) {
-        klassOop oak = objArrayKlassKlass::cast(
-          Universe::objArrayKlassKlassObj())->allocate_objArray_klass(
-          dimension + 1, h_this, CHECK_NULL);
-        h_ak = objArrayKlassHandle(THREAD, oak);
-        h_ak->set_lower_dimension(h_this());
+      if (higher_dimension() == NULL) {
+        Klass* oak = objArrayKlass::allocate_objArray_klass(
+              class_loader_data(), dim + 1, this, CHECK_NULL);
+        objArrayKlass* h_ak = objArrayKlass::cast(oak);
+        h_ak->set_lower_dimension(this);
         OrderAccess::storestore();
-        h_this->set_higher_dimension(h_ak());
+        set_higher_dimension(h_ak);
         assert(h_ak->oop_is_objArray(), "incorrect initialization of objArrayKlass");
       }
     }
   } else {
     CHECK_UNHANDLED_OOPS_ONLY(Thread::current()->clear_unhandled_oops());
   }
+  objArrayKlass* h_ak = objArrayKlass::cast(higher_dimension());
   if (or_null) {
     return h_ak->array_klass_or_null(n);
   }
   return h_ak->array_klass(n, CHECK_NULL);
 }
 
-klassOop typeArrayKlass::array_klass_impl(bool or_null, TRAPS) {
+Klass* typeArrayKlass::array_klass_impl(bool or_null, TRAPS) {
   return array_klass_impl(or_null, dimension() +  1, THREAD);
 }
 
@@ -225,7 +224,7 @@
   return t->object_size();
 }
 
-int typeArrayKlass::oop_oop_iterate(oop obj, OopClosure* blk) {
+int typeArrayKlass::oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
   assert(obj->is_typeArray(),"must be a type array");
   typeArrayOop t = typeArrayOop(obj);
   // Performance tweak: We skip iterating over the klass pointer since we
@@ -233,7 +232,7 @@
   return t->object_size();
 }
 
-int typeArrayKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) {
+int typeArrayKlass::oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
   assert(obj->is_typeArray(),"must be a type array");
   typeArrayOop t = typeArrayOop(obj);
   // Performance tweak: We skip iterating over the klass pointer since we
@@ -243,6 +242,7 @@
 
 #ifndef SERIALGC
 void typeArrayKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
+  ShouldNotReachHere();
   assert(obj->is_typeArray(),"must be a type array");
 }
 
@@ -273,8 +273,35 @@
   return NULL;
 }
 
+
+// Printing
+
+void typeArrayKlass::print_on(outputStream* st) const {
 #ifndef PRODUCT
-// Printing
+  assert(is_klass(), "must be klass");
+  print_value_on(st);
+  Klass::print_on(st);
+#endif //PRODUCT
+}
+
+void typeArrayKlass::print_value_on(outputStream* st) const {
+  assert(is_klass(), "must be klass");
+  st->print("{type array ");
+  switch (element_type()) {
+    case T_BOOLEAN: st->print("bool");    break;
+    case T_CHAR:    st->print("char");    break;
+    case T_FLOAT:   st->print("float");   break;
+    case T_DOUBLE:  st->print("double");  break;
+    case T_BYTE:    st->print("byte");    break;
+    case T_SHORT:   st->print("short");   break;
+    case T_INT:     st->print("int");     break;
+    case T_LONG:    st->print("long");    break;
+    default: ShouldNotReachHere();
+  }
+  st->print("}");
+}
+
+#ifndef PRODUCT
 
 static void print_boolean_array(typeArrayOop ta, int print_len, outputStream* st) {
   for (int index = 0; index < print_len; index++) {
--- a/src/share/vm/oops/typeArrayKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/typeArrayKlass.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_OOPS_TYPEARRAYKLASS_HPP
 #define SHARE_VM_OOPS_TYPEARRAYKLASS_HPP
 
+#include "classfile/classLoaderData.hpp"
 #include "oops/arrayKlass.hpp"
 
 // A typeArrayKlass is the klass of a typeArray
@@ -34,7 +35,13 @@
   friend class VMStructs;
  private:
   jint _max_length;            // maximum number of elements allowed in an array
+
+  // Constructor
+  typeArrayKlass(BasicType type, Symbol* name);
+  static typeArrayKlass* allocate(ClassLoaderData* loader_data, BasicType type, Symbol* name, TRAPS);
  public:
+  typeArrayKlass() {} // For dummy objects.
+
   // instance variables
   jint max_length()                     { return _max_length; }
   void set_max_length(jint m)           { _max_length = m;    }
@@ -43,30 +50,29 @@
   bool oop_is_typeArray_slow() const    { return true; }
 
   // klass allocation
-  DEFINE_ALLOCATE_PERMANENT(typeArrayKlass);
-  static klassOop create_klass(BasicType type, int scale, const char* name_str,
+  static typeArrayKlass* create_klass(BasicType type, const char* name_str,
                                TRAPS);
-  static inline klassOop create_klass(BasicType type, int scale, TRAPS) {
-    return create_klass(type, scale, external_name(type), CHECK_NULL);
+  static inline Klass* create_klass(BasicType type, int scale, TRAPS) {
+    typeArrayKlass* tak = create_klass(type, external_name(type), CHECK_NULL);
+    assert(scale == (1 << tak->log2_element_size()), "scale must check out");
+    return tak;
   }
 
   int oop_size(oop obj) const;
-  int klass_oop_size() const  { return object_size(); }
 
-  bool compute_is_subtype_of(klassOop k);
+  bool compute_is_subtype_of(Klass* k);
 
   // Allocation
   typeArrayOop allocate_common(int length, bool do_zero, TRAPS);
   typeArrayOop allocate(int length, TRAPS) { return allocate_common(length, true, THREAD); }
-  typeArrayOop allocate_permanent(int length, TRAPS);  // used for class file structures
   oop multi_allocate(int rank, jint* sizes, TRAPS);
 
   // Copying
   void  copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
 
   // Iteration
-  int oop_oop_iterate(oop obj, OopClosure* blk);
-  int oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr);
+  int oop_oop_iterate(oop obj, ExtendedOopClosure* blk);
+  int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr);
 
   // Garbage collection
   void oop_follow_contents(oop obj);
@@ -77,37 +83,37 @@
 
  protected:
   // Find n'th dimensional array
-  virtual klassOop array_klass_impl(bool or_null, int n, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, int n, TRAPS);
 
   // Returns the array class with this class as element type
-  virtual klassOop array_klass_impl(bool or_null, TRAPS);
+  virtual Klass* array_klass_impl(bool or_null, TRAPS);
 
  public:
-  // Casting from klassOop
-  static typeArrayKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_typeArray_slow(), "cast to typeArrayKlass");
-    return (typeArrayKlass*) k->klass_part();
+  // Casting from Klass*
+  static typeArrayKlass* cast(Klass* k) {
+    assert(k->oop_is_typeArray(), "cast to typeArrayKlass");
+    return (typeArrayKlass*) k;
   }
 
   // Naming
   static const char* external_name(BasicType type);
 
   // Sizing
-  static int header_size()  { return oopDesc::header_size() + sizeof(typeArrayKlass)/HeapWordSize; }
-  int object_size() const   { return arrayKlass::object_size(header_size()); }
+  static int header_size()  { return sizeof(typeArrayKlass)/HeapWordSize; }
+  int size() const          { return arrayKlass::static_size(header_size()); }
 
   // Initialization (virtual from Klass)
   void initialize(TRAPS);
 
- private:
-   // Helpers
-   static klassOop array_klass_impl(typeArrayKlassHandle h_this, bool or_null, int n, TRAPS);
-
-#ifndef PRODUCT
  public:
   // Printing
+#ifndef PRODUCT
   void oop_print_on(oop obj, outputStream* st);
 #endif
+
+  void print_on(outputStream* st) const;
+  void print_value_on(outputStream* st) const;
+
  public:
   const char* internal_name() const;
 };
--- a/src/share/vm/oops/typeArrayKlassKlass.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#include "precompiled.hpp"
-#include "classfile/javaClasses.hpp"
-#include "oops/oop.inline.hpp"
-#include "oops/typeArrayKlassKlass.hpp"
-#include "runtime/handles.inline.hpp"
-
-klassOop typeArrayKlassKlass::create_klass(TRAPS) {
-  typeArrayKlassKlass o;
-  KlassHandle h_this_klass(THREAD, Universe::klassKlassObj());
-  KlassHandle k = base_create_klass(h_this_klass, header_size(), o.vtbl_value(), CHECK_NULL);
-  assert(k()->size() == align_object_size(header_size()), "wrong size for object");
-  java_lang_Class::create_mirror(k, CHECK_NULL); // Allocate mirror
-  return k();
-}
-
-
-#ifndef PRODUCT
-
-// Printing
-
-void typeArrayKlassKlass::oop_print_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  oop_print_value_on(obj, st);
-  Klass:: oop_print_on(obj, st);
-}
-
-#endif //PRODUCT
-
-void typeArrayKlassKlass::oop_print_value_on(oop obj, outputStream* st) {
-  assert(obj->is_klass(), "must be klass");
-  st->print("{type array ");
-  switch (typeArrayKlass::cast(klassOop(obj))->element_type()) {
-    case T_BOOLEAN: st->print("bool");    break;
-    case T_CHAR:    st->print("char");    break;
-    case T_FLOAT:   st->print("float");   break;
-    case T_DOUBLE:  st->print("double");  break;
-    case T_BYTE:    st->print("byte");    break;
-    case T_SHORT:   st->print("short");   break;
-    case T_INT:     st->print("int");     break;
-    case T_LONG:    st->print("long");    break;
-    default: ShouldNotReachHere();
-  }
-  st->print("}");
-}
-
-const char* typeArrayKlassKlass::internal_name() const {
-  return "{type array class}";
-}
--- a/src/share/vm/oops/typeArrayKlassKlass.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 1997, 2010, 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
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- *
- */
-
-#ifndef SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
-#define SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
-
-#include "oops/arrayKlassKlass.hpp"
-#include "oops/typeArrayKlass.hpp"
-
-// A typeArrayKlassKlass is the klass of a typeArrayKlass
-
-class typeArrayKlassKlass : public arrayKlassKlass {
- public:
-  // Testing
-  bool oop_is_typeArrayKlass() const { return true; }
-
-  // Dispatched operation
-  int oop_size(oop obj) const { return typeArrayKlass::cast(klassOop(obj))->object_size(); }
-  int klass_oop_size() const  { return object_size(); }
-
-  // Allocation
-  DEFINE_ALLOCATE_PERMANENT(typeArrayKlassKlass);
-  static klassOop create_klass(TRAPS);
-
-  // Casting from klassOop
-  static typeArrayKlassKlass* cast(klassOop k) {
-    assert(k->klass_part()->oop_is_klass(), "cast to typeArrayKlassKlass");
-    return (typeArrayKlassKlass*) k->klass_part();
-  }
-
-  // Sizing
-  static int header_size() { return oopDesc::header_size() + sizeof(typeArrayKlassKlass)/HeapWordSize; }
-  int object_size() const  { return align_object_size(header_size()); }
-
- public:
-  // Printing
-  void oop_print_value_on(oop obj, outputStream* st);
-#ifndef PRODUCT
-  void oop_print_on(oop obj, outputStream* st);
-#endif //PRODUCT
-
-  const char* internal_name() const;
-};
-
-#endif // SHARE_VM_OOPS_TYPEARRAYKLASSKLASS_HPP
--- a/src/share/vm/oops/typeArrayOop.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/oops/typeArrayOop.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -151,6 +151,23 @@
   jbyte byte_at_acquire(int which) const              { return OrderAccess::load_acquire(byte_at_addr(which)); }
   void release_byte_at_put(int which, jbyte contents) { OrderAccess::release_store(byte_at_addr(which), contents); }
 
+  // Java thinks metadata arrays are just arrays of either long or int, since
+  // there doesn't seem to be T_ADDRESS, so this is a bit of unfortunate
+  // casting
+#ifdef _LP64
+  Metadata* metadata_at(int which) const {
+    return (Metadata*)*long_at_addr(which); }
+  void metadata_at_put(int which, Metadata* contents) {
+    *long_at_addr(which) = (long)contents;
+  }
+#else
+  Metadata* metadata_at(int which) const {
+    return (Metadata*)*int_at_addr(which); }
+  void metadata_at_put(int which, Metadata* contents) {
+    *int_at_addr(which) = (int)contents;
+  }
+#endif // _LP64
+
   // Sizing
 
   // Returns the number of words necessary to hold an array of "len"
--- a/src/share/vm/opto/callGenerator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/callGenerator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "ci/bcEscapeAnalyzer.hpp"
 #include "ci/ciCallSite.hpp"
-#include "ci/ciCPCache.hpp"
+#include "ci/ciObjArray.hpp"
 #include "ci/ciMemberName.hpp"
 #include "ci/ciMethodHandle.hpp"
 #include "classfile/javaClasses.hpp"
@@ -167,7 +167,7 @@
   VirtualCallGenerator(ciMethod* method, int vtable_index)
     : CallGenerator(method), _vtable_index(vtable_index)
   {
-    assert(vtable_index == methodOopDesc::invalid_vtable_index ||
+    assert(vtable_index == Method::invalid_vtable_index ||
            vtable_index >= 0, "either invalid or usable");
   }
   virtual bool      is_virtual() const          { return true; }
@@ -217,7 +217,7 @@
   assert(!method()->is_static(), "virtual call must not be to static");
   assert(!method()->is_final(), "virtual call should not be to final");
   assert(!method()->is_private(), "virtual call should not be to private");
-  assert(_vtable_index == methodOopDesc::invalid_vtable_index || !UseInlineCaches,
+  assert(_vtable_index == Method::invalid_vtable_index || !UseInlineCaches,
          "no vtable calls if +UseInlineCaches ");
   address target = SharedRuntime::get_resolve_virtual_call_stub();
   // Normal inline cache used for call
@@ -603,7 +603,7 @@
         const TypeOopPtr* oop_ptr = receiver->bottom_type()->is_oopptr();
         ciMethod* target = oop_ptr->const_oop()->as_method_handle()->get_vmtarget();
         guarantee(!target->is_method_handle_intrinsic(), "should not happen");  // XXX remove
-        const int vtable_index = methodOopDesc::invalid_vtable_index;
+        const int vtable_index = Method::invalid_vtable_index;
         CallGenerator* cg = C->call_generator(target, vtable_index, false, jvms, true, PROB_ALWAYS);
         if (cg != NULL && cg->is_inline())
           return cg;
@@ -653,7 +653,7 @@
             }
           }
         }
-        const int vtable_index = methodOopDesc::invalid_vtable_index;
+        const int vtable_index = Method::invalid_vtable_index;
         const bool call_is_virtual = target->is_abstract();  // FIXME workaround
         CallGenerator* cg = C->call_generator(target, vtable_index, call_is_virtual, jvms, true, PROB_ALWAYS);
         if (cg != NULL && cg->is_inline())
--- a/src/share/vm/opto/callnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/callnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -83,7 +83,7 @@
       const Type *t = _domain->field_at(proj->_con);
       if (t->base() == Type::Half)  // 2nd half of Longs and Doubles
         return new (match->C, 1) ConNode(Type::TOP);
-      uint ideal_reg = Matcher::base2reg[t->base()];
+      uint ideal_reg = t->ideal_reg();
       RegMask &rm = match->_calling_convention_mask[parm_num];
       return new (match->C, 1) MachProjNode(this,proj->_con,rm,ideal_reg);
     }
@@ -131,7 +131,7 @@
   case TypeFunc::Parms    : {
     // Type of argument being passed
     const Type *t = in(0)->as_Start()->_domain->field_at(_con);
-    return Matcher::base2reg[t->base()];
+    return t->ideal_reg();
   }
   }
   ShouldNotReachHere();
@@ -344,10 +344,15 @@
       st->print(" %s%d]=#NULL",msg,i);
       break;
     case Type::AryPtr:
-    case Type::KlassPtr:
     case Type::InstPtr:
       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->isa_oopptr()->const_oop());
       break;
+    case Type::KlassPtr:
+      st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_klassptr()->klass());
+      break;
+    case Type::MetadataPtr:
+      st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_metadataptr()->metadata());
+      break;
     case Type::NarrowOop:
       st->print(" %s%d]=#Ptr" INTPTR_FORMAT,msg,i,t->make_ptr()->isa_oopptr()->const_oop());
       break;
@@ -628,7 +633,7 @@
     return new (match->C, 1) MachProjNode(this,proj->_con, RegMask::Empty, (uint)OptoReg::Bad);
 
   case TypeFunc::Parms: {       // Normal returns
-    uint ideal_reg = Matcher::base2reg[tf()->range()->field_at(TypeFunc::Parms)->base()];
+    uint ideal_reg = tf()->range()->field_at(TypeFunc::Parms)->ideal_reg();
     OptoRegPair regs = is_CallRuntime()
       ? match->c_return_value(ideal_reg,true)  // Calls into C runtime
       : match->  return_value(ideal_reg,true); // Calls into compiled Java code
--- a/src/share/vm/opto/cfgnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/cfgnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -1936,7 +1936,7 @@
 }
 
 const RegMask &PhiNode::out_RegMask() const {
-  uint ideal_reg = Matcher::base2reg[_type->base()];
+  uint ideal_reg = _type->ideal_reg();
   assert( ideal_reg != Node::NotAMachineReg, "invalid type at Phi" );
   if( ideal_reg == 0 ) return RegMask::Empty;
   return *(Compile::current()->matcher()->idealreg2spillmask[ideal_reg]);
--- a/src/share/vm/opto/compile.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/compile.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -925,17 +925,6 @@
   }
 }
 
-#ifndef PRODUCT
-void print_opto_verbose_signature( const TypeFunc *j_sig, const char *stub_name ) {
-  if(PrintOpto && Verbose) {
-    tty->print("%s   ", stub_name); j_sig->print_flattened(); tty->cr();
-  }
-}
-#endif
-
-void Compile::print_codes() {
-}
-
 //------------------------------Init-------------------------------------------
 // Prepare for a single compilation
 void Compile::Init(int aliaslevel) {
@@ -963,7 +952,7 @@
   set_recent_alloc(NULL, NULL);
 
   // Create Debug Information Recorder to record scopes, oopmaps, etc.
-  env()->set_oop_recorder(new OopRecorder(comp_arena()));
+  env()->set_oop_recorder(new OopRecorder(env()->arena()));
   env()->set_debug_info(new DebugInformationRecorder(env()->oop_recorder()));
   env()->set_dependencies(new Dependencies(env()));
 
@@ -1182,7 +1171,7 @@
     // space to include all of the array body.  Only the header, klass
     // and array length can be accessed un-aliased.
     if( offset != Type::OffsetBot ) {
-      if( ta->const_oop() ) { // methodDataOop or methodOop
+      if( ta->const_oop() ) { // MethodData* or Method*
         offset = Type::OffsetBot;   // Flatten constant access into array body
         tj = ta = TypeAryPtr::make(ptr,ta->const_oop(),ta->ary(),ta->klass(),false,offset);
       } else if( offset == arrayOopDesc::length_offset_in_bytes() ) {
@@ -3026,12 +3015,13 @@
   if (can_be_reused() != other.can_be_reused())  return false;
   // For floating point values we compare the bit pattern.
   switch (type()) {
-  case T_FLOAT:   return (_value.i == other._value.i);
+  case T_FLOAT:   return (_v._value.i == other._v._value.i);
   case T_LONG:
-  case T_DOUBLE:  return (_value.j == other._value.j);
+  case T_DOUBLE:  return (_v._value.j == other._v._value.j);
   case T_OBJECT:
-  case T_ADDRESS: return (_value.l == other._value.l);
-  case T_VOID:    return (_value.l == other._value.l);  // jump-table entries
+  case T_METADATA: return (_v._metadata == other._v._metadata);
+  case T_ADDRESS: return (_v._value.l == other._v._value.l);
+  case T_VOID:    return (_v._value.l == other._v._value.l);  // jump-table entries
   default: ShouldNotReachHere();
   }
   return false;
@@ -3042,6 +3032,7 @@
   case T_LONG:    return sizeof(jlong  );
   case T_FLOAT:   return sizeof(jfloat );
   case T_DOUBLE:  return sizeof(jdouble);
+  case T_METADATA: return sizeof(Metadata*);
     // We use T_VOID as marker for jump-table entries (labels) which
     // need an internal word relocation.
   case T_VOID:
@@ -3135,6 +3126,12 @@
       }
       break;
     }
+    case T_METADATA: {
+      Metadata* obj = con.get_metadata();
+      int metadata_index = _masm.oop_recorder()->find_index(obj);
+      constant_addr = _masm.address_constant((address) obj, metadata_Relocation::spec(metadata_index));
+      break;
+    }
     default: ShouldNotReachHere();
     }
     assert(constant_addr, "consts section too small");
@@ -3168,6 +3165,12 @@
   return con;
 }
 
+Compile::Constant Compile::ConstantTable::add(Metadata* metadata) {
+  Constant con(metadata);
+  add(con);
+  return con;
+}
+
 Compile::Constant Compile::ConstantTable::add(MachConstantNode* n, MachOper* oper) {
   jvalue value;
   BasicType type = oper->type()->basic_type();
@@ -3177,7 +3180,8 @@
   case T_DOUBLE:  value.d = oper->constantD(); break;
   case T_OBJECT:
   case T_ADDRESS: value.l = (jobject) oper->constant(); break;
-  default: ShouldNotReachHere();
+  case T_METADATA: return add((Metadata*)oper->constant()); break;
+  default: guarantee(false, err_msg_res("unhandled type: %s", type2name(type)));
   }
   return add(n, type, value);
 }
--- a/src/share/vm/opto/compile.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/compile.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -141,36 +141,51 @@
   };
   struct AliasCacheEntry { const TypePtr* _adr_type; int _index; };  // simple duple type
   enum {
-    trapHistLength = methodDataOopDesc::_trap_hist_limit
+    trapHistLength = MethodData::_trap_hist_limit
   };
 
   // Constant entry of the constant table.
   class Constant {
   private:
     BasicType _type;
+    union {
     jvalue    _value;
+      Metadata* _metadata;
+    } _v;
     int       _offset;         // offset of this constant (in bytes) relative to the constant table base.
     float     _freq;
     bool      _can_be_reused;  // true (default) if the value can be shared with other users.
 
   public:
-    Constant() : _type(T_ILLEGAL), _offset(-1), _freq(0.0f), _can_be_reused(true) { _value.l = 0; }
+    Constant() : _type(T_ILLEGAL), _offset(-1), _freq(0.0f), _can_be_reused(true) { _v._value.l = 0; }
     Constant(BasicType type, jvalue value, float freq = 0.0f, bool can_be_reused = true) :
       _type(type),
-      _value(value),
       _offset(-1),
       _freq(freq),
       _can_be_reused(can_be_reused)
-    {}
+    {
+      assert(type != T_METADATA, "wrong constructor");
+      _v._value = value;
+    }
+    Constant(Metadata* metadata, bool can_be_reused = true) :
+      _type(T_METADATA),
+      _offset(-1),
+      _freq(0.0f),
+      _can_be_reused(can_be_reused)
+    {
+      _v._metadata = metadata;
+    }
 
     bool operator==(const Constant& other);
 
     BasicType type()      const    { return _type; }
 
-    jlong   get_jlong()   const    { return _value.j; }
-    jfloat  get_jfloat()  const    { return _value.f; }
-    jdouble get_jdouble() const    { return _value.d; }
-    jobject get_jobject() const    { return _value.l; }
+    jlong   get_jlong()   const    { return _v._value.j; }
+    jfloat  get_jfloat()  const    { return _v._value.f; }
+    jdouble get_jdouble() const    { return _v._value.d; }
+    jobject get_jobject() const    { return _v._value.l; }
+
+    Metadata* get_metadata() const { return _v._metadata; }
 
     int         offset()  const    { return _offset; }
     void    set_offset(int offset) {        _offset = offset; }
@@ -219,6 +234,7 @@
 
     void     add(Constant& con);
     Constant add(MachConstantNode* n, BasicType type, jvalue value);
+    Constant add(Metadata* metadata);
     Constant add(MachConstantNode* n, MachOper* oper);
     Constant add(MachConstantNode* n, jfloat f) {
       jvalue value; value.f = f;
@@ -270,7 +286,7 @@
   bool                  _do_scheduling;         // True if we intend to do scheduling
   bool                  _do_freq_based_layout;  // True if we intend to do frequency based block layout
   bool                  _do_count_invocations;  // True if we generate code to count invocations
-  bool                  _do_method_data_update; // True if we generate code to update methodDataOops
+  bool                  _do_method_data_update; // True if we generate code to update MethodData*s
   int                   _AliasLevel;            // Locally-adjusted version of AliasLevel flag.
   bool                  _print_assembly;        // True if we should dump assembly code for this compilation
 #ifndef PRODUCT
@@ -896,9 +912,6 @@
   // graph is strongly connected from root in both directions.
   void verify_graph_edges(bool no_dead_code = false) PRODUCT_RETURN;
 
-  // Print bytecodes, including the scope inlining tree
-  void print_codes();
-
   // End-of-run dumps.
   static void print_statistics() PRODUCT_RETURN;
 
--- a/src/share/vm/opto/connode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/connode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -50,10 +50,11 @@
   case T_FLOAT:     return new (C, 1) ConFNode( t->is_float_constant() );
   case T_DOUBLE:    return new (C, 1) ConDNode( t->is_double_constant() );
   case T_VOID:      return new (C, 1) ConNode ( Type::TOP );
-  case T_OBJECT:    return new (C, 1) ConPNode( t->is_oopptr() );
+  case T_OBJECT:    return new (C, 1) ConPNode( t->is_ptr() );
   case T_ARRAY:     return new (C, 1) ConPNode( t->is_aryptr() );
   case T_ADDRESS:   return new (C, 1) ConPNode( t->is_ptr() );
   case T_NARROWOOP: return new (C, 1) ConNNode( t->is_narrowoop() );
+  case T_METADATA:  return new (C, 1) ConPNode( t->is_ptr() );
     // Expected cases:  TypePtr::NULL_PTR, any is_rawptr()
     // Also seen: AnyPtr(TopPTR *+top); from command line:
     //   r -XX:+PrintOpto -XX:CIStart=285 -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=660
@@ -526,8 +527,8 @@
   // // If either input is an 'interface', return destination type
   // assert (in_oop == NULL || in_oop->klass() != NULL, "");
   // assert (my_oop == NULL || my_oop->klass() != NULL, "");
-  // if( (in_oop && in_oop->klass()->klass_part()->is_interface())
-  //   ||(my_oop && my_oop->klass()->klass_part()->is_interface()) ) {
+  // if( (in_oop && in_oop->klass()->is_interface())
+  //   ||(my_oop && my_oop->klass()->is_interface()) ) {
   //   TypePtr::PTR  in_ptr = in->isa_ptr() ? in->is_ptr()->_ptr : TypePtr::BotPTR;
   //   // Preserve cast away nullness for interfaces
   //   if( in_ptr == TypePtr::NotNull && my_oop && my_oop->_ptr == TypePtr::BotPTR ) {
@@ -604,7 +605,7 @@
   if (t == Type::TOP) return Type::TOP;
   if (t == TypePtr::NULL_PTR) return TypeNarrowOop::NULL_PTR;
 
-  assert(t->isa_oopptr(), "only oopptr here");
+  assert(t->isa_oop_ptr() || UseCompressedKlassPointers && t->isa_klassptr(), "only oopptr here");
   return t->make_narrowoop();
 }
 
--- a/src/share/vm/opto/doCall.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/doCall.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -23,7 +23,6 @@
  */
 
 #include "precompiled.hpp"
-#include "ci/ciCPCache.hpp"
 #include "ci/ciCallSite.hpp"
 #include "ci/ciMethodHandle.hpp"
 #include "classfile/vmSymbols.hpp"
@@ -392,7 +391,7 @@
 
   // Choose call strategy.
   bool call_is_virtual = is_virtual_or_interface;
-  int vtable_index = methodOopDesc::invalid_vtable_index;
+  int vtable_index = Method::invalid_vtable_index;
   ciMethod* callee = orig_callee;
 
   // Try to get the most accurate receiver type
@@ -539,7 +538,7 @@
             }
           }
         } else {
-          assert(ct == rt, err_msg_res("unexpected mismatch rt=%d, ct=%d", rt, ct));
+          assert(ct == rt, err_msg("unexpected mismatch rt=%d, ct=%d", rt, ct));
           // push a zero; it's better than getting an oop/int mismatch
           retnode = pop_node(rt);
           retnode = zerocon(ct);
@@ -836,9 +835,9 @@
     if( at_method_entry ) {
       // bump invocation counter if top method (for statistics)
       if (CountCompiledCalls && depth() == 1) {
-        const TypeOopPtr* addr_type = TypeOopPtr::make_from_constant(method());
+        const TypePtr* addr_type = TypeMetadataPtr::make(method());
         Node* adr1 = makecon(addr_type);
-        Node* adr2 = basic_plus_adr(adr1, adr1, in_bytes(methodOopDesc::compiled_invocation_counter_offset()));
+        Node* adr2 = basic_plus_adr(adr1, adr1, in_bytes(Method::compiled_invocation_counter_offset()));
         increment_counter(adr2);
       }
     } else if (is_inline) {
--- a/src/share/vm/opto/graphKit.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/graphKit.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -3446,12 +3446,6 @@
     if (t == TypePtr::NULL_PTR || t == Type::TOP)
       // stores of null never (?) need barriers
       return;
-    ciObject* con = t->is_oopptr()->const_oop();
-    if (con != NULL
-        && con->is_perm()
-        && Universe::heap()->can_elide_permanent_oop_store_barriers())
-      // no store barrier needed, because no old-to-new ref created
-      return;
   }
 
   if (use_ReduceInitialCardMarks()
--- a/src/share/vm/opto/graphKit.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/graphKit.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -743,7 +743,7 @@
   void shared_unlock(Node* box, Node* obj);
 
   // helper functions for the fast path/slow path idioms
-  Node* fast_and_slow(Node* in, const Type *result_type, Node* null_result, IfNode* fast_test, Node* fast_result, address slow_call, const TypeFunc *slow_call_type, Node* slow_arg, klassOop ex_klass, Node* slow_result);
+  Node* fast_and_slow(Node* in, const Type *result_type, Node* null_result, IfNode* fast_test, Node* fast_result, address slow_call, const TypeFunc *slow_call_type, Node* slow_arg, Klass* ex_klass, Node* slow_result);
 
   // Generate an instance-of idiom.  Used by both the instance-of bytecode
   // and the reflective instance-of call.
--- a/src/share/vm/opto/idealGraphPrinter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/idealGraphPrinter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -407,7 +407,7 @@
     node->_in_dump_cnt++;
     print_prop(NODE_NAME_PROPERTY, (const char *)node->Name());
     const Type *t = node->bottom_type();
-    print_prop("type", (const char *)Type::msg[t->base()]);
+    print_prop("type", t->msg());
     print_prop("idx", node->_idx);
 #ifdef ASSERT
     print_prop("debug_idx", node->_debug_idx);
--- a/src/share/vm/opto/library_call.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/library_call.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -2904,11 +2904,11 @@
   // Note:  The argument might still be an illegal value like
   // Serializable.class or Object[].class.   The runtime will handle it.
   // But we must make an explicit check for initialization.
-  Node* insp = basic_plus_adr(kls, in_bytes(instanceKlass::init_state_offset()));
-  // Use T_BOOLEAN for instanceKlass::_init_state so the compiler
+  Node* insp = basic_plus_adr(kls, in_bytes(InstanceKlass::init_state_offset()));
+  // Use T_BOOLEAN for InstanceKlass::_init_state so the compiler
   // can generate code to load it as unsigned byte.
   Node* inst = make_load(NULL, insp, TypeInt::UBYTE, T_BOOLEAN);
-  Node* bits = intcon(instanceKlass::fully_initialized);
+  Node* bits = intcon(InstanceKlass::fully_initialized);
   Node* test = _gvn.transform( new (C, 3) SubINode(inst, bits) );
   // The 'test' is non-zero if we need to take a slow path.
 
@@ -3475,7 +3475,7 @@
   if (layout_val == NULL) {
     bool query = (obj_array
                   ? Klass::layout_helper_is_objArray(layout_con)
-                  : Klass::layout_helper_is_javaArray(layout_con));
+                  : Klass::layout_helper_is_array(layout_con));
     if (query == not_array) {
       return NULL;                       // never a branch
     } else {                             // always a branch
@@ -3710,15 +3710,15 @@
                                              RegionNode* slow_region) {
   ciMethod* method = callee();
   int vtable_index = method->vtable_index();
-  // Get the methodOop out of the appropriate vtable entry.
-  int entry_offset  = (instanceKlass::vtable_start_offset() +
+  // Get the Method* out of the appropriate vtable entry.
+  int entry_offset  = (InstanceKlass::vtable_start_offset() +
                      vtable_index*vtableEntry::size()) * wordSize +
                      vtableEntry::method_offset_in_bytes();
   Node* entry_addr  = basic_plus_adr(obj_klass, entry_offset);
   Node* target_call = make_load(NULL, entry_addr, TypeInstPtr::NOTNULL, T_OBJECT);
 
   // Compare the target method with the expected method (e.g., Object.hashCode).
-  const TypeInstPtr* native_call_addr = TypeInstPtr::make(method);
+  const TypePtr* native_call_addr = TypeMetadataPtr::make(method);
 
   Node* native_call = makecon(native_call_addr);
   Node* chk_native  = _gvn.transform( new(C, 3) CmpPNode(target_call, native_call) );
@@ -3753,7 +3753,7 @@
                                 method, bci());
   } else if (is_virtual) {
     null_check_receiver(method);
-    int vtable_index = methodOopDesc::invalid_vtable_index;
+    int vtable_index = Method::invalid_vtable_index;
     if (UseInlineCaches) {
       // Suppress the vtable call
     } else {
@@ -4266,8 +4266,8 @@
                             instanceOopDesc::base_offset_in_bytes();
   // base_off:
   // 8  - 32-bit VM
-  // 12 - 64-bit VM, compressed oops
-  // 16 - 64-bit VM, normal oops
+  // 12 - 64-bit VM, compressed klass
+  // 16 - 64-bit VM, normal klass
   if (base_off % BytesPerLong != 0) {
     assert(UseCompressedOops, "");
     if (is_array) {
@@ -4899,7 +4899,7 @@
     // further to JVM_ArrayCopy on the first per-oop check that fails.
     // (Actually, we don't move raw bits only; the GC requires card marks.)
 
-    // Get the klassOop for both src and dest
+    // Get the Klass* for both src and dest
     Node* src_klass  = load_object_klass(src);
     Node* dest_klass = load_object_klass(dest);
 
--- a/src/share/vm/opto/machnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/machnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -38,7 +38,7 @@
   return (int)(ra_->get_encode(node->in(idx)));
 }
 intptr_t  MachOper::constant() const { return 0x00; }
-bool MachOper::constant_is_oop() const { return false; }
+relocInfo::relocType MachOper::constant_reloc() const { return relocInfo::none; }
 jdouble MachOper::constantD() const { ShouldNotReachHere(); return 0.0; }
 jfloat  MachOper::constantF() const { ShouldNotReachHere(); return 0.0; }
 jlong   MachOper::constantL() const { ShouldNotReachHere(); return CONST64(0) ; }
@@ -54,7 +54,7 @@
 int MachOper::base_position()  const { return -1; }  // no base input
 int MachOper::index_position() const { return -1; }  // no index input
 // Check for PC-Relative displacement
-bool MachOper::disp_is_oop() const { return false; }
+relocInfo::relocType MachOper::disp_reloc() const { return relocInfo::none; }
 // Return the label
 Label*   MachOper::label()  const { ShouldNotReachHere(); return 0; }
 intptr_t MachOper::method() const { ShouldNotReachHere(); return 0; }
--- a/src/share/vm/opto/machnode.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/machnode.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -104,7 +104,7 @@
 #endif
 
   virtual intptr_t  constant() const;
-  virtual bool constant_is_oop() const;
+  virtual relocInfo::relocType constant_reloc() const;
   virtual jdouble constantD() const;
   virtual jfloat  constantF() const;
   virtual jlong   constantL() const;
@@ -118,7 +118,7 @@
   // Parameters needed to support MEMORY_INTERFACE access to stackSlot
   virtual int  disp (PhaseRegAlloc *ra_, const Node *node, int idx) const;
   // Check for PC-Relative displacement
-  virtual bool disp_is_oop() const;
+  virtual relocInfo::relocType disp_reloc() const;
   virtual int  constant_disp() const;   // usu. 0, may return Type::OffsetBot
   virtual int  base_position()  const;  // base edge position, or -1
   virtual int  index_position() const;  // index edge position, or -1
@@ -247,7 +247,7 @@
 
   // Bottom_type call; value comes from operand0
   virtual const class Type *bottom_type() const { return _opnds[0]->type(); }
-  virtual uint ideal_reg() const { const Type *t = _opnds[0]->type(); return t == TypeInt::CC ? Op_RegFlags : Matcher::base2reg[t->base()]; }
+  virtual uint ideal_reg() const { const Type *t = _opnds[0]->type(); return t == TypeInt::CC ? Op_RegFlags : t->ideal_reg(); }
 
   // If this is a memory op, return the base pointer and fixed offset.
   // If there are no such, return NULL.  If there are multiple addresses
@@ -498,7 +498,7 @@
   virtual const RegMask &out_RegMask() const { return *_out; }
   virtual const RegMask &in_RegMask(uint) const { return *_in; }
   virtual const class Type *bottom_type() const { return _type; }
-  virtual uint ideal_reg() const { return Matcher::base2reg[_type->base()]; }
+  virtual uint ideal_reg() const { return _type->ideal_reg(); }
   virtual uint oper_input_base() const { return 1; }
   uint implementation( CodeBuffer *cbuf, PhaseRegAlloc *ra_, bool do_size, outputStream* st ) const;
 
--- a/src/share/vm/opto/macro.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/macro.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -1567,7 +1567,7 @@
   }
   rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS);
 
-  rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT);
+  rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_METADATA);
   int header_size = alloc->minimum_header_size();  // conservatively small
 
   // Array length
--- a/src/share/vm/opto/matcher.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/matcher.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -198,7 +198,7 @@
   const TypeTuple *range = C->tf()->range();
   if( range->cnt() > TypeFunc::Parms ) { // If not a void function
     // Get ideal-register return type
-    int ireg = base2reg[range->field_at(TypeFunc::Parms)->base()];
+    int ireg = range->field_at(TypeFunc::Parms)->ideal_reg();
     // Get machine return register
     uint sop = C->start()->Opcode();
     OptoRegPair regs = return_value(ireg, false);
@@ -1285,7 +1285,7 @@
     // a little in-place argument insertion.
     // FIXME: Is this still necessary?
     int regs_per_word  = NOT_LP64(1) LP64_ONLY(2); // %%% make a global const!
-    out_arg_limit_per_call += methodOopDesc::extra_stack_entries() * regs_per_word;
+    out_arg_limit_per_call += Method::extra_stack_entries() * regs_per_word;
     // Do not update mcall->_argsize because (a) the extra space is not
     // pushed as arguments and (b) _argsize is dead (not used anywhere).
   }
--- a/src/share/vm/opto/matcher.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/matcher.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -123,7 +123,6 @@
 
 public:
   int LabelRootDepth;
-  static const int base2reg[];        // Map Types to machine register types
   // Convert ideal machine register to a register mask for spill-loads
   static const RegMask *idealreg2regmask[];
   RegMask *idealreg2spillmask  [_last_machine_leaf];
--- a/src/share/vm/opto/memnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/memnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -841,7 +841,7 @@
 { return !Type::cmp( _type, ((LoadNode&)n)._type ); }
 const Type *LoadNode::bottom_type() const { return _type; }
 uint LoadNode::ideal_reg() const {
-  return Matcher::base2reg[_type->base()];
+  return _type->ideal_reg();
 }
 
 #ifndef PRODUCT
@@ -1660,7 +1660,7 @@
         return TypeInt::make(klass->super_check_offset());
       }
       // Compute index into primary_supers array
-      juint depth = (tkls->offset() - in_bytes(Klass::primary_supers_offset())) / sizeof(klassOop);
+      juint depth = (tkls->offset() - in_bytes(Klass::primary_supers_offset())) / sizeof(Klass*);
       // Check for overflowing; use unsigned compare to handle the negative case.
       if( depth < ciKlass::primary_super_limit() ) {
         // The field is an element of Klass::_primary_supers.  Return its (constant) value.
@@ -1690,13 +1690,13 @@
     // shallow enough depth.  Even though the klass is not exact, entries less
     // than or equal to its super depth are correct.
     if (klass->is_loaded() ) {
-      ciType *inner = klass->klass();
+      ciType *inner = klass;
       while( inner->is_obj_array_klass() )
         inner = inner->as_obj_array_klass()->base_element_type();
       if( inner->is_instance_klass() &&
           !inner->as_instance_klass()->flags().is_interface() ) {
         // Compute index into primary_supers array
-        juint depth = (tkls->offset() - in_bytes(Klass::primary_supers_offset())) / sizeof(klassOop);
+        juint depth = (tkls->offset() - in_bytes(Klass::primary_supers_offset())) / sizeof(Klass*);
         // Check for overflowing; use unsigned compare to handle the negative case.
         if( depth < ciKlass::primary_super_limit() &&
             depth <= klass->super_depth() ) { // allow self-depth checks to handle self-check case
@@ -1891,10 +1891,11 @@
   Compile* C = gvn.C;
   Node *ctl = NULL;
   // sanity check the alias category against the created node type
-  const TypeOopPtr *adr_type = adr->bottom_type()->isa_oopptr();
-  assert(adr_type != NULL, "expecting TypeOopPtr");
+  const TypePtr *adr_type = adr->bottom_type()->isa_ptr();
+  assert(adr_type != NULL, "expecting TypeKlassPtr");
 #ifdef _LP64
   if (adr_type->is_ptr_to_narrowoop()) {
+    assert(UseCompressedKlassPointers, "no compressed klasses");
     Node* load_klass = gvn.transform(new (C, 3) LoadNKlassNode(ctl, mem, adr, at, tk->make_narrowoop()));
     return new (C, 2) DecodeNNode(load_klass, load_klass->bottom_type()->make_ptr());
   }
@@ -2065,7 +2066,7 @@
     }
   }
 
-  // Simplify k.java_mirror.as_klass to plain k, where k is a klassOop.
+  // Simplify k.java_mirror.as_klass to plain k, where k is a Klass*.
   // Simplify ak.component_mirror.array_klass to plain ak, ak an arrayKlass.
   // See inline_native_Class_query for occurrences of these patterns.
   // Java Example:  x.getClass().isAssignableFrom(y)
@@ -2074,7 +2075,7 @@
   // This improves reflective code, often making the Class
   // mirror go completely dead.  (Current exception:  Class
   // mirrors may appear in debug info, but we could clean them out by
-  // introducing a new debug info operator for klassOop.java_mirror).
+  // introducing a new debug info operator for Klass*.java_mirror).
   if (toop->isa_instptr() && toop->klass() == phase->C->env()->Class_klass()
       && (offset == java_lang_Class::klass_offset_in_bytes() ||
           offset == java_lang_Class::array_klass_offset_in_bytes())) {
@@ -2223,11 +2224,12 @@
   case T_LONG:    return new (C, 4) StoreLNode(ctl, mem, adr, adr_type, val);
   case T_FLOAT:   return new (C, 4) StoreFNode(ctl, mem, adr, adr_type, val);
   case T_DOUBLE:  return new (C, 4) StoreDNode(ctl, mem, adr, adr_type, val);
+  case T_METADATA:
   case T_ADDRESS:
   case T_OBJECT:
 #ifdef _LP64
     if (adr->bottom_type()->is_ptr_to_narrowoop() ||
-        (UseCompressedOops && val->bottom_type()->isa_klassptr() &&
+        (UseCompressedKlassPointers && val->bottom_type()->isa_klassptr() &&
          adr->bottom_type()->isa_rawptr())) {
       val = gvn.transform(new (C, 2) EncodePNode(val, val->bottom_type()->make_narrowoop()));
       return new (C, 4) StoreNNode(ctl, mem, adr, adr_type, val);
--- a/src/share/vm/opto/multnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/multnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -130,5 +130,5 @@
 
 //------------------------------ideal_reg--------------------------------------
 uint ProjNode::ideal_reg() const {
-  return Matcher::base2reg[bottom_type()->base()];
+  return bottom_type()->ideal_reg();
 }
--- a/src/share/vm/opto/node.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/node.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -2057,5 +2057,5 @@
 
 //------------------------------ideal_reg--------------------------------------
 uint TypeNode::ideal_reg() const {
-  return Matcher::base2reg[_type->base()];
+  return _type->ideal_reg();
 }
--- a/src/share/vm/opto/output.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/output.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -626,7 +626,7 @@
       assert(cik->is_instance_klass() ||
              cik->is_array_klass(), "Not supported allocation.");
       sv = new ObjectValue(spobj->_idx,
-                           new ConstantOopWriteValue(cik->constant_encoding()));
+                           new ConstantOopWriteValue(cik->java_mirror()->constant_encoding()));
       Compile::set_sv_for_object_node(objs, sv);
 
       uint first_ind = spobj->first_index();
@@ -715,8 +715,7 @@
     array->append(new ConstantOopWriteValue(NULL));
     break;
   case Type::AryPtr:
-  case Type::InstPtr:
-  case Type::KlassPtr:          // fall through
+  case Type::InstPtr:          // fall through
     array->append(new ConstantOopWriteValue(t->isa_oopptr()->const_oop()->constant_encoding()));
     break;
   case Type::NarrowOop:
@@ -902,7 +901,7 @@
           assert(cik->is_instance_klass() ||
                  cik->is_array_klass(), "Not supported allocation.");
           ObjectValue* sv = new ObjectValue(spobj->_idx,
-                                new ConstantOopWriteValue(cik->constant_encoding()));
+                                            new ConstantOopWriteValue(cik->java_mirror()->constant_encoding()));
           Compile::set_sv_for_object_node(objs, sv);
 
           uint first_ind = spobj->first_index();
@@ -1658,8 +1657,7 @@
                    "");
       }
       if (method() != NULL) {
-        method()->print_oop();
-        print_codes();
+        method()->print_metadata();
       }
       dump_asm(node_offsets, node_offset_limit);
       if (xtty != NULL) {
--- a/src/share/vm/opto/parse1.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/parse1.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,7 +25,7 @@
 #include "precompiled.hpp"
 #include "compiler/compileLog.hpp"
 #include "interpreter/linkResolver.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "opto/addnode.hpp"
 #include "opto/idealGraphPrinter.hpp"
 #include "opto/locknode.hpp"
@@ -492,7 +492,7 @@
       if (PrintOpto && (Verbose || WizardMode)) {
         tty->print_cr("OSR @%d type flow bailout: %s", _entry_bci, _flow->failure_reason());
         if (Verbose) {
-          method()->print_oop();
+          method()->print();
           method()->print_codes();
           _flow->print();
         }
--- a/src/share/vm/opto/parse2.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/parse2.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -1447,7 +1447,7 @@
                       NULL, tag.internal_name());
         break;
       }
-      assert(constant.basic_type() != T_OBJECT || !constant.as_object()->is_klass(),
+      assert(constant.basic_type() != T_OBJECT || constant.as_object()->is_instance(),
              "must be java_mirror of klass");
       bool pushed = push_constant(constant, true);
       guarantee(pushed, "must be possible to push this constant");
--- a/src/share/vm/opto/parseHelper.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/parseHelper.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -46,7 +46,7 @@
   Node* thread = _gvn.transform( new (C, 1) ThreadLocalNode() );
 
   // Get method
-  const TypeInstPtr* method_type = TypeInstPtr::make(TypePtr::Constant, method->klass(), true, method, 0);
+  const TypePtr* method_type = TypeMetadataPtr::make(method);
   Node *method_node = _gvn.transform( ConNode::make(C, method_type) );
 
   kill_dead_locals();
@@ -220,7 +220,7 @@
   _gvn.set_type(merge, Type::CONTROL);
   Node* kls = makecon(TypeKlassPtr::make(klass));
 
-  Node* init_thread_offset = _gvn.MakeConX(in_bytes(instanceKlass::init_thread_offset()));
+  Node* init_thread_offset = _gvn.MakeConX(in_bytes(InstanceKlass::init_thread_offset()));
   Node* adr_node = basic_plus_adr(kls, kls, init_thread_offset);
   Node* init_thread = make_load(NULL, adr_node, TypeRawPtr::BOTTOM, T_ADDRESS);
   Node *tst   = Bool( CmpP( init_thread, cur_thread), BoolTest::eq);
@@ -228,12 +228,12 @@
   set_control(IfTrue(iff));
   merge->set_req(1, IfFalse(iff));
 
-  Node* init_state_offset = _gvn.MakeConX(in_bytes(instanceKlass::init_state_offset()));
+  Node* init_state_offset = _gvn.MakeConX(in_bytes(InstanceKlass::init_state_offset()));
   adr_node = basic_plus_adr(kls, kls, init_state_offset);
-  // Use T_BOOLEAN for instanceKlass::_init_state so the compiler
+  // Use T_BOOLEAN for InstanceKlass::_init_state so the compiler
   // can generate code to load it as unsigned byte.
   Node* init_state = make_load(NULL, adr_node, TypeInt::UBYTE, T_BOOLEAN);
-  Node* being_init = _gvn.intcon(instanceKlass::being_initialized);
+  Node* being_init = _gvn.intcon(InstanceKlass::being_initialized);
   tst   = Bool( CmpI( init_state, being_init), BoolTest::eq);
   iff = create_and_map_if(control(), tst, PROB_ALWAYS, COUNT_UNKNOWN);
   set_control(IfTrue(iff));
@@ -336,13 +336,13 @@
 void Parse::increment_and_test_invocation_counter(int limit) {
   if (!count_invocations()) return;
 
-  // Get the methodOop node.
-  const TypePtr* adr_type = TypeOopPtr::make_from_constant(method());
-  Node *methodOop_node = makecon(adr_type);
+  // Get the Method* node.
+  const TypePtr* adr_type = TypeMetadataPtr::make(method());
+  Node *method_node = makecon(adr_type);
 
-  // Load the interpreter_invocation_counter from the methodOop.
-  int offset = methodOopDesc::interpreter_invocation_counter_offset_in_bytes();
-  Node* adr_node = basic_plus_adr(methodOop_node, methodOop_node, offset);
+  // Load the interpreter_invocation_counter from the Method*.
+  int offset = Method::interpreter_invocation_counter_offset_in_bytes();
+  Node* adr_node = basic_plus_adr(method_node, method_node, offset);
   Node* cnt = make_load(NULL, adr_node, TypeInt::INT, T_INT, adr_type);
 
   test_counter_against_threshold(cnt, limit);
@@ -354,8 +354,8 @@
 
 //----------------------------method_data_addressing---------------------------
 Node* Parse::method_data_addressing(ciMethodData* md, ciProfileData* data, ByteSize counter_offset, Node* idx, uint stride) {
-  // Get offset within methodDataOop of the data array
-  ByteSize data_offset = methodDataOopDesc::data_offset();
+  // Get offset within MethodData* of the data array
+  ByteSize data_offset = MethodData::data_offset();
 
   // Get cell offset of the ProfileData within data array
   int cell_offset = md->dp_to_di(data->dp());
@@ -363,7 +363,7 @@
   // Add in counter_offset, the # of bytes into the ProfileData of counter or flag
   int offset = in_bytes(data_offset) + cell_offset + in_bytes(counter_offset);
 
-  const TypePtr* adr_type = TypeOopPtr::make_from_constant(md);
+  const TypePtr* adr_type = TypeMetadataPtr::make(md);
   Node* mdo = makecon(adr_type);
   Node* ptr = basic_plus_adr(mdo, mdo, offset);
 
--- a/src/share/vm/opto/reg_split.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/reg_split.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1196,7 +1196,7 @@
           if( OptoReg::is_stack(uselrg.reg()) &&
               uselrg.reg() < LRG::SPILL_REG && // USE is from stack
               deflrg.reg() != uselrg.reg() ) { // Not trivially removed
-            uint def_ideal_reg = Matcher::base2reg[n->bottom_type()->base()];
+            uint def_ideal_reg = n->bottom_type()->ideal_reg();
             const RegMask &def_rm = *Matcher::idealreg2regmask[def_ideal_reg];
             const RegMask &use_rm = n->in_RegMask(copyidx);
             if( def_rm.overlap(use_rm) && n->is_SpillCopy() ) {  // Bug 4707800, 'n' may be a storeSSL
--- a/src/share/vm/opto/runtime.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/runtime.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -228,7 +228,7 @@
 }
 
 // object allocation
-JRT_BLOCK_ENTRY(void, OptoRuntime::new_instance_C(klassOopDesc* klass, JavaThread* thread))
+JRT_BLOCK_ENTRY(void, OptoRuntime::new_instance_C(Klass* klass, JavaThread* thread))
   JRT_BLOCK;
 #ifndef PRODUCT
   SharedRuntime::_new_instance_ctr++;         // new instance requires GC
@@ -238,11 +238,11 @@
   // These checks are cheap to make and support reflective allocation.
   int lh = Klass::cast(klass)->layout_helper();
   if (Klass::layout_helper_needs_slow_path(lh)
-      || !instanceKlass::cast(klass)->is_initialized()) {
+      || !InstanceKlass::cast(klass)->is_initialized()) {
     KlassHandle kh(THREAD, klass);
     kh->check_valid_for_instantiation(false, THREAD);
     if (!HAS_PENDING_EXCEPTION) {
-      instanceKlass::cast(kh())->initialize(THREAD);
+      InstanceKlass::cast(kh())->initialize(THREAD);
     }
     if (!HAS_PENDING_EXCEPTION) {
       klass = kh();
@@ -253,7 +253,7 @@
 
   if (klass != NULL) {
     // Scavenge and allocate an instance.
-    oop result = instanceKlass::cast(klass)->allocate_instance(THREAD);
+    oop result = InstanceKlass::cast(klass)->allocate_instance(THREAD);
     thread->set_vm_result(result);
 
     // Pass oops back through thread local storage.  Our apparent type to Java
@@ -273,7 +273,7 @@
 
 
 // array allocation
-JRT_BLOCK_ENTRY(void, OptoRuntime::new_array_C(klassOopDesc* array_type, int len, JavaThread *thread))
+JRT_BLOCK_ENTRY(void, OptoRuntime::new_array_C(Klass* array_type, int len, JavaThread *thread))
   JRT_BLOCK;
 #ifndef PRODUCT
   SharedRuntime::_new_array_ctr++;            // new array requires GC
@@ -292,7 +292,7 @@
     // Although the oopFactory likes to work with the elem_type,
     // the compiler prefers the array_type, since it must already have
     // that latter value in hand for the fast path.
-    klassOopDesc* elem_type = objArrayKlass::cast(array_type)->element_klass();
+    Klass* elem_type = objArrayKlass::cast(array_type)->element_klass();
     result = oopFactory::new_objArray(elem_type, len, THREAD);
   }
 
@@ -311,7 +311,7 @@
 JRT_END
 
 // array allocation without zeroing
-JRT_BLOCK_ENTRY(void, OptoRuntime::new_array_nozero_C(klassOopDesc* array_type, int len, JavaThread *thread))
+JRT_BLOCK_ENTRY(void, OptoRuntime::new_array_nozero_C(Klass* array_type, int len, JavaThread *thread))
   JRT_BLOCK;
 #ifndef PRODUCT
   SharedRuntime::_new_array_ctr++;            // new array requires GC
@@ -361,12 +361,12 @@
 // Note: multianewarray for one dimension is handled inline by GraphKit::new_array.
 
 // multianewarray for 2 dimensions
-JRT_ENTRY(void, OptoRuntime::multianewarray2_C(klassOopDesc* elem_type, int len1, int len2, JavaThread *thread))
+JRT_ENTRY(void, OptoRuntime::multianewarray2_C(Klass* elem_type, int len1, int len2, JavaThread *thread))
 #ifndef PRODUCT
   SharedRuntime::_multi2_ctr++;                // multianewarray for 1 dimension
 #endif
   assert(check_compiled_frame(thread), "incorrect caller");
-  assert(oop(elem_type)->is_klass(), "not a class");
+  assert(elem_type->is_klass(), "not a class");
   jint dims[2];
   dims[0] = len1;
   dims[1] = len2;
@@ -376,12 +376,12 @@
 JRT_END
 
 // multianewarray for 3 dimensions
-JRT_ENTRY(void, OptoRuntime::multianewarray3_C(klassOopDesc* elem_type, int len1, int len2, int len3, JavaThread *thread))
+JRT_ENTRY(void, OptoRuntime::multianewarray3_C(Klass* elem_type, int len1, int len2, int len3, JavaThread *thread))
 #ifndef PRODUCT
   SharedRuntime::_multi3_ctr++;                // multianewarray for 1 dimension
 #endif
   assert(check_compiled_frame(thread), "incorrect caller");
-  assert(oop(elem_type)->is_klass(), "not a class");
+  assert(elem_type->is_klass(), "not a class");
   jint dims[3];
   dims[0] = len1;
   dims[1] = len2;
@@ -392,12 +392,12 @@
 JRT_END
 
 // multianewarray for 4 dimensions
-JRT_ENTRY(void, OptoRuntime::multianewarray4_C(klassOopDesc* elem_type, int len1, int len2, int len3, int len4, JavaThread *thread))
+JRT_ENTRY(void, OptoRuntime::multianewarray4_C(Klass* elem_type, int len1, int len2, int len3, int len4, JavaThread *thread))
 #ifndef PRODUCT
   SharedRuntime::_multi4_ctr++;                // multianewarray for 1 dimension
 #endif
   assert(check_compiled_frame(thread), "incorrect caller");
-  assert(oop(elem_type)->is_klass(), "not a class");
+  assert(elem_type->is_klass(), "not a class");
   jint dims[4];
   dims[0] = len1;
   dims[1] = len2;
@@ -409,12 +409,12 @@
 JRT_END
 
 // multianewarray for 5 dimensions
-JRT_ENTRY(void, OptoRuntime::multianewarray5_C(klassOopDesc* elem_type, int len1, int len2, int len3, int len4, int len5, JavaThread *thread))
+JRT_ENTRY(void, OptoRuntime::multianewarray5_C(Klass* elem_type, int len1, int len2, int len3, int len4, int len5, JavaThread *thread))
 #ifndef PRODUCT
   SharedRuntime::_multi5_ctr++;                // multianewarray for 1 dimension
 #endif
   assert(check_compiled_frame(thread), "incorrect caller");
-  assert(oop(elem_type)->is_klass(), "not a class");
+  assert(elem_type->is_klass(), "not a class");
   jint dims[5];
   dims[0] = len1;
   dims[1] = len2;
@@ -426,9 +426,9 @@
   thread->set_vm_result(obj);
 JRT_END
 
-JRT_ENTRY(void, OptoRuntime::multianewarrayN_C(klassOopDesc* elem_type, arrayOopDesc* dims, JavaThread *thread))
+JRT_ENTRY(void, OptoRuntime::multianewarrayN_C(Klass* elem_type, arrayOopDesc* dims, JavaThread *thread))
   assert(check_compiled_frame(thread), "incorrect caller");
-  assert(oop(elem_type)->is_klass(), "not a class");
+  assert(elem_type->is_klass(), "not a class");
   assert(oop(dims)->is_typeArray(), "not an array");
 
   ResourceMark rm;
@@ -844,7 +844,7 @@
 
 JRT_LEAF(void, OptoRuntime::profile_receiver_type_C(DataLayout* data, oopDesc* receiver))
   if (receiver == NULL) return;
-  klassOop receiver_klass = receiver->klass();
+  Klass* receiver_klass = receiver->klass();
 
   intptr_t* mdp = ((intptr_t*)(data)) + DataLayout::header_size_in_cells();
   int empty_row = -1;           // free row, if any is encountered
@@ -1148,7 +1148,7 @@
   // create input type (domain)
   const Type **fields = TypeTuple::fields(2);
   fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; // Thread-local storage
-  fields[TypeFunc::Parms+1] = TypeInstPtr::NOTNULL;  // methodOop;    Method we are entering
+  fields[TypeFunc::Parms+1] = TypeMetadataPtr::BOTTOM;  // Method*;    Method we are entering
   const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2,fields);
 
   // create result type (range)
@@ -1178,8 +1178,8 @@
 
 JRT_ENTRY_NO_ASYNC(void, OptoRuntime::register_finalizer(oopDesc* obj, JavaThread* thread))
   assert(obj->is_oop(), "must be a valid oop");
-  assert(obj->klass()->klass_part()->has_finalizer(), "shouldn't be here otherwise");
-  instanceKlass::register_finalizer(instanceOop(obj), CHECK);
+  assert(obj->klass()->has_finalizer(), "shouldn't be here otherwise");
+  InstanceKlass::register_finalizer(instanceOop(obj), CHECK);
 JRT_END
 
 //-----------------------------------------------------------------------------
--- a/src/share/vm/opto/runtime.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/runtime.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -140,11 +140,11 @@
   // =================================
 
   // Allocate storage for a Java instance.
-  static void new_instance_C(klassOopDesc* instance_klass, JavaThread *thread);
+  static void new_instance_C(Klass* instance_klass, JavaThread *thread);
 
   // Allocate storage for a objArray or typeArray
-  static void new_array_C(klassOopDesc* array_klass, int len, JavaThread *thread);
-  static void new_array_nozero_C(klassOopDesc* array_klass, int len, JavaThread *thread);
+  static void new_array_C(Klass* array_klass, int len, JavaThread *thread);
+  static void new_array_nozero_C(Klass* array_klass, int len, JavaThread *thread);
 
   // Post-slow-path-allocation, pre-initializing-stores step for
   // implementing ReduceInitialCardMarks
@@ -152,11 +152,11 @@
 
   // Allocate storage for a multi-dimensional arrays
   // Note: needs to be fixed for arbitrary number of dimensions
-  static void multianewarray2_C(klassOopDesc* klass, int len1, int len2, JavaThread *thread);
-  static void multianewarray3_C(klassOopDesc* klass, int len1, int len2, int len3, JavaThread *thread);
-  static void multianewarray4_C(klassOopDesc* klass, int len1, int len2, int len3, int len4, JavaThread *thread);
-  static void multianewarray5_C(klassOopDesc* klass, int len1, int len2, int len3, int len4, int len5, JavaThread *thread);
-  static void multianewarrayN_C(klassOopDesc* klass, arrayOopDesc* dims, JavaThread *thread);
+  static void multianewarray2_C(Klass* klass, int len1, int len2, JavaThread *thread);
+  static void multianewarray3_C(Klass* klass, int len1, int len2, int len3, JavaThread *thread);
+  static void multianewarray4_C(Klass* klass, int len1, int len2, int len3, int len4, JavaThread *thread);
+  static void multianewarray5_C(Klass* klass, int len1, int len2, int len3, int len4, int len5, JavaThread *thread);
+  static void multianewarrayN_C(Klass* klass, arrayOopDesc* dims, JavaThread *thread);
   static void g1_wb_pre_C(oopDesc* orig, JavaThread* thread);
   static void g1_wb_post_C(void* card_addr, JavaThread* thread);
 
--- a/src/share/vm/opto/subnode.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/subnode.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -664,9 +664,7 @@
       // See if neither subclasses the other, or if the class on top
       // is precise.  In either of these cases, the compare is known
       // to fail if at least one of the pointers is provably not null.
-      if (klass0->equals(klass1)   ||   // if types are unequal but klasses are
-          !klass0->is_java_klass() ||   // types not part of Java language?
-          !klass1->is_java_klass()) {   // types not part of Java language?
+      if (klass0->equals(klass1)) {  // if types are unequal but klasses are equal
         // Do nothing; we know nothing for imprecise types
       } else if (klass0->is_subtype_of(klass1)) {
         // If klass1's type is PRECISE, then classes are unrelated.
@@ -744,7 +742,7 @@
   }
 
   // return the ConP(Foo.klass)
-  assert(mirror_type->is_klass(), "mirror_type should represent a klassOop");
+  assert(mirror_type->is_klass(), "mirror_type should represent a Klass*");
   return phase->makecon(TypeKlassPtr::make(mirror_type->as_klass()));
 }
 
@@ -891,9 +889,7 @@
       // See if neither subclasses the other, or if the class on top
       // is precise.  In either of these cases, the compare is known
       // to fail if at least one of the pointers is provably not null.
-      if (klass0->equals(klass1)   ||   // if types are unequal but klasses are
-          !klass0->is_java_klass() ||   // types not part of Java language?
-          !klass1->is_java_klass()) {   // types not part of Java language?
+      if (klass0->equals(klass1)) { // if types are unequal but klasses are equal
         // Do nothing; we know nothing for imprecise types
       } else if (klass0->is_subtype_of(klass1)) {
         // If klass1's type is PRECISE, then classes are unrelated.
--- a/src/share/vm/opto/type.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/type.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -23,6 +23,7 @@
  */
 
 #include "precompiled.hpp"
+#include "ci/ciMethodData.hpp"
 #include "ci/ciTypeFlow.hpp"
 #include "classfile/symbolTable.hpp"
 #include "classfile/systemDictionary.hpp"
@@ -33,7 +34,6 @@
 #include "memory/resourceArea.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
-#include "oops/klassKlass.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/typeArrayKlass.hpp"
 #include "opto/matcher.hpp"
@@ -49,40 +49,46 @@
 Dict* Type::_shared_type_dict = NULL;
 
 // Array which maps compiler types to Basic Types
-const BasicType Type::_basic_type[Type::lastype] = {
-  T_ILLEGAL,    // Bad
-  T_ILLEGAL,    // Control
-  T_VOID,       // Top
-  T_INT,        // Int
-  T_LONG,       // Long
-  T_VOID,       // Half
-  T_NARROWOOP,  // NarrowOop
-
-  T_ILLEGAL,    // Tuple
-  T_ARRAY,      // Array
-  T_ILLEGAL,    // VectorS
-  T_ILLEGAL,    // VectorD
-  T_ILLEGAL,    // VectorX
-  T_ILLEGAL,    // VectorY
-
-  T_ADDRESS,    // AnyPtr   // shows up in factory methods for NULL_PTR
-  T_ADDRESS,    // RawPtr
-  T_OBJECT,     // OopPtr
-  T_OBJECT,     // InstPtr
-  T_OBJECT,     // AryPtr
-  T_OBJECT,     // KlassPtr
-
-  T_OBJECT,     // Function
-  T_ILLEGAL,    // Abio
-  T_ADDRESS,    // Return_Address
-  T_ILLEGAL,    // Memory
-  T_FLOAT,      // FloatTop
-  T_FLOAT,      // FloatCon
-  T_FLOAT,      // FloatBot
-  T_DOUBLE,     // DoubleTop
-  T_DOUBLE,     // DoubleCon
-  T_DOUBLE,     // DoubleBot
-  T_ILLEGAL,    // Bottom
+Type::TypeInfo Type::_type_info[Type::lastype] = {
+  { Bad,             T_ILLEGAL,    "bad",           false, Node::NotAMachineReg, relocInfo::none          },  // Bad
+  { Control,         T_ILLEGAL,    "control",       false, 0,                    relocInfo::none          },  // Control
+  { Bottom,          T_VOID,       "top",           false, 0,                    relocInfo::none          },  // Top
+  { Bad,             T_INT,        "int:",          false, Op_RegI,              relocInfo::none          },  // Int
+  { Bad,             T_LONG,       "long:",         false, Op_RegL,              relocInfo::none          },  // Long
+  { Half,            T_VOID,       "half",          false, 0,                    relocInfo::none          },  // Half
+  { Bad,             T_NARROWOOP,  "narrowoop:",    false, Op_RegN,              relocInfo::none          },  // NarrowOop
+  { Bad,             T_ILLEGAL,    "tuple:",        false, Node::NotAMachineReg, relocInfo::none          },  // Tuple
+  { Bad,             T_ARRAY,      "array:",        false, Node::NotAMachineReg, relocInfo::none          },  // Array
+
+#if defined(IA32) || defined(AMD64)
+  { Bad,             T_ILLEGAL,    "vectors:",      false, Op_VecS,              relocInfo::none          },  // VectorS
+  { Bad,             T_ILLEGAL,    "vectord:",      false, Op_VecD,              relocInfo::none          },  // VectorD
+  { Bad,             T_ILLEGAL,    "vectorx:",      false, Op_VecX,              relocInfo::none          },  // VectorX
+  { Bad,             T_ILLEGAL,    "vectory:",      false, Op_VecY,              relocInfo::none          },  // VectorY
+#else
+  { Bad,             T_ILLEGAL,    "vectors:",      false, 0,                    relocInfo::none          },  // VectorS
+  { Bad,             T_ILLEGAL,    "vectord:",      false, Op_RegD,              relocInfo::none          },  // VectorD
+  { Bad,             T_ILLEGAL,    "vectorx:",      false, 0,                    relocInfo::none          },  // VectorX
+  { Bad,             T_ILLEGAL,    "vectory:",      false, 0,                    relocInfo::none          },  // VectorY
+#endif // IA32 || AMD64
+  { Bad,             T_ADDRESS,    "anyptr:",       false, Op_RegP,              relocInfo::none          },  // AnyPtr
+  { Bad,             T_ADDRESS,    "rawptr:",       false, Op_RegP,              relocInfo::none          },  // RawPtr
+  { Bad,             T_OBJECT,     "oop:",          true,  Op_RegP,              relocInfo::oop_type      },  // OopPtr
+  { Bad,             T_OBJECT,     "inst:",         true,  Op_RegP,              relocInfo::oop_type      },  // InstPtr
+  { Bad,             T_OBJECT,     "ary:",          true,  Op_RegP,              relocInfo::oop_type      },  // AryPtr
+  { Bad,             T_METADATA,   "metadata:",     false, Op_RegP,              relocInfo::metadata_type },  // MetadataPtr
+  { Bad,             T_METADATA,   "klass:",        false, Op_RegP,              relocInfo::metadata_type },  // KlassPtr
+  { Bad,             T_OBJECT,     "func",          false, 0,                    relocInfo::none          },  // Function
+  { Abio,            T_ILLEGAL,    "abIO",          false, 0,                    relocInfo::none          },  // Abio
+  { Return_Address,  T_ADDRESS,    "return_address",false, Op_RegP,              relocInfo::none          },  // Return_Address
+  { Memory,          T_ILLEGAL,    "memory",        false, 0,                    relocInfo::none          },  // Memory
+  { FloatBot,        T_FLOAT,      "float_top",     false, Op_RegF,              relocInfo::none          },  // FloatTop
+  { FloatCon,        T_FLOAT,      "ftcon:",        false, Op_RegF,              relocInfo::none          },  // FloatCon
+  { FloatTop,        T_FLOAT,      "float",         false, Op_RegF,              relocInfo::none          },  // FloatBot
+  { DoubleBot,       T_DOUBLE,     "double_top",    false, Op_RegD,              relocInfo::none          },  // DoubleTop
+  { DoubleCon,       T_DOUBLE,     "dblcon:",       false, Op_RegD,              relocInfo::none          },  // DoubleCon
+  { DoubleTop,       T_DOUBLE,     "double",        false, Op_RegD,              relocInfo::none          },  // DoubleBot
+  { Top,             T_ILLEGAL,    "bottom",        false, 0,                    relocInfo::none          }   // Bottom
 };
 
 // Map ideal registers (machine types) to ideal types
@@ -321,6 +327,8 @@
                                            false, 0, oopDesc::klass_offset_in_bytes());
   TypeOopPtr::BOTTOM  = TypeOopPtr::make(TypePtr::BotPTR, OffsetBot, TypeOopPtr::InstanceBot);
 
+  TypeMetadataPtr::BOTTOM = TypeMetadataPtr::make(TypePtr::BotPTR, NULL, OffsetBot);
+
   TypeNarrowOop::NULL_PTR = TypeNarrowOop::make( TypePtr::NULL_PTR );
   TypeNarrowOop::BOTTOM   = TypeNarrowOop::make( TypeInstPtr::BOTTOM );
 
@@ -340,6 +348,7 @@
 
 #ifdef _LP64
   if (UseCompressedOops) {
+    assert(TypeAryPtr::NARROWOOPS->is_ptr_to_narrowoop(), "array of narrow oops must be ptr to narrow oop");
     TypeAryPtr::OOPS  = TypeAryPtr::NARROWOOPS;
   } else
 #endif
@@ -372,7 +381,7 @@
   TypeKlassPtr::OBJECT_OR_NULL = TypeKlassPtr::make( TypePtr::BotPTR, current->env()->Object_klass(), 0 );
 
   const Type **fi2c = TypeTuple::fields(2);
-  fi2c[TypeFunc::Parms+0] = TypeInstPtr::BOTTOM; // methodOop
+  fi2c[TypeFunc::Parms+0] = TypeInstPtr::BOTTOM; // Method*
   fi2c[TypeFunc::Parms+1] = TypeRawPtr::BOTTOM; // argument pointer
   TypeTuple::START_I2C = TypeTuple::make(TypeFunc::Parms+2, fi2c);
 
@@ -461,10 +470,6 @@
     Type* t = (Type*)i._value;
     tdic->Insert(t,t);  // New Type, insert into Type table
   }
-
-#ifdef ASSERT
-  verify_lastype();
-#endif
 }
 
 //------------------------------hashcons---------------------------------------
@@ -620,6 +625,7 @@
   case InstPtr:
     return t->xmeet(this);
 
+  case MetadataPtr:
   case KlassPtr:
     return t->xmeet(this);
 
@@ -700,6 +706,8 @@
   Bad,          // OopPtr - handled in v-call
   Bad,          // InstPtr - handled in v-call
   Bad,          // AryPtr - handled in v-call
+
+  Bad,          //  MetadataPtr - handled in v-call
   Bad,          // KlassPtr - handled in v-call
 
   Bad,          // Function - handled in v-call
@@ -717,8 +725,8 @@
 
 const Type *Type::xdual() const {
   // Note: the base() accessor asserts the sanity of _base.
-  assert(dual_type[base()] != Bad, "implement with v-call");
-  return new Type(dual_type[_base]);
+  assert(_type_info[base()].dual_type != Bad, "implement with v-call");
+  return new Type(_type_info[_base].dual_type);
 }
 
 //------------------------------has_memory-------------------------------------
@@ -738,7 +746,7 @@
 #ifndef PRODUCT
 //------------------------------dump2------------------------------------------
 void Type::dump2( Dict &d, uint depth, outputStream *st ) const {
-  st->print(msg[_base]);
+  st->print(_type_info[_base].msg);
 }
 
 //------------------------------dump-------------------------------------------
@@ -750,17 +758,6 @@
     st->print(" [narrow]");
   }
 }
-
-//------------------------------data-------------------------------------------
-const char * const Type::msg[Type::lastype] = {
-  "bad","control","top","int:","long:","half", "narrowoop:",
-  "tuple:", "array:", "vectors:", "vectord:", "vectorx:", "vectory:",
-  "anyptr:", "rawptr:", "java:", "inst:", "aryptr:", "klass:",
-  "func", "abIO", "return_address", "memory",
-  "float_top", "ftcon:", "float",
-  "double_top", "dblcon:", "double",
-  "bottom"
-};
 #endif
 
 //------------------------------singleton--------------------------------------
@@ -813,31 +810,6 @@
   ShouldNotReachHere();
 }
 
-//------------------------------isa_oop_ptr------------------------------------
-// Return true if type is an oop pointer type.  False for raw pointers.
-static char isa_oop_ptr_tbl[Type::lastype] = {
-  0,0,0,0,0,0,0/*narrowoop*/,0/*tuple*/, 0/*array*/, 0, 0, 0, 0/*vector*/,
-  0/*anyptr*/,0/*rawptr*/,1/*OopPtr*/,1/*InstPtr*/,1/*AryPtr*/,1/*KlassPtr*/,
-  0/*func*/,0,0/*return_address*/,0,
-  /*floats*/0,0,0, /*doubles*/0,0,0,
-  0
-};
-bool Type::isa_oop_ptr() const {
-  return isa_oop_ptr_tbl[_base] != 0;
-}
-
-//------------------------------dump_stats-------------------------------------
-// // Check that arrays match type enum
-#ifndef PRODUCT
-void Type::verify_lastype() {
-  // Check that arrays match enumeration
-  assert( Type::dual_type  [Type::lastype - 1] == Type::Top, "did not update array");
-  assert( strcmp(Type::msg [Type::lastype - 1],"bottom") == 0, "did not update array");
-  // assert( PhiNode::tbl     [Type::lastype - 1] == NULL,    "did not update array");
-  assert( Matcher::base2reg[Type::lastype - 1] == 0,      "did not update array");
-  assert( isa_oop_ptr_tbl  [Type::lastype - 1] == (char)0,  "did not update array");
-}
-#endif
 
 //=============================================================================
 // Convenience common pre-built types.
@@ -862,8 +834,9 @@
   case RawPtr:                  // reuses local variables
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
   case NarrowOop:
   case Int:
   case Long:
@@ -978,8 +951,9 @@
   case RawPtr:                  // reuses local variables
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
   case NarrowOop:
   case Int:
   case Long:
@@ -1131,8 +1105,9 @@
   case RawPtr:                  // reuses local variables
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
   case NarrowOop:
   case Long:
   case FloatTop:
@@ -1387,8 +1362,9 @@
   case RawPtr:                  // reuses local variables
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
   case NarrowOop:
   case Int:
   case FloatTop:
@@ -2132,8 +2108,9 @@
   case RawPtr:                  // For these, flip the call around to cut down
   case OopPtr:
   case InstPtr:                 // on the cases I have to handle.
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
     return t->xmeet(this);      // Call in reverse direction
   default:                      // All else is a mistake
     typerr(t);
@@ -2288,8 +2265,9 @@
 
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
     return TypePtr::BOTTOM;     // Oop meet raw is not well defined
   default:                      // All else is a mistake
     typerr(t);
@@ -2375,11 +2353,12 @@
     _instance_id(instance_id) {
 #ifdef _LP64
   if (UseCompressedOops && _offset != 0) {
-    if (klass() == NULL) {
+    if (_offset == oopDesc::klass_offset_in_bytes()) {
+      _is_ptr_to_narrowoop = UseCompressedKlassPointers;
+    } else if (klass() == NULL) {
+      // Array with unknown body type
       assert(this->isa_aryptr(), "only arrays without klass");
       _is_ptr_to_narrowoop = true;
-    } else if (_offset == oopDesc::klass_offset_in_bytes()) {
-      _is_ptr_to_narrowoop = true;
     } else if (this->isa_aryptr()) {
       _is_ptr_to_narrowoop = (klass()->is_obj_array_klass() &&
                              _offset != arrayOopDesc::length_offset_in_bytes());
@@ -2399,9 +2378,9 @@
              _offset == java_lang_Class::array_klass_offset_in_bytes())) {
           // Special hidden fields from the Class.
           assert(this->isa_instptr(), "must be an instance ptr.");
-          _is_ptr_to_narrowoop = true;
+          _is_ptr_to_narrowoop = false;
         } else if (klass() == ciEnv::current()->Class_klass() &&
-                   _offset >= instanceMirrorKlass::offset_of_static_fields()) {
+                   _offset >= InstanceMirrorKlass::offset_of_static_fields()) {
           // Static fields
           assert(o != NULL, "must be constant");
           ciInstanceKlass* k = o->as_instance()->java_lang_Class_klass()->as_instance_klass();
@@ -2423,7 +2402,6 @@
             _is_ptr_to_narrowoop = true;
           } else {
             // Type for the copy start in LibraryCallKit::inline_native_clone().
-            assert(!klass_is_exact(), "only non-exact klass");
             _is_ptr_to_narrowoop = true;
           }
         }
@@ -2437,7 +2415,7 @@
 const TypeOopPtr *TypeOopPtr::make(PTR ptr,
                                    int offset, int instance_id) {
   assert(ptr != Constant, "no constant generic pointers");
-  ciKlass*  k = ciKlassKlass::make();
+  ciKlass*  k = Compile::current()->env()->Object_klass();
   bool      xk = false;
   ciObject* o = NULL;
   return (TypeOopPtr*)(new TypeOopPtr(OopPtr, ptr, k, xk, o, offset, instance_id))->hashcons();
@@ -2472,7 +2450,7 @@
 const TypeKlassPtr* TypeOopPtr::as_klass_type() const {
   ciKlass* k = klass();
   bool    xk = klass_is_exact();
-  if (k == NULL || !k->is_java_klass())
+  if (k == NULL)
     return TypeKlassPtr::OBJECT;
   else
     return TypeKlassPtr::make(xk? Constant: NotNull, k, 0);
@@ -2506,6 +2484,8 @@
     typerr(t);
 
   case RawPtr:
+  case MetadataPtr:
+  case KlassPtr:
     return TypePtr::BOTTOM;     // Oop meet raw is not well defined
 
   case AnyPtr: {
@@ -2536,7 +2516,6 @@
   }
 
   case InstPtr:                  // For these, flip the call around to cut down
-  case KlassPtr:                 // on the cases I have to handle.
   case AryPtr:
     return t->xmeet(this);      // Call in reverse direction
 
@@ -2548,7 +2527,7 @@
 //------------------------------xdual------------------------------------------
 // Dual of a pure heap pointer.  No relevant klass or oop information.
 const Type *TypeOopPtr::xdual() const {
-  assert(klass() == ciKlassKlass::make(), "no klasses here");
+  assert(klass() == Compile::current()->env()->Object_klass(), "no klasses here");
   assert(const_oop() == NULL,             "no constants here");
   return new TypeOopPtr(_base, dual_ptr(), klass(), klass_is_exact(), const_oop(), dual_offset(), dual_instance_id()  );
 }
@@ -2556,7 +2535,6 @@
 //--------------------------make_from_klass_common-----------------------------
 // Computes the element-type given a klass.
 const TypeOopPtr* TypeOopPtr::make_from_klass_common(ciKlass *klass, bool klass_change, bool try_for_exact) {
-  assert(klass->is_java_klass(), "must be java language klass");
   if (klass->is_instance_klass()) {
     Compile* C = Compile::current();
     Dependencies* deps = C->dependencies();
@@ -2613,24 +2591,6 @@
 //------------------------------make_from_constant-----------------------------
 // Make a java pointer from an oop constant
 const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o, bool require_constant) {
-  if (o->is_method_data() || o->is_method()) {
-    // Treat much like a typeArray of bytes, like below, but fake the type...
-    const BasicType bt = T_BYTE;
-    const Type* etype = get_const_basic_type(bt);
-    const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS);
-    ciKlass* klass = ciArrayKlass::make(ciType::make(bt));
-    assert(o->can_be_constant(), "should be tenured");
-    return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-  } else if (o->is_cpcache()) {
-    // Treat much like a objArray, like below, but fake the type...
-    const BasicType bt = T_OBJECT;
-    const Type* etype = get_const_basic_type(bt);
-    const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS);
-    ciKlass* klass = ciArrayKlass::make(ciType::make(bt));
-    assert(o->can_be_constant(), "should be tenured");
-    return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-  } else {
-    assert(o->is_java_object(), "must be java language object");
     assert(!o->is_null_object(), "null object not yet handled here.");
     ciKlass* klass = o->klass();
     if (klass->is_instance_klass()) {
@@ -2643,7 +2603,8 @@
       return TypeInstPtr::make(o);
     } else if (klass->is_obj_array_klass()) {
       // Element is an object array. Recursively call ourself.
-      const Type *etype = make_from_klass_raw(klass->as_obj_array_klass()->element_klass());
+    const Type *etype =
+      TypeOopPtr::make_from_klass_raw(klass->as_obj_array_klass()->element_klass());
       const TypeAry* arr0 = TypeAry::make(etype, TypeInt::make(o->as_array()->length()));
       // We used to pass NotNull in here, asserting that the sub-arrays
       // are all not-null.  This is not true in generally, as code can
@@ -2653,10 +2614,12 @@
       } else if (!o->should_be_constant()) {
         return TypeAryPtr::make(TypePtr::NotNull, arr0, klass, true, 0);
       }
-      return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
+    const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
+    return arr;
     } else if (klass->is_type_array_klass()) {
       // Element is an typeArray
-      const Type* etype = get_const_basic_type(klass->as_type_array_klass()->element_type());
+    const Type* etype =
+      (Type*)get_const_basic_type(klass->as_type_array_klass()->element_type());
       const TypeAry* arr0 = TypeAry::make(etype, TypeInt::make(o->as_array()->length()));
       // We used to pass NotNull in here, asserting that the array pointer
       // is not-null. That was not true in general.
@@ -2665,8 +2628,8 @@
       } else if (!o->should_be_constant()) {
         return TypeAryPtr::make(TypePtr::NotNull, arr0, klass, true, 0);
       }
-      return TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
-    }
+    const TypeAryPtr* arr = TypeAryPtr::make(TypePtr::Constant, o, arr0, klass, true, 0);
+    return arr;
   }
 
   fatal("unhandled object type");
@@ -2845,8 +2808,7 @@
                                      ciObject* o,
                                      int offset,
                                      int instance_id) {
-  assert( !k->is_loaded() || k->is_instance_klass() ||
-          k->is_method_klass(), "Must be for instance or method");
+  assert( !k->is_loaded() || k->is_instance_klass(), "Must be for instance");
   // Either const_oop() is NULL or else ptr is Constant
   assert( (!o && ptr != Constant) || (o && ptr == Constant),
           "constant pointers must have a value supplied" );
@@ -2971,6 +2933,8 @@
   default:                      // All else is a mistake
     typerr(t);
 
+  case MetadataPtr:
+  case KlassPtr:
   case RawPtr: return TypePtr::BOTTOM;
 
   case AryPtr: {                // All arrays inherit from Object class
@@ -3237,9 +3201,6 @@
     return make( ptr, k, false, NULL, off, instance_id );
   } // End of case InstPtr
 
-  case KlassPtr:
-    return TypeInstPtr::BOTTOM;
-
   } // End of switch
   return this;                  // Return the double constant
 }
@@ -3516,6 +3477,8 @@
     }
   }
 
+  case MetadataPtr:
+  case KlassPtr:
   case RawPtr: return TypePtr::BOTTOM;
 
   case AryPtr: {                // Meeting 2 references?
@@ -3634,10 +3597,6 @@
     default: typerr(t);
     }
   }
-
-  case KlassPtr:
-    return TypeInstPtr::BOTTOM;
-
   }
   return this;                  // Lint noise
 }
@@ -3768,8 +3727,9 @@
   case RawPtr:
   case OopPtr:
   case InstPtr:
+  case AryPtr:
+  case MetadataPtr:
   case KlassPtr:
-  case AryPtr:
 
   case Bottom:                  // Ye Olde Default
     return Type::BOTTOM;
@@ -3829,6 +3789,198 @@
 #endif
 
 
+
+//------------------------------eq---------------------------------------------
+// Structural equality check for Type representations
+bool TypeMetadataPtr::eq( const Type *t ) const {
+  const TypeMetadataPtr *a = (const TypeMetadataPtr*)t;
+  ciMetadata* one = metadata();
+  ciMetadata* two = a->metadata();
+  if (one == NULL || two == NULL) {
+    return (one == two) && TypePtr::eq(t);
+  } else {
+    return one->equals(two) && TypePtr::eq(t);
+  }
+}
+
+//------------------------------hash-------------------------------------------
+// Type-specific hashing function.
+int TypeMetadataPtr::hash(void) const {
+  return
+    (metadata() ? metadata()->hash() : 0) +
+    TypePtr::hash();
+}
+
+//------------------------------singleton--------------------------------------
+// TRUE if Type is a singleton type, FALSE otherwise.   Singletons are simple
+// constants
+bool TypeMetadataPtr::singleton(void) const {
+  // detune optimizer to not generate constant metadta + constant offset as a constant!
+  // TopPTR, Null, AnyNull, Constant are all singletons
+  return (_offset == 0) && !below_centerline(_ptr);
+}
+
+//------------------------------add_offset-------------------------------------
+const TypePtr *TypeMetadataPtr::add_offset( intptr_t offset ) const {
+  return make( _ptr, _metadata, xadd_offset(offset));
+}
+
+//-----------------------------filter------------------------------------------
+// Do not allow interface-vs.-noninterface joins to collapse to top.
+const Type *TypeMetadataPtr::filter( const Type *kills ) const {
+  const TypeMetadataPtr* ft = join(kills)->isa_metadataptr();
+  if (ft == NULL || ft->empty())
+    return Type::TOP;           // Canonical empty value
+  return ft;
+}
+
+ //------------------------------get_con----------------------------------------
+intptr_t TypeMetadataPtr::get_con() const {
+  assert( _ptr == Null || _ptr == Constant, "" );
+  assert( _offset >= 0, "" );
+
+  if (_offset != 0) {
+    // After being ported to the compiler interface, the compiler no longer
+    // directly manipulates the addresses of oops.  Rather, it only has a pointer
+    // to a handle at compile time.  This handle is embedded in the generated
+    // code and dereferenced at the time the nmethod is made.  Until that time,
+    // it is not reasonable to do arithmetic with the addresses of oops (we don't
+    // have access to the addresses!).  This does not seem to currently happen,
+    // but this assertion here is to help prevent its occurence.
+    tty->print_cr("Found oop constant with non-zero offset");
+    ShouldNotReachHere();
+  }
+
+  return (intptr_t)metadata()->constant_encoding();
+}
+
+//------------------------------cast_to_ptr_type-------------------------------
+const Type *TypeMetadataPtr::cast_to_ptr_type(PTR ptr) const {
+  if( ptr == _ptr ) return this;
+  return make(ptr, metadata(), _offset);
+}
+
+//------------------------------meet-------------------------------------------
+// Compute the MEET of two types.  It returns a new Type object.
+const Type *TypeMetadataPtr::xmeet( const Type *t ) const {
+  // Perform a fast test for common case; meeting the same types together.
+  if( this == t ) return this;  // Meeting same type-rep?
+
+  // Current "this->_base" is OopPtr
+  switch (t->base()) {          // switch on original type
+
+  case Int:                     // Mixing ints & oops happens when javac
+  case Long:                    // reuses local variables
+  case FloatTop:
+  case FloatCon:
+  case FloatBot:
+  case DoubleTop:
+  case DoubleCon:
+  case DoubleBot:
+  case NarrowOop:
+  case Bottom:                  // Ye Olde Default
+    return Type::BOTTOM;
+  case Top:
+    return this;
+
+  default:                      // All else is a mistake
+    typerr(t);
+
+  case AnyPtr: {
+    // Found an AnyPtr type vs self-OopPtr type
+    const TypePtr *tp = t->is_ptr();
+    int offset = meet_offset(tp->offset());
+    PTR ptr = meet_ptr(tp->ptr());
+    switch (tp->ptr()) {
+    case Null:
+      if (ptr == Null)  return TypePtr::make(AnyPtr, ptr, offset);
+      // else fall through:
+    case TopPTR:
+    case AnyNull: {
+      return make(ptr, NULL, offset);
+    }
+    case BotPTR:
+    case NotNull:
+      return TypePtr::make(AnyPtr, ptr, offset);
+    default: typerr(t);
+    }
+  }
+
+  case RawPtr:
+  case KlassPtr:
+  case OopPtr:
+  case InstPtr:
+  case AryPtr:
+    return TypePtr::BOTTOM;     // Oop meet raw is not well defined
+
+  case MetadataPtr: {
+    const TypeMetadataPtr *tp = t->is_metadataptr();
+    int offset = meet_offset(tp->offset());
+    PTR tptr = tp->ptr();
+    PTR ptr = meet_ptr(tptr);
+    ciMetadata* md = (tptr == TopPTR) ? metadata() : tp->metadata();
+    if (tptr == TopPTR || _ptr == TopPTR ||
+        metadata()->equals(tp->metadata())) {
+      return make(ptr, md, offset);
+    }
+    // metadata is different
+    if( ptr == Constant ) {  // Cannot be equal constants, so...
+      if( tptr == Constant && _ptr != Constant)  return t;
+      if( _ptr == Constant && tptr != Constant)  return this;
+      ptr = NotNull;            // Fall down in lattice
+    }
+    return make(ptr, NULL, offset);
+    break;
+  }
+  } // End of switch
+  return this;                  // Return the double constant
+}
+
+
+//------------------------------xdual------------------------------------------
+// Dual of a pure metadata pointer.
+const Type *TypeMetadataPtr::xdual() const {
+  return new TypeMetadataPtr(dual_ptr(), metadata(), dual_offset());
+}
+
+//------------------------------dump2------------------------------------------
+#ifndef PRODUCT
+void TypeMetadataPtr::dump2( Dict &d, uint depth, outputStream *st ) const {
+  st->print("metadataptr:%s", ptr_msg[_ptr]);
+  if( metadata() ) st->print(INTPTR_FORMAT, metadata());
+  switch( _offset ) {
+  case OffsetTop: st->print("+top"); break;
+  case OffsetBot: st->print("+any"); break;
+  case         0: break;
+  default:        st->print("+%d",_offset); break;
+  }
+}
+#endif
+
+
+//=============================================================================
+// Convenience common pre-built type.
+const TypeMetadataPtr *TypeMetadataPtr::BOTTOM;
+
+TypeMetadataPtr::TypeMetadataPtr(PTR ptr, ciMetadata* metadata, int offset):
+  TypePtr(MetadataPtr, ptr, offset), _metadata(metadata) {
+}
+
+const TypeMetadataPtr* TypeMetadataPtr::make(ciMethod* m) {
+  return make(Constant, m, 0);
+}
+const TypeMetadataPtr* TypeMetadataPtr::make(ciMethodData* m) {
+  return make(Constant, m, 0);
+}
+
+//------------------------------make-------------------------------------------
+// Create a meta data constant
+const TypeMetadataPtr *TypeMetadataPtr::make(PTR ptr, ciMetadata* m, int offset) {
+  assert(m == NULL || !m->is_klass(), "wrong type");
+  return (TypeMetadataPtr*)(new TypeMetadataPtr(ptr, m, offset))->hashcons();
+}
+
+
 //=============================================================================
 // Convenience common pre-built types.
 
@@ -3836,17 +3988,16 @@
 const TypeKlassPtr *TypeKlassPtr::OBJECT;
 const TypeKlassPtr *TypeKlassPtr::OBJECT_OR_NULL;
 
-//------------------------------TypeKlasPtr------------------------------------
+//------------------------------TypeKlassPtr-----------------------------------
 TypeKlassPtr::TypeKlassPtr( PTR ptr, ciKlass* klass, int offset )
-  : TypeOopPtr(KlassPtr, ptr, klass, (ptr==Constant), (ptr==Constant ? klass : NULL), offset, 0) {
+  : TypePtr(KlassPtr, ptr, offset), _klass(klass), _klass_is_exact(ptr == Constant) {
 }
 
 //------------------------------make-------------------------------------------
 // ptr to klass 'k', if Constant, or possibly to a sub-klass if not a Constant
 const TypeKlassPtr *TypeKlassPtr::make( PTR ptr, ciKlass* k, int offset ) {
   assert( k != NULL, "Expect a non-NULL klass");
-  assert(k->is_instance_klass() || k->is_array_klass() ||
-         k->is_method_klass(), "Incorrect type of klass oop");
+  assert(k->is_instance_klass() || k->is_array_klass(), "Incorrect type of klass oop");
   TypeKlassPtr *r =
     (TypeKlassPtr*)(new TypeKlassPtr(ptr, k, offset))->hashcons();
 
@@ -3859,15 +4010,23 @@
   const TypeKlassPtr *p = t->is_klassptr();
   return
     klass()->equals(p->klass()) &&
-    TypeOopPtr::eq(p);
+    TypePtr::eq(p);
 }
 
 //------------------------------hash-------------------------------------------
 // Type-specific hashing function.
 int TypeKlassPtr::hash(void) const {
-  return klass()->hash() + TypeOopPtr::hash();
-}
-
+  return klass()->hash() + TypePtr::hash();
+}
+
+//------------------------------singleton--------------------------------------
+// TRUE if Type is a singleton type, FALSE otherwise.   Singletons are simple
+// constants
+bool TypeKlassPtr::singleton(void) const {
+  // detune optimizer to not generate constant klass + constant offset as a constant!
+  // TopPTR, Null, AnyNull, Constant are all singletons
+  return (_offset == 0) && !below_centerline(_ptr);
+}
 
 //----------------------compute_klass------------------------------------------
 // Compute the defining klass for this class
@@ -4018,24 +4177,6 @@
   default:                      // All else is a mistake
     typerr(t);
 
-  case RawPtr: return TypePtr::BOTTOM;
-
-  case OopPtr: {                // Meeting to OopPtrs
-    // Found a OopPtr type vs self-KlassPtr type
-    const TypePtr *tp = t->is_oopptr();
-    int offset = meet_offset(tp->offset());
-    PTR ptr = meet_ptr(tp->ptr());
-    switch (tp->ptr()) {
-    case TopPTR:
-    case AnyNull:
-      return make(ptr, klass(), offset);
-    case BotPTR:
-    case NotNull:
-      return TypePtr::make(AnyPtr, ptr, offset);
-    default: typerr(t);
-    }
-  }
-
   case AnyPtr: {                // Meeting to AnyPtrs
     // Found an AnyPtr type vs self-KlassPtr type
     const TypePtr *tp = t->is_ptr();
@@ -4055,9 +4196,12 @@
     }
   }
 
+  case RawPtr:
+  case MetadataPtr:
+  case OopPtr:
   case AryPtr:                  // Meet with AryPtr
   case InstPtr:                 // Meet with InstPtr
-    return TypeInstPtr::BOTTOM;
+    return TypePtr::BOTTOM;
 
   //
   //             A-top         }
@@ -4112,17 +4256,11 @@
       // If the klasses are equal, the constants may still differ.  Fall to
       // NotNull if they do (neither constant is NULL; that is a special case
       // handled elsewhere).
-      ciObject* o = NULL;             // Assume not constant when done
-      ciObject* this_oop = const_oop();
-      ciObject* tkls_oop = tkls->const_oop();
       if( ptr == Constant ) {
-        if (this_oop != NULL && tkls_oop != NULL &&
-            this_oop->equals(tkls_oop) )
-          o = this_oop;
-        else if (above_centerline(this->ptr()))
-          o = tkls_oop;
-        else if (above_centerline(tkls->ptr()))
-          o = this_oop;
+        if (this->_ptr == Constant && tkls->_ptr == Constant &&
+            this->klass()->equals(tkls->klass()));
+        else if (above_centerline(this->ptr()));
+        else if (above_centerline(tkls->ptr()));
         else
           ptr = NotNull;
       }
@@ -4148,6 +4286,25 @@
   return new TypeKlassPtr( dual_ptr(), klass(), dual_offset() );
 }
 
+//------------------------------get_con----------------------------------------
+intptr_t TypeKlassPtr::get_con() const {
+  assert( _ptr == Null || _ptr == Constant, "" );
+  assert( _offset >= 0, "" );
+
+  if (_offset != 0) {
+    // After being ported to the compiler interface, the compiler no longer
+    // directly manipulates the addresses of oops.  Rather, it only has a pointer
+    // to a handle at compile time.  This handle is embedded in the generated
+    // code and dereferenced at the time the nmethod is made.  Until that time,
+    // it is not reasonable to do arithmetic with the addresses of oops (we don't
+    // have access to the addresses!).  This does not seem to currently happen,
+    // but this assertion here is to help prevent its occurence.
+    tty->print_cr("Found oop constant with non-zero offset");
+    ShouldNotReachHere();
+  }
+
+  return (intptr_t)klass()->constant_encoding();
+}
 //------------------------------dump2------------------------------------------
 // Dump Klass Type
 #ifndef PRODUCT
@@ -4280,35 +4437,6 @@
   }
   st->print(" )");
 }
-
-//------------------------------print_flattened--------------------------------
-// Print a 'flattened' signature
-static const char * const flat_type_msg[Type::lastype] = {
-  "bad","control","top","int","long","_", "narrowoop",
-  "tuple:", "array:", "vectors:", "vectord:", "vectorx:", "vectory:",
-  "ptr", "rawptr", "ptr", "ptr", "ptr", "ptr",
-  "func", "abIO", "return_address", "mem",
-  "float_top", "ftcon:", "flt",
-  "double_top", "dblcon:", "dbl",
-  "bottom"
-};
-
-void TypeFunc::print_flattened() const {
-  if( _range->_cnt <= Parms )
-    tty->print("void");
-  else {
-    uint i;
-    for (i = Parms; i < _range->_cnt-1; i++)
-      tty->print("%s/",flat_type_msg[_range->field_at(i)->base()]);
-    tty->print("%s",flat_type_msg[_range->field_at(i)->base()]);
-  }
-  tty->print(" ( ");
-  if (Parms < _domain->_cnt)
-    tty->print("%s",flat_type_msg[_domain->field_at(Parms)->base()]);
-  for (uint i = Parms+1; i < _domain->_cnt; i++)
-    tty->print(", %s",flat_type_msg[_domain->field_at(i)->base()]);
-  tty->print(" )");
-}
 #endif
 
 //------------------------------singleton--------------------------------------
--- a/src/share/vm/opto/type.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/opto/type.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -62,6 +62,7 @@
 class       TypeInstPtr;
 class       TypeAryPtr;
 class       TypeKlassPtr;
+class     TypeMetadataPtr;
 
 //------------------------------Type-------------------------------------------
 // Basic Type object, represents a set of primitive Values.
@@ -93,8 +94,10 @@
     OopPtr,                     // Any and all Java heap entities
     InstPtr,                    // Instance pointers (non-array objects)
     AryPtr,                     // Array pointers
+    // (Ptr order matters:  See is_ptr, isa_ptr, is_oopptr, isa_oopptr.)
+
+    MetadataPtr,                // Generic metadata
     KlassPtr,                   // Klass pointers
-    // (Ptr order matters:  See is_ptr, isa_ptr, is_oopptr, isa_oopptr.)
 
     Function,                   // Function signature
     Abio,                       // Abstract I/O
@@ -123,8 +126,18 @@
   };
 
 private:
+  typedef struct {
+    const TYPES                dual_type;
+    const BasicType            basic_type;
+    const char*                msg;
+    const bool                 isa_oop;
+    const int                  ideal_reg;
+    const relocInfo::relocType reloc;
+  } TypeInfo;
+
   // Dictionary of types shared among compilations.
   static Dict* _shared_type_dict;
+  static TypeInfo _type_info[];
 
   static int uhash( const Type *const t );
   // Structural equality check.  Assumes that cmp() has already compared
@@ -241,12 +254,16 @@
   const TypeNarrowOop  *isa_narrowoop() const;   // Returns NULL if not oop ptr type
   const TypeOopPtr   *isa_oopptr() const;        // Returns NULL if not oop ptr type
   const TypeOopPtr   *is_oopptr() const;         // Java-style GC'd pointer
-  const TypeKlassPtr *isa_klassptr() const;      // Returns NULL if not KlassPtr
-  const TypeKlassPtr *is_klassptr() const;       // assert if not KlassPtr
   const TypeInstPtr  *isa_instptr() const;       // Returns NULL if not InstPtr
   const TypeInstPtr  *is_instptr() const;        // Instance
   const TypeAryPtr   *isa_aryptr() const;        // Returns NULL if not AryPtr
   const TypeAryPtr   *is_aryptr() const;         // Array oop
+
+  const TypeMetadataPtr   *isa_metadataptr() const;   // Returns NULL if not oop ptr type
+  const TypeMetadataPtr   *is_metadataptr() const;    // Java-style GC'd pointer
+  const TypeKlassPtr      *isa_klassptr() const;      // Returns NULL if not KlassPtr
+  const TypeKlassPtr      *is_klassptr() const;       // assert if not KlassPtr
+
   virtual bool      is_finite() const;           // Has a finite value
   virtual bool      is_nan()    const;           // Is not a number (NaN)
 
@@ -267,9 +284,6 @@
   // Do you have memory, directly or through a tuple?
   bool has_memory( ) const;
 
-  // Are you a pointer type or not?
-  bool isa_oop_ptr() const;
-
   // TRUE if type is a singleton
   virtual bool singleton(void) const;
 
@@ -284,7 +298,6 @@
   static const Type *mreg2type[];
 
   // Printing, statistics
-  static const char * const msg[lastype]; // Printable strings
 #ifndef PRODUCT
   void         dump_on(outputStream *st) const;
   void         dump() const {
@@ -292,7 +305,6 @@
   }
   virtual void dump2( Dict &d, uint depth, outputStream *st ) const;
   static  void dump_stats();
-  static  void verify_lastype();          // Check that arrays match type enum
 #endif
   void typerr(const Type *t) const; // Mixing types error
 
@@ -336,7 +348,11 @@
   static const Type *TOP;
 
   // Mapping from compiler type to VM BasicType
-  BasicType basic_type() const { return _basic_type[_base]; }
+  BasicType basic_type() const       { return _type_info[_base].basic_type; }
+  int ideal_reg() const              { return _type_info[_base].ideal_reg; }
+  const char* msg() const            { return _type_info[_base].msg; }
+  bool isa_oop_ptr() const           { return _type_info[_base].isa_oop; }
+  relocInfo::relocType reloc() const { return _type_info[_base].reloc; }
 
   // Mapping from CI type system to compiler type:
   static const Type* get_typeflow_type(ciType* type);
@@ -842,7 +858,7 @@
 
 //------------------------------TypeInstPtr------------------------------------
 // Class of Java object pointers, pointing either to non-array Java instances
-// or to a klassOop (including array klasses).
+// or to a Klass* (including array klasses).
 class TypeInstPtr : public TypeOopPtr {
   TypeInstPtr( PTR ptr, ciKlass* k, bool xk, ciObject* o, int offset, int instance_id );
   virtual bool eq( const Type *t ) const;
@@ -859,7 +875,6 @@
   static const TypeInstPtr *make(ciObject* o) {
     return make(TypePtr::Constant, o->klass(), true, o, 0);
   }
-
   // Make a pointer to a constant oop with offset.
   static const TypeInstPtr *make(ciObject* o, int offset) {
     return make(TypePtr::Constant, o->klass(), true, o, offset);
@@ -992,18 +1007,92 @@
 #endif
 };
 
+//------------------------------TypeMetadataPtr-------------------------------------
+// Some kind of metadata, either Method*, MethodData* or CPCacheOop
+class TypeMetadataPtr : public TypePtr {
+protected:
+  TypeMetadataPtr(PTR ptr, ciMetadata* metadata, int offset);
+public:
+  virtual bool eq( const Type *t ) const;
+  virtual int  hash() const;             // Type specific hashing
+  virtual bool singleton(void) const;    // TRUE if type is a singleton
+
+private:
+  ciMetadata*   _metadata;
+
+public:
+  static const TypeMetadataPtr* make(PTR ptr, ciMetadata* m, int offset);
+
+  static const TypeMetadataPtr* make(ciMethod* m);
+  static const TypeMetadataPtr* make(ciMethodData* m);
+
+  ciMetadata* metadata() const { return _metadata; }
+
+  virtual const Type *cast_to_ptr_type(PTR ptr) const;
+
+  virtual const TypePtr *add_offset( intptr_t offset ) const;
+
+  virtual const Type *xmeet( const Type *t ) const;
+  virtual const Type *xdual() const;    // Compute dual right now.
+
+  virtual intptr_t get_con() const;
+
+  // Do not allow interface-vs.-noninterface joins to collapse to top.
+  virtual const Type *filter( const Type *kills ) const;
+
+  // Convenience common pre-built types.
+  static const TypeMetadataPtr *BOTTOM;
+
+#ifndef PRODUCT
+  virtual void dump2( Dict &d, uint depth, outputStream *st ) const;
+#endif
+};
+
 //------------------------------TypeKlassPtr-----------------------------------
 // Class of Java Klass pointers
-class TypeKlassPtr : public TypeOopPtr {
+class TypeKlassPtr : public TypePtr {
   TypeKlassPtr( PTR ptr, ciKlass* klass, int offset );
 
+ public:
   virtual bool eq( const Type *t ) const;
   virtual int hash() const;             // Type specific hashing
+  virtual bool singleton(void) const;    // TRUE if type is a singleton
+ private:
+
+  static const TypeKlassPtr* make_from_klass_common(ciKlass* klass, bool klass_change, bool try_for_exact);
+
+  ciKlass* _klass;
+
+  // Does the type exclude subclasses of the klass?  (Inexact == polymorphic.)
+  bool          _klass_is_exact;
 
 public:
-  ciSymbol* name()  const { return _klass->name(); }
+  ciSymbol* name()  const { return klass()->name(); }
+
+  ciKlass* klass() const { return  _klass; }
+  bool klass_is_exact()    const { return _klass_is_exact; }
+
+  bool  is_loaded() const { return klass()->is_loaded(); }
 
-  bool  is_loaded() const { return _klass->is_loaded(); }
+  // Creates a type given a klass. Correctly handles multi-dimensional arrays
+  // Respects UseUniqueSubclasses.
+  // If the klass is final, the resulting type will be exact.
+  static const TypeKlassPtr* make_from_klass(ciKlass* klass) {
+    return make_from_klass_common(klass, true, false);
+  }
+  // Same as before, but will produce an exact type, even if
+  // the klass is not final, as long as it has exactly one implementation.
+  static const TypeKlassPtr* make_from_klass_unique(ciKlass* klass) {
+    return make_from_klass_common(klass, true, true);
+  }
+  // Same as before, but does not respects UseUniqueSubclasses.
+  // Use this only for creating array element types.
+  static const TypeKlassPtr* make_from_klass_raw(ciKlass* klass) {
+    return make_from_klass_common(klass, false, false);
+  }
+
+  // Make a generic (unclassed) pointer to metadata.
+  static const TypeKlassPtr* make(PTR ptr, int offset);
 
   // ptr to klass 'k'
   static const TypeKlassPtr *make( ciKlass* k ) { return make( TypePtr::Constant, k, 0); }
@@ -1023,6 +1112,8 @@
   virtual const Type    *xmeet( const Type *t ) const;
   virtual const Type    *xdual() const;      // Compute dual right now.
 
+  virtual intptr_t get_con() const;
+
   // Convenience common pre-built types.
   static const TypeKlassPtr* OBJECT; // Not-null object klass or below
   static const TypeKlassPtr* OBJECT_OR_NULL; // Maybe-null version of same
@@ -1117,7 +1208,6 @@
 
 #ifndef PRODUCT
   virtual void dump2( Dict &d, uint depth, outputStream *st ) const; // Specialized per-Type dumping
-  void print_flattened() const; // Print a 'flattened' signature
 #endif
   // Convenience common pre-built types.
 };
@@ -1209,13 +1299,13 @@
 
 inline const TypeOopPtr *Type::is_oopptr() const {
   // OopPtr is the first and KlassPtr the last, with no non-oops between.
-  assert(_base >= OopPtr && _base <= KlassPtr, "Not a Java pointer" ) ;
+  assert(_base >= OopPtr && _base <= AryPtr, "Not a Java pointer" ) ;
   return (TypeOopPtr*)this;
 }
 
 inline const TypeOopPtr *Type::isa_oopptr() const {
   // OopPtr is the first and KlassPtr the last, with no non-oops between.
-  return (_base >= OopPtr && _base <= KlassPtr) ? (TypeOopPtr*)this : NULL;
+  return (_base >= OopPtr && _base <= AryPtr) ? (TypeOopPtr*)this : NULL;
 }
 
 inline const TypeRawPtr *Type::isa_rawptr() const {
@@ -1256,6 +1346,16 @@
   return (_base == NarrowOop) ? (TypeNarrowOop*)this : NULL;
 }
 
+inline const TypeMetadataPtr *Type::is_metadataptr() const {
+  // MetadataPtr is the first and CPCachePtr the last
+  assert(_base == MetadataPtr, "Not a metadata pointer" ) ;
+  return (TypeMetadataPtr*)this;
+}
+
+inline const TypeMetadataPtr *Type::isa_metadataptr() const {
+  return (_base == MetadataPtr) ? (TypeMetadataPtr*)this : NULL;
+}
+
 inline const TypeKlassPtr *Type::isa_klassptr() const {
   return (_base == KlassPtr) ? (TypeKlassPtr*)this : NULL;
 }
--- a/src/share/vm/precompiled/precompiled.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/precompiled/precompiled.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -41,9 +41,7 @@
 # include "ci/ciFlags.hpp"
 # include "ci/ciInstance.hpp"
 # include "ci/ciInstanceKlass.hpp"
-# include "ci/ciInstanceKlassKlass.hpp"
 # include "ci/ciKlass.hpp"
-# include "ci/ciKlassKlass.hpp"
 # include "ci/ciMethod.hpp"
 # include "ci/ciNullObject.hpp"
 # include "ci/ciObjArrayKlass.hpp"
@@ -121,7 +119,6 @@
 # include "memory/blockOffsetTable.inline.hpp"
 # include "memory/cardTableModRefBS.hpp"
 # include "memory/collectorPolicy.hpp"
-# include "memory/compactingPermGenGen.hpp"
 # include "memory/defNewGeneration.hpp"
 # include "memory/gcLocker.hpp"
 # include "memory/genCollectedHeap.hpp"
@@ -134,7 +131,6 @@
 # include "memory/memRegion.hpp"
 # include "memory/modRefBarrierSet.hpp"
 # include "memory/oopFactory.hpp"
-# include "memory/permGen.hpp"
 # include "memory/referencePolicy.hpp"
 # include "memory/referenceProcessor.hpp"
 # include "memory/resourceArea.hpp"
@@ -149,20 +145,17 @@
 # include "memory/watermark.hpp"
 # include "oops/arrayKlass.hpp"
 # include "oops/arrayOop.hpp"
-# include "oops/constMethodOop.hpp"
-# include "oops/constantPoolOop.hpp"
-# include "oops/cpCacheOop.hpp"
+# include "oops/constMethod.hpp"
 # include "oops/instanceKlass.hpp"
 # include "oops/instanceOop.hpp"
 # include "oops/instanceRefKlass.hpp"
 # include "oops/klass.hpp"
-# include "oops/klassOop.hpp"
 # include "oops/klassPS.hpp"
 # include "oops/klassVtable.hpp"
 # include "oops/markOop.hpp"
 # include "oops/markOop.inline.hpp"
-# include "oops/methodDataOop.hpp"
-# include "oops/methodOop.hpp"
+# include "oops/methodData.hpp"
+# include "oops/method.hpp"
 # include "oops/objArrayKlass.hpp"
 # include "oops/objArrayOop.hpp"
 # include "oops/oop.hpp"
@@ -316,7 +309,6 @@
 # include "gc_implementation/parallelScavenge/psGenerationCounters.hpp"
 # include "gc_implementation/parallelScavenge/psOldGen.hpp"
 # include "gc_implementation/parallelScavenge/psParallelCompact.hpp"
-# include "gc_implementation/parallelScavenge/psPermGen.hpp"
 # include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
 # include "gc_implementation/parallelScavenge/psYoungGen.hpp"
 # include "gc_implementation/shared/gcAdaptivePolicyCounters.hpp"
--- a/src/share/vm/prims/forte.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/forte.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -68,7 +68,7 @@
 static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, nmethod* nm);
 static bool is_decipherable_interpreted_frame(JavaThread* thread,
                                               frame* fr,
-                                              methodOop* method_p,
+                                              Method** method_p,
                                               int* bci_p);
 
 
@@ -178,12 +178,12 @@
 
 static bool is_decipherable_interpreted_frame(JavaThread* thread,
                                               frame* fr,
-                                              methodOop* method_p,
+                                              Method** method_p,
                                               int* bci_p) {
   assert(fr->is_interpreted_frame(), "just checking");
 
   // top frame is an interpreted frame
-  // check if it is walkable (i.e. valid methodOop and valid bci)
+  // check if it is walkable (i.e. valid Method* and valid bci)
 
   // Because we may be racing a gc thread the method and/or bci
   // of a valid interpreter frame may look bad causing us to
@@ -199,14 +199,14 @@
   if (known_valid || fr->is_interpreted_frame_valid(thread)) {
 
     // The frame code should completely validate the frame so that
-    // references to methodOop and bci are completely safe to access
+    // references to Method* and bci are completely safe to access
     // If they aren't the frame code should be fixed not this
     // code. However since gc isn't locked out the values could be
     // stale. This is a race we can never completely win since we can't
     // lock out gc so do one last check after retrieving their values
     // from the frame for additional safety
 
-    methodOop method = fr->interpreter_frame_method();
+    Method* method = fr->interpreter_frame_method();
 
     // We've at least found a method.
     // NOTE: there is something to be said for the approach that
@@ -250,13 +250,13 @@
 static bool find_initial_Java_frame(JavaThread* thread,
                                     frame* fr,
                                     frame* initial_frame_p,
-                                    methodOop* method_p,
+                                    Method** method_p,
                                     int* bci_p) {
 
   // It is possible that for a frame containing an nmethod
   // we can capture the method but no bci. If we get no
   // bci the frame isn't walkable but the method is usable.
-  // Therefore we init the returned methodOop to NULL so the
+  // Therefore we init the returned Method* to NULL so the
   // caller can make the distinction.
 
   *method_p = NULL;
@@ -384,7 +384,7 @@
   NoHandleMark nhm;
 
   frame initial_Java_frame;
-  methodOop method;
+  Method* method;
   int bci;
   int count;
 
@@ -402,9 +402,9 @@
 
   // The method is not stored GC safe so see if GC became active
   // after we entered AsyncGetCallTrace() and before we try to
-  // use the methodOop.
+  // use the Method*.
   // Yes, there is still a window after this check and before
-  // we use methodOop below, but we can't lock out GC so that
+  // we use Method* below, but we can't lock out GC so that
   // has to be an acceptable risk.
   if (!ch->is_valid_method(method)) {
     trace->num_frames = ticks_GC_active; // -2
@@ -442,9 +442,9 @@
 
     // The method is not stored GC safe so see if GC became active
     // after we entered AsyncGetCallTrace() and before we try to
-    // use the methodOop.
+    // use the Method*.
     // Yes, there is still a window after this check and before
-    // we use methodOop below, but we can't lock out GC so that
+    // we use Method* below, but we can't lock out GC so that
     // has to be an acceptable risk.
     if (!ch->is_valid_method(method)) {
       // we throw away everything we've gathered in this sample since
--- a/src/share/vm/prims/jni.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jni.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -41,7 +41,7 @@
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
@@ -208,7 +208,7 @@
 
 // out-of-line helpers for class jfieldIDWorkaround:
 
-bool jfieldIDWorkaround::is_valid_jfieldID(klassOop k, jfieldID id) {
+bool jfieldIDWorkaround::is_valid_jfieldID(Klass* k, jfieldID id) {
   if (jfieldIDWorkaround::is_instance_jfieldID(k, id)) {
     uintptr_t as_uint = (uintptr_t) id;
     intptr_t offset = raw_instance_offset(id);
@@ -217,7 +217,7 @@
         return false;
       }
     }
-    return instanceKlass::cast(k)->contains_field_offset(offset);
+    return InstanceKlass::cast(k)->contains_field_offset(offset);
   } else {
     JNIid* result = (JNIid*) id;
 #ifdef ASSERT
@@ -229,14 +229,14 @@
 }
 
 
-intptr_t jfieldIDWorkaround::encode_klass_hash(klassOop k, intptr_t offset) {
+intptr_t jfieldIDWorkaround::encode_klass_hash(Klass* k, intptr_t offset) {
   if (offset <= small_offset_mask) {
-    klassOop field_klass = k;
-    klassOop super_klass = Klass::cast(field_klass)->super();
+    Klass* field_klass = k;
+    Klass* super_klass = Klass::cast(field_klass)->super();
     // With compressed oops the most super class with nonstatic fields would
     // be the owner of fields embedded in the header.
-    while (instanceKlass::cast(super_klass)->has_nonstatic_fields() &&
-           instanceKlass::cast(super_klass)->contains_field_offset(offset)) {
+    while (InstanceKlass::cast(super_klass)->has_nonstatic_fields() &&
+           InstanceKlass::cast(super_klass)->contains_field_offset(offset)) {
       field_klass = super_klass;   // super contains the field also
       super_klass = Klass::cast(field_klass)->super();
     }
@@ -256,7 +256,7 @@
   }
 }
 
-bool jfieldIDWorkaround::klass_hash_ok(klassOop k, jfieldID id) {
+bool jfieldIDWorkaround::klass_hash_ok(Klass* k, jfieldID id) {
   uintptr_t as_uint = (uintptr_t) id;
   intptr_t klass_hash = (as_uint >> klass_shift) & klass_mask;
   do {
@@ -269,7 +269,7 @@
   return false;
 }
 
-void jfieldIDWorkaround::verify_instance_jfieldID(klassOop k, jfieldID id) {
+void jfieldIDWorkaround::verify_instance_jfieldID(Klass* k, jfieldID id) {
   guarantee(jfieldIDWorkaround::is_instance_jfieldID(k, id), "must be an instance field" );
   uintptr_t as_uint = (uintptr_t) id;
   intptr_t offset = raw_instance_offset(id);
@@ -288,7 +288,7 @@
 #endif
     }
   }
-  guarantee(instanceKlass::cast(k)->contains_field_offset(offset),
+  guarantee(InstanceKlass::cast(k)->contains_field_offset(offset),
       "Bug in native code: jfieldID offset must address interior of object");
 }
 
@@ -405,7 +405,7 @@
       ClassLoader::sync_JNIDefineClassLockFreeCounter()->inc();
     }
   }
-  klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
+  Klass* k = SystemDictionary::resolve_from_stream(class_name, class_loader,
                                                      Handle(), &st, true,
                                                      CHECK_NULL);
 
@@ -474,9 +474,9 @@
       }
       oop mirror = (oop) result.get_jobject();
       loader = Handle(THREAD,
-        instanceKlass::cast(java_lang_Class::as_klassOop(mirror))->class_loader());
+        InstanceKlass::cast(java_lang_Class::as_Klass(mirror))->class_loader());
       protection_domain = Handle(THREAD,
-        instanceKlass::cast(java_lang_Class::as_klassOop(mirror))->protection_domain());
+        InstanceKlass::cast(java_lang_Class::as_Klass(mirror))->protection_domain());
     }
   } else {
     // We call ClassLoader.getSystemClassLoader to obtain the system class loader.
@@ -488,7 +488,7 @@
                                         protection_domain, true, thread);
 
   if (TraceClassResolution && result != NULL) {
-    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
+    trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
   }
 
   // If we were the first invocation of jni_FindClass, we enable compilation again
@@ -531,12 +531,12 @@
     mirror = java_lang_reflect_Method::clazz(reflected);
     slot   = java_lang_reflect_Method::slot(reflected);
   }
-  klassOop k     = java_lang_Class::as_klassOop(mirror);
+  Klass* k     = java_lang_Class::as_Klass(mirror);
 
   KlassHandle k1(THREAD, k);
   // Make sure class is initialized before handing id's out to methods
   Klass::cast(k1())->initialize(CHECK_NULL);
-  methodOop m = instanceKlass::cast(k1())->method_with_idnum(slot);
+  Method* m = InstanceKlass::cast(k1())->method_with_idnum(slot);
   ret = m==NULL? NULL : m->jmethod_id();  // return NULL if reflected method deleted
   return ret;
 JNI_END
@@ -562,7 +562,7 @@
   // field is a handle to a java.lang.reflect.Field object
   oop reflected   = JNIHandles::resolve_non_null(field);
   oop mirror      = java_lang_reflect_Field::clazz(reflected);
-  klassOop k      = java_lang_Class::as_klassOop(mirror);
+  Klass* k      = java_lang_Class::as_Klass(mirror);
   int slot        = java_lang_reflect_Field::slot(reflected);
   int modifiers   = java_lang_reflect_Field::modifiers(reflected);
 
@@ -572,11 +572,11 @@
 
   // First check if this is a static field
   if (modifiers & JVM_ACC_STATIC) {
-    intptr_t offset = instanceKlass::cast(k1())->field_offset( slot );
-    JNIid* id = instanceKlass::cast(k1())->jni_id_for(offset);
+    intptr_t offset = InstanceKlass::cast(k1())->field_offset( slot );
+    JNIid* id = InstanceKlass::cast(k1())->jni_id_for(offset);
     assert(id != NULL, "corrupt Field object");
     debug_only(id->set_is_static_field_id();)
-    // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the klassOop
+    // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the Klass*
     ret = jfieldIDWorkaround::to_static_jfieldID(id);
     return ret;
   }
@@ -584,8 +584,8 @@
   // The slot is the index of the field description in the field-array
   // The jfieldID is the offset of the field within the object
   // It may also have hash bits for k, if VerifyJNIFields is turned on.
-  intptr_t offset = instanceKlass::cast(k1())->field_offset( slot );
-  assert(instanceKlass::cast(k1())->contains_field_offset(offset), "stay within object");
+  intptr_t offset = InstanceKlass::cast(k1())->field_offset( slot );
+  assert(InstanceKlass::cast(k1())->contains_field_offset(offset), "stay within object");
   ret = jfieldIDWorkaround::to_instance_jfieldID(k1(), offset);
   return ret;
 JNI_END
@@ -608,7 +608,7 @@
   jobject ret = NULL;
   DT_RETURN_MARK(ToReflectedMethod, jobject, (const jobject&)ret);
 
-  methodHandle m (THREAD, JNIHandles::resolve_jmethod_id(method_id));
+  methodHandle m (THREAD, Method::resolve_jmethod_id(method_id));
   assert(m->is_static() == (isStatic != 0), "jni_ToReflectedMethod access flags doesn't match");
   oop reflection_method;
   if (m->is_initializer()) {
@@ -646,13 +646,13 @@
   // arrays return Object
   // interfaces return NULL
   // proper classes return Klass::super()
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
   if (Klass::cast(k)->is_interface()) return NULL;
 
   // return mirror for superclass
-  klassOop super = Klass::cast(k)->java_super();
+  Klass* super = Klass::cast(k)->java_super();
   // super2 is the value computed by the compiler's getSuperClass intrinsic:
-  debug_only(klassOop super2 = ( Klass::cast(k)->oop_is_javaArray()
+  debug_only(Klass* super2 = ( Klass::cast(k)->oop_is_array()
                                  ? SystemDictionary::Object_klass()
                                  : Klass::cast(k)->super() ) );
   assert(super == super2,
@@ -682,8 +682,8 @@
 #endif /* USDT2 */
     return ret;
   }
-  klassOop sub_klass   = java_lang_Class::as_klassOop(sub_mirror);
-  klassOop super_klass = java_lang_Class::as_klassOop(super_mirror);
+  Klass* sub_klass   = java_lang_Class::as_Klass(sub_mirror);
+  Klass* super_klass = java_lang_Class::as_Klass(super_mirror);
   assert(sub_klass != NULL && super_klass != NULL, "invalid arguments to jni_IsAssignableFrom");
   jboolean ret = Klass::cast(sub_klass)->is_subtype_of(super_klass) ?
                    JNI_TRUE : JNI_FALSE;
@@ -736,7 +736,7 @@
   jint ret = JNI_OK;
   DT_RETURN_MARK(ThrowNew, jint, (const jint&)ret);
 
-  instanceKlass* k = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+  InstanceKlass* k = InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
   Symbol*  name = k->name();
   Handle class_loader (THREAD,  k->class_loader());
   Handle protection_domain (THREAD, k->protection_domain());
@@ -1157,7 +1157,7 @@
     set_ap(rap);
   }
   JNI_ArgumentPusherVaArg(jmethodID method_id, va_list rap)
-      : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) {
+      : JNI_ArgumentPusher(Method::resolve_jmethod_id(method_id)->signature()) {
     set_ap(rap);
   }
 
@@ -1228,7 +1228,7 @@
     set_ap(rap);
   }
   JNI_ArgumentPusherArray(jmethodID method_id, const jvalue *rap)
-      : JNI_ArgumentPusher(JNIHandles::resolve_jmethod_id(method_id)->signature()) {
+      : JNI_ArgumentPusher(Method::resolve_jmethod_id(method_id)->signature()) {
     set_ap(rap);
   }
 
@@ -1318,7 +1318,7 @@
 
 
 static void jni_invoke_static(JNIEnv *env, JavaValue* result, jobject receiver, JNICallType call_type, jmethodID method_id, JNI_ArgumentPusher *args, TRAPS) {
-  methodHandle method(THREAD, JNIHandles::resolve_jmethod_id(method_id));
+  methodHandle method(THREAD, Method::resolve_jmethod_id(method_id));
 
   // Create object to hold arguments for the JavaCall, and associate it with
   // the jni parser
@@ -1352,11 +1352,11 @@
   Handle h_recv(THREAD, recv);
 
   int number_of_parameters;
-  methodOop selected_method;
+  Method* selected_method;
   {
-    methodOop m = JNIHandles::resolve_jmethod_id(method_id);
+    Method* m = Method::resolve_jmethod_id(method_id);
     number_of_parameters = m->size_of_parameters();
-    klassOop holder = m->method_holder();
+    Klass* holder = m->method_holder();
     if (!(Klass::cast(holder))->is_interface()) {
       // non-interface call -- for that little speed boost, don't handlize
       debug_only(No_Safepoint_Verifier nosafepoint;)
@@ -1364,11 +1364,11 @@
         // jni_GetMethodID makes sure class is linked and initialized
         // so m should have a valid vtable index.
         int vtbl_index = m->vtable_index();
-        if (vtbl_index != methodOopDesc::nonvirtual_vtable_index) {
-          klassOop k = h_recv->klass();
+        if (vtbl_index != Method::nonvirtual_vtable_index) {
+          Klass* k = h_recv->klass();
           // k might be an arrayKlassOop but all vtables start at
           // the same place. The cast is to avoid virtual call and assertion.
-          instanceKlass *ik = (instanceKlass*)k->klass_part();
+          InstanceKlass *ik = (InstanceKlass*)k;
           selected_method = ik->method_at_vtable(vtbl_index);
         } else {
           // final method
@@ -1388,8 +1388,8 @@
         m->set_cached_itable_index(itbl_index);
         // the above may have grabbed a lock, 'm' and anything non-handlized can't be used again
       }
-      klassOop k = h_recv->klass();
-      selected_method = instanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK);
+      Klass* k = h_recv->klass();
+      selected_method = InstanceKlass::cast(k)->method_at_itable(h_holder(), itbl_index, CHECK);
     }
   }
 
@@ -1421,10 +1421,10 @@
 
 
 static instanceOop alloc_object(jclass clazz, TRAPS) {
-  KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+  KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
   Klass::cast(k())->check_valid_for_instantiation(false, CHECK_NULL);
-  instanceKlass::cast(k())->initialize(CHECK_NULL);
-  instanceOop ih = instanceKlass::cast(k())->allocate_instance(THREAD);
+  InstanceKlass::cast(k())->initialize(CHECK_NULL);
+  instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD);
   return ih;
 }
 
@@ -1542,7 +1542,7 @@
   HOTSPOT_JNI_GETOBJECTCLASS_ENTRY(
                                    env, obj);
 #endif /* USDT2 */
-  klassOop k = JNIHandles::resolve_non_null(obj)->klass();
+  Klass* k = JNIHandles::resolve_non_null(obj)->klass();
   jclass ret =
     (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror());
 #ifndef USDT2
@@ -1565,7 +1565,7 @@
   jboolean ret = JNI_TRUE;
   if (obj != NULL) {
     ret = JNI_FALSE;
-    klassOop k = java_lang_Class::as_klassOop(
+    Klass* k = java_lang_Class::as_Klass(
       JNIHandles::resolve_non_null(clazz));
     if (k != NULL) {
       ret = JNIHandles::resolve_non_null(obj)->is_a(k) ? JNI_TRUE : JNI_FALSE;
@@ -1605,18 +1605,18 @@
   }
 
   KlassHandle klass(THREAD,
-               java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+               java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
 
   // Make sure class is linked and initialized before handing id's out to
-  // methodOops.
+  // Method*s.
   Klass::cast(klass())->initialize(CHECK_NULL);
 
-  methodOop m;
+  Method* m;
   if (name == vmSymbols::object_initializer_name() ||
       name == vmSymbols::class_initializer_name()) {
     // Never search superclasses for constructors
     if (klass->oop_is_instance()) {
-      m = instanceKlass::cast(klass())->find_method(name, signature);
+      m = InstanceKlass::cast(klass())->find_method(name, signature);
     } else {
       m = NULL;
     }
@@ -1624,7 +1624,7 @@
     m = klass->lookup_method(name, signature);
     // Look up interfaces
     if (m == NULL && klass->oop_is_instance()) {
-      m = instanceKlass::cast(klass())->lookup_method_in_all_interfaces(name,
+      m = InstanceKlass::cast(klass())->lookup_method_in_all_interfaces(name,
                                                                    signature);
     }
   }
@@ -2424,7 +2424,7 @@
   JavaValue jvalue(Tag); \
   JNI_ArgumentPusherVaArg ap(methodID, args); \
   /* Make sure class is initialized before trying to invoke its method */ \
-  KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls))); \
+  KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls))); \
   Klass::cast(k())->initialize(CHECK_0); \
   jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_0); \
   va_end(args); \
@@ -2608,13 +2608,13 @@
     THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   }
   KlassHandle k(THREAD,
-                java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+                java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
   // Make sure class is initialized before handing id's out to fields
   Klass::cast(k())->initialize(CHECK_NULL);
 
   fieldDescriptor fd;
   if (!Klass::cast(k())->oop_is_instance() ||
-      !instanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) {
+      !InstanceKlass::cast(k())->find_field(fieldname, signame, false, &fd)) {
     THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   }
 
@@ -2634,7 +2634,7 @@
                                    env, obj, (uintptr_t) fieldID);
 #endif /* USDT2 */
   oop o = JNIHandles::resolve_non_null(obj);
-  klassOop k = o->klass();
+  Klass* k = o->klass();
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);
   // Keep JVMTI addition small and only check enabled flag here.
   // jni_GetField_probe() assumes that is okay to create handles.
@@ -2651,8 +2651,8 @@
 
     if (ret != NULL &&
         offset == java_lang_ref_Reference::referent_offset &&
-        instanceKlass::cast(k)->reference_type() != REF_NONE) {
-      assert(instanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+        InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+      assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
       needs_barrier = true;
     }
 
@@ -2685,7 +2685,7 @@
   DT_RETURN_MARK_FOR(Result, Get##Result##Field, Return, (const Return&)ret);\
 \
   oop o = JNIHandles::resolve_non_null(obj); \
-  klassOop k = o->klass(); \
+  Klass* k = o->klass(); \
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);  \
   /* Keep JVMTI addition small and only check enabled flag here.       */ \
   /* jni_GetField_probe_nh() assumes that is not okay to create handles */ \
@@ -2722,7 +2722,7 @@
   DT_RETURN_MARK_FOR(Result, Get##Result##Field, Return, (const Return&)ret);\
 \
   oop o = JNIHandles::resolve_non_null(obj); \
-  klassOop k = o->klass(); \
+  Klass* k = o->klass(); \
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);  \
   /* Keep JVMTI addition small and only check enabled flag here.       */ \
   /* jni_GetField_probe_nh() assumes that is not okay to create handles */ \
@@ -2795,7 +2795,7 @@
                                    env, obj, (uintptr_t) fieldID, value);
 #endif /* USDT2 */
   oop o = JNIHandles::resolve_non_null(obj);
-  klassOop k = o->klass();
+  Klass* k = o->klass();
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);
   // Keep JVMTI addition small and only check enabled flag here.
   // jni_SetField_probe_nh() assumes that is not okay to create handles
@@ -2826,7 +2826,7 @@
     ( env, obj, fieldID FP_SELECT_##Result(COMMA value,/*empty*/) ) ); \
 \
   oop o = JNIHandles::resolve_non_null(obj); \
-  klassOop k = o->klass(); \
+  Klass* k = o->klass(); \
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);  \
   /* Keep JVMTI addition small and only check enabled flag here.       */ \
   /* jni_SetField_probe_nh() assumes that is not okay to create handles */ \
@@ -2860,7 +2860,7 @@
   EntryProbe; \
 \
   oop o = JNIHandles::resolve_non_null(obj); \
-  klassOop k = o->klass(); \
+  Klass* k = o->klass(); \
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);  \
   /* Keep JVMTI addition small and only check enabled flag here.       */ \
   /* jni_SetField_probe_nh() assumes that is not okay to create handles */ \
@@ -2922,19 +2922,19 @@
 
   fieldDescriptor fd;
   bool found = false;
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
 
   assert(jfieldIDWorkaround::is_static_jfieldID(fieldID) == (isStatic != 0), "invalid fieldID");
 
   if (isStatic) {
-    // Static field. The fieldID a JNIid specifying the field holder and the offset within the klassOop.
+    // Static field. The fieldID a JNIid specifying the field holder and the offset within the Klass*.
     JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID);
     assert(id->is_static_field_id(), "invalid static field id");
     found = id->find_local_field(&fd);
   } else {
     // Non-static field. The fieldID is really the offset of the field within the instanceOop.
     int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID);
-    found = instanceKlass::cast(k)->find_field_from_offset(offset, false, &fd);
+    found = InstanceKlass::cast(k)->find_field_from_offset(offset, false, &fd);
   }
   assert(found, "bad fieldID passed into jni_ToReflectedField");
   oop reflected = Reflection::new_field(&fd, UseNewReflection, CHECK_NULL);
@@ -2974,18 +2974,18 @@
     THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   }
   KlassHandle k(THREAD,
-                java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+                java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
   // Make sure class is initialized before handing id's out to static fields
   Klass::cast(k())->initialize(CHECK_NULL);
 
   fieldDescriptor fd;
   if (!Klass::cast(k())->oop_is_instance() ||
-      !instanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) {
+      !InstanceKlass::cast(k())->find_field(fieldname, signame, true, &fd)) {
     THROW_MSG_0(vmSymbols::java_lang_NoSuchFieldError(), (char*) name);
   }
 
-  // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the klassOop
-  JNIid* id = instanceKlass::cast(fd.field_holder())->jni_id_for(fd.offset());
+  // A jfieldID for a static field is a JNIid specifying the field holder and the offset within the Klass*
+  JNIid* id = InstanceKlass::cast(fd.field_holder())->jni_id_for(fd.offset());
   debug_only(id->set_is_static_field_id();)
 
   debug_only(id->verify(fd.field_holder()));
@@ -3004,7 +3004,7 @@
                                          env, clazz, (uintptr_t) fieldID);
 #endif /* USDT2 */
 #ifndef JNICHECK_KERNEL
-  DEBUG_ONLY(klassOop param_k = jniCheck::validate_class(thread, clazz);)
+  DEBUG_ONLY(Klass* param_k = jniCheck::validate_class(thread, clazz);)
 #endif // JNICHECK_KERNEL
   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fieldID);
   assert(id->is_static_field_id(), "invalid static field id");
@@ -3439,8 +3439,8 @@
 #endif /* USDT2 */
   jobjectArray ret = NULL;
   DT_RETURN_MARK(NewObjectArray, jobjectArray, (const jobjectArray&)ret);
-  KlassHandle ek(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(elementClass)));
-  klassOop ako = Klass::cast(ek())->array_klass(CHECK_NULL);
+  KlassHandle ek(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(elementClass)));
+  Klass* ako = Klass::cast(ek())->array_klass(CHECK_NULL);
   KlassHandle ak = KlassHandle(THREAD, ako);
   objArrayKlass::cast(ak())->initialize(CHECK_NULL);
   objArrayOop result = objArrayKlass::cast(ak())->allocate(length, CHECK_NULL);
@@ -3949,10 +3949,10 @@
 // is not native.  Ask JVM TI what prefixes have been specified.  Then check
 // to see if the native method is now wrapped with the prefixes.  See the
 // SetNativeMethodPrefix(es) functions in the JVM TI Spec for details.
-static methodOop find_prefixed_native(KlassHandle k,
+static Method* find_prefixed_native(KlassHandle k,
                                       Symbol* name, Symbol* signature, TRAPS) {
   ResourceMark rm(THREAD);
-  methodOop method;
+  Method* method;
   int name_len = name->utf8_length();
   char* name_str = name->as_utf8();
   int prefix_count;
@@ -3986,12 +3986,12 @@
 }
 
 static bool register_native(KlassHandle k, Symbol* name, Symbol* signature, address entry, TRAPS) {
-  methodOop method = Klass::cast(k())->lookup_method(name, signature);
+  Method* method = Klass::cast(k())->lookup_method(name, signature);
   if (method == NULL) {
     ResourceMark rm;
     stringStream st;
     st.print("Method %s name or signature does not match",
-             methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
+             Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
     THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false);
   }
   if (!method->is_native()) {
@@ -4001,14 +4001,14 @@
       ResourceMark rm;
       stringStream st;
       st.print("Method %s is not declared as native",
-               methodOopDesc::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
+               Method::name_and_sig_as_C_string(Klass::cast(k()), name, signature));
       THROW_MSG_(vmSymbols::java_lang_NoSuchMethodError(), st.as_string(), false);
     }
   }
 
   if (entry != NULL) {
     method->set_native_function(entry,
-      methodOopDesc::native_bind_event_is_interesting);
+      Method::native_bind_event_is_interesting);
   } else {
     method->clear_native_function();
   }
@@ -4041,7 +4041,7 @@
   jint ret = 0;
   DT_RETURN_MARK(RegisterNatives, jint, (const jint&)ret);
 
-  KlassHandle h_k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz)));
+  KlassHandle h_k(thread, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz)));
 
   for (int index = 0; index < nMethods; index++) {
     const char* meth_name = methods[index].name;
@@ -4081,11 +4081,11 @@
  HOTSPOT_JNI_UNREGISTERNATIVES_ENTRY(
                                      env, clazz);
 #endif /* USDT2 */
-  klassOop k   = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz));
+  Klass* k   = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
   //%note jni_2
   if (Klass::cast(k)->oop_is_instance()) {
-    for (int index = 0; index < instanceKlass::cast(k)->methods()->length(); index++) {
-      methodOop m = methodOop(instanceKlass::cast(k)->methods()->obj_at(index));
+    for (int index = 0; index < InstanceKlass::cast(k)->methods()->length(); index++) {
+      Method* m = InstanceKlass::cast(k)->methods()->at(index);
       if (m->is_native()) {
         m->clear_native_function();
         m->set_signature_handler(NULL);
@@ -4412,7 +4412,7 @@
   jclass result =  find_class_from_class_loader(env, sym, true, loader, protection_domain, true, CHECK_NULL);
 
   if (TraceClassResolution && result != NULL) {
-    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
+    trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
   }
   return result;
 }
--- a/src/share/vm/prims/jniCheck.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jniCheck.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -215,12 +215,12 @@
 
   /* validate the class being passed */
   ASSERT_OOPS_ALLOWED;
-  klassOop k_oop = jniCheck::validate_class(thr, cls, false);
+  Klass* k_oop = jniCheck::validate_class(thr, cls, false);
 
   /* check for proper subclass hierarchy */
   JNIid* id = jfieldIDWorkaround::from_static_jfieldID(fid);
-  klassOop f_oop = id->holder();
-  if (!instanceKlass::cast(k_oop)->is_subtype_of(f_oop))
+  Klass* f_oop = id->holder();
+  if (!InstanceKlass::cast(k_oop)->is_subtype_of(f_oop))
     ReportJNIFatalError(thr, fatal_wrong_static_field);
 
   /* check for proper field type */
@@ -247,7 +247,7 @@
   if (!oopObj) {
     ReportJNIFatalError(thr, fatal_null_object);
   }
-  klassOop k_oop = oopObj->klass();
+  Klass* k_oop = oopObj->klass();
 
   if (!jfieldIDWorkaround::is_valid_jfieldID(k_oop, fid)) {
     ReportJNIFatalError(thr, fatal_wrong_field);
@@ -255,11 +255,11 @@
 
   /* make sure the field exists */
   int offset = jfieldIDWorkaround::from_instance_jfieldID(k_oop, fid);
-  if (!instanceKlass::cast(k_oop)->contains_field_offset(offset))
+  if (!InstanceKlass::cast(k_oop)->contains_field_offset(offset))
     ReportJNIFatalError(thr, fatal_wrong_field);
 
   /* check for proper field type */
-  if (!instanceKlass::cast(k_oop)->find_field_from_offset(offset,
+  if (!InstanceKlass::cast(k_oop)->find_field_from_offset(offset,
                                                               false, &fd))
     ReportJNIFatalError(thr, fatal_instance_field_not_found);
 
@@ -316,16 +316,16 @@
 }
 
 
-methodOop jniCheck::validate_jmethod_id(JavaThread* thr, jmethodID method_id) {
+Method* jniCheck::validate_jmethod_id(JavaThread* thr, jmethodID method_id) {
   ASSERT_OOPS_ALLOWED;
   // do the fast jmethodID check first
-  methodOop moop = JNIHandles::checked_resolve_jmethod_id(method_id);
+  Method* moop = Method::checked_resolve_jmethod_id(method_id);
   if (moop == NULL) {
     ReportJNIFatalError(thr, fatal_wrong_class_or_method);
   }
-  // jmethodIDs are supposed to be weak global handles, but that
-  // can be expensive so check it last
-  else if (!JNIHandles::is_weak_global_handle((jobject) method_id)) {
+  // jmethodIDs are supposed to be weak handles in the class loader data,
+  // but that can be expensive so check it last
+  else if (!Method::is_method_id(method_id)) {
     ReportJNIFatalError(thr, fatal_non_weak_method);
   }
   return moop;
@@ -360,7 +360,7 @@
   }
 }
 
-klassOop jniCheck::validate_class(JavaThread* thr, jclass clazz, bool allow_primitive) {
+Klass* jniCheck::validate_class(JavaThread* thr, jclass clazz, bool allow_primitive) {
   ASSERT_OOPS_ALLOWED;
   oop mirror = jniCheck::validate_handle(thr, clazz);
   if (!mirror) {
@@ -371,7 +371,7 @@
     ReportJNIFatalError(thr, fatal_class_not_a_class);
   }
 
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
   // Make allowances for primitive classes ...
   if (!(k != NULL || allow_primitive && java_lang_Class::is_primitive(mirror))) {
     ReportJNIFatalError(thr, fatal_class_not_a_class);
@@ -379,12 +379,12 @@
   return k;
 }
 
-void jniCheck::validate_throwable_klass(JavaThread* thr, klassOop klass) {
+void jniCheck::validate_throwable_klass(JavaThread* thr, Klass* klass) {
   ASSERT_OOPS_ALLOWED;
   assert(klass != NULL, "klass argument must have a value");
 
   if (!Klass::cast(klass)->oop_is_instance() ||
-      !instanceKlass::cast(klass)->is_subclass_of(SystemDictionary::Throwable_klass())) {
+      !InstanceKlass::cast(klass)->is_subclass_of(SystemDictionary::Throwable_klass())) {
     ReportJNIFatalError(thr, fatal_class_not_a_throwable_class);
   }
 }
@@ -540,8 +540,8 @@
                        const char *msg))
     functionEnter(thr);
     IN_VM(
-      klassOop k = jniCheck::validate_class(thr, clazz, false);
-      assert(k != NULL, "validate_class shouldn't return NULL klassOop");
+      Klass* k = jniCheck::validate_class(thr, clazz, false);
+      assert(k != NULL, "validate_class shouldn't return NULL Klass*");
       jniCheck::validate_throwable_klass(thr, k);
     )
     jint result = UNCHECKED()->ThrowNew(env, clazz, msg);
--- a/src/share/vm/prims/jniCheck.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jniCheck.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -50,12 +50,12 @@
  public:
   static oop validate_handle(JavaThread* thr, jobject obj);
   static oop validate_object(JavaThread* thr, jobject obj);
-  static klassOop validate_class(JavaThread* thr, jclass clazz, bool allow_primitive = false);
+  static Klass* validate_class(JavaThread* thr, jclass clazz, bool allow_primitive = false);
   static void validate_class_descriptor(JavaThread* thr, const char* name);
-  static void validate_throwable_klass(JavaThread* thr, klassOop klass);
+  static void validate_throwable_klass(JavaThread* thr, Klass* klass);
   static void validate_call_object(JavaThread* thr, jobject obj, jmethodID method_id);
   static void validate_call_class(JavaThread* thr, jclass clazz, jmethodID method_id);
-  static methodOop validate_jmethod_id(JavaThread* thr, jmethodID method_id);
+  static Method* validate_jmethod_id(JavaThread* thr, jmethodID method_id);
 };
 
 #endif // SHARE_VM_PRIMS_JNICHECK_HPP
--- a/src/share/vm/prims/jvm.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvm.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -35,7 +35,7 @@
 #include "oops/fieldStreams.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/objArrayKlass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "prims/jvm.h"
 #include "prims/jvm_misc.hpp"
 #include "prims/jvmtiExport.hpp"
@@ -120,29 +120,29 @@
   and thus can only support use of handles passed in.
 */
 
-static void trace_class_resolution_impl(klassOop to_class, TRAPS) {
+static void trace_class_resolution_impl(Klass* to_class, TRAPS) {
   ResourceMark rm;
   int line_number = -1;
   const char * source_file = NULL;
   const char * trace = "explicit";
-  klassOop caller = NULL;
+  Klass* caller = NULL;
   JavaThread* jthread = JavaThread::current();
   if (jthread->has_last_Java_frame()) {
     vframeStream vfst(jthread);
 
     // scan up the stack skipping ClassLoader, AccessController and PrivilegedAction frames
     TempNewSymbol access_controller = SymbolTable::new_symbol("java/security/AccessController", CHECK);
-    klassOop access_controller_klass = SystemDictionary::resolve_or_fail(access_controller, false, CHECK);
+    Klass* access_controller_klass = SystemDictionary::resolve_or_fail(access_controller, false, CHECK);
     TempNewSymbol privileged_action = SymbolTable::new_symbol("java/security/PrivilegedAction", CHECK);
-    klassOop privileged_action_klass = SystemDictionary::resolve_or_fail(privileged_action, false, CHECK);
-
-    methodOop last_caller = NULL;
+    Klass* privileged_action_klass = SystemDictionary::resolve_or_fail(privileged_action, false, CHECK);
+
+    Method* last_caller = NULL;
 
     while (!vfst.at_end()) {
-      methodOop m = vfst.method();
-      if (!vfst.method()->method_holder()->klass_part()->is_subclass_of(SystemDictionary::ClassLoader_klass())&&
-          !vfst.method()->method_holder()->klass_part()->is_subclass_of(access_controller_klass) &&
-          !vfst.method()->method_holder()->klass_part()->is_subclass_of(privileged_action_klass)) {
+      Method* m = vfst.method();
+      if (!vfst.method()->method_holder()->is_subclass_of(SystemDictionary::ClassLoader_klass())&&
+          !vfst.method()->method_holder()->is_subclass_of(access_controller_klass) &&
+          !vfst.method()->method_holder()->is_subclass_of(privileged_action_klass)) {
         break;
       }
       last_caller = m;
@@ -153,17 +153,17 @@
     // that caller, otherwise keep quiet since this should be picked up elsewhere.
     bool found_it = false;
     if (!vfst.at_end() &&
-        instanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class() &&
+        InstanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class() &&
         vfst.method()->name() == vmSymbols::forName0_name()) {
       vfst.next();
       if (!vfst.at_end() &&
-          instanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class() &&
+          InstanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class() &&
           vfst.method()->name() == vmSymbols::forName_name()) {
         vfst.next();
         found_it = true;
       }
     } else if (last_caller != NULL &&
-               instanceKlass::cast(last_caller->method_holder())->name() ==
+               InstanceKlass::cast(last_caller->method_holder())->name() ==
                vmSymbols::java_lang_ClassLoader() &&
                (last_caller->name() == vmSymbols::loadClassInternal_name() ||
                 last_caller->name() == vmSymbols::loadClass_name())) {
@@ -182,7 +182,7 @@
         // show method name if it's a native method
         trace = vfst.method()->name_and_sig_as_C_string();
       }
-      Symbol* s = instanceKlass::cast(caller)->source_file_name();
+      Symbol* s = InstanceKlass::cast(caller)->source_file_name();
       if (s != NULL) {
         source_file = s->as_C_string();
       }
@@ -202,7 +202,7 @@
   }
 }
 
-void trace_class_resolution(klassOop to_class) {
+void trace_class_resolution(Klass* to_class) {
   EXCEPTION_MARK;
   trace_class_resolution_impl(to_class, THREAD);
   if (HAS_PENDING_EXCEPTION) {
@@ -522,7 +522,6 @@
 JVM_ENTRY(void, JVM_MonitorWait(JNIEnv* env, jobject handle, jlong ms))
   JVMWrapper("JVM_MonitorWait");
   Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
-  assert(obj->is_instance() || obj->is_array(), "JVM_MonitorWait must apply to an object");
   JavaThreadInObjectWaitState jtiows(thread, ms != 0);
   if (JvmtiExport::should_post_monitor_wait()) {
     JvmtiExport::post_monitor_wait((JavaThread *)THREAD, (oop)obj(), ms);
@@ -534,7 +533,6 @@
 JVM_ENTRY(void, JVM_MonitorNotify(JNIEnv* env, jobject handle))
   JVMWrapper("JVM_MonitorNotify");
   Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
-  assert(obj->is_instance() || obj->is_array(), "JVM_MonitorNotify must apply to an object");
   ObjectSynchronizer::notify(obj, CHECK);
 JVM_END
 
@@ -542,7 +540,6 @@
 JVM_ENTRY(void, JVM_MonitorNotifyAll(JNIEnv* env, jobject handle))
   JVMWrapper("JVM_MonitorNotifyAll");
   Handle obj(THREAD, JNIHandles::resolve_non_null(handle));
-  assert(obj->is_instance() || obj->is_array(), "JVM_MonitorNotifyAll must apply to an object");
   ObjectSynchronizer::notifyall(obj, CHECK);
 JVM_END
 
@@ -555,7 +552,7 @@
 
 #ifdef ASSERT
   // Just checking that the cloneable flag is set correct
-  if (obj->is_javaArray()) {
+  if (obj->is_array()) {
     guarantee(klass->is_cloneable(), "all arrays are cloneable");
   } else {
     guarantee(obj->is_instance(), "should be instanceOop");
@@ -574,7 +571,7 @@
   // Make shallow object copy
   const int size = obj->size();
   oop new_obj = NULL;
-  if (obj->is_javaArray()) {
+  if (obj->is_array()) {
     const int length = ((arrayOop)obj())->length();
     new_obj = CollectedHeap::array_allocate(klass, size, length, CHECK_NULL);
   } else {
@@ -604,7 +601,7 @@
   // "gc-robust" by this stage.
   if (klass->has_finalizer()) {
     assert(obj->is_instance(), "should be instanceOop");
-    new_obj = instanceKlass::register_finalizer(instanceOop(new_obj), CHECK_NULL);
+    new_obj = InstanceKlass::register_finalizer(instanceOop(new_obj), CHECK_NULL);
   }
 
   return JNIHandles::make_local(env, oop(new_obj));
@@ -677,7 +674,7 @@
 
 JVM_ENTRY(jclass, JVM_GetCallerClass(JNIEnv* env, int depth))
   JVMWrapper("JVM_GetCallerClass");
-  klassOop k = thread->security_get_caller_class(depth);
+  Klass* k = thread->security_get_caller_class(depth);
   return (k == NULL) ? NULL : (jclass) JNIHandles::make_local(env, Klass::cast(k)->java_mirror());
 JVM_END
 
@@ -734,7 +731,7 @@
   }
 
   TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL);
-  klassOop k = SystemDictionary::resolve_or_null(h_name, CHECK_NULL);
+  Klass* k = SystemDictionary::resolve_or_null(h_name, CHECK_NULL);
   if (k == NULL) {
     return NULL;
   }
@@ -766,7 +763,7 @@
                                                Handle(), throwError, THREAD);
 
   if (TraceClassResolution && result != NULL) {
-    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
+    trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
   }
   return result;
 JVM_END
@@ -782,9 +779,9 @@
   }
   TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL);
   oop from_class_oop = JNIHandles::resolve(from);
-  klassOop from_class = (from_class_oop == NULL)
-                           ? (klassOop)NULL
-                           : java_lang_Class::as_klassOop(from_class_oop);
+  Klass* from_class = (from_class_oop == NULL)
+                           ? (Klass*)NULL
+                           : java_lang_Class::as_Klass(from_class_oop);
   oop class_loader = NULL;
   oop protection_domain = NULL;
   if (from_class != NULL) {
@@ -800,11 +797,11 @@
     // this function is generally only used for class loading during verification.
     ResourceMark rm;
     oop from_mirror = JNIHandles::resolve_non_null(from);
-    klassOop from_class = java_lang_Class::as_klassOop(from_mirror);
+    Klass* from_class = java_lang_Class::as_Klass(from_mirror);
     const char * from_name = Klass::cast(from_class)->external_name();
 
     oop mirror = JNIHandles::resolve_non_null(result);
-    klassOop to_class = java_lang_Class::as_klassOop(mirror);
+    Klass* to_class = java_lang_Class::as_Klass(mirror);
     const char * to = Klass::cast(to_class)->external_name();
     tty->print("RESOLVE %s %s (verification)\n", from_name, to);
   }
@@ -869,7 +866,7 @@
                            THREAD);
   }
   Handle protection_domain (THREAD, JNIHandles::resolve(pd));
-  klassOop k = SystemDictionary::resolve_from_stream(class_name, class_loader,
+  Klass* k = SystemDictionary::resolve_from_stream(class_name, class_loader,
                                                      protection_domain, &st,
                                                      verify != 0,
                                                      CHECK_NULL);
@@ -933,7 +930,7 @@
                            THREAD);
   }
 
-  klassOop k = SystemDictionary::find_instance_or_array_klass(klass_name,
+  Klass* k = SystemDictionary::find_instance_or_array_klass(klass_name,
                                                               h_loader,
                                                               Handle(),
                                                               CHECK_NULL);
@@ -955,7 +952,7 @@
     name = type2name(java_lang_Class::primitive_type(JNIHandles::resolve(cls)));
   } else {
     // Consider caching interned string in Klass
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
     assert(k->is_klass(), "just checking");
     name = Klass::cast(k)->external_name();
   }
@@ -976,11 +973,11 @@
     return (jobjectArray) JNIHandles::make_local(env, r);
   }
 
-  KlassHandle klass(thread, java_lang_Class::as_klassOop(mirror));
+  KlassHandle klass(thread, java_lang_Class::as_Klass(mirror));
   // Figure size of result array
   int size;
   if (klass->oop_is_instance()) {
-    size = instanceKlass::cast(klass())->local_interfaces()->length();
+    size = InstanceKlass::cast(klass())->local_interfaces()->length();
   } else {
     assert(klass->oop_is_objArray() || klass->oop_is_typeArray(), "Illegal mirror klass");
     size = 2;
@@ -993,7 +990,7 @@
   if (klass->oop_is_instance()) {
     // Regular instance klass, fill in all local interfaces
     for (int index = 0; index < size; index++) {
-      klassOop k = klassOop(instanceKlass::cast(klass())->local_interfaces()->obj_at(index));
+      Klass* k = InstanceKlass::cast(klass())->local_interfaces()->at(index);
       result->obj_at_put(index, Klass::cast(k)->java_mirror());
     }
   } else {
@@ -1010,7 +1007,7 @@
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
     return NULL;
   }
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   oop loader = Klass::cast(k)->class_loader();
   return JNIHandles::make_local(env, loader);
 JVM_END
@@ -1022,7 +1019,7 @@
   if (java_lang_Class::is_primitive(mirror)) {
     return JNI_FALSE;
   }
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
   jboolean result = Klass::cast(k)->is_interface();
   assert(!result || Klass::cast(k)->oop_is_instance(),
          "all interfaces are instance types");
@@ -1040,10 +1037,10 @@
     return NULL;
   }
 
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   objArrayOop signers = NULL;
   if (Klass::cast(k)->oop_is_instance()) {
-    signers = instanceKlass::cast(k)->signers();
+    signers = InstanceKlass::cast(k)->signers();
   }
 
   // If there are no signers set in the class, or if the class
@@ -1051,7 +1048,7 @@
   if (signers == NULL) return NULL;
 
   // copy of the signers array
-  klassOop element = objArrayKlass::cast(signers->klass())->element_klass();
+  Klass* element = objArrayKlass::cast(signers->klass())->element_klass();
   objArrayOop signers_copy = oopFactory::new_objArray(element, signers->length(), CHECK_NULL);
   for (int index = 0; index < signers->length(); index++) {
     signers_copy->obj_at_put(index, signers->obj_at(index));
@@ -1068,9 +1065,9 @@
     // This call is ignored for primitive types and arrays.
     // Signers are only set once, ClassLoader.java, and thus shouldn't
     // be called with an array.  Only the bootstrap loader creates arrays.
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
     if (Klass::cast(k)->oop_is_instance()) {
-      instanceKlass::cast(k)->set_signers(objArrayOop(JNIHandles::resolve(signers)));
+      InstanceKlass::cast(k)->set_signers(objArrayOop(JNIHandles::resolve(signers)));
     }
   }
 JVM_END
@@ -1087,7 +1084,7 @@
     return NULL;
   }
 
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
   return (jobject) JNIHandles::make_local(env, Klass::cast(k)->protection_domain());
 JVM_END
 
@@ -1101,13 +1098,13 @@
   }
   if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
     // Call is ignored for primitive types
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
 
     // cls won't be an array, as this called only from ClassLoader.defineClass
     if (Klass::cast(k)->oop_is_instance()) {
       oop pd = JNIHandles::resolve(protection_domain);
       assert(pd == NULL || pd->is_oop(), "just checking");
-      instanceKlass::cast(k)->set_protection_domain(pd);
+      InstanceKlass::cast(k)->set_protection_domain(pd);
     }
   }
 JVM_END
@@ -1127,11 +1124,11 @@
   Handle object (THREAD, JNIHandles::resolve(action));
 
   // get run() method
-  methodOop m_oop = Klass::cast(object->klass())->uncached_lookup_method(
+  Method* m_oop = Klass::cast(object->klass())->uncached_lookup_method(
                                            vmSymbols::run_method_name(),
                                            vmSymbols::void_object_signature());
   methodHandle m (THREAD, m_oop);
-  if (m.is_null() || !m->is_method() || !methodOop(m())->is_public() || methodOop(m())->is_static()) {
+  if (m.is_null() || !m->is_method() || !m()->is_public() || m()->is_static()) {
     THROW_MSG_0(vmSymbols::java_lang_InternalError(), "No run method");
   }
 
@@ -1221,7 +1218,7 @@
 
   for(; !vfst.at_end(); vfst.next()) {
     // get method of frame
-    methodOop method = vfst.method();
+    Method* method = vfst.method();
     intptr_t* frame_id   = vfst.frame_id();
 
     // check the privileged frames to see if we have a match
@@ -1231,7 +1228,7 @@
       privileged_context = Handle(thread, thread->privileged_stack_top()->privileged_context());
       protection_domain  = thread->privileged_stack_top()->protection_domain();
     } else {
-      protection_domain = instanceKlass::cast(method->method_holder())->protection_domain();
+      protection_domain = InstanceKlass::cast(method->method_holder())->protection_domain();
     }
 
     if ((previous_protection_domain != protection_domain) && (protection_domain != NULL)) {
@@ -1269,8 +1266,8 @@
 
 JVM_QUICK_ENTRY(jboolean, JVM_IsArrayClass(JNIEnv *env, jclass cls))
   JVMWrapper("JVM_IsArrayClass");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
-  return (k != NULL) && Klass::cast(k)->oop_is_javaArray() ? true : false;
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
+  return (k != NULL) && Klass::cast(k)->oop_is_array() ? true : false;
 JVM_END
 
 
@@ -1296,7 +1293,7 @@
     return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC;
   }
 
-  Klass* k = Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls)));
+  Klass* k = Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)));
   debug_only(int computed_modifiers = k->compute_modifier_flags(CHECK_0));
   assert(k->modifier_flags() == computed_modifiers, "modifiers cache is OK");
   return k->modifier_flags();
@@ -1308,15 +1305,15 @@
 JVM_ENTRY(jobjectArray, JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass))
   JvmtiVMObjectAllocEventCollector oam;
   // ofClass is a reference to a java_lang_Class object. The mirror object
-  // of an instanceKlass
+  // of an InstanceKlass
 
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) ||
-      ! Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) {
+      ! Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) {
     oop result = oopFactory::new_objArray(SystemDictionary::Class_klass(), 0, CHECK_NULL);
     return (jobjectArray)JNIHandles::make_local(env, result);
   }
 
-  instanceKlassHandle k(thread, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
+  instanceKlassHandle k(thread, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)));
   InnerClassesIterator iter(k);
 
   if (iter.length() == 0) {
@@ -1342,9 +1339,9 @@
       // Check to see if the name matches the class we're looking for
       // before attempting to find the class.
       if (cp->klass_name_at_matches(k, ooff)) {
-        klassOop outer_klass = cp->klass_at(ooff, CHECK_NULL);
+        Klass* outer_klass = cp->klass_at(ooff, CHECK_NULL);
         if (outer_klass == k()) {
-           klassOop ik = cp->klass_at(ioff, CHECK_NULL);
+           Klass* ik = cp->klass_at(ioff, CHECK_NULL);
            instanceKlassHandle inner_klass (THREAD, ik);
 
            // Throws an exception if outer klass has not declared k as
@@ -1375,13 +1372,13 @@
 {
   // ofClass is a reference to a java_lang_Class object.
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) ||
-      ! Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) {
+      ! Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_instance()) {
     return NULL;
   }
 
   bool inner_is_member = false;
-  klassOop outer_klass
-    = instanceKlass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass))
+  Klass* outer_klass
+    = InstanceKlass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))
                           )->compute_enclosing_class(&inner_is_member, CHECK_NULL);
   if (outer_klass == NULL)  return NULL;  // already a top-level class
   if (!inner_is_member)  return NULL;     // an anonymous class (inside a method)
@@ -1389,8 +1386,8 @@
 }
 JVM_END
 
-// should be in instanceKlass.cpp, but is here for historical reasons
-klassOop instanceKlass::compute_enclosing_class_impl(instanceKlassHandle k,
+// should be in InstanceKlass.cpp, but is here for historical reasons
+Klass* InstanceKlass::compute_enclosing_class_impl(instanceKlassHandle k,
                                                      bool* inner_is_member,
                                                      TRAPS) {
   Thread* thread = THREAD;
@@ -1403,7 +1400,7 @@
   constantPoolHandle i_cp(thread, k->constants());
 
   bool found = false;
-  klassOop ok;
+  Klass* ok;
   instanceKlassHandle outer_klass;
   *inner_is_member = false;
 
@@ -1416,7 +1413,7 @@
       // Check to see if the name matches the class we're looking for
       // before attempting to find the class.
       if (i_cp->klass_name_at_matches(k, ioff)) {
-        klassOop inner_klass = i_cp->klass_at(ioff, CHECK_NULL);
+        Klass* inner_klass = i_cp->klass_at(ioff, CHECK_NULL);
         found = (k() == inner_klass);
         if (found && ooff != 0) {
           ok = i_cp->klass_at(ooff, CHECK_NULL);
@@ -1454,9 +1451,9 @@
   ResourceMark rm(THREAD);
   // Return null for arrays and primatives
   if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
     if (Klass::cast(k)->oop_is_instance()) {
-      Symbol* sym = instanceKlass::cast(k)->generic_signature();
+      Symbol* sym = InstanceKlass::cast(k)->generic_signature();
       if (sym == NULL) return NULL;
       Handle str = java_lang_String::create_from_symbol(sym, CHECK_NULL);
       return (jstring) JNIHandles::make_local(env, str());
@@ -1472,10 +1469,10 @@
   ResourceMark rm(THREAD);
   // Return null for arrays and primitives
   if (!java_lang_Class::is_primitive(JNIHandles::resolve(cls))) {
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve(cls));
     if (Klass::cast(k)->oop_is_instance()) {
-      return (jbyteArray) JNIHandles::make_local(env,
-                                  instanceKlass::cast(k)->class_annotations());
+      typeArrayOop a = Annotations::make_java_array(InstanceKlass::cast(k)->class_annotations(), CHECK_NULL);
+      return (jbyteArray) JNIHandles::make_local(env, a);
     }
   }
   return NULL;
@@ -1491,36 +1488,34 @@
   // field is a handle to a java.lang.reflect.Field object
   oop reflected = JNIHandles::resolve_non_null(field);
   oop mirror    = java_lang_reflect_Field::clazz(reflected);
-  klassOop k    = java_lang_Class::as_klassOop(mirror);
+  Klass* k    = java_lang_Class::as_Klass(mirror);
   int slot      = java_lang_reflect_Field::slot(reflected);
   int modifiers = java_lang_reflect_Field::modifiers(reflected);
 
   fieldDescriptor fd;
   KlassHandle kh(THREAD, k);
-  intptr_t offset = instanceKlass::cast(kh())->field_offset(slot);
+  intptr_t offset = InstanceKlass::cast(kh())->field_offset(slot);
 
   if (modifiers & JVM_ACC_STATIC) {
     // for static fields we only look in the current class
-    if (!instanceKlass::cast(kh())->find_local_field_from_offset(offset,
-                                                                 true, &fd)) {
+    if (!InstanceKlass::cast(kh())->find_local_field_from_offset(offset, true, &fd)) {
       assert(false, "cannot find static field");
       return NULL;  // robustness
     }
   } else {
     // for instance fields we start with the current class and work
     // our way up through the superclass chain
-    if (!instanceKlass::cast(kh())->find_field_from_offset(offset, false,
-                                                           &fd)) {
+    if (!InstanceKlass::cast(kh())->find_field_from_offset(offset, false, &fd)) {
       assert(false, "cannot find instance field");
       return NULL;  // robustness
     }
   }
 
-  return (jbyteArray) JNIHandles::make_local(env, fd.annotations());
+  return (jbyteArray) JNIHandles::make_local(env, Annotations::make_java_array(fd.annotations(), THREAD));
 JVM_END
 
 
-static methodOop jvm_get_method_common(jobject method, TRAPS) {
+static Method* jvm_get_method_common(jobject method, TRAPS) {
   // some of this code was adapted from from jni_FromReflectedMethod
 
   oop reflected = JNIHandles::resolve_non_null(method);
@@ -1536,10 +1531,10 @@
     mirror = java_lang_reflect_Method::clazz(reflected);
     slot   = java_lang_reflect_Method::slot(reflected);
   }
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
 
   KlassHandle kh(THREAD, k);
-  methodOop m = instanceKlass::cast(kh())->method_with_idnum(slot);
+  Method* m = InstanceKlass::cast(kh())->method_with_idnum(slot);
   if (m == NULL) {
     assert(false, "cannot find method");
     return NULL;  // robustness
@@ -1553,8 +1548,9 @@
   JVMWrapper("JVM_GetMethodAnnotations");
 
   // method is a handle to a java.lang.reflect.Method object
-  methodOop m = jvm_get_method_common(method, CHECK_NULL);
-  return (jbyteArray) JNIHandles::make_local(env, m->annotations());
+  Method* m = jvm_get_method_common(method, CHECK_NULL);
+  return (jbyteArray) JNIHandles::make_local(env,
+    Annotations::make_java_array(m->annotations(), THREAD));
 JVM_END
 
 
@@ -1562,8 +1558,9 @@
   JVMWrapper("JVM_GetMethodDefaultAnnotationValue");
 
   // method is a handle to a java.lang.reflect.Method object
-  methodOop m = jvm_get_method_common(method, CHECK_NULL);
-  return (jbyteArray) JNIHandles::make_local(env, m->annotation_default());
+  Method* m = jvm_get_method_common(method, CHECK_NULL);
+  return (jbyteArray) JNIHandles::make_local(env,
+    Annotations::make_java_array(m->annotation_default(), THREAD));
 JVM_END
 
 
@@ -1571,8 +1568,9 @@
   JVMWrapper("JVM_GetMethodParameterAnnotations");
 
   // method is a handle to a java.lang.reflect.Method object
-  methodOop m = jvm_get_method_common(method, CHECK_NULL);
-  return (jbyteArray) JNIHandles::make_local(env, m->parameter_annotations());
+  Method* m = jvm_get_method_common(method, CHECK_NULL);
+  return (jbyteArray) JNIHandles::make_local(env,
+    Annotations::make_java_array(m->parameter_annotations(), THREAD));
 JVM_END
 
 
@@ -1585,13 +1583,13 @@
 
   // Exclude primitive types and array types
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass)) ||
-      Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
+      Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) {
     // Return empty array
     oop res = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), 0, CHECK_NULL);
     return (jobjectArray) JNIHandles::make_local(env, res);
   }
 
-  instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
+  instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)));
   constantPoolHandle cp(THREAD, k->constants());
 
   // Ensure class is linked
@@ -1648,24 +1646,24 @@
 
   // Exclude primitive types and array types
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
-      || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
+      || Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) {
     // Return empty array
     oop res = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), 0, CHECK_NULL);
     return (jobjectArray) JNIHandles::make_local(env, res);
   }
 
-  instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
+  instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)));
 
   // Ensure class is linked
   k->link_class(CHECK_NULL);
 
-  objArrayHandle methods (THREAD, k->methods());
+  Array<Method*>* methods = k->methods();
   int methods_length = methods->length();
   int num_methods = 0;
 
   int i;
   for (i = 0; i < methods_length; i++) {
-    methodHandle method(THREAD, (methodOop) methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     if (!method->is_initializer()) {
       if (!publicOnly || method->is_public()) {
         ++num_methods;
@@ -1679,7 +1677,7 @@
 
   int out_idx = 0;
   for (i = 0; i < methods_length; i++) {
-    methodHandle method(THREAD, (methodOop) methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     if (!method->is_initializer()) {
       if (!publicOnly || method->is_public()) {
         oop m = Reflection::new_method(method, UseNewReflection, false, CHECK_NULL);
@@ -1700,24 +1698,24 @@
 
   // Exclude primitive types and array types
   if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
-      || Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)))->oop_is_javaArray()) {
+      || Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)))->oop_is_array()) {
     // Return empty array
     oop res = oopFactory::new_objArray(SystemDictionary::reflect_Constructor_klass(), 0 , CHECK_NULL);
     return (jobjectArray) JNIHandles::make_local(env, res);
   }
 
-  instanceKlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(ofClass)));
+  instanceKlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass)));
 
   // Ensure class is linked
   k->link_class(CHECK_NULL);
 
-  objArrayHandle methods (THREAD, k->methods());
+  Array<Method*>* methods = k->methods();
   int methods_length = methods->length();
   int num_constructors = 0;
 
   int i;
   for (i = 0; i < methods_length; i++) {
-    methodHandle method(THREAD, (methodOop) methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     if (method->is_initializer() && !method->is_static()) {
       if (!publicOnly || method->is_public()) {
         ++num_constructors;
@@ -1731,7 +1729,7 @@
 
   int out_idx = 0;
   for (i = 0; i < methods_length; i++) {
-    methodHandle method(THREAD, (methodOop) methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     if (method->is_initializer() && !method->is_static()) {
       if (!publicOnly || method->is_public()) {
         oop m = Reflection::new_constructor(method, CHECK_NULL);
@@ -1753,7 +1751,7 @@
     return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC;
   }
 
-  Klass* k = Klass::cast(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls)));
+  Klass* k = Klass::cast(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)));
   return k->access_flags().as_int() & JVM_ACC_WRITTEN_FLAGS;
 }
 JVM_END
@@ -1768,11 +1766,11 @@
 
   // Return null for primitives and arrays
   if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
-    klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+    Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
     if (Klass::cast(k)->oop_is_instance()) {
       instanceKlassHandle k_h(THREAD, k);
       Handle jcp = sun_reflect_ConstantPool::create(CHECK_NULL);
-      sun_reflect_ConstantPool::set_cp_oop(jcp(), k_h->constants());
+      sun_reflect_ConstantPool::set_cp(jcp(), k_h->constants());
       return JNIHandles::make_local(jcp());
     }
   }
@@ -1781,10 +1779,10 @@
 JVM_END
 
 
-JVM_ENTRY(jint, JVM_ConstantPoolGetSize(JNIEnv *env, jobject unused, jobject jcpool))
+JVM_ENTRY(jint, JVM_ConstantPoolGetSize(JNIEnv *env, jobject obj, jobject unused))
 {
   JVMWrapper("JVM_ConstantPoolGetSize");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   return cp->length();
 }
 JVM_END
@@ -1797,31 +1795,31 @@
 }
 
 
-JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetClassAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   constantTag tag = cp->tag_at(index);
   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
   }
-  klassOop k = cp->klass_at(index, CHECK_NULL);
+  Klass* k = cp->klass_at(index, CHECK_NULL);
   return (jclass) JNIHandles::make_local(k->java_mirror());
 }
 JVM_END
 
 
-JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetClassAtIfLoaded");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   constantTag tag = cp->tag_at(index);
   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
   }
-  klassOop k = constantPoolOopDesc::klass_at_if_loaded(cp, index);
+  Klass* k = ConstantPool::klass_at_if_loaded(cp, index);
   if (k == NULL) return NULL;
   return (jclass) JNIHandles::make_local(k->java_mirror());
 }
@@ -1833,11 +1831,11 @@
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
   }
   int klass_ref  = cp->uncached_klass_ref_index_at(index);
-  klassOop k_o;
+  Klass* k_o;
   if (force_resolution) {
     k_o = cp->klass_at(klass_ref, CHECK_NULL);
   } else {
-    k_o = constantPoolOopDesc::klass_at_if_loaded(cp, klass_ref);
+    k_o = ConstantPool::klass_at_if_loaded(cp, klass_ref);
     if (k_o == NULL) return NULL;
   }
   instanceKlassHandle k(THREAD, k_o);
@@ -1856,22 +1854,22 @@
   return JNIHandles::make_local(method);
 }
 
-JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetMethodAt");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   jobject res = get_method_at_helper(cp, index, true, CHECK_NULL);
   return res;
 }
 JVM_END
 
-JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetMethodAtIfLoaded");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   jobject res = get_method_at_helper(cp, index, false, CHECK_NULL);
   return res;
@@ -1884,18 +1882,18 @@
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
   }
   int klass_ref  = cp->uncached_klass_ref_index_at(index);
-  klassOop k_o;
+  Klass* k_o;
   if (force_resolution) {
     k_o = cp->klass_at(klass_ref, CHECK_NULL);
   } else {
-    k_o = constantPoolOopDesc::klass_at_if_loaded(cp, klass_ref);
+    k_o = ConstantPool::klass_at_if_loaded(cp, klass_ref);
     if (k_o == NULL) return NULL;
   }
   instanceKlassHandle k(THREAD, k_o);
   Symbol* name = cp->uncached_name_ref_at(index);
   Symbol* sig  = cp->uncached_signature_ref_at(index);
   fieldDescriptor fd;
-  klassOop target_klass = k->find_field(name, sig, &fd);
+  Klass* target_klass = k->find_field(name, sig, &fd);
   if (target_klass == NULL) {
     THROW_MSG_0(vmSymbols::java_lang_RuntimeException(), "Unable to look up field in target class");
   }
@@ -1903,33 +1901,33 @@
   return JNIHandles::make_local(field);
 }
 
-JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject obj, jobject unusedl, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetFieldAt");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   jobject res = get_field_at_helper(cp, index, true, CHECK_NULL);
   return res;
 }
 JVM_END
 
-JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetFieldAtIfLoaded");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   jobject res = get_field_at_helper(cp, index, false, CHECK_NULL);
   return res;
 }
 JVM_END
 
-JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetMemberRefInfoAt");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   constantTag tag = cp->tag_at(index);
   if (!tag.is_field_or_method()) {
@@ -1951,10 +1949,10 @@
 }
 JVM_END
 
-JVM_ENTRY(jint, JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jint, JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetIntAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_0);
   constantTag tag = cp->tag_at(index);
   if (!tag.is_int()) {
@@ -1964,10 +1962,10 @@
 }
 JVM_END
 
-JVM_ENTRY(jlong, JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jlong, JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetLongAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_(0L));
   constantTag tag = cp->tag_at(index);
   if (!tag.is_long()) {
@@ -1977,10 +1975,10 @@
 }
 JVM_END
 
-JVM_ENTRY(jfloat, JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jfloat, JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetFloatAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_(0.0f));
   constantTag tag = cp->tag_at(index);
   if (!tag.is_float()) {
@@ -1990,10 +1988,10 @@
 }
 JVM_END
 
-JVM_ENTRY(jdouble, JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jdouble, JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetDoubleAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_(0.0));
   constantTag tag = cp->tag_at(index);
   if (!tag.is_double()) {
@@ -2003,13 +2001,13 @@
 }
 JVM_END
 
-JVM_ENTRY(jstring, JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jstring, JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetStringAt");
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   constantTag tag = cp->tag_at(index);
-  if (!tag.is_string() && !tag.is_unresolved_string()) {
+  if (!tag.is_string()) {
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
   }
   oop str = cp->string_at(index, CHECK_NULL);
@@ -2017,11 +2015,11 @@
 }
 JVM_END
 
-JVM_ENTRY(jstring, JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject unused, jobject jcpool, jint index))
+JVM_ENTRY(jstring, JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject obj, jobject unused, jint index))
 {
   JVMWrapper("JVM_ConstantPoolGetUTF8At");
   JvmtiVMObjectAllocEventCollector oam;
-  constantPoolHandle cp = constantPoolHandle(THREAD, constantPoolOop(JNIHandles::resolve_non_null(jcpool)));
+  constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
   bounds_check(cp, index, CHECK_NULL);
   constantTag tag = cp->tag_at(index);
   if (!tag.is_symbol()) {
@@ -2044,7 +2042,7 @@
   assert(! java_lang_Class::is_primitive(r), "primitive classes not allowed");
   if (java_lang_Class::is_primitive(r)) return false;
 
-  klassOop k = java_lang_Class::as_klassOop(r);
+  Klass* k = java_lang_Class::as_Klass(r);
   assert(Klass::cast(k)->oop_is_instance(), "must be an instance klass");
   if (! Klass::cast(k)->oop_is_instance()) return false;
 
@@ -2071,15 +2069,15 @@
 
 // RedefineClasses support: bug 6214132 caused verification to fail.
 // All functions from this section should call the jvmtiThreadSate function:
-//   klassOop class_to_verify_considering_redefinition(klassOop klass).
-// The function returns a klassOop of the _scratch_class if the verifier
+//   Klass* class_to_verify_considering_redefinition(Klass* klass).
+// The function returns a Klass* of the _scratch_class if the verifier
 // was invoked in the middle of the class redefinition.
-// Otherwise it returns its argument value which is the _the_class klassOop.
+// Otherwise it returns its argument value which is the _the_class Klass*.
 // Please, refer to the description in the jvmtiThreadSate.hpp.
 
 JVM_ENTRY(const char*, JVM_GetClassNameUTF(JNIEnv *env, jclass cls))
   JVMWrapper("JVM_GetClassNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   return Klass::cast(k)->name()->as_utf8();
 JVM_END
@@ -2087,16 +2085,15 @@
 
 JVM_QUICK_ENTRY(void, JVM_GetClassCPTypes(JNIEnv *env, jclass cls, unsigned char *types))
   JVMWrapper("JVM_GetClassCPTypes");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  // types will have length zero if this is not an instanceKlass
+  // types will have length zero if this is not an InstanceKlass
   // (length is determined by call to JVM_GetClassCPEntriesCount)
   if (Klass::cast(k)->oop_is_instance()) {
-    constantPoolOop cp = instanceKlass::cast(k)->constants();
+    ConstantPool* cp = InstanceKlass::cast(k)->constants();
     for (int index = cp->length() - 1; index >= 0; index--) {
       constantTag tag = cp->tag_at(index);
-      types[index] = (tag.is_unresolved_klass()) ? JVM_CONSTANT_Class :
-                     (tag.is_unresolved_string()) ? JVM_CONSTANT_String : tag.value();
+      types[index] = (tag.is_unresolved_klass()) ? JVM_CONSTANT_Class : tag.value();
   }
   }
 JVM_END
@@ -2104,47 +2101,47 @@
 
 JVM_QUICK_ENTRY(jint, JVM_GetClassCPEntriesCount(JNIEnv *env, jclass cls))
   JVMWrapper("JVM_GetClassCPEntriesCount");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   if (!Klass::cast(k)->oop_is_instance())
     return 0;
-  return instanceKlass::cast(k)->constants()->length();
+  return InstanceKlass::cast(k)->constants()->length();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetClassFieldsCount(JNIEnv *env, jclass cls))
   JVMWrapper("JVM_GetClassFieldsCount");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   if (!Klass::cast(k)->oop_is_instance())
     return 0;
-  return instanceKlass::cast(k)->java_fields_count();
+  return InstanceKlass::cast(k)->java_fields_count();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetClassMethodsCount(JNIEnv *env, jclass cls))
   JVMWrapper("JVM_GetClassMethodsCount");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   if (!Klass::cast(k)->oop_is_instance())
     return 0;
-  return instanceKlass::cast(k)->methods()->length();
+  return InstanceKlass::cast(k)->methods()->length();
 JVM_END
 
 
 // The following methods, used for the verifier, are never called with
-// array klasses, so a direct cast to instanceKlass is safe.
+// array klasses, so a direct cast to InstanceKlass is safe.
 // Typically, these methods are called in a loop with bounds determined
 // by the results of JVM_GetClass{Fields,Methods}Count, which return
 // zero for arrays.
 JVM_QUICK_ENTRY(void, JVM_GetMethodIxExceptionIndexes(JNIEnv *env, jclass cls, jint method_index, unsigned short *exceptions))
   JVMWrapper("JVM_GetMethodIxExceptionIndexes");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  int length = methodOop(method)->checked_exceptions_length();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  int length = method->checked_exceptions_length();
   if (length > 0) {
-    CheckedExceptionElement* table= methodOop(method)->checked_exceptions_start();
+    CheckedExceptionElement* table= method->checked_exceptions_start();
     for (int i = 0; i < length; i++) {
       exceptions[i] = table[i].class_cp_index;
     }
@@ -2154,37 +2151,37 @@
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxExceptionsCount(JNIEnv *env, jclass cls, jint method_index))
   JVMWrapper("JVM_GetMethodIxExceptionsCount");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->checked_exceptions_length();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->checked_exceptions_length();
 JVM_END
 
 
 JVM_QUICK_ENTRY(void, JVM_GetMethodIxByteCode(JNIEnv *env, jclass cls, jint method_index, unsigned char *code))
   JVMWrapper("JVM_GetMethodIxByteCode");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  memcpy(code, methodOop(method)->code_base(), methodOop(method)->code_size());
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  memcpy(code, method->code_base(), method->code_size());
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxByteCodeLength(JNIEnv *env, jclass cls, jint method_index))
   JVMWrapper("JVM_GetMethodIxByteCodeLength");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->code_size();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->code_size();
 JVM_END
 
 
 JVM_QUICK_ENTRY(void, JVM_GetMethodIxExceptionTableEntry(JNIEnv *env, jclass cls, jint method_index, jint entry_index, JVM_ExceptionTableEntryType *entry))
   JVMWrapper("JVM_GetMethodIxExceptionTableEntry");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  ExceptionTable extable((methodOop(method)));
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  ExceptionTable extable(method);
   entry->start_pc   = extable.start_pc(entry_index);
   entry->end_pc     = extable.end_pc(entry_index);
   entry->handler_pc = extable.handler_pc(entry_index);
@@ -2194,82 +2191,82 @@
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxExceptionTableLength(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_GetMethodIxExceptionTableLength");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->exception_table_length();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->exception_table_length();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxModifiers(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_GetMethodIxModifiers");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetFieldIxModifiers(JNIEnv *env, jclass cls, int field_index))
   JVMWrapper("JVM_GetFieldIxModifiers");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  return instanceKlass::cast(k)->field_access_flags(field_index) & JVM_RECOGNIZED_FIELD_MODIFIERS;
+  return InstanceKlass::cast(k)->field_access_flags(field_index) & JVM_RECOGNIZED_FIELD_MODIFIERS;
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxLocalsCount(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_GetMethodIxLocalsCount");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->max_locals();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->max_locals();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxArgsSize(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_GetMethodIxArgsSize");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->size_of_parameters();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->size_of_parameters();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jint, JVM_GetMethodIxMaxStack(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_GetMethodIxMaxStack");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->verifier_max_stack();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->verifier_max_stack();
 JVM_END
 
 
 JVM_QUICK_ENTRY(jboolean, JVM_IsConstructorIx(JNIEnv *env, jclass cls, int method_index))
   JVMWrapper("JVM_IsConstructorIx");
   ResourceMark rm(THREAD);
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->name() == vmSymbols::object_initializer_name();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->name() == vmSymbols::object_initializer_name();
 JVM_END
 
 
 JVM_ENTRY(const char*, JVM_GetMethodIxNameUTF(JNIEnv *env, jclass cls, jint method_index))
   JVMWrapper("JVM_GetMethodIxIxUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->name()->as_utf8();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->name()->as_utf8();
 JVM_END
 
 
 JVM_ENTRY(const char*, JVM_GetMethodIxSignatureUTF(JNIEnv *env, jclass cls, jint method_index))
   JVMWrapper("JVM_GetMethodIxSignatureUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  oop method = instanceKlass::cast(k)->methods()->obj_at(method_index);
-  return methodOop(method)->signature()->as_utf8();
+  Method* method = InstanceKlass::cast(k)->methods()->at(method_index);
+  return method->signature()->as_utf8();
 JVM_END
 
 /**
@@ -2282,9 +2279,9 @@
  */
 JVM_ENTRY(const char*, JVM_GetCPFieldNameUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPFieldNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Fieldref:
       return cp->uncached_name_ref_at(cp_index)->as_utf8();
@@ -2298,9 +2295,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPMethodNameUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPMethodNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
@@ -2316,9 +2313,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPMethodSignatureUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPMethodSignatureUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_InterfaceMethodref:
     case JVM_CONSTANT_Methodref:
@@ -2334,9 +2331,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPFieldSignatureUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPFieldSignatureUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Fieldref:
       return cp->uncached_signature_ref_at(cp_index)->as_utf8();
@@ -2350,9 +2347,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPClassNameUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPClassNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   Symbol* classname = cp->klass_name_at(cp_index);
   return classname->as_utf8();
 JVM_END
@@ -2360,9 +2357,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPFieldClassNameUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPFieldClassNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Fieldref: {
       int class_index = cp->uncached_klass_ref_index_at(cp_index);
@@ -2379,9 +2376,9 @@
 
 JVM_ENTRY(const char*, JVM_GetCPMethodClassNameUTF(JNIEnv *env, jclass cls, jint cp_index))
   JVMWrapper("JVM_GetCPMethodClassNameUTF");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
   k = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Methodref:
     case JVM_CONSTANT_InterfaceMethodref: {
@@ -2399,12 +2396,12 @@
 
 JVM_ENTRY(jint, JVM_GetCPFieldModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls))
   JVMWrapper("JVM_GetCPFieldModifiers");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
-  klassOop k_called = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(called_cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
+  Klass* k_called = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(called_cls));
   k        = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   k_called = JvmtiThreadState::class_to_verify_considering_redefinition(k_called, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
-  constantPoolOop cp_called = instanceKlass::cast(k_called)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
+  ConstantPool* cp_called = InstanceKlass::cast(k_called)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Fieldref: {
       Symbol* name      = cp->uncached_name_ref_at(cp_index);
@@ -2426,20 +2423,20 @@
 
 JVM_QUICK_ENTRY(jint, JVM_GetCPMethodModifiers(JNIEnv *env, jclass cls, int cp_index, jclass called_cls))
   JVMWrapper("JVM_GetCPMethodModifiers");
-  klassOop k = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(cls));
-  klassOop k_called = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(called_cls));
+  Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
+  Klass* k_called = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(called_cls));
   k        = JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
   k_called = JvmtiThreadState::class_to_verify_considering_redefinition(k_called, thread);
-  constantPoolOop cp = instanceKlass::cast(k)->constants();
+  ConstantPool* cp = InstanceKlass::cast(k)->constants();
   switch (cp->tag_at(cp_index).value()) {
     case JVM_CONSTANT_Methodref:
     case JVM_CONSTANT_InterfaceMethodref: {
       Symbol* name      = cp->uncached_name_ref_at(cp_index);
       Symbol* signature = cp->uncached_signature_ref_at(cp_index);
-      objArrayOop methods = instanceKlass::cast(k_called)->methods();
+      Array<Method*>* methods = InstanceKlass::cast(k_called)->methods();
       int methods_count = methods->length();
       for (int i = 0; i < methods_count; i++) {
-        methodOop method = methodOop(methods->obj_at(i));
+        Method* method = methods->at(i);
         if (method->name() == name && method->signature() == signature) {
             return method->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
         }
@@ -2465,8 +2462,8 @@
   JVMWrapper("JVM_IsSameClassPackage");
   oop class1_mirror = JNIHandles::resolve_non_null(class1);
   oop class2_mirror = JNIHandles::resolve_non_null(class2);
-  klassOop klass1 = java_lang_Class::as_klassOop(class1_mirror);
-  klassOop klass2 = java_lang_Class::as_klassOop(class2_mirror);
+  Klass* klass1 = java_lang_Class::as_Klass(class1_mirror);
+  Klass* klass2 = java_lang_Class::as_Klass(class2_mirror);
   return (jboolean) Reflection::is_same_class_package(klass1, klass2);
 JVM_END
 
@@ -3049,10 +3046,10 @@
     bool trusted = is_trusted_frame(thread, &vfst);
     if (trusted) return NULL;
 
-    methodOop m = vfst.method();
+    Method* m = vfst.method();
     if (!m->is_native()) {
-      klassOop holder = m->method_holder();
-      oop      loader = instanceKlass::cast(holder)->class_loader();
+      Klass* holder = m->method_holder();
+      oop      loader = InstanceKlass::cast(holder)->class_loader();
       if (loader != NULL && !java_lang_ClassLoader::is_trusted_loader(loader)) {
         return (jclass) JNIHandles::make_local(env, Klass::cast(holder)->java_mirror());
       }
@@ -3072,11 +3069,11 @@
     bool trusted = is_trusted_frame(thread, &vfst);
     if (trusted) return NULL;
 
-    methodOop m = vfst.method();
+    Method* m = vfst.method();
     if (!m->is_native()) {
-      klassOop holder = m->method_holder();
+      Klass* holder = m->method_holder();
       assert(holder->is_klass(), "just checking");
-      oop loader = instanceKlass::cast(holder)->class_loader();
+      oop loader = InstanceKlass::cast(holder)->class_loader();
       if (loader != NULL && !java_lang_ClassLoader::is_trusted_loader(loader)) {
         return JNIHandles::make_local(env, loader);
       }
@@ -3108,7 +3105,7 @@
   for(vframeStream vfst(thread); !vfst.at_end(); vfst.security_get_caller_frame(1)) {
     // Native frames are not returned
     if (!vfst.method()->is_native()) {
-      klassOop holder = vfst.method()->method_holder();
+      Klass* holder = vfst.method()->method_holder();
       assert(holder->is_klass(), "just checking");
       depth++;
       KlassLink* l = new KlassLink(KlassHandle(thread, holder));
@@ -3151,9 +3148,9 @@
 
   for(vframeStream vfst(thread); !vfst.at_end(); vfst.next()) {
     if (!vfst.method()->is_native()) {
-      klassOop holder = vfst.method()->method_holder();
+      Klass* holder = vfst.method()->method_holder();
       assert(holder->is_klass(), "just checking");
-      if (instanceKlass::cast(holder)->name() == class_name_sym) {
+      if (InstanceKlass::cast(holder)->name() == class_name_sym) {
         return depth;
       }
       depth++;
@@ -3172,11 +3169,11 @@
     bool trusted = is_trusted_frame(thread, &vfst);
     if (trusted) return -1;
 
-    methodOop m = vfst.method();
+    Method* m = vfst.method();
     if (!m->is_native()) {
-      klassOop holder = m->method_holder();
+      Klass* holder = m->method_holder();
       assert(holder->is_klass(), "just checking");
-      oop loader = instanceKlass::cast(holder)->class_loader();
+      oop loader = InstanceKlass::cast(holder)->class_loader();
       if (loader != NULL && !java_lang_ClassLoader::is_trusted_loader(loader)) {
         return depth;
       }
@@ -3210,7 +3207,7 @@
 
 // ObjectInputStream ///////////////////////////////////////////////////////////////
 
-bool force_verify_field_access(klassOop current_class, klassOop field_class, AccessFlags access, bool classloader_only) {
+bool force_verify_field_access(Klass* current_class, Klass* field_class, AccessFlags access, bool classloader_only) {
   if (current_class == NULL) {
     return true;
   }
@@ -3225,7 +3222,7 @@
     }
   }
 
-  return (!access.is_private() && instanceKlass::cast(current_class)->is_same_class_package(field_class));
+  return (!access.is_private() && InstanceKlass::cast(current_class)->is_same_class_package(field_class));
 }
 
 
@@ -3244,14 +3241,14 @@
   }
 
   // Arrays not allowed here, must use JVM_AllocateNewArray
-  if (Klass::cast(java_lang_Class::as_klassOop(curr_mirror))->oop_is_javaArray() ||
-      Klass::cast(java_lang_Class::as_klassOop(init_mirror))->oop_is_javaArray()) {
+  if (Klass::cast(java_lang_Class::as_Klass(curr_mirror))->oop_is_array() ||
+      Klass::cast(java_lang_Class::as_Klass(init_mirror))->oop_is_array()) {
     ResourceMark rm(THREAD);
     THROW_0(vmSymbols::java_lang_InvalidClassException());
   }
 
-  instanceKlassHandle curr_klass (THREAD, java_lang_Class::as_klassOop(curr_mirror));
-  instanceKlassHandle init_klass (THREAD, java_lang_Class::as_klassOop(init_mirror));
+  instanceKlassHandle curr_klass (THREAD, java_lang_Class::as_Klass(curr_mirror));
+  instanceKlassHandle init_klass (THREAD, java_lang_Class::as_Klass(init_mirror));
 
   assert(curr_klass->is_subclass_of(init_klass()), "just checking");
 
@@ -3267,7 +3264,7 @@
   if (m.is_null()) {
     ResourceMark rm(THREAD);
     THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(),
-                methodOopDesc::name_and_sig_as_C_string(Klass::cast(init_klass()),
+                Method::name_and_sig_as_C_string(Klass::cast(init_klass()),
                                           vmSymbols::object_initializer_name(),
                                           vmSymbols::void_method_signature()));
   }
@@ -3300,15 +3297,15 @@
   if (java_lang_Class::is_primitive(mirror)) {
     THROW_0(vmSymbols::java_lang_InvalidClassException());
   }
-  klassOop k = java_lang_Class::as_klassOop(mirror);
+  Klass* k = java_lang_Class::as_Klass(mirror);
   oop result;
 
-  if (k->klass_part()->oop_is_typeArray()) {
+  if (k->oop_is_typeArray()) {
     // typeArray
     result = typeArrayKlass::cast(k)->allocate(length, CHECK_NULL);
-  } else if (k->klass_part()->oop_is_objArray()) {
+  } else if (k->oop_is_objArray()) {
     // objArray
-    objArrayKlassHandle oak(THREAD, k);
+    objArrayKlass* oak = objArrayKlass::cast(k);
     oak->initialize(CHECK_NULL); // make sure class is initialized (matches Classic VM behavior)
     result = oak->allocate(length, CHECK_NULL);
   } else {
@@ -3325,8 +3322,8 @@
   for (vframeStream vfst(thread); !vfst.at_end(); vfst.next()) {
     // UseNewReflection
     vfst.skip_reflection_related_frames(); // Only needed for 1.4 reflection
-    klassOop holder = vfst.method()->method_holder();
-    oop loader = instanceKlass::cast(holder)->class_loader();
+    Klass* holder = vfst.method()->method_holder();
+    oop loader = InstanceKlass::cast(holder)->class_loader();
     if (loader != NULL) {
       return JNIHandles::make_local(env, loader);
     }
@@ -3368,22 +3365,22 @@
          !vfst.at_end() && loader == NULL;
          vfst.next()) {
       if (!vfst.method()->is_native()) {
-        klassOop holder = vfst.method()->method_holder();
-        loader             = instanceKlass::cast(holder)->class_loader();
-        protection_domain  = instanceKlass::cast(holder)->protection_domain();
+        Klass* holder = vfst.method()->method_holder();
+        loader             = InstanceKlass::cast(holder)->class_loader();
+        protection_domain  = InstanceKlass::cast(holder)->protection_domain();
       }
     }
   } else {
-    klassOop curr_klass_oop = java_lang_Class::as_klassOop(curr_klass());
-    loader            = instanceKlass::cast(curr_klass_oop)->class_loader();
-    protection_domain = instanceKlass::cast(curr_klass_oop)->protection_domain();
+    Klass* curr_klass_oop = java_lang_Class::as_Klass(curr_klass());
+    loader            = InstanceKlass::cast(curr_klass_oop)->class_loader();
+    protection_domain = InstanceKlass::cast(curr_klass_oop)->protection_domain();
   }
   Handle h_loader(THREAD, loader);
   Handle h_prot  (THREAD, protection_domain);
   jclass result =  find_class_from_class_loader(env, name, true, h_loader, h_prot,
                                                 false, thread);
   if (TraceClassResolution && result != NULL) {
-    trace_class_resolution(java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(result)));
+    trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result)));
   }
   return result;
 JVM_END
@@ -3398,7 +3395,7 @@
     THROW_0(vmSymbols::java_lang_NullPointerException());
   }
   oop a = JNIHandles::resolve_non_null(arr);
-  if (!a->is_javaArray() || (type_array_only && !a->is_typeArray())) {
+  if (!a->is_array() || (type_array_only && !a->is_typeArray())) {
     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Argument is not an array");
   }
   return arrayOop(a);
@@ -4019,7 +4016,7 @@
   // Security Note:
   //   The Java level wrapper will perform the necessary security check allowing
   //   us to pass the NULL as the initiating class loader.
-  klassOop klass = SystemDictionary::resolve_or_fail(name, loader, protection_domain, throwError != 0, CHECK_NULL);
+  Klass* klass = SystemDictionary::resolve_or_fail(name, loader, protection_domain, throwError != 0, CHECK_NULL);
 
   KlassHandle klass_handle(THREAD, klass);
   // Check if we should initialize the class
@@ -4196,7 +4193,7 @@
   }
 
   // check if threads is not an array of objects of Thread class
-  klassOop k = objArrayKlass::cast(ah->klass())->element_klass();
+  Klass* k = objArrayKlass::cast(ah->klass())->element_klass();
   if (k != SystemDictionary::Thread_klass()) {
     THROW_(vmSymbols::java_lang_IllegalArgumentException(), 0);
   }
@@ -4248,7 +4245,7 @@
   if (java_lang_Class::is_primitive(mirror())) {
     return NULL;
   }
-  klassOop k = java_lang_Class::as_klassOop(mirror());
+  Klass* k = java_lang_Class::as_Klass(mirror());
   if (!Klass::cast(k)->oop_is_instance()) {
     return NULL;
   }
@@ -4259,7 +4256,7 @@
   }
   objArrayOop dest_o = oopFactory::new_objArray(SystemDictionary::Object_klass(), 3, CHECK_NULL);
   objArrayHandle dest(THREAD, dest_o);
-  klassOop enc_k = ik_h->constants()->klass_at(encl_method_class_idx, CHECK_NULL);
+  Klass* enc_k = ik_h->constants()->klass_at(encl_method_class_idx, CHECK_NULL);
   dest->obj_at_put(0, Klass::cast(enc_k)->java_mirror());
   int encl_method_method_idx = ik_h->enclosing_method_method_index();
   if (encl_method_method_idx != 0) {
--- a/src/share/vm/prims/jvm.h	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvm.h	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -550,46 +550,46 @@
 JVM_GetClassConstantPool(JNIEnv *env, jclass cls);
 
 JNIEXPORT jint JNICALL JVM_ConstantPoolGetSize
-(JNIEnv *env, jobject unused, jobject jcpool);
+(JNIEnv *env, jobject obj, jobject unused);
 
 JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jclass JNICALL JVM_ConstantPoolGetClassAtIfLoaded
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetMethodAtIfLoaded
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jobject JNICALL JVM_ConstantPoolGetFieldAtIfLoaded
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jobjectArray JNICALL JVM_ConstantPoolGetMemberRefInfoAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jint JNICALL JVM_ConstantPoolGetIntAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jlong JNICALL JVM_ConstantPoolGetLongAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jfloat JNICALL JVM_ConstantPoolGetFloatAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jdouble JNICALL JVM_ConstantPoolGetDoubleAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jstring JNICALL JVM_ConstantPoolGetStringAt
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 JNIEXPORT jstring JNICALL JVM_ConstantPoolGetUTF8At
-(JNIEnv *env, jobject unused, jobject jcpool, jint index);
+(JNIEnv *env, jobject obj, jobject unused, jint index);
 
 /*
  * java.security.*
--- a/src/share/vm/prims/jvm_misc.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvm_misc.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -33,7 +33,7 @@
 
 jclass find_class_from_class_loader(JNIEnv* env, Symbol* name, jboolean init, Handle loader, Handle protection_domain, jboolean throwError, TRAPS);
 
-void trace_class_resolution(klassOop to_class);
+void trace_class_resolution(Klass* to_class);
 
 /*
  * Support for Serialization and RMI. Currently used by HotSpot only.
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -45,7 +45,7 @@
 #endif
 // FIXME: add Deprecated, LVTT attributes
 // FIXME: fix Synthetic attribute
-// FIXME: per Serguei, add error return handling for constantPoolOopDesc::copy_cpool_bytes()
+// FIXME: per Serguei, add error return handling for ConstantPool::copy_cpool_bytes()
 
 
 // Write the field information portion of ClassFile structure
@@ -53,7 +53,7 @@
 // JVMSpec|     field_info fields[fields_count];
 void JvmtiClassFileReconstituter::write_field_infos() {
   HandleMark hm(thread());
-  objArrayHandle fields_anno(thread(), ikh()->fields_annotations());
+  Array<AnnotationArray*>* fields_anno = ikh()->fields_annotations();
 
   // Compute the real number of Java fields
   int java_fields = ikh()->java_fields_count();
@@ -67,9 +67,7 @@
     guarantee(name_index != 0 && signature_index != 0, "bad constant pool index for field");
     // int offset = ikh()->field_offset( index );
     int generic_signature_index = fs.generic_signature_index();
-    typeArrayHandle anno(thread(), fields_anno.not_null() ?
-                                 (typeArrayOop)(fields_anno->obj_at(fs.index())) :
-                                 (typeArrayOop)NULL);
+    AnnotationArray* anno = fields_anno == NULL ? NULL : fields_anno->at(fs.index());
 
     // JVMSpec|   field_info {
     // JVMSpec|         u2 access_flags;
@@ -92,7 +90,7 @@
     if (generic_signature_index != 0) {
       ++attr_count;
     }
-    if (anno.not_null()) {
+    if (anno != NULL) {
       ++attr_count;     // has RuntimeVisibleAnnotations attribute
     }
 
@@ -109,7 +107,7 @@
     if (generic_signature_index != 0) {
       write_signature_attribute(generic_signature_index);
     }
-    if (anno.not_null()) {
+    if (anno != NULL) {
       write_annotations_attribute("RuntimeVisibleAnnotations", anno);
     }
   }
@@ -133,7 +131,7 @@
 // JVMSpec|     attribute_info attributes[attributes_count];
 // JVMSpec|   }
 void JvmtiClassFileReconstituter::write_code_attribute(methodHandle method) {
-  constMethodHandle const_method(thread(), method->constMethod());
+  ConstMethod* const_method = method->constMethod();
   u2 line_num_cnt = 0;
   int stackmap_len = 0;
   int local_variable_table_length = 0;
@@ -234,7 +232,7 @@
 // JVMSpec|     u2 number_of_exceptions;
 // JVMSpec|     u2 exception_index_table[number_of_exceptions];
 // JVMSpec|   }
-void JvmtiClassFileReconstituter::write_exceptions_attribute(constMethodHandle const_method) {
+void JvmtiClassFileReconstituter::write_exceptions_attribute(ConstMethod* const_method) {
   CheckedExceptionElement* checked_exceptions = const_method->checked_exceptions_start();
   int checked_exceptions_length = const_method->checked_exceptions_length();
   int size =
@@ -307,11 +305,11 @@
 // JSR202|     ...
 // JSR202|   }
 void JvmtiClassFileReconstituter::write_annotations_attribute(const char* attr_name,
-                                                              typeArrayHandle annos) {
+                                                              AnnotationArray* annos) {
   u4 length = annos->length();
   write_attribute_name_index(attr_name);
   write_u4(length);
-  memcpy(writeable_address(length), annos->byte_at_addr(0), length);
+  memcpy(writeable_address(length), annos->adr_at(0), length);
 }
 
 
@@ -330,7 +328,7 @@
   InnerClassesIterator iter(ikh());
   guarantee(iter.length() != 0 && iter.length() == length,
             "caller must check");
-  u2 entry_count = length / instanceKlass::inner_class_next_offset;
+  u2 entry_count = length / InstanceKlass::inner_class_next_offset;
   u4 size = 2 + entry_count * (2+2+2+2);
 
   write_attribute_name_index("InnerClasses");
@@ -433,7 +431,7 @@
   write_u4(stackmap_len);
   memcpy(
     writeable_address(stackmap_len),
-    (void*)(method->stackmap_data()->byte_at_addr(0)),
+    (void*)(method->stackmap_data()->adr_at(0)),
     stackmap_len);
 }
 
@@ -447,11 +445,11 @@
 // JVMSpec|   }
 void JvmtiClassFileReconstituter::write_method_info(methodHandle method) {
   AccessFlags access_flags = method->access_flags();
-  constMethodHandle const_method(thread(), method->constMethod());
+  ConstMethod* const_method = method->constMethod();
   u2 generic_signature_index = const_method->generic_signature_index();
-  typeArrayHandle anno(thread(), method->annotations());
-  typeArrayHandle param_anno(thread(), method->parameter_annotations());
-  typeArrayHandle default_anno(thread(), method->annotation_default());
+  AnnotationArray* anno = method->annotations();
+  AnnotationArray* param_anno = method->parameter_annotations();
+  AnnotationArray* default_anno = method->annotation_default();
 
   write_u2(access_flags.get_flags() & JVM_RECOGNIZED_METHOD_MODIFIERS);
   write_u2(const_method->name_index());
@@ -466,7 +464,7 @@
   if (const_method->has_checked_exceptions()) {
     ++attr_count;     // has Exceptions attribute
   }
-  if (default_anno.not_null()) {
+  if (default_anno != NULL) {
     ++attr_count;     // has AnnotationDefault attribute
   }
   // Deprecated attribute would go here
@@ -476,10 +474,10 @@
   if (generic_signature_index != 0) {
     ++attr_count;
   }
-  if (anno.not_null()) {
+  if (anno != NULL) {
     ++attr_count;     // has RuntimeVisibleAnnotations attribute
   }
-  if (param_anno.not_null()) {
+  if (param_anno != NULL) {
     ++attr_count;     // has RuntimeVisibleParameterAnnotations attribute
   }
 
@@ -490,7 +488,7 @@
   if (const_method->has_checked_exceptions()) {
     write_exceptions_attribute(const_method);
   }
-  if (default_anno.not_null()) {
+  if (default_anno != NULL) {
     write_annotations_attribute("AnnotationDefault", default_anno);
   }
   // Deprecated attribute would go here
@@ -500,10 +498,10 @@
   if (generic_signature_index != 0) {
     write_signature_attribute(generic_signature_index);
   }
-  if (anno.not_null()) {
+  if (anno != NULL) {
     write_annotations_attribute("RuntimeVisibleAnnotations", anno);
   }
-  if (param_anno.not_null()) {
+  if (param_anno != NULL) {
     write_annotations_attribute("RuntimeVisibleParameterAnnotations", param_anno);
   }
 }
@@ -514,7 +512,7 @@
 void JvmtiClassFileReconstituter::write_class_attributes() {
   u2 inner_classes_length = inner_classes_attribute_length();
   Symbol* generic_signature = ikh()->generic_signature();
-  typeArrayHandle anno(thread(), ikh()->class_annotations());
+  AnnotationArray* anno = ikh()->class_annotations();
 
   int attr_count = 0;
   if (generic_signature != NULL) {
@@ -529,7 +527,7 @@
   if (inner_classes_length > 0) {
     ++attr_count;
   }
-  if (anno.not_null()) {
+  if (anno != NULL) {
     ++attr_count;     // has RuntimeVisibleAnnotations attribute
   }
 
@@ -547,7 +545,7 @@
   if (inner_classes_length > 0) {
     write_inner_classes_attribute(inner_classes_length);
   }
-  if (anno.not_null()) {
+  if (anno != NULL) {
     write_annotations_attribute("RuntimeVisibleAnnotations", anno);
   }
 }
@@ -557,33 +555,33 @@
 // JVMSpec|     method_info methods[methods_count];
 void JvmtiClassFileReconstituter::write_method_infos() {
   HandleMark hm(thread());
-  objArrayHandle methods(thread(), ikh()->methods());
+  Array<Method*>* methods = ikh()->methods();
   int num_methods = methods->length();
 
   write_u2(num_methods);
   if (JvmtiExport::can_maintain_original_method_order()) {
     int index;
     int original_index;
-    int* method_order = NEW_RESOURCE_ARRAY(int, num_methods);
+    intArray method_order(num_methods, 0);
 
     // invert the method order mapping
     for (index = 0; index < num_methods; index++) {
-      original_index = ikh()->method_ordering()->int_at(index);
+      original_index = ikh()->method_ordering()->at(index);
       assert(original_index >= 0 && original_index < num_methods,
              "invalid original method index");
-      method_order[original_index] = index;
+      method_order.at_put(original_index, index);
     }
 
     // write in original order
     for (original_index = 0; original_index < num_methods; original_index++) {
-      index = method_order[original_index];
-      methodHandle method(thread(), (methodOop)(ikh()->methods()->obj_at(index)));
+      index = method_order.at(original_index);
+      methodHandle method(thread(), methods->at(index));
       write_method_info(method);
     }
   } else {
     // method order not preserved just dump the method infos
     for (int index = 0; index < num_methods; index++) {
-      methodHandle method(thread(), (methodOop)(ikh()->methods()->obj_at(index)));
+      methodHandle method(thread(), methods->at(index));
       write_method_info(method);
     }
   }
@@ -613,18 +611,18 @@
   // JVMSpec|           u2 this_class;
   // JVMSpec|           u2 super_class;
   write_u2(class_symbol_to_cpool_index(ikh()->name()));
-  klassOop super_class = ikh()->super();
+  Klass* super_class = ikh()->super();
   write_u2(super_class == NULL? 0 :  // zero for java.lang.Object
-                class_symbol_to_cpool_index(super_class->klass_part()->name()));
+                class_symbol_to_cpool_index(super_class->name()));
 
   // JVMSpec|           u2 interfaces_count;
   // JVMSpec|           u2 interfaces[interfaces_count];
-  objArrayHandle interfaces(thread(), ikh()->local_interfaces());
+  Array<Klass*>* interfaces =  ikh()->local_interfaces();
   int num_interfaces = interfaces->length();
   write_u2(num_interfaces);
   for (int index = 0; index < num_interfaces; index++) {
     HandleMark hm(thread());
-    instanceKlassHandle iikh(thread(), klassOop(interfaces->obj_at(index)));
+    instanceKlassHandle iikh(thread(), interfaces->at(index));
     write_u2(class_symbol_to_cpool_index(iikh->name()));
   }
 
@@ -693,7 +691,7 @@
 
   unsigned char* p = bytecodes;
   Bytecodes::Code code;
-  bool is_rewritten = instanceKlass::cast(mh->method_holder())->is_rewritten();
+  bool is_rewritten = InstanceKlass::cast(mh->method_holder())->is_rewritten();
 
   while ((code = bs.next()) >= 0) {
     assert(Bytecodes::is_java_code(code), "sanity check");
@@ -713,7 +711,8 @@
     // During linking the get/put and invoke instructions are rewritten
     // with an index into the constant pool cache. The original constant
     // pool index must be returned to caller.  Rewrite the index.
-    if (is_rewritten && len >= 3) {
+    if (is_rewritten && len > 1) {
+      bool is_wide = false;
       switch (code) {
       case Bytecodes::_getstatic       :  // fall through
       case Bytecodes::_putstatic       :  // fall through
@@ -723,7 +722,7 @@
       case Bytecodes::_invokespecial   :  // fall through
       case Bytecodes::_invokestatic    :  // fall through
       case Bytecodes::_invokedynamic   :  // fall through
-      case Bytecodes::_invokeinterface :
+      case Bytecodes::_invokeinterface : {
         assert(len == 3 ||
                (code == Bytecodes::_invokeinterface && len == 5) ||
                (code == Bytecodes::_invokedynamic   && len == 5),
@@ -731,17 +730,36 @@
 
         int cpci = Bytes::get_native_u2(bcp+1);
         bool is_invokedynamic = (EnableInvokeDynamic && code == Bytecodes::_invokedynamic);
-        if (is_invokedynamic)
+        ConstantPoolCacheEntry* entry;
+        if (is_invokedynamic) {
           cpci = Bytes::get_native_u4(bcp+1);
+          entry = mh->constants()->invokedynamic_cp_cache_entry_at(cpci);
+        } else {
         // cache cannot be pre-fetched since some classes won't have it yet
-        ConstantPoolCacheEntry* entry =
-          mh->constants()->cache()->main_entry_at(cpci);
+          entry = mh->constants()->cache()->entry_at(cpci);
+        }
         int i = entry->constant_pool_index();
         assert(i < mh->constants()->length(), "sanity check");
         Bytes::put_Java_u2((address)(p+1), (u2)i);     // java byte ordering
         if (is_invokedynamic)  *(p+3) = *(p+4) = 0;
         break;
       }
+      case Bytecodes::_ldc_w:
+        is_wide = true; // fall through
+      case Bytecodes::_ldc: {
+        if (bs.raw_code() == Bytecodes::_fast_aldc || bs.raw_code() == Bytecodes::_fast_aldc_w) {
+          int cpci = is_wide ? Bytes::get_native_u2(bcp+1) : (u1)(*(bcp+1));
+          int i = mh->constants()->object_to_cp_index(cpci);
+          assert(i < mh->constants()->length(), "sanity check");
+          if (is_wide) {
+            Bytes::put_Java_u2((address)(p+1), (u2)i);     // java byte ordering
+          } else {
+            *(p+1) = (u1)i;
+          }
+        }
+        break;
+        }
+      }
     }
 
     p += len;
--- a/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiClassFileReconstituter.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -112,7 +112,7 @@
   void write_method_infos();
   void write_method_info(methodHandle method);
   void write_code_attribute(methodHandle method);
-  void write_exceptions_attribute(constMethodHandle const_method);
+  void write_exceptions_attribute(ConstMethod* const_method);
   void write_synthetic_attribute();
   void write_class_attributes();
   void write_source_file_attribute();
@@ -125,7 +125,7 @@
   void write_inner_classes_attribute(int length);
   void write_signature_attribute(u2 generic_signaure_index);
   void write_attribute_name_index(const char* name);
-  void write_annotations_attribute(const char* attr_name, typeArrayHandle annos);
+  void write_annotations_attribute(const char* attr_name, AnnotationArray* annos);
 
   address writeable_address(size_t size);
   void write_u1(u1 x);
--- a/src/share/vm/prims/jvmtiEnter.xsl	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnter.xsl	Fri Sep 14 21:50:58 2012 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!--
- Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -880,12 +880,12 @@
     </xsl:apply-templates>
     <xsl:text>
   }
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   if (k_oop == NULL) {
 </xsl:text>
     <xsl:apply-templates select=".." mode="traceError">     
       <xsl:with-param name="err">JVMTI_ERROR_INVALID_CLASS</xsl:with-param>
-      <xsl:with-param name="comment"> - no klassOop - jclass = 0x%x</xsl:with-param>
+      <xsl:with-param name="comment"> - no Klass* - jclass = 0x%x</xsl:with-param>
       <xsl:with-param name="extraValue">, <xsl:value-of select="$name"/></xsl:with-param>
     </xsl:apply-templates>
     <xsl:text>
@@ -898,7 +898,7 @@
 
 <xsl:template match="jmethodID" mode="dochecks">
   <xsl:param name="name"/>
-  <xsl:text>  methodOop method_oop = JNIHandles::checked_resolve_jmethod_id(</xsl:text>
+  <xsl:text>  Method* method_oop = Method::checked_resolve_jmethod_id(</xsl:text>
   <xsl:value-of select="$name"/>
   <xsl:text>);&#xA;</xsl:text>
   <xsl:text>  if (method_oop == NULL) {&#xA;</xsl:text>
--- a/src/share/vm/prims/jvmtiEnv.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnv.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,7 +30,6 @@
 #include "jvmtifiles/jvmtiEnv.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/cpCacheOop.hpp"
 #include "oops/instanceKlass.hpp"
 #include "prims/jniCheck.hpp"
 #include "prims/jvm_misc.hpp"
@@ -254,7 +253,7 @@
       return JVMTI_ERROR_UNMODIFIABLE_CLASS;
     }
 
-    klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
     KlassHandle klass(current_thread, k_oop);
 
     jint status = klass->jvmti_class_status();
@@ -269,10 +268,10 @@
     if (ikh->get_cached_class_file_bytes() == NULL) {
       // Not cached, we need to reconstitute the class file from the
       // VM representation. We don't attach the reconstituted class
-      // bytes to the instanceKlass here because they have not been
+      // bytes to the InstanceKlass here because they have not been
       // validated and we're not at a safepoint.
       constantPoolHandle  constants(current_thread, ikh->constants());
-      ObjectLocker ol(constants, current_thread);    // lock constant pool while we query it
+      MonitorLockerEx ml(constants->lock());    // lock constant pool while we query it
 
       JvmtiClassFileReconstituter reconstituter(ikh);
       if (reconstituter.get_error() != JVMTI_ERROR_NONE) {
@@ -316,14 +315,14 @@
   oop mirror = JNIHandles::resolve_external_guard(object);
   NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT);
 
-  if (mirror->klass() == SystemDictionary::Class_klass()) {
-    if (!java_lang_Class::is_primitive(mirror)) {
-        mirror = java_lang_Class::as_klassOop(mirror);
-        assert(mirror != NULL, "class for non-primitive mirror must exist");
+  if (mirror->klass() == SystemDictionary::Class_klass() &&
+      !java_lang_Class::is_primitive(mirror)) {
+    Klass* k = java_lang_Class::as_Klass(mirror);
+    assert(k != NULL, "class for non-primitive mirror must exist");
+    *size_ptr = k->size() * wordSize;
+  } else {
+    *size_ptr = mirror->size() * wordSize;
     }
-  }
-
-  *size_ptr = mirror->size() * wordSize;
   return JVMTI_ERROR_NONE;
 } /* end GetObjectSize */
 
@@ -552,7 +551,7 @@
                               path,
                               THREAD);
       if (HAS_PENDING_EXCEPTION) {
-        Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+        Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
         CLEAR_PENDING_EXCEPTION;
 
         if (ex_name == vmSymbols::java_lang_NoSuchMethodError()) {
@@ -1620,7 +1619,7 @@
 jvmtiError
 JvmtiEnv::FollowReferences(jint heap_filter, jclass klass, jobject initial_object, const jvmtiHeapCallbacks* callbacks, const void* user_data) {
   // check klass if provided
-  klassOop k_oop = NULL;
+  Klass* k_oop = NULL;
   if (klass != NULL) {
     oop k_mirror = JNIHandles::resolve_external_guard(klass);
     if (k_mirror == NULL) {
@@ -1629,7 +1628,7 @@
     if (java_lang_Class::is_primitive(k_mirror)) {
       return JVMTI_ERROR_NONE;
     }
-    k_oop = java_lang_Class::as_klassOop(k_mirror);
+    k_oop = java_lang_Class::as_Klass(k_mirror);
     if (k_oop == NULL) {
       return JVMTI_ERROR_INVALID_CLASS;
     }
@@ -1651,7 +1650,7 @@
 jvmtiError
 JvmtiEnv::IterateThroughHeap(jint heap_filter, jclass klass, const jvmtiHeapCallbacks* callbacks, const void* user_data) {
   // check klass if provided
-  klassOop k_oop = NULL;
+  Klass* k_oop = NULL;
   if (klass != NULL) {
     oop k_mirror = JNIHandles::resolve_external_guard(klass);
     if (k_mirror == NULL) {
@@ -1660,7 +1659,7 @@
     if (java_lang_Class::is_primitive(k_mirror)) {
       return JVMTI_ERROR_NONE;
     }
-    k_oop = java_lang_Class::as_klassOop(k_mirror);
+    k_oop = java_lang_Class::as_Klass(k_mirror);
     if (k_oop == NULL) {
       return JVMTI_ERROR_INVALID_CLASS;
     }
@@ -1762,7 +1761,7 @@
     // DO PRIMITIVE CLASS PROCESSING
     return JVMTI_ERROR_NONE;
   }
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   if (k_oop == NULL) {
     return JVMTI_ERROR_INVALID_CLASS;
   }
@@ -1989,7 +1988,7 @@
 
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 jvmtiError
-JvmtiEnv::SetBreakpoint(methodOop method_oop, jlocation location) {
+JvmtiEnv::SetBreakpoint(Method* method_oop, jlocation location) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   if (location < 0) {   // simple invalid location check first
     return JVMTI_ERROR_INVALID_LOCATION;
@@ -2015,7 +2014,7 @@
 
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 jvmtiError
-JvmtiEnv::ClearBreakpoint(methodOop method_oop, jlocation location) {
+JvmtiEnv::ClearBreakpoint(Method* method_oop, jlocation location) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
 
   if (location < 0) {   // simple invalid location check first
@@ -2104,9 +2103,9 @@
 JvmtiEnv::GetClassSignature(oop k_mirror, char** signature_ptr, char** generic_ptr) {
   ResourceMark rm;
   bool isPrimitive = java_lang_Class::is_primitive(k_mirror);
-  klassOop k = NULL;
+  Klass* k = NULL;
   if (!isPrimitive) {
-    k = java_lang_Class::as_klassOop(k_mirror);
+    k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
   }
   if (signature_ptr != NULL) {
@@ -2126,7 +2125,7 @@
   if (generic_ptr != NULL) {
     *generic_ptr = NULL;
     if (!isPrimitive && Klass::cast(k)->oop_is_instance()) {
-      Symbol* soo = instanceKlass::cast(k)->generic_signature();
+      Symbol* soo = InstanceKlass::cast(k)->generic_signature();
       if (soo != NULL) {
         const char *gen_sig = soo->as_C_string();
         if (gen_sig != NULL) {
@@ -2154,7 +2153,7 @@
   if (java_lang_Class::is_primitive(k_mirror)) {
     result |= JVMTI_CLASS_STATUS_PRIMITIVE;
   } else {
-    klassOop k = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
     result = Klass::cast(k)->jvmti_class_status();
   }
@@ -2171,14 +2170,14 @@
   if (java_lang_Class::is_primitive(k_mirror)) {
      return JVMTI_ERROR_ABSENT_INFORMATION;
   }
-  klassOop k_klass = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_klass = java_lang_Class::as_Klass(k_mirror);
   NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS);
 
   if (!Klass::cast(k_klass)->oop_is_instance()) {
     return JVMTI_ERROR_ABSENT_INFORMATION;
   }
 
-  Symbol* sfnOop = instanceKlass::cast(k_klass)->source_file_name();
+  Symbol* sfnOop = InstanceKlass::cast(k_klass)->source_file_name();
   NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION);
   {
     JavaThread* current_thread  = JavaThread::current();
@@ -2199,9 +2198,8 @@
   JavaThread* current_thread  = JavaThread::current();
   jint result = 0;
   if (!java_lang_Class::is_primitive(k_mirror)) {
-    klassOop k = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
-    assert((Klass::cast(k)->oop_is_instance() || Klass::cast(k)->oop_is_array()), "should be an instance or an array klass");
     result = Klass::cast(k)->compute_modifier_flags(current_thread);
     JavaThread* THREAD = current_thread; // pass to macros
     if (HAS_PENDING_EXCEPTION) {
@@ -2235,7 +2233,7 @@
     *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID));
     return JVMTI_ERROR_NONE;
   }
-  klassOop k = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k = java_lang_Class::as_Klass(k_mirror);
   NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
 
   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
@@ -2257,8 +2255,8 @@
     // Use the original method ordering indices stored in the class, so we can emit
     // jmethodIDs in the order they appeared in the class file
     for (index = 0; index < result_length; index++) {
-      methodOop m = methodOop(instanceK_h->methods()->obj_at(index));
-      int original_index = instanceK_h->method_ordering()->int_at(index);
+      Method* m = instanceK_h->methods()->at(index);
+      int original_index = instanceK_h->method_ordering()->at(index);
       assert(original_index >= 0 && original_index < result_length, "invalid original method index");
       jmethodID id = m->jmethod_id();
       result_list[original_index] = id;
@@ -2266,7 +2264,7 @@
   } else {
     // otherwise just copy in any order
     for (index = 0; index < result_length; index++) {
-      methodOop m = methodOop(instanceK_h->methods()->obj_at(index));
+      Method* m = instanceK_h->methods()->at(index);
       jmethodID id = m->jmethod_id();
       result_list[index] = id;
     }
@@ -2291,7 +2289,7 @@
   }
   JavaThread* current_thread = JavaThread::current();
   HandleMark hm(current_thread);
-  klassOop k = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k = java_lang_Class::as_Klass(k_mirror);
   NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
 
   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
@@ -2346,7 +2344,7 @@
     }
     JavaThread* current_thread = JavaThread::current();
     HandleMark hm(current_thread);
-    klassOop k = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
 
     // Return CLASS_NOT_PREPARED error as per JVMTI spec.
@@ -2359,15 +2357,14 @@
       return JVMTI_ERROR_NONE;
     }
 
-    objArrayHandle interface_list(current_thread, instanceKlass::cast(k)->local_interfaces());
-    const int result_length = (interface_list.is_null() ? 0 : interface_list->length());
+    Array<Klass*>* interface_list = InstanceKlass::cast(k)->local_interfaces();
+    const int result_length = (interface_list == NULL ? 0 : interface_list->length());
     jclass* result_list = (jclass*) jvmtiMalloc(result_length * sizeof(jclass));
     for (int i_index = 0; i_index < result_length; i_index += 1) {
-      oop oop_at = interface_list->obj_at(i_index);
-      assert(oop_at->is_klass(), "interfaces must be klassOops");
-      klassOop klassOop_at = klassOop(oop_at);      // ???: is there a better way?
-      assert(Klass::cast(klassOop_at)->is_interface(), "interfaces must be interfaces");
-      oop mirror_at = Klass::cast(klassOop_at)->java_mirror();
+      Klass* klass_at = interface_list->at(i_index);
+      assert(klass_at->is_klass(), "interfaces must be Klass*s");
+      assert(Klass::cast(klass_at)->is_interface(), "interfaces must be interfaces");
+      oop mirror_at = Klass::cast(klass_at)->java_mirror();
       Handle handle_at = Handle(current_thread, mirror_at);
       result_list[i_index] = (jclass) jni_reference(handle_at);
     }
@@ -2387,7 +2384,7 @@
   if (java_lang_Class::is_primitive(k_mirror)) {
     return JVMTI_ERROR_ABSENT_INFORMATION;
   }
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   Thread *thread = Thread::current();
   HandleMark hm(thread);
   KlassHandle klass(thread, k_oop);
@@ -2418,7 +2415,7 @@
     return JVMTI_ERROR_ABSENT_INFORMATION;
   }
 
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   Thread *thread = Thread::current();
   HandleMark hm(thread);
   ResourceMark rm(thread);
@@ -2434,7 +2431,7 @@
 
   instanceKlassHandle ikh(thread, k_oop);
   constantPoolHandle  constants(thread, ikh->constants());
-  ObjectLocker ol(constants, thread);    // lock constant pool while we query it
+  MonitorLockerEx ml(constants->lock());    // lock constant pool while we query it
 
   JvmtiConstantPoolReconstituter reconstituter(ikh);
   if (reconstituter.get_error() != JVMTI_ERROR_NONE) {
@@ -2470,7 +2467,7 @@
   {
     bool result = false;
     if (!java_lang_Class::is_primitive(k_mirror)) {
-      klassOop k = java_lang_Class::as_klassOop(k_mirror);
+      Klass* k = java_lang_Class::as_Klass(k_mirror);
       if (k != NULL && Klass::cast(k)->is_interface()) {
         result = true;
       }
@@ -2489,7 +2486,7 @@
   {
     bool result = false;
     if (!java_lang_Class::is_primitive(k_mirror)) {
-      klassOop k = java_lang_Class::as_klassOop(k_mirror);
+      Klass* k = java_lang_Class::as_Klass(k_mirror);
       if (k != NULL && Klass::cast(k)->oop_is_array()) {
         result = true;
       }
@@ -2512,7 +2509,7 @@
     }
     JavaThread* current_thread = JavaThread::current();
     HandleMark hm(current_thread);
-    klassOop k = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
 
     oop result_oop = Klass::cast(k)->class_loader();
@@ -2536,12 +2533,12 @@
     if (java_lang_Class::is_primitive(k_mirror)) {
       return JVMTI_ERROR_ABSENT_INFORMATION;
     }
-    klassOop k = java_lang_Class::as_klassOop(k_mirror);
+    Klass* k = java_lang_Class::as_Klass(k_mirror);
     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
     if (!Klass::cast(k)->oop_is_instance()) {
       return JVMTI_ERROR_ABSENT_INFORMATION;
     }
-    char* sde = instanceKlass::cast(k)->source_debug_extension();
+    char* sde = InstanceKlass::cast(k)->source_debug_extension();
     NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
 
     {
@@ -2672,7 +2669,7 @@
 // signature_ptr - NULL is a valid value, must be checked
 // generic_ptr - NULL is a valid value, must be checked
 jvmtiError
-JvmtiEnv::GetMethodName(methodOop method_oop, char** name_ptr, char** signature_ptr, char** generic_ptr) {
+JvmtiEnv::GetMethodName(Method* method_oop, char** name_ptr, char** signature_ptr, char** generic_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   JavaThread* current_thread  = JavaThread::current();
 
@@ -2713,7 +2710,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // declaring_class_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetMethodDeclaringClass(methodOop method_oop, jclass* declaring_class_ptr) {
+JvmtiEnv::GetMethodDeclaringClass(Method* method_oop, jclass* declaring_class_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   (*declaring_class_ptr) = get_jni_class_non_null(method_oop->method_holder());
   return JVMTI_ERROR_NONE;
@@ -2723,7 +2720,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // modifiers_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetMethodModifiers(methodOop method_oop, jint* modifiers_ptr) {
+JvmtiEnv::GetMethodModifiers(Method* method_oop, jint* modifiers_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   (*modifiers_ptr) = method_oop->access_flags().as_int() & JVM_RECOGNIZED_METHOD_MODIFIERS;
   return JVMTI_ERROR_NONE;
@@ -2733,7 +2730,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // max_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetMaxLocals(methodOop method_oop, jint* max_ptr) {
+JvmtiEnv::GetMaxLocals(Method* method_oop, jint* max_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   // get max stack
   (*max_ptr) = method_oop->max_locals();
@@ -2744,7 +2741,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // size_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetArgumentsSize(methodOop method_oop, jint* size_ptr) {
+JvmtiEnv::GetArgumentsSize(Method* method_oop, jint* size_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   // get size of arguments
 
@@ -2757,7 +2754,7 @@
 // entry_count_ptr - pre-checked for NULL
 // table_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetLineNumberTable(methodOop method_oop, jint* entry_count_ptr, jvmtiLineNumberEntry** table_ptr) {
+JvmtiEnv::GetLineNumberTable(Method* method_oop, jint* entry_count_ptr, jvmtiLineNumberEntry** table_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   if (!method_oop->has_linenumber_table()) {
     return (JVMTI_ERROR_ABSENT_INFORMATION);
@@ -2799,7 +2796,7 @@
 // start_location_ptr - pre-checked for NULL
 // end_location_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetMethodLocation(methodOop method_oop, jlocation* start_location_ptr, jlocation* end_location_ptr) {
+JvmtiEnv::GetMethodLocation(Method* method_oop, jlocation* start_location_ptr, jlocation* end_location_ptr) {
 
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   // get start and end location
@@ -2819,18 +2816,18 @@
 // entry_count_ptr - pre-checked for NULL
 // table_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetLocalVariableTable(methodOop method_oop, jint* entry_count_ptr, jvmtiLocalVariableEntry** table_ptr) {
+JvmtiEnv::GetLocalVariableTable(Method* method_oop, jint* entry_count_ptr, jvmtiLocalVariableEntry** table_ptr) {
 
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   JavaThread* current_thread  = JavaThread::current();
 
   // does the klass have any local variable information?
-  instanceKlass* ik = instanceKlass::cast(method_oop->method_holder());
+  InstanceKlass* ik = InstanceKlass::cast(method_oop->method_holder());
   if (!ik->access_flags().has_localvariable_table()) {
     return (JVMTI_ERROR_ABSENT_INFORMATION);
   }
 
-  constantPoolOop constants = method_oop->constants();
+  ConstantPool* constants = method_oop->constants();
   NULL_CHECK(constants, JVMTI_ERROR_ABSENT_INFORMATION);
 
   // in the vm localvariable table representation, 6 consecutive elements in the table
@@ -2896,7 +2893,7 @@
 // bytecode_count_ptr - pre-checked for NULL
 // bytecodes_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::GetBytecodes(methodOop method_oop, jint* bytecode_count_ptr, unsigned char** bytecodes_ptr) {
+JvmtiEnv::GetBytecodes(Method* method_oop, jint* bytecode_count_ptr, unsigned char** bytecodes_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
 
   HandleMark hm;
@@ -2918,7 +2915,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // is_native_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::IsMethodNative(methodOop method_oop, jboolean* is_native_ptr) {
+JvmtiEnv::IsMethodNative(Method* method_oop, jboolean* is_native_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   (*is_native_ptr) = method_oop->is_native();
   return JVMTI_ERROR_NONE;
@@ -2928,7 +2925,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // is_synthetic_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::IsMethodSynthetic(methodOop method_oop, jboolean* is_synthetic_ptr) {
+JvmtiEnv::IsMethodSynthetic(Method* method_oop, jboolean* is_synthetic_ptr) {
   NULL_CHECK(method_oop, JVMTI_ERROR_INVALID_METHODID);
   (*is_synthetic_ptr) = method_oop->is_synthetic();
   return JVMTI_ERROR_NONE;
@@ -2938,7 +2935,7 @@
 // method_oop - pre-checked for validity, but may be NULL meaning obsolete method
 // is_obsolete_ptr - pre-checked for NULL
 jvmtiError
-JvmtiEnv::IsMethodObsolete(methodOop method_oop, jboolean* is_obsolete_ptr) {
+JvmtiEnv::IsMethodObsolete(Method* method_oop, jboolean* is_obsolete_ptr) {
   if (use_version_1_0_semantics() &&
       get_capabilities()->can_redefine_classes == 0) {
     // This JvmtiEnv requested version 1.0 semantics and this function
--- a/src/share/vm/prims/jvmtiEnv.xsl	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnv.xsl	Fri Sep 14 21:50:58 2012 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!--
- Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -74,7 +74,7 @@
     // DO PRIMITIVE CLASS PROCESSING
     return JVMTI_ERROR_MUST_POSSESS_CAPABILITY;
   }
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   if (k_oop == NULL) {
     return JVMTI_ERROR_INVALID_CLASS;
   }</xsl:text>
--- a/src/share/vm/prims/jvmtiEnvBase.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnvBase.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -588,7 +588,7 @@
 
 
 jclass
-JvmtiEnvBase::get_jni_class_non_null(klassOop k) {
+JvmtiEnvBase::get_jni_class_non_null(Klass* k) {
   assert(k != NULL, "k != NULL");
   return (jclass)jni_reference(Klass::cast(k)->java_mirror());
 }
@@ -600,7 +600,7 @@
 //
 
 bool
-JvmtiEnvBase::get_field_descriptor(klassOop k, jfieldID field, fieldDescriptor* fd) {
+JvmtiEnvBase::get_field_descriptor(Klass* k, jfieldID field, fieldDescriptor* fd) {
   if (!jfieldIDWorkaround::is_valid_jfieldID(k, field)) {
     return false;
   }
@@ -611,7 +611,7 @@
   } else {
     // Non-static field. The fieldID is really the offset of the field within the object.
     int offset = jfieldIDWorkaround::from_instance_jfieldID(k, field);
-    found = instanceKlass::cast(k)->find_field_from_offset(offset, false, fd);
+    found = InstanceKlass::cast(k)->find_field_from_offset(offset, false, fd);
   }
   return found;
 }
@@ -930,7 +930,7 @@
 
   HandleMark hm(current_thread);
   javaVFrame *jvf = javaVFrame::cast(vf);
-  methodOop method = jvf->method();
+  Method* method = jvf->method();
   if (method->is_native()) {
     *location_ptr = -1;
   } else {
--- a/src/share/vm/prims/jvmtiEnvBase.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnvBase.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -264,8 +264,8 @@
   // convert from JNIHandle to JavaThread *
   JavaThread  * get_JavaThread(jthread jni_thread);
 
-  // convert to a jni jclass from a non-null klassOop
-  jclass get_jni_class_non_null(klassOop k);
+  // convert to a jni jclass from a non-null Klass*
+  jclass get_jni_class_non_null(Klass* k);
 
   jint count_locked_objects(JavaThread *java_thread, Handle hobj);
   jvmtiError get_locked_objects_in_frame(JavaThread *calling_thread,
@@ -277,7 +277,7 @@
 
  public:
   // get a field descriptor for the specified class and field
-  static bool get_field_descriptor(klassOop k, jfieldID field, fieldDescriptor* fd);
+  static bool get_field_descriptor(Klass* k, jfieldID field, fieldDescriptor* fd);
   // test for suspend - most (all?) of these should go away
   static bool is_thread_fully_suspended(JavaThread *thread,
                                         bool wait_for_suspend,
--- a/src/share/vm/prims/jvmtiEnvThreadState.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnvThreadState.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -150,7 +150,7 @@
 // - instruction rewrites
 // - breakpoint followed by single step
 // - single step at a breakpoint
-void JvmtiEnvThreadState::compare_and_set_current_location(methodOop new_method,
+void JvmtiEnvThreadState::compare_and_set_current_location(Method* new_method,
                                                            address new_location, jvmtiEvent event) {
 
   int new_bci = new_location - new_method->code_base();
@@ -271,7 +271,7 @@
     RegisterMap rm(_thread, false);
     javaVFrame* vf = _thread->last_java_vframe(&rm);
     assert(vf != NULL, "must have last java frame");
-    methodOop method = vf->method();
+    Method* method = vf->method();
     _method_id = method->jmethod_id();
     _bci = vf->bci();
   }
--- a/src/share/vm/prims/jvmtiEnvThreadState.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiEnvThreadState.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -151,7 +151,7 @@
   // and reset _breakpoint_posted and _single_stepping_posted.
   // _breakpoint_posted and _single_stepping_posted are only cleared
   // here.
-  void compare_and_set_current_location(methodOop method, address location, jvmtiEvent event);
+  void compare_and_set_current_location(Method* method, address location, jvmtiEvent event);
 
   void clear_current_location() { set_current_location((jmethodID)NULL, 0); }
 
--- a/src/share/vm/prims/jvmtiExport.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiExport.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -196,7 +196,7 @@
   jobject to_jobject(oop obj) { return JNIHandles::make_local(_thread,obj); }
 #endif
 
-  jclass to_jclass(klassOop klass) { return (klass == NULL ? NULL : (jclass)to_jobject(Klass::cast(klass)->java_mirror())); }
+  jclass to_jclass(Klass* klass) { return (klass == NULL ? NULL : (jclass)to_jobject(Klass::cast(klass)->java_mirror())); }
 
   jmethodID to_jmethodID(methodHandle method) { return method->jmethod_id(); }
 
@@ -220,7 +220,7 @@
   jclass _jc;
 
 public:
-  JvmtiClassEventMark(JavaThread *thread, klassOop klass) :
+  JvmtiClassEventMark(JavaThread *thread, Klass* klass) :
     JvmtiThreadEventMark(thread) {
     _jc = to_jclass(klass);
   };
@@ -678,13 +678,13 @@
 
 
 #ifndef JVMTI_KERNEL
-static inline klassOop oop_to_klassOop(oop obj) {
-  klassOop k = obj->klass();
+static inline Klass* oop_to_klass(oop obj) {
+  Klass* k = obj->klass();
 
   // if the object is a java.lang.Class then return the java mirror
   if (k == SystemDictionary::Class_klass()) {
     if (!java_lang_Class::is_primitive(obj)) {
-      k = java_lang_Class::as_klassOop(obj);
+      k = java_lang_Class::as_Klass(obj);
       assert(k != NULL, "class for non-primitive mirror must exist");
     }
   }
@@ -696,7 +696,7 @@
    jobject _jobj;
    jlong    _size;
  public:
-   JvmtiVMObjectAllocEventMark(JavaThread *thread, oop obj) : JvmtiClassEventMark(thread, oop_to_klassOop(obj)) {
+   JvmtiVMObjectAllocEventMark(JavaThread *thread, oop obj) : JvmtiClassEventMark(thread, oop_to_klass(obj)) {
      _jobj = (jobject)to_jobject(obj);
      _size = obj->size() * wordSize;
    };
@@ -781,7 +781,7 @@
 // JvmtiExport
 //
 
-void JvmtiExport::post_raw_breakpoint(JavaThread *thread, methodOop method, address location) {
+void JvmtiExport::post_raw_breakpoint(JavaThread *thread, Method* method, address location) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
 
@@ -862,7 +862,7 @@
 //
 // JVMTI single step management
 //
-void JvmtiExport::at_single_stepping_point(JavaThread *thread, methodOop method, address location) {
+void JvmtiExport::at_single_stepping_point(JavaThread *thread, Method* method, address location) {
   assert(JvmtiExport::should_post_single_step(), "must be single stepping");
 
   HandleMark hm(thread);
@@ -905,7 +905,7 @@
   }
 }
 
-void JvmtiExport::post_class_load(JavaThread *thread, klassOop klass) {
+void JvmtiExport::post_class_load(JavaThread *thread, Klass* klass) {
   HandleMark hm(thread);
   KlassHandle kh(thread, klass);
 
@@ -934,7 +934,7 @@
 }
 
 
-void JvmtiExport::post_class_prepare(JavaThread *thread, klassOop klass) {
+void JvmtiExport::post_class_prepare(JavaThread *thread, Klass* klass) {
   HandleMark hm(thread);
   KlassHandle kh(thread, klass);
 
@@ -962,7 +962,7 @@
   }
 }
 
-void JvmtiExport::post_class_unload(klassOop klass) {
+void JvmtiExport::post_class_unload(Klass* klass) {
   Thread *thread = Thread::current();
   HandleMark hm(thread);
   KlassHandle kh(thread, klass);
@@ -1103,7 +1103,7 @@
   }
 }
 
-void JvmtiExport::post_method_entry(JavaThread *thread, methodOop method, frame current_frame) {
+void JvmtiExport::post_method_entry(JavaThread *thread, Method* method, frame current_frame) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
 
@@ -1141,7 +1141,7 @@
   }
 }
 
-void JvmtiExport::post_method_exit(JavaThread *thread, methodOop method, frame current_frame) {
+void JvmtiExport::post_method_exit(JavaThread *thread, Method* method, frame current_frame) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
 
@@ -1236,7 +1236,7 @@
 
 
 // Todo: inline this for optimization
-void JvmtiExport::post_single_step(JavaThread *thread, methodOop method, address location) {
+void JvmtiExport::post_single_step(JavaThread *thread, Method* method, address location) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
 
@@ -1269,7 +1269,7 @@
 }
 
 
-void JvmtiExport::post_exception_throw(JavaThread *thread, methodOop method, address location, oop exception) {
+void JvmtiExport::post_exception_throw(JavaThread *thread, Method* method, address location, oop exception) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
   Handle exception_handle(thread, exception);
@@ -1304,7 +1304,7 @@
         bool should_repeat;
         vframeStream st(thread);
         assert(!st.at_end(), "cannot be at end");
-        methodOop current_method = NULL;
+        Method* current_method = NULL;
         int current_bci = -1;
         do {
           current_method = st.method();
@@ -1315,7 +1315,7 @@
             current_bci = current_method->fast_exception_handler_bci_for(
               eh_klass, current_bci, THREAD);
             if (HAS_PENDING_EXCEPTION) {
-              exception_handle = KlassHandle(thread, PENDING_EXCEPTION);
+              exception_handle = Handle(thread, PENDING_EXCEPTION);
               CLEAR_PENDING_EXCEPTION;
               should_repeat = true;
             }
@@ -1349,7 +1349,7 @@
 }
 
 
-void JvmtiExport::notice_unwind_due_to_exception(JavaThread *thread, methodOop method, address location, oop exception, bool in_handler_frame) {
+void JvmtiExport::notice_unwind_due_to_exception(JavaThread *thread, Method* method, address location, oop exception, bool in_handler_frame) {
   HandleMark hm(thread);
   methodHandle mh(thread, method);
   Handle exception_handle(thread, exception);
@@ -1416,7 +1416,7 @@
 }
 
 oop JvmtiExport::jni_GetField_probe(JavaThread *thread, jobject jobj, oop obj,
-                                    klassOop klass, jfieldID fieldID, bool is_static) {
+                                    Klass* klass, jfieldID fieldID, bool is_static) {
   if (*((int *)get_field_access_count_addr()) > 0 && thread->has_last_Java_frame()) {
     // At least one field access watch is set so we have more work
     // to do. This wrapper is used by entry points that allow us
@@ -1429,7 +1429,7 @@
 }
 
 oop JvmtiExport::jni_GetField_probe_nh(JavaThread *thread, jobject jobj, oop obj,
-                                       klassOop klass, jfieldID fieldID, bool is_static) {
+                                       Klass* klass, jfieldID fieldID, bool is_static) {
   if (*((int *)get_field_access_count_addr()) > 0 && thread->has_last_Java_frame()) {
     // At least one field access watch is set so we have more work
     // to do. This wrapper is used by "quick" entry points that don't
@@ -1444,7 +1444,7 @@
 }
 
 void JvmtiExport::post_field_access_by_jni(JavaThread *thread, oop obj,
-                                           klassOop klass, jfieldID fieldID, bool is_static) {
+                                           Klass* klass, jfieldID fieldID, bool is_static) {
   // We must be called with a Java context in order to provide reasonable
   // values for the klazz, method, and location fields. The callers of this
   // function don't make the call unless there is a Java context.
@@ -1473,7 +1473,7 @@
                     h_klass, h_obj, fieldID);
 }
 
-void JvmtiExport::post_field_access(JavaThread *thread, methodOop method,
+void JvmtiExport::post_field_access(JavaThread *thread, Method* method,
   address location, KlassHandle field_klass, Handle object, jfieldID field) {
 
   HandleMark hm(thread);
@@ -1510,7 +1510,7 @@
 }
 
 oop JvmtiExport::jni_SetField_probe(JavaThread *thread, jobject jobj, oop obj,
-                                    klassOop klass, jfieldID fieldID, bool is_static,
+                                    Klass* klass, jfieldID fieldID, bool is_static,
                                     char sig_type, jvalue *value) {
   if (*((int *)get_field_modification_count_addr()) > 0 && thread->has_last_Java_frame()) {
     // At least one field modification watch is set so we have more work
@@ -1524,7 +1524,7 @@
 }
 
 oop JvmtiExport::jni_SetField_probe_nh(JavaThread *thread, jobject jobj, oop obj,
-                                       klassOop klass, jfieldID fieldID, bool is_static,
+                                       Klass* klass, jfieldID fieldID, bool is_static,
                                        char sig_type, jvalue *value) {
   if (*((int *)get_field_modification_count_addr()) > 0 && thread->has_last_Java_frame()) {
     // At least one field modification watch is set so we have more work
@@ -1540,7 +1540,7 @@
 }
 
 void JvmtiExport::post_field_modification_by_jni(JavaThread *thread, oop obj,
-                                                 klassOop klass, jfieldID fieldID, bool is_static,
+                                                 Klass* klass, jfieldID fieldID, bool is_static,
                                                  char sig_type, jvalue *value) {
   // We must be called with a Java context in order to provide reasonable
   // values for the klazz, method, and location fields. The callers of this
@@ -1571,7 +1571,7 @@
                           h_klass, h_obj, fieldID, sig_type, value);
 }
 
-void JvmtiExport::post_raw_field_modification(JavaThread *thread, methodOop method,
+void JvmtiExport::post_raw_field_modification(JavaThread *thread, Method* method,
   address location, KlassHandle field_klass, Handle object, jfieldID field,
   char sig_type, jvalue *value) {
 
@@ -1629,7 +1629,7 @@
   }
 }
 
-void JvmtiExport::post_field_modification(JavaThread *thread, methodOop method,
+void JvmtiExport::post_field_modification(JavaThread *thread, Method* method,
   address location, KlassHandle field_klass, Handle object, jfieldID field,
   char sig_type, jvalue *value_ptr) {
 
@@ -1669,7 +1669,7 @@
   }
 }
 
-void JvmtiExport::post_native_method_bind(methodOop method, address* function_ptr) {
+void JvmtiExport::post_native_method_bind(Method* method, address* function_ptr) {
   JavaThread* thread = JavaThread::current();
   assert(thread->thread_state() == _thread_in_vm, "must be in vm state");
 
@@ -1730,7 +1730,7 @@
     int stackframe = 0;
     for(ScopeDesc* sd = nm->scope_desc_at(p->real_pc(nm));sd != NULL;sd = sd->sender()) {
       // sd->method() can be NULL for stubs but not for nmethods. To be completely robust, include an assert that we should never see a null sd->method()
-      assert(!sd->method().is_null(), "sd->method() cannot be null.");
+      assert(sd->method() != NULL, "sd->method() cannot be null.");
       record->pcinfo[scope].methods[stackframe] = sd->method()->jmethod_id();
       record->pcinfo[scope].bcis[stackframe] = sd->bci();
       stackframe++;
@@ -2121,7 +2121,7 @@
     if (env->is_enabled(JVMTI_EVENT_VM_OBJECT_ALLOC)) {
       EVT_TRACE(JVMTI_EVENT_VM_OBJECT_ALLOC, ("JVMTI [%s] Evt vmobject alloc sent %s",
                                          JvmtiTrace::safe_get_thread_name(thread),
-                                         object==NULL? "NULL" : Klass::cast(java_lang_Class::as_klassOop(object))->external_name()));
+                                         object==NULL? "NULL" : Klass::cast(java_lang_Class::as_Klass(object))->external_name()));
 
       JvmtiVMObjectAllocEventMark jem(thread, h());
       JvmtiJavaThreadEventTransition jet(thread);
--- a/src/share/vm/prims/jvmtiExport.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiExport.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -136,7 +136,7 @@
     JVMDI_VERSION_VALUE  = 0x20000000
   };
 
-  static void post_field_modification(JavaThread *thread, methodOop method, address location,
+  static void post_field_modification(JavaThread *thread, Method* method, address location,
                                       KlassHandle field_klass, Handle object, jfieldID field,
                                       char sig_type, jvalue *value);
 
@@ -236,7 +236,7 @@
                                     int * micro);
 
   // single stepping management methods
-  static void at_single_stepping_point(JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
+  static void at_single_stepping_point(JavaThread *thread, Method* method, address location) KERNEL_RETURN;
   static void expose_single_stepping(JavaThread *thread) KERNEL_RETURN;
   static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(false);
 
@@ -245,41 +245,41 @@
   static void post_vm_initialized        ();
   static void post_vm_death              ();
 
-  static void post_single_step           (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
-  static void post_raw_breakpoint        (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
+  static void post_single_step           (JavaThread *thread, Method* method, address location) KERNEL_RETURN;
+  static void post_raw_breakpoint        (JavaThread *thread, Method* method, address location) KERNEL_RETURN;
 
-  static void post_exception_throw       (JavaThread *thread, methodOop method, address location, oop exception) KERNEL_RETURN;
-  static void notice_unwind_due_to_exception (JavaThread *thread, methodOop method, address location, oop exception, bool in_handler_frame) KERNEL_RETURN;
+  static void post_exception_throw       (JavaThread *thread, Method* method, address location, oop exception) KERNEL_RETURN;
+  static void notice_unwind_due_to_exception (JavaThread *thread, Method* method, address location, oop exception, bool in_handler_frame) KERNEL_RETURN;
 
   static oop jni_GetField_probe          (JavaThread *thread, jobject jobj,
-    oop obj, klassOop klass, jfieldID fieldID, bool is_static)
+    oop obj, Klass* klass, jfieldID fieldID, bool is_static)
     KERNEL_RETURN_(NULL);
   static oop jni_GetField_probe_nh       (JavaThread *thread, jobject jobj,
-    oop obj, klassOop klass, jfieldID fieldID, bool is_static)
+    oop obj, Klass* klass, jfieldID fieldID, bool is_static)
     KERNEL_RETURN_(NULL);
   static void post_field_access_by_jni   (JavaThread *thread, oop obj,
-    klassOop klass, jfieldID fieldID, bool is_static) KERNEL_RETURN;
-  static void post_field_access          (JavaThread *thread, methodOop method,
+    Klass* klass, jfieldID fieldID, bool is_static) KERNEL_RETURN;
+  static void post_field_access          (JavaThread *thread, Method* method,
     address location, KlassHandle field_klass, Handle object, jfieldID field) KERNEL_RETURN;
   static oop jni_SetField_probe          (JavaThread *thread, jobject jobj,
-    oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
+    oop obj, Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
     jvalue *value) KERNEL_RETURN_(NULL);
   static oop jni_SetField_probe_nh       (JavaThread *thread, jobject jobj,
-    oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
+    oop obj, Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
     jvalue *value) KERNEL_RETURN_(NULL);
   static void post_field_modification_by_jni(JavaThread *thread, oop obj,
-    klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
+    Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
     jvalue *value);
-  static void post_raw_field_modification(JavaThread *thread, methodOop method,
+  static void post_raw_field_modification(JavaThread *thread, Method* method,
     address location, KlassHandle field_klass, Handle object, jfieldID field,
     char sig_type, jvalue *value) KERNEL_RETURN;
 
-  static void post_method_entry          (JavaThread *thread, methodOop method, frame current_frame) KERNEL_RETURN;
-  static void post_method_exit           (JavaThread *thread, methodOop method, frame current_frame) KERNEL_RETURN;
+  static void post_method_entry          (JavaThread *thread, Method* method, frame current_frame) KERNEL_RETURN;
+  static void post_method_exit           (JavaThread *thread, Method* method, frame current_frame) KERNEL_RETURN;
 
-  static void post_class_load            (JavaThread *thread, klassOop klass) KERNEL_RETURN;
-  static void post_class_unload          (klassOop klass) KERNEL_RETURN;
-  static void post_class_prepare         (JavaThread *thread, klassOop klass) KERNEL_RETURN;
+  static void post_class_load            (JavaThread *thread, Klass* klass) KERNEL_RETURN;
+  static void post_class_unload          (Klass* klass) KERNEL_RETURN;
+  static void post_class_prepare         (JavaThread *thread, Klass* klass) KERNEL_RETURN;
 
   static void post_thread_start          (JavaThread *thread) KERNEL_RETURN;
   static void post_thread_end            (JavaThread *thread) KERNEL_RETURN;
@@ -293,7 +293,7 @@
                                         unsigned char **data_ptr, unsigned char **end_ptr,
                                         unsigned char **cached_data_ptr,
                                         jint *cached_length_ptr);
-  static void post_native_method_bind(methodOop method, address* function_ptr) KERNEL_RETURN;
+  static void post_native_method_bind(Method* method, address* function_ptr) KERNEL_RETURN;
   static void post_compiled_method_load(nmethod *nm) KERNEL_RETURN;
   static void post_dynamic_code_generated(const char *name, const void *code_begin, const void *code_end) KERNEL_RETURN;
 
--- a/src/share/vm/prims/jvmtiGetLoadedClasses.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiGetLoadedClasses.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -166,10 +166,10 @@
   }
 
   // Finally, the static methods that are the callbacks
-  static void increment(klassOop k) {
+  static void increment(Klass* k) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
     if (that->get_initiatingLoader() == NULL) {
-      for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+      for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
         that->set_count(that->get_count() + 1);
       }
     } else if (k != NULL) {
@@ -178,27 +178,29 @@
     }
   }
 
-  static void increment_with_loader(klassOop k, oop loader) {
+  static void increment_with_loader(Klass* k, ClassLoaderData* loader_data) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
-    if (loader == JNIHandles::resolve(that->get_initiatingLoader())) {
-      for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+    oop class_loader = loader_data->class_loader();
+    if (class_loader == JNIHandles::resolve(that->get_initiatingLoader())) {
+      for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
         that->set_count(that->get_count() + 1);
       }
     }
   }
 
-  static void prim_array_increment_with_loader(klassOop array, oop loader) {
+  static void prim_array_increment_with_loader(Klass* array, ClassLoaderData* loader_data) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
-    if (loader == JNIHandles::resolve(that->get_initiatingLoader())) {
+    oop class_loader = loader_data->class_loader();
+    if (class_loader == JNIHandles::resolve(that->get_initiatingLoader())) {
       that->set_count(that->get_count() + 1);
     }
   }
 
-  static void add(klassOop k) {
+  static void add(Klass* k) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
     if (that->available()) {
       if (that->get_initiatingLoader() == NULL) {
-        for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+        for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
           oop mirror = Klass::cast(l)->java_mirror();
           that->set_element(that->get_index(), mirror);
           that->set_index(that->get_index() + 1);
@@ -212,11 +214,12 @@
     }
   }
 
-  static void add_with_loader(klassOop k, oop loader) {
+  static void add_with_loader(Klass* k, ClassLoaderData* loader_data) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
     if (that->available()) {
-      if (loader == JNIHandles::resolve(that->get_initiatingLoader())) {
-        for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+      oop class_loader = loader_data->class_loader();
+      if (class_loader == JNIHandles::resolve(that->get_initiatingLoader())) {
+        for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
           oop mirror = Klass::cast(l)->java_mirror();
           that->set_element(that->get_index(), mirror);
           that->set_index(that->get_index() + 1);
@@ -228,20 +231,20 @@
   // increment the count for the given basic type array class (and any
   // multi-dimensional arrays). For example, for [B we check for
   // [[B, [[[B, .. and the count is incremented for each one that exists.
-  static void increment_for_basic_type_arrays(klassOop k) {
+  static void increment_for_basic_type_arrays(Klass* k) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
     assert(that != NULL, "no JvmtiGetLoadedClassesClosure");
-    for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+    for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
       that->set_count(that->get_count() + 1);
     }
   }
 
   // add the basic type array class and its multi-dimensional array classes to the list
-  static void add_for_basic_type_arrays(klassOop k) {
+  static void add_for_basic_type_arrays(Klass* k) {
     JvmtiGetLoadedClassesClosure* that = JvmtiGetLoadedClassesClosure::get_this();
     assert(that != NULL, "no JvmtiGetLoadedClassesClosure");
     assert(that->available(), "no list");
-    for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+    for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
       oop mirror = Klass::cast(l)->java_mirror();
       that->set_element(that->get_index(), mirror);
       that->set_index(that->get_index() + 1);
--- a/src/share/vm/prims/jvmtiImpl.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiImpl.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -235,6 +235,7 @@
 JvmtiBreakpoint::JvmtiBreakpoint() {
   _method = NULL;
   _bci    = 0;
+  _class_loader = NULL;
 #ifdef CHECK_UNHANDLED_OOPS
   // This one is always allocated with new, but check it just in case.
   Thread *thread = Thread::current();
@@ -244,24 +245,18 @@
 #endif // CHECK_UNHANDLED_OOPS
 }
 
-JvmtiBreakpoint::JvmtiBreakpoint(methodOop m_method, jlocation location) {
+JvmtiBreakpoint::JvmtiBreakpoint(Method* m_method, jlocation location) {
   _method        = m_method;
+  _class_loader  = _method->method_holder()->class_loader_data()->class_loader();
   assert(_method != NULL, "_method != NULL");
   _bci           = (int) location;
-#ifdef CHECK_UNHANDLED_OOPS
-  // Could be allocated with new and wouldn't be on the unhandled oop list.
-  Thread *thread = Thread::current();
-  if (thread->is_in_stack((address)&_method)) {
-    thread->allow_unhandled_oop(&_method);
-  }
-#endif // CHECK_UNHANDLED_OOPS
-
   assert(_bci >= 0, "_bci >= 0");
 }
 
 void JvmtiBreakpoint::copy(JvmtiBreakpoint& bp) {
   _method   = bp._method;
   _bci      = bp._bci;
+  _class_loader = bp._class_loader;
 }
 
 bool JvmtiBreakpoint::lessThan(JvmtiBreakpoint& bp) {
@@ -275,6 +270,7 @@
 }
 
 bool JvmtiBreakpoint::is_valid() {
+  // class loader can be NULL
   return _method != NULL &&
          _bci >= 0;
 }
@@ -284,7 +280,7 @@
 }
 
 void JvmtiBreakpoint::each_method_version_do(method_action meth_act) {
-  ((methodOopDesc*)_method->*meth_act)(_bci);
+  ((Method*)_method->*meth_act)(_bci);
 
   // add/remove breakpoint to/from versions of the method that
   // are EMCP. Directly or transitively obsolete methods are
@@ -302,7 +298,7 @@
     // has destroyed the handles.
     {
       // search previous versions if they exist
-      PreviousVersionWalker pvw((instanceKlass *)ikh()->klass_part());
+      PreviousVersionWalker pvw((InstanceKlass *)ikh());
       for (PreviousVersionInfo * pv_info = pvw.next_previous_version();
            pv_info != NULL; pv_info = pvw.next_previous_version()) {
         GrowableArray<methodHandle>* methods =
@@ -324,14 +320,17 @@
 
         for (int i = methods->length() - 1; i >= 0; i--) {
           methodHandle method = methods->at(i);
-          if (method->name() == m_name && method->signature() == m_signature) {
+          // obsolete methods that are running are not deleted from
+          // previous version array, but they are skipped here.
+          if (!method->is_obsolete() &&
+              method->name() == m_name &&
+              method->signature() == m_signature) {
             RC_TRACE(0x00000800, ("%sing breakpoint in %s(%s)",
-              meth_act == &methodOopDesc::set_breakpoint ? "sett" : "clear",
+              meth_act == &Method::set_breakpoint ? "sett" : "clear",
               method->name()->as_C_string(),
               method->signature()->as_C_string()));
-            assert(!method->is_obsolete(), "only EMCP methods here");
 
-            ((methodOopDesc*)method()->*meth_act)(_bci);
+            ((Method*)method()->*meth_act)(_bci);
             break;
           }
         }
@@ -341,11 +340,11 @@
 }
 
 void JvmtiBreakpoint::set() {
-  each_method_version_do(&methodOopDesc::set_breakpoint);
+  each_method_version_do(&Method::set_breakpoint);
 }
 
 void JvmtiBreakpoint::clear() {
-  each_method_version_do(&methodOopDesc::clear_breakpoint);
+  each_method_version_do(&Method::clear_breakpoint);
 }
 
 void JvmtiBreakpoint::print() {
@@ -476,7 +475,7 @@
   return JVMTI_ERROR_NONE;
 }
 
-void JvmtiBreakpoints::clearall_in_class_at_safepoint(klassOop klass) {
+void JvmtiBreakpoints::clearall_in_class_at_safepoint(Klass* klass) {
   bool changed = true;
   // We are going to run thru the list of bkpts
   // and delete some.  This deletion probably alters
@@ -647,9 +646,9 @@
     }
   }
   // Compare secondary supers
-  objArrayOop sec_supers = klass->secondary_supers();
+  Array<Klass*>* sec_supers = klass->secondary_supers();
   for (idx = 0; idx < sec_supers->length(); idx++) {
-    if (Klass::cast((klassOop) sec_supers->obj_at(idx))->name() == ty_sym) {
+    if (Klass::cast((Klass*) sec_supers->at(idx))->name() == ty_sym) {
       return true;
     }
   }
@@ -662,7 +661,7 @@
 // Returns: 'true' - everything is Ok, 'false' - error code
 
 bool VM_GetOrSetLocal::check_slot_type(javaVFrame* jvf) {
-  methodOop method_oop = jvf->method();
+  Method* method_oop = jvf->method();
   if (!method_oop->has_localvariable_table()) {
     // Just to check index boundaries
     jint extra_slot = (_type == T_LONG || _type == T_DOUBLE) ? 1 : 0;
--- a/src/share/vm/prims/jvmtiImpl.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiImpl.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -164,17 +164,18 @@
 // A JvmtiBreakpoint describes a location (class, method, bci) to break at.
 //
 
-typedef void (methodOopDesc::*method_action)(int _bci);
+typedef void (Method::*method_action)(int _bci);
 
 class JvmtiBreakpoint : public GrowableElement {
 private:
-  methodOop             _method;
+  Method*               _method;
   int                   _bci;
   Bytecodes::Code       _orig_bytecode;
+  oop                   _class_loader;
 
 public:
   JvmtiBreakpoint();
-  JvmtiBreakpoint(methodOop m_method, jlocation location);
+  JvmtiBreakpoint(Method* m_method, jlocation location);
   bool equals(JvmtiBreakpoint& bp);
   bool lessThan(JvmtiBreakpoint &bp);
   void copy(JvmtiBreakpoint& bp);
@@ -185,13 +186,16 @@
   void clear();
   void print();
 
-  methodOop method() { return _method; }
+  Method* method() { return _method; }
 
   // GrowableElement implementation
   address getCacheValue()         { return getBcp(); }
   bool lessThan(GrowableElement* e) { Unimplemented(); return false; }
   bool equals(GrowableElement* e) { return equals((JvmtiBreakpoint&) *e); }
-  void oops_do(OopClosure* f)     { f->do_oop((oop *) &_method); }
+  void oops_do(OopClosure* f)     {
+    // Mark the method loader as live
+    f->do_oop(&_class_loader);
+  }
   GrowableElement *clone()        {
     JvmtiBreakpoint *bp = new JvmtiBreakpoint();
     bp->copy(*this);
@@ -283,7 +287,7 @@
 
   int  set(JvmtiBreakpoint& bp);
   int  clear(JvmtiBreakpoint& bp);
-  void clearall_in_class_at_safepoint(klassOop klass);
+  void clearall_in_class_at_safepoint(Klass* klass);
   void clearall();
   void gc_epilogue();
 };
--- a/src/share/vm/prims/jvmtiLib.xsl	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiLib.xsl	Fri Sep 14 21:50:58 2012 -0700
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 
- Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved.
+ Copyright (c) 2002, 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
@@ -809,7 +809,7 @@
 </xsl:template>
 
 <xsl:template match="jmethodID" mode="HotSpotType">
-  <xsl:text>methodOop</xsl:text>
+  <xsl:text>Method*</xsl:text>
 </xsl:template>
 
 <xsl:template match="jfieldID" mode="HotSpotType">
--- a/src/share/vm/prims/jvmtiRedefineClasses.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiRedefineClasses.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,9 +26,12 @@
 #include "classfile/systemDictionary.hpp"
 #include "classfile/verifier.hpp"
 #include "code/codeCache.hpp"
+#include "compiler/compileBroker.hpp"
 #include "interpreter/oopMapCache.hpp"
 #include "interpreter/rewriter.hpp"
 #include "memory/gcLocker.hpp"
+#include "memory/metadataFactory.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/fieldStreams.hpp"
 #include "oops/klassVtable.hpp"
@@ -40,16 +43,16 @@
 #include "utilities/bitMap.inline.hpp"
 
 
-objArrayOop VM_RedefineClasses::_old_methods = NULL;
-objArrayOop VM_RedefineClasses::_new_methods = NULL;
-methodOop*  VM_RedefineClasses::_matching_old_methods = NULL;
-methodOop*  VM_RedefineClasses::_matching_new_methods = NULL;
-methodOop*  VM_RedefineClasses::_deleted_methods      = NULL;
-methodOop*  VM_RedefineClasses::_added_methods        = NULL;
+Array<Method*>* VM_RedefineClasses::_old_methods = NULL;
+Array<Method*>* VM_RedefineClasses::_new_methods = NULL;
+Method**  VM_RedefineClasses::_matching_old_methods = NULL;
+Method**  VM_RedefineClasses::_matching_new_methods = NULL;
+Method**  VM_RedefineClasses::_deleted_methods      = NULL;
+Method**  VM_RedefineClasses::_added_methods        = NULL;
 int         VM_RedefineClasses::_matching_methods_length = 0;
 int         VM_RedefineClasses::_deleted_methods_length  = 0;
 int         VM_RedefineClasses::_added_methods_length    = 0;
-klassOop    VM_RedefineClasses::_the_class_oop = NULL;
+Klass*      VM_RedefineClasses::_the_class_oop = NULL;
 
 
 VM_RedefineClasses::VM_RedefineClasses(jint class_count,
@@ -93,6 +96,15 @@
   // call chain it is required that the current thread is a Java thread.
   _res = load_new_class_versions(Thread::current());
   if (_res != JVMTI_ERROR_NONE) {
+    // free any successfully created classes, since none are redefined
+    for (int i = 0; i < _class_count; i++) {
+      if (_scratch_classes[i] != NULL) {
+        ClassLoaderData* cld = _scratch_classes[i]->class_loader_data();
+        // Free the memory for this class at class unloading time.  Not before
+        // because CMS might think this is still live.
+        cld->add_to_deallocate_list((InstanceKlass*)_scratch_classes[i]);
+      }
+    }
     // Free os::malloc allocated memory in load_new_class_version.
     os::free(_scratch_classes);
     RC_TIMER_STOP(_timer_vm_op_prologue);
@@ -103,6 +115,43 @@
   return true;
 }
 
+// Keep track of marked on-stack metadata so it can be cleared.
+GrowableArray<Metadata*>* _marked_objects = NULL;
+NOT_PRODUCT(bool MetadataOnStackMark::_is_active = false;)
+
+// Walk metadata on the stack and mark it so that redefinition doesn't delete
+// it.  Class unloading also walks the previous versions and might try to
+// delete it, so this class is used by class unloading also.
+MetadataOnStackMark::MetadataOnStackMark() {
+  assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
+  NOT_PRODUCT(_is_active = true;)
+  if (_marked_objects == NULL) {
+    _marked_objects = new (ResourceObj::C_HEAP, mtClass) GrowableArray<Metadata*>(1000, true);
+  }
+  Threads::metadata_do(Metadata::mark_on_stack);
+  CodeCache::alive_nmethods_do(nmethod::mark_on_stack);
+  CompileBroker::mark_on_stack();
+}
+
+MetadataOnStackMark::~MetadataOnStackMark() {
+  assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
+  // Unmark everything that was marked.   Can't do the same walk because
+  // redefine classes messes up the code cache so the set of methods
+  // might not be the same.
+  for (int i = 0; i< _marked_objects->length(); i++) {
+    _marked_objects->at(i)->set_on_stack(false);
+  }
+  _marked_objects->clear();   // reuse growable array for next time.
+  NOT_PRODUCT(_is_active = false;)
+}
+
+// Record which objects are marked so we can unmark the same objects.
+void MetadataOnStackMark::record(Metadata* m) {
+  assert(_is_active, "metadata on stack marking is active");
+  _marked_objects->push(m);
+}
+
+
 void VM_RedefineClasses::doit() {
   Thread *thread = Thread::current();
 
@@ -111,7 +160,7 @@
     // shared readwrite, private just in case we need to redefine
     // a shared class. We do the remap during the doit() phase of
     // the safepoint to be safer.
-    if (!CompactingPermGenGen::remap_shared_readonly_as_readwrite()) {
+    if (!MetaspaceShared::remap_shared_readonly_as_readwrite()) {
       RC_TRACE_WITH_THREAD(0x00000001, thread,
         ("failed to remap shared readonly space to readwrite, private"));
       _res = JVMTI_ERROR_INTERNAL;
@@ -119,9 +168,21 @@
     }
   }
 
+  // Mark methods seen on stack and everywhere else so old methods are not
+  // cleaned up if they're on the stack.
+  MetadataOnStackMark md_on_stack;
+  HandleMark hm(thread);   // make sure any handles created are deleted
+                           // before the stack walk again.
+
   for (int i = 0; i < _class_count; i++) {
     redefine_single_class(_class_defs[i].klass, _scratch_classes[i], thread);
+    ClassLoaderData* cld = _scratch_classes[i]->class_loader_data();
+    // Free the memory for this class at class unloading time.  Not before
+    // because CMS might think this is still live.
+    cld->add_to_deallocate_list((InstanceKlass*)_scratch_classes[i]);
+    _scratch_classes[i] = NULL;
   }
+
   // Disable any dependent concurrent compilations
   SystemDictionary::notice_modification();
 
@@ -136,7 +197,6 @@
 
 void VM_RedefineClasses::doit_epilogue() {
   // Free os::malloc allocated memory.
-  // The memory allocated in redefine will be free'ed in next VM operation.
   os::free(_scratch_classes);
 
   if (RC_TRACE_ENABLED(0x00000004)) {
@@ -160,7 +220,7 @@
   if (java_lang_Class::is_primitive(klass_mirror)) {
     return false;
   }
-  klassOop the_class_oop = java_lang_Class::as_klassOop(klass_mirror);
+  Klass* the_class_oop = java_lang_Class::as_Klass(klass_mirror);
   // classes for arrays cannot be redefined
   if (the_class_oop == NULL || !Klass::cast(the_class_oop)->oop_is_instance()) {
     return false;
@@ -215,7 +275,7 @@
     case JVM_CONSTANT_Double:  // fall through
     case JVM_CONSTANT_Long:
     {
-      constantPoolOopDesc::copy_entry_to(scratch_cp, scratch_i, *merge_cp_p, *merge_cp_length_p,
+      ConstantPool::copy_entry_to(scratch_cp, scratch_i, *merge_cp_p, *merge_cp_length_p,
         THREAD);
 
       if (scratch_i != *merge_cp_length_p) {
@@ -232,15 +292,14 @@
     case JVM_CONSTANT_Utf8:    // fall through
 
     // This was an indirect CP entry, but it has been changed into
-    // an interned string so this entry can be directly appended.
+    // Symbol*s so this entry can be directly appended.
     case JVM_CONSTANT_String:      // fall through
 
     // These were indirect CP entries, but they have been changed into
     // Symbol*s so these entries can be directly appended.
     case JVM_CONSTANT_UnresolvedClass:  // fall through
-    case JVM_CONSTANT_UnresolvedString:
     {
-      constantPoolOopDesc::copy_entry_to(scratch_cp, scratch_i, *merge_cp_p, *merge_cp_length_p,
+      ConstantPool::copy_entry_to(scratch_cp, scratch_i, *merge_cp_p, *merge_cp_length_p,
         THREAD);
 
       if (scratch_i != *merge_cp_length_p) {
@@ -467,8 +526,7 @@
     // not be seen by itself.
     case JVM_CONSTANT_Invalid: // fall through
 
-    // At this stage, String or UnresolvedString could be here, but not
-    // StringIndex
+    // At this stage, String could be here, but not StringIndex
     case JVM_CONSTANT_StringIndex: // fall through
 
     // At this stage JVM_CONSTANT_UnresolvedClassInError should not be
@@ -485,20 +543,23 @@
 } // end append_entry()
 
 
-void VM_RedefineClasses::swap_all_method_annotations(int i, int j, instanceKlassHandle scratch_class) {
-  typeArrayOop save;
-
-  save = scratch_class->get_method_annotations_of(i);
-  scratch_class->set_method_annotations_of(i, scratch_class->get_method_annotations_of(j));
-  scratch_class->set_method_annotations_of(j, save);
-
-  save = scratch_class->get_method_parameter_annotations_of(i);
-  scratch_class->set_method_parameter_annotations_of(i, scratch_class->get_method_parameter_annotations_of(j));
-  scratch_class->set_method_parameter_annotations_of(j, save);
-
-  save = scratch_class->get_method_default_annotations_of(i);
-  scratch_class->set_method_default_annotations_of(i, scratch_class->get_method_default_annotations_of(j));
-  scratch_class->set_method_default_annotations_of(j, save);
+void VM_RedefineClasses::swap_all_method_annotations(int i, int j, instanceKlassHandle scratch_class, TRAPS) {
+  AnnotationArray* save;
+
+  Annotations* sca = scratch_class->annotations();
+  if (sca == NULL) return;
+
+  save = sca->get_method_annotations_of(i);
+  sca->set_method_annotations_of(scratch_class, i, sca->get_method_annotations_of(j), CHECK);
+  sca->set_method_annotations_of(scratch_class, j, save, CHECK);
+
+  save = sca->get_method_parameter_annotations_of(i);
+  sca->set_method_parameter_annotations_of(scratch_class, i, sca->get_method_parameter_annotations_of(j), CHECK);
+  sca->set_method_parameter_annotations_of(scratch_class, j, save, CHECK);
+
+  save = sca->get_method_default_annotations_of(i);
+  sca->set_method_default_annotations_of(scratch_class, i, sca->get_method_default_annotations_of(j), CHECK);
+  sca->set_method_default_annotations_of(scratch_class, j, save, CHECK);
 }
 
 
@@ -524,15 +585,15 @@
   // technically a bit more difficult, and, more importantly, I am not sure at present that the
   // order of interfaces does not matter on the implementation level, i.e. that the VM does not
   // rely on it somewhere.
-  objArrayOop k_interfaces = the_class->local_interfaces();
-  objArrayOop k_new_interfaces = scratch_class->local_interfaces();
+  Array<Klass*>* k_interfaces = the_class->local_interfaces();
+  Array<Klass*>* k_new_interfaces = scratch_class->local_interfaces();
   int n_intfs = k_interfaces->length();
   if (n_intfs != k_new_interfaces->length()) {
     return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED;
   }
   for (i = 0; i < n_intfs; i++) {
-    if (Klass::cast((klassOop) k_interfaces->obj_at(i))->name() !=
-        Klass::cast((klassOop) k_new_interfaces->obj_at(i))->name()) {
+    if (Klass::cast(k_interfaces->at(i))->name() !=
+        Klass::cast(k_new_interfaces->at(i))->name()) {
       return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_HIERARCHY_CHANGED;
     }
   }
@@ -591,23 +652,24 @@
   // old methods in the same order as the old methods and places
   // new overloaded methods at the end of overloaded methods of
   // that name. The code for this order normalization is adapted
-  // from the algorithm used in instanceKlass::find_method().
+  // from the algorithm used in InstanceKlass::find_method().
   // Since we are swapping out of order entries as we find them,
   // we only have to search forward through the overloaded methods.
   // Methods which are added and have the same name as an existing
   // method (but different signature) will be put at the end of
   // the methods with that name, and the name mismatch code will
   // handle them.
-  objArrayHandle k_old_methods(the_class->methods());
-  objArrayHandle k_new_methods(scratch_class->methods());
+  Array<Method*>* k_old_methods(the_class->methods());
+  Array<Method*>* k_new_methods(scratch_class->methods());
   int n_old_methods = k_old_methods->length();
   int n_new_methods = k_new_methods->length();
+  Thread* thread = Thread::current();
 
   int ni = 0;
   int oi = 0;
   while (true) {
-    methodOop k_old_method;
-    methodOop k_new_method;
+    Method* k_old_method;
+    Method* k_new_method;
     enum { matched, added, deleted, undetermined } method_was = undetermined;
 
     if (oi >= n_old_methods) {
@@ -615,16 +677,16 @@
         break; // we've looked at everything, done
       }
       // New method at the end
-      k_new_method = (methodOop) k_new_methods->obj_at(ni);
+      k_new_method = k_new_methods->at(ni);
       method_was = added;
     } else if (ni >= n_new_methods) {
       // Old method, at the end, is deleted
-      k_old_method = (methodOop) k_old_methods->obj_at(oi);
+      k_old_method = k_old_methods->at(oi);
       method_was = deleted;
     } else {
       // There are more methods in both the old and new lists
-      k_old_method = (methodOop) k_old_methods->obj_at(oi);
-      k_new_method = (methodOop) k_new_methods->obj_at(ni);
+      k_old_method = k_old_methods->at(oi);
+      k_new_method = k_new_methods->at(ni);
       if (k_old_method->name() != k_new_method->name()) {
         // Methods are sorted by method name, so a mismatch means added
         // or deleted
@@ -641,7 +703,7 @@
         // search forward through the new overloaded methods.
         int nj;  // outside the loop for post-loop check
         for (nj = ni + 1; nj < n_new_methods; nj++) {
-          methodOop m = (methodOop)k_new_methods->obj_at(nj);
+          Method* m = k_new_methods->at(nj);
           if (k_old_method->name() != m->name()) {
             // reached another method name so no more overloaded methods
             method_was = deleted;
@@ -649,8 +711,8 @@
           }
           if (k_old_method->signature() == m->signature()) {
             // found a match so swap the methods
-            k_new_methods->obj_at_put(ni, m);
-            k_new_methods->obj_at_put(nj, k_new_method);
+            k_new_methods->at_put(ni, m);
+            k_new_methods->at_put(nj, k_new_method);
             k_new_method = m;
             method_was = matched;
             break;
@@ -676,13 +738,16 @@
         u2 new_num = k_new_method->method_idnum();
         u2 old_num = k_old_method->method_idnum();
         if (new_num != old_num) {
-          methodOop idnum_owner = scratch_class->method_with_idnum(old_num);
+          Method* idnum_owner = scratch_class->method_with_idnum(old_num);
           if (idnum_owner != NULL) {
             // There is already a method assigned this idnum -- switch them
             idnum_owner->set_method_idnum(new_num);
           }
           k_new_method->set_method_idnum(old_num);
-          swap_all_method_annotations(old_num, new_num, scratch_class);
+          swap_all_method_annotations(old_num, new_num, scratch_class, thread);
+           if (thread->has_pending_exception()) {
+             return JVMTI_ERROR_OUT_OF_MEMORY;
+           }
         }
       }
       RC_TRACE(0x00008000, ("Method matched: new: %s [%d] == old: %s [%d]",
@@ -704,18 +769,21 @@
       }
       {
         u2 num = the_class->next_method_idnum();
-        if (num == constMethodOopDesc::UNSET_IDNUM) {
+        if (num == ConstMethod::UNSET_IDNUM) {
           // cannot add any more methods
           return JVMTI_ERROR_UNSUPPORTED_REDEFINITION_METHOD_ADDED;
         }
         u2 new_num = k_new_method->method_idnum();
-        methodOop idnum_owner = scratch_class->method_with_idnum(num);
+        Method* idnum_owner = scratch_class->method_with_idnum(num);
         if (idnum_owner != NULL) {
           // There is already a method assigned this idnum -- switch them
           idnum_owner->set_method_idnum(new_num);
         }
         k_new_method->set_method_idnum(num);
-        swap_all_method_annotations(new_num, num, scratch_class);
+        swap_all_method_annotations(new_num, num, scratch_class, thread);
+        if (thread->has_pending_exception()) {
+          return JVMTI_ERROR_OUT_OF_MEMORY;
+        }
       }
       RC_TRACE(0x00008000, ("Method added: new: %s [%d]",
                             k_new_method->name_and_sig_as_C_string(), ni));
@@ -799,42 +867,18 @@
 } // end is_unresolved_class_mismatch()
 
 
-// Returns true if the current mismatch is due to a resolved/unresolved
-// string pair. Otherwise, returns false.
-bool VM_RedefineClasses::is_unresolved_string_mismatch(constantPoolHandle cp1,
-       int index1, constantPoolHandle cp2, int index2) {
-
-  jbyte t1 = cp1->tag_at(index1).value();
-  if (t1 != JVM_CONSTANT_String && t1 != JVM_CONSTANT_UnresolvedString) {
-    return false;  // wrong entry type; not our special case
-  }
-
-  jbyte t2 = cp2->tag_at(index2).value();
-  if (t2 != JVM_CONSTANT_String && t2 != JVM_CONSTANT_UnresolvedString) {
-    return false;  // wrong entry type; not our special case
-  }
-
-  if (t1 == t2) {
-    return false;  // not a mismatch; not our special case
-  }
-
-  char *s1 = cp1->string_at_noresolve(index1);
-  char *s2 = cp2->string_at_noresolve(index2);
-  if (strcmp(s1, s2) != 0) {
-    return false;  // strings don't match; not our special case
-  }
-
-  return true;  // made it through the gauntlet; this is our special case
-} // end is_unresolved_string_mismatch()
-
-
 jvmtiError VM_RedefineClasses::load_new_class_versions(TRAPS) {
+
   // For consistency allocate memory using os::malloc wrapper.
-  _scratch_classes = (instanceKlassHandle *)
-    os::malloc(sizeof(instanceKlassHandle) * _class_count, mtInternal);
+  _scratch_classes = (Klass**)
+    os::malloc(sizeof(Klass*) * _class_count, mtClass);
   if (_scratch_classes == NULL) {
     return JVMTI_ERROR_OUT_OF_MEMORY;
   }
+  // Zero initialize the _scratch_classes array.
+  for (int i = 0; i < _class_count; i++) {
+    _scratch_classes[i] = NULL;
+  }
 
   ResourceMark rm(THREAD);
 
@@ -843,12 +887,17 @@
   // should not happen since we're trying to do a RedefineClasses
   guarantee(state != NULL, "exiting thread calling load_new_class_versions");
   for (int i = 0; i < _class_count; i++) {
+    // Create HandleMark so that any handles created while loading new class
+    // versions are deleted. Constant pools are deallocated while merging
+    // constant pools
+    HandleMark hm(THREAD);
+
     oop mirror = JNIHandles::resolve_non_null(_class_defs[i].klass);
     // classes for primitives cannot be redefined
     if (!is_modifiable_class(mirror)) {
       return JVMTI_ERROR_UNMODIFIABLE_CLASS;
     }
-    klassOop the_class_oop = java_lang_Class::as_klassOop(mirror);
+    Klass* the_class_oop = java_lang_Class::as_Klass(mirror);
     instanceKlassHandle the_class = instanceKlassHandle(THREAD, the_class_oop);
     Symbol*  the_class_sym = the_class->name();
 
@@ -869,7 +918,7 @@
     // load hook event.
     state->set_class_being_redefined(&the_class, _class_load_kind);
 
-    klassOop k = SystemDictionary::parse_stream(the_class_sym,
+    Klass* k = SystemDictionary::parse_stream(the_class_sym,
                                                 the_class_loader,
                                                 protection_domain,
                                                 &st,
@@ -881,8 +930,13 @@
 
     instanceKlassHandle scratch_class (THREAD, k);
 
+    // Need to clean up allocated InstanceKlass if there's an error so assign
+    // the result here. Caller deallocates all the scratch classes in case of
+    // an error.
+    _scratch_classes[i] = k;
+
     if (HAS_PENDING_EXCEPTION) {
-      Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+      Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
       // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark
       RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("parse_stream exception: '%s'",
         ex_name->as_C_string()));
@@ -908,7 +962,7 @@
     if (!the_class->is_linked()) {
       the_class->link_class(THREAD);
       if (HAS_PENDING_EXCEPTION) {
-        Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+        Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
         // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark
         RC_TRACE_WITH_THREAD(0x00000002, THREAD, ("link_class exception: '%s'",
           ex_name->as_C_string()));
@@ -946,7 +1000,7 @@
     }
 
     if (HAS_PENDING_EXCEPTION) {
-      Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+      Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
       // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark
       RC_TRACE_WITH_THREAD(0x00000002, THREAD,
         ("verify_byte_codes exception: '%s'", ex_name->as_C_string()));
@@ -972,7 +1026,7 @@
       }
 
       if (HAS_PENDING_EXCEPTION) {
-        Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+        Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
         // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark
         RC_TRACE_WITH_THREAD(0x00000002, THREAD,
           ("verify_byte_codes post merge-CP exception: '%s'",
@@ -992,7 +1046,7 @@
       Rewriter::relocate_and_link(scratch_class, THREAD);
     }
     if (HAS_PENDING_EXCEPTION) {
-      Symbol* ex_name = PENDING_EXCEPTION->klass()->klass_part()->name();
+      Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
       CLEAR_PENDING_EXCEPTION;
       if (ex_name == vmSymbols::java_lang_OutOfMemoryError()) {
         return JVMTI_ERROR_OUT_OF_MEMORY;
@@ -1001,8 +1055,6 @@
       }
     }
 
-    _scratch_classes[i] = scratch_class;
-
     // RC_TRACE_WITH_THREAD macro has an embedded ResourceMark
     RC_TRACE_WITH_THREAD(0x00000001, THREAD,
       ("loaded name=%s (avail_mem=" UINT64_FORMAT "K)",
@@ -1047,11 +1099,11 @@
        int *merge_cp_length_p, TRAPS) {
 
   if (merge_cp_p == NULL) {
-    assert(false, "caller must provide scatch constantPool");
+    assert(false, "caller must provide scratch constantPool");
     return false; // robustness
   }
   if (merge_cp_length_p == NULL) {
-    assert(false, "caller must provide scatch CP length");
+    assert(false, "caller must provide scratch CP length");
     return false; // robustness
   }
   // Worst case we need old_cp->length() + scratch_cp()->length(),
@@ -1070,7 +1122,7 @@
     // Pass 0:
     // The old_cp is copied to *merge_cp_p; this means that any code
     // using old_cp does not have to change. This work looks like a
-    // perfect fit for constantPoolOop::copy_cp_to(), but we need to
+    // perfect fit for ConstantPool*::copy_cp_to(), but we need to
     // handle one special case:
     // - revert JVM_CONSTANT_Class to JVM_CONSTANT_UnresolvedClass
     // This will make verification happy.
@@ -1095,13 +1147,13 @@
       case JVM_CONSTANT_Long:
         // just copy the entry to *merge_cp_p, but double and long take
         // two constant pool entries
-        constantPoolOopDesc::copy_entry_to(old_cp, old_i, *merge_cp_p, old_i, CHECK_0);
+        ConstantPool::copy_entry_to(old_cp, old_i, *merge_cp_p, old_i, CHECK_0);
         old_i++;
         break;
 
       default:
         // just copy the entry to *merge_cp_p
-        constantPoolOopDesc::copy_entry_to(old_cp, old_i, *merge_cp_p, old_i, CHECK_0);
+        ConstantPool::copy_entry_to(old_cp, old_i, *merge_cp_p, old_i, CHECK_0);
         break;
       }
     } // end for each old_cp entry
@@ -1151,13 +1203,6 @@
         // class entries to unresolved class entries in *merge_cp_p,
         // we go with the unresolved class entry.
         continue;
-      } else if (is_unresolved_string_mismatch(scratch_cp, scratch_i,
-                                               *merge_cp_p, scratch_i)) {
-        // The mismatch in compare_entry_to() above is because of a
-        // resolved versus unresolved string entry at the same index
-        // with the same string value. We can live with whichever
-        // happens to be at scratch_i in *merge_cp_p.
-        continue;
       }
 
       int found_i = scratch_cp->find_matching_entry(scratch_i, *merge_cp_p,
@@ -1233,6 +1278,23 @@
 } // end merge_constant_pools()
 
 
+// Scoped object to clean up the constant pool(s) created for merging
+class MergeCPCleaner {
+  ClassLoaderData*   _loader_data;
+  ConstantPool*      _cp;
+  ConstantPool*      _scratch_cp;
+ public:
+  MergeCPCleaner(ClassLoaderData* loader_data, ConstantPool* merge_cp) :
+                 _loader_data(loader_data), _cp(merge_cp), _scratch_cp(NULL) {}
+  ~MergeCPCleaner() {
+    _loader_data->add_to_deallocate_list(_cp);
+    if (_scratch_cp != NULL) {
+      _loader_data->add_to_deallocate_list(_scratch_cp);
+    }
+  }
+  void add_scratch_cp(ConstantPool* scratch_cp) { _scratch_cp = scratch_cp; }
+};
+
 // Merge constant pools between the_class and scratch_class and
 // potentially rewrite bytecodes in scratch_class to use the merged
 // constant pool.
@@ -1243,19 +1305,35 @@
   int merge_cp_length = the_class->constants()->length()
         + scratch_class->constants()->length();
 
-  constantPoolHandle old_cp(THREAD, the_class->constants());
-  constantPoolHandle scratch_cp(THREAD, scratch_class->constants());
-
   // Constant pools are not easily reused so we allocate a new one
   // each time.
   // merge_cp is created unsafe for concurrent GC processing.  It
   // should be marked safe before discarding it. Even though
   // garbage,  if it crosses a card boundary, it may be scanned
   // in order to find the start of the first complete object on the card.
-  constantPoolHandle merge_cp(THREAD,
-    oopFactory::new_constantPool(merge_cp_length,
-                                 oopDesc::IsUnsafeConc,
-                                 THREAD));
+  ClassLoaderData* loader_data = the_class->class_loader_data();
+  ConstantPool* merge_cp_oop =
+    ConstantPool::allocate(loader_data,
+                                  merge_cp_length,
+                                  THREAD);
+  MergeCPCleaner cp_cleaner(loader_data, merge_cp_oop);
+
+  HandleMark hm(THREAD);  // make sure handles are cleared before
+                          // MergeCPCleaner clears out merge_cp_oop
+  constantPoolHandle merge_cp(THREAD, merge_cp_oop);
+
+  // Get constants() from the old class because it could have been rewritten
+  // while we were at a safepoint allocating a new constant pool.
+  constantPoolHandle old_cp(THREAD, the_class->constants());
+  constantPoolHandle scratch_cp(THREAD, scratch_class->constants());
+
+  // If the length changed, the class was redefined out from under us. Return
+  // an error.
+  if (merge_cp_length != the_class->constants()->length()
+         + scratch_class->constants()->length()) {
+    return JVMTI_ERROR_INTERNAL;
+  }
+
   int orig_length = old_cp->orig_length();
   if (orig_length == 0) {
     // This old_cp is an actual original constant pool. We save
@@ -1298,8 +1376,7 @@
       // rewriting so we can't use the old constant pool with the new
       // class.
 
-      merge_cp()->set_is_conc_safe(true);
-      merge_cp = constantPoolHandle();  // toss the merged constant pool
+      // toss the merged constant pool at return
     } else if (old_cp->length() < scratch_cp->length()) {
       // The old constant pool has fewer entries than the new constant
       // pool and the index map is empty. This means the new constant
@@ -1308,8 +1385,7 @@
       // rewriting so we can't use the new constant pool with the old
       // class.
 
-      merge_cp()->set_is_conc_safe(true);
-      merge_cp = constantPoolHandle();  // toss the merged constant pool
+      // toss the merged constant pool at return
     } else {
       // The old constant pool has more entries than the new constant
       // pool and the index map is empty. This means that both the old
@@ -1317,13 +1393,11 @@
       // pool.
 
       // Replace the new constant pool with a shrunken copy of the
-      // merged constant pool; the previous new constant pool will
-      // get GCed.
-      set_new_constant_pool(scratch_class, merge_cp, merge_cp_length, true,
-        THREAD);
-      // drop local ref to the merged constant pool
-      merge_cp()->set_is_conc_safe(true);
-      merge_cp = constantPoolHandle();
+      // merged constant pool
+      set_new_constant_pool(loader_data, scratch_class, merge_cp, merge_cp_length, THREAD);
+      // The new constant pool replaces scratch_cp so have cleaner clean it up.
+      // It can't be cleaned up while there are handles to it.
+      cp_cleaner.add_scratch_cp(scratch_cp());
     }
   } else {
     if (RC_TRACE_ENABLED(0x00040000)) {
@@ -1350,12 +1424,11 @@
     // merged constant pool so now the rewritten bytecodes have
     // valid references; the previous new constant pool will get
     // GCed.
-    set_new_constant_pool(scratch_class, merge_cp, merge_cp_length, true,
-      THREAD);
-    merge_cp()->set_is_conc_safe(true);
+    set_new_constant_pool(loader_data, scratch_class, merge_cp, merge_cp_length, THREAD);
+    // The new constant pool replaces scratch_cp so have cleaner clean it up.
+    // It can't be cleaned up while there are handles to it.
+    cp_cleaner.add_scratch_cp(scratch_cp());
   }
-  assert(old_cp()->is_conc_safe(), "Just checking");
-  assert(scratch_cp()->is_conc_safe(), "Just checking");
 
   return JVMTI_ERROR_NONE;
 } // end merge_cp_and_rewrite()
@@ -1411,21 +1484,21 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_methods(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  objArrayHandle methods(THREAD, scratch_class->methods());
-
-  if (methods.is_null() || methods->length() == 0) {
+  Array<Method*>* methods = scratch_class->methods();
+
+  if (methods == NULL || methods->length() == 0) {
     // no methods so nothing to do
     return true;
   }
 
   // rewrite constant pool references in the methods:
   for (int i = methods->length() - 1; i >= 0; i--) {
-    methodHandle method(THREAD, (methodOop)methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     methodHandle new_method;
     rewrite_cp_refs_in_method(method, &new_method, CHECK_false);
     if (!new_method.is_null()) {
       // the method has been replaced so save the new method version
-      methods->obj_at_put(i, new_method());
+      methods->at_put(i, new_method());
     }
   }
 
@@ -1441,7 +1514,7 @@
   *new_method_p = methodHandle();  // default is no new method
 
   // We cache a pointer to the bytecodes here in code_base. If GC
-  // moves the methodOop, then the bytecodes will also move which
+  // moves the Method*, then the bytecodes will also move which
   // will likely cause a crash. We create a No_Safepoint_Verifier
   // object to detect whether we pass a possible safepoint in this
   // code block.
@@ -1570,9 +1643,8 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_class_annotations(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  typeArrayHandle class_annotations(THREAD,
-    scratch_class->class_annotations());
-  if (class_annotations.is_null() || class_annotations->length() == 0) {
+  AnnotationArray* class_annotations = scratch_class->class_annotations();
+  if (class_annotations == NULL || class_annotations->length() == 0) {
     // no class_annotations so nothing to do
     return true;
   }
@@ -1596,7 +1668,7 @@
 // }
 //
 bool VM_RedefineClasses::rewrite_cp_refs_in_annotations_typeArray(
-       typeArrayHandle annotations_typeArray, int &byte_i_ref, TRAPS) {
+       AnnotationArray* annotations_typeArray, int &byte_i_ref, TRAPS) {
 
   if ((byte_i_ref + 2) > annotations_typeArray->length()) {
     // not enough room for num_annotations field
@@ -1606,7 +1678,7 @@
   }
 
   u2 num_annotations = Bytes::get_Java_u2((address)
-                         annotations_typeArray->byte_at_addr(byte_i_ref));
+                         annotations_typeArray->adr_at(byte_i_ref));
   byte_i_ref += 2;
 
   RC_TRACE_WITH_THREAD(0x02000000, THREAD,
@@ -1642,7 +1714,7 @@
 // }
 //
 bool VM_RedefineClasses::rewrite_cp_refs_in_annotation_struct(
-       typeArrayHandle annotations_typeArray, int &byte_i_ref, TRAPS) {
+       AnnotationArray* annotations_typeArray, int &byte_i_ref, TRAPS) {
   if ((byte_i_ref + 2 + 2) > annotations_typeArray->length()) {
     // not enough room for smallest annotation_struct
     RC_TRACE_WITH_THREAD(0x02000000, THREAD,
@@ -1654,8 +1726,7 @@
                     byte_i_ref, "mapped old type_index=%d", THREAD);
 
   u2 num_element_value_pairs = Bytes::get_Java_u2((address)
-                                 annotations_typeArray->byte_at_addr(
-                                 byte_i_ref));
+                                 annotations_typeArray->adr_at(byte_i_ref));
   byte_i_ref += 2;
 
   RC_TRACE_WITH_THREAD(0x02000000, THREAD,
@@ -1700,11 +1771,11 @@
 // pool reference if a rewrite was not needed or the new constant
 // pool reference if a rewrite was needed.
 u2 VM_RedefineClasses::rewrite_cp_ref_in_annotation_data(
-     typeArrayHandle annotations_typeArray, int &byte_i_ref,
+     AnnotationArray* annotations_typeArray, int &byte_i_ref,
      const char * trace_mesg, TRAPS) {
 
   address cp_index_addr = (address)
-    annotations_typeArray->byte_at_addr(byte_i_ref);
+    annotations_typeArray->adr_at(byte_i_ref);
   u2 old_cp_index = Bytes::get_Java_u2(cp_index_addr);
   u2 new_cp_index = find_new_index(old_cp_index);
   if (new_cp_index != 0) {
@@ -1739,7 +1810,7 @@
 // }
 //
 bool VM_RedefineClasses::rewrite_cp_refs_in_element_value(
-       typeArrayHandle annotations_typeArray, int &byte_i_ref, TRAPS) {
+       AnnotationArray* annotations_typeArray, int &byte_i_ref, TRAPS) {
 
   if ((byte_i_ref + 1) > annotations_typeArray->length()) {
     // not enough room for a tag let alone the rest of an element_value
@@ -1748,7 +1819,7 @@
     return false;
   }
 
-  u1 tag = annotations_typeArray->byte_at(byte_i_ref);
+  u1 tag = annotations_typeArray->at(byte_i_ref);
   byte_i_ref++;
   RC_TRACE_WITH_THREAD(0x02000000, THREAD, ("tag='%c'", tag));
 
@@ -1850,7 +1921,7 @@
       // For the above tag value, value.array_value is the right union
       // field. This is an array of nested element_value.
       u2 num_values = Bytes::get_Java_u2((address)
-                        annotations_typeArray->byte_at_addr(byte_i_ref));
+                        annotations_typeArray->adr_at(byte_i_ref));
       byte_i_ref += 2;
       RC_TRACE_WITH_THREAD(0x02000000, THREAD, ("num_values=%d", num_values));
 
@@ -1880,10 +1951,12 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_fields_annotations(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  objArrayHandle fields_annotations(THREAD,
-    scratch_class->fields_annotations());
-
-  if (fields_annotations.is_null() || fields_annotations->length() == 0) {
+  Annotations* sca = scratch_class->annotations();
+  if (sca == NULL) return true;
+
+  Array<AnnotationArray*>* fields_annotations = sca->fields_annotations();
+
+  if (fields_annotations == NULL || fields_annotations->length() == 0) {
     // no fields_annotations so nothing to do
     return true;
   }
@@ -1892,9 +1965,8 @@
     ("fields_annotations length=%d", fields_annotations->length()));
 
   for (int i = 0; i < fields_annotations->length(); i++) {
-    typeArrayHandle field_annotations(THREAD,
-      (typeArrayOop)fields_annotations->obj_at(i));
-    if (field_annotations.is_null() || field_annotations->length() == 0) {
+    AnnotationArray* field_annotations = fields_annotations->at(i);
+    if (field_annotations == NULL || field_annotations->length() == 0) {
       // this field does not have any annotations so skip it
       continue;
     }
@@ -1917,10 +1989,12 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_methods_annotations(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  objArrayHandle methods_annotations(THREAD,
-    scratch_class->methods_annotations());
-
-  if (methods_annotations.is_null() || methods_annotations->length() == 0) {
+  Annotations* sca = scratch_class->annotations();
+  if (sca == NULL) return true;
+
+  Array<AnnotationArray*>* methods_annotations = sca->methods_annotations();
+
+  if (methods_annotations == NULL || methods_annotations->length() == 0) {
     // no methods_annotations so nothing to do
     return true;
   }
@@ -1929,9 +2003,8 @@
     ("methods_annotations length=%d", methods_annotations->length()));
 
   for (int i = 0; i < methods_annotations->length(); i++) {
-    typeArrayHandle method_annotations(THREAD,
-      (typeArrayOop)methods_annotations->obj_at(i));
-    if (method_annotations.is_null() || method_annotations->length() == 0) {
+    AnnotationArray* method_annotations = methods_annotations->at(i);
+    if (method_annotations == NULL || method_annotations->length() == 0) {
       // this method does not have any annotations so skip it
       continue;
     }
@@ -1966,10 +2039,13 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_methods_parameter_annotations(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  objArrayHandle methods_parameter_annotations(THREAD,
-    scratch_class->methods_parameter_annotations());
-
-  if (methods_parameter_annotations.is_null()
+  Annotations* sca = scratch_class->annotations();
+  if (sca == NULL) return true;
+
+  Array<AnnotationArray*>* methods_parameter_annotations =
+    sca->methods_parameter_annotations();
+
+  if (methods_parameter_annotations == NULL
       || methods_parameter_annotations->length() == 0) {
     // no methods_parameter_annotations so nothing to do
     return true;
@@ -1980,9 +2056,8 @@
     methods_parameter_annotations->length()));
 
   for (int i = 0; i < methods_parameter_annotations->length(); i++) {
-    typeArrayHandle method_parameter_annotations(THREAD,
-      (typeArrayOop)methods_parameter_annotations->obj_at(i));
-    if (method_parameter_annotations.is_null()
+    AnnotationArray* method_parameter_annotations = methods_parameter_annotations->at(i);
+    if (method_parameter_annotations == NULL
         || method_parameter_annotations->length() == 0) {
       // this method does not have any parameter annotations so skip it
       continue;
@@ -1997,7 +2072,7 @@
 
     int byte_i = 0;  // byte index into method_parameter_annotations
 
-    u1 num_parameters = method_parameter_annotations->byte_at(byte_i);
+    u1 num_parameters = method_parameter_annotations->at(byte_i);
     byte_i++;
 
     RC_TRACE_WITH_THREAD(0x02000000, THREAD,
@@ -2031,10 +2106,13 @@
 bool VM_RedefineClasses::rewrite_cp_refs_in_methods_default_annotations(
        instanceKlassHandle scratch_class, TRAPS) {
 
-  objArrayHandle methods_default_annotations(THREAD,
-    scratch_class->methods_default_annotations());
-
-  if (methods_default_annotations.is_null()
+  Annotations* sca = scratch_class->annotations();
+  if (sca == NULL) return true;
+
+  Array<AnnotationArray*>* methods_default_annotations =
+    sca->methods_default_annotations();
+
+  if (methods_default_annotations == NULL
       || methods_default_annotations->length() == 0) {
     // no methods_default_annotations so nothing to do
     return true;
@@ -2045,9 +2123,8 @@
     methods_default_annotations->length()));
 
   for (int i = 0; i < methods_default_annotations->length(); i++) {
-    typeArrayHandle method_default_annotations(THREAD,
-      (typeArrayOop)methods_default_annotations->obj_at(i));
-    if (method_default_annotations.is_null()
+    AnnotationArray* method_default_annotations = methods_default_annotations->at(i);
+    if (method_default_annotations == NULL
         || method_default_annotations->length() == 0) {
       // this method does not have any default annotations so skip it
       continue;
@@ -2086,8 +2163,8 @@
     return;
   }
 
-  typeArrayOop stackmap_data = method->stackmap_data();
-  address stackmap_p = (address)stackmap_data->byte_at_addr(0);
+  AnnotationArray* stackmap_data = method->stackmap_data();
+  address stackmap_p = (address)stackmap_data->adr_at(0);
   address stackmap_end = stackmap_p + stackmap_data->length();
 
   assert(stackmap_p + 2 <= stackmap_end, "no room for number_of_entries");
@@ -2335,17 +2412,16 @@
 // are copied from scratch_cp to a smaller constant pool and the
 // smaller constant pool is associated with scratch_class.
 void VM_RedefineClasses::set_new_constant_pool(
+       ClassLoaderData* loader_data,
        instanceKlassHandle scratch_class, constantPoolHandle scratch_cp,
-       int scratch_cp_length, bool shrink, TRAPS) {
-  assert(!shrink || scratch_cp->length() >= scratch_cp_length, "sanity check");
-
-  if (shrink) {
+       int scratch_cp_length, TRAPS) {
+  assert(scratch_cp->length() >= scratch_cp_length, "sanity check");
+
     // scratch_cp is a merged constant pool and has enough space for a
     // worst case merge situation. We want to associate the minimum
     // sized constant pool with the klass to save space.
     constantPoolHandle smaller_cp(THREAD,
-      oopFactory::new_constantPool(scratch_cp_length,
-                                   oopDesc::IsUnsafeConc,
+    ConstantPool::allocate(loader_data, scratch_cp_length,
                                    THREAD));
     // preserve orig_length() value in the smaller copy
     int orig_length = scratch_cp->orig_length();
@@ -2353,8 +2429,6 @@
     smaller_cp->set_orig_length(orig_length);
     scratch_cp->copy_cp_to(1, scratch_cp_length - 1, smaller_cp, 1, THREAD);
     scratch_cp = smaller_cp;
-    smaller_cp()->set_is_conc_safe(true);
-  }
 
   // attach new constant pool to klass
   scratch_cp->set_pool_holder(scratch_class());
@@ -2430,9 +2504,9 @@
 
   // Attach each method in klass to the new constant pool and update
   // to use new constant pool indices as needed:
-  objArrayHandle methods(THREAD, scratch_class->methods());
+  Array<Method*>* methods = scratch_class->methods();
   for (i = methods->length() - 1; i >= 0; i--) {
-    methodHandle method(THREAD, (methodOop)methods->obj_at(i));
+    methodHandle method(THREAD, methods->at(i));
     method->set_constants(scratch_cp());
 
     int new_index = find_new_index(method->name_index());
@@ -2528,10 +2602,18 @@
 
     rewrite_cp_refs_in_stack_map_table(method, THREAD);
   } // end for each method
-  assert(scratch_cp()->is_conc_safe(), "Just checking");
 } // end set_new_constant_pool()
 
 
+void VM_RedefineClasses::adjust_array_vtable(Klass* k_oop) {
+  arrayKlass* ak = arrayKlass::cast(k_oop);
+  bool trace_name_printed = false;
+  ak->vtable()->adjust_method_entries(_matching_old_methods,
+                                      _matching_new_methods,
+                                      _matching_methods_length,
+                                      &trace_name_printed);
+}
+
 // Unevolving classes may point to methods of the_class directly
 // from their constant pool caches, itables, and/or vtables. We
 // use the SystemDictionary::classes_do() facility and this helper
@@ -2539,12 +2621,13 @@
 //
 // Note: We currently don't support updating the vtable in
 // arrayKlassOops. See Open Issues in jvmtiRedefineClasses.hpp.
-void VM_RedefineClasses::adjust_cpool_cache_and_vtable(klassOop k_oop,
-       oop initiating_loader, TRAPS) {
-  Klass *k = k_oop->klass_part();
+void VM_RedefineClasses::adjust_cpool_cache_and_vtable(Klass* k_oop,
+       ClassLoaderData* initiating_loader,
+       TRAPS) {
+  Klass *k = k_oop;
   if (k->oop_is_instance()) {
     HandleMark hm(THREAD);
-    instanceKlass *ik = (instanceKlass *) k;
+    InstanceKlass *ik = (InstanceKlass *) k;
 
     // HotSpot specific optimization! HotSpot does not currently
     // support delegation from the bootstrap class loader to a
@@ -2559,11 +2642,17 @@
     // loader as its defining class loader, then we can skip all
     // classes loaded by the bootstrap class loader.
     bool is_user_defined =
-           instanceKlass::cast(_the_class_oop)->class_loader() != NULL;
+           InstanceKlass::cast(_the_class_oop)->class_loader() != NULL;
     if (is_user_defined && ik->class_loader() == NULL) {
       return;
     }
 
+    // If the class being redefined is java.lang.Object, we need to fix all
+    // array class vtables also
+    if (_the_class_oop == SystemDictionary::Object_klass()) {
+      ik->array_klasses_do(adjust_array_vtable);
+    }
+
     // This is a very busy routine. We don't want too much tracing
     // printed out.
     bool trace_name_printed = false;
@@ -2577,9 +2666,9 @@
 
     // Fix the vtable embedded in the_class and subclasses of the_class,
     // if one exists. We discard scratch_class and we don't keep an
-    // instanceKlass around to hold obsolete methods so we don't have
-    // any other instanceKlass embedded vtables to update. The vtable
-    // holds the methodOops for virtual (but not final) methods.
+    // InstanceKlass around to hold obsolete methods so we don't have
+    // any other InstanceKlass embedded vtables to update. The vtable
+    // holds the Method*s for virtual (but not final) methods.
     if (ik->vtable_length() > 0 && ik->is_subtype_of(_the_class_oop)) {
       // ik->vtable() creates a wrapper object; rm cleans it up
       ResourceMark rm(THREAD);
@@ -2593,8 +2682,8 @@
     // interface or if the current class is a subclass of the_class, then
     // we potentially have to fix the itable. If we are redefining an
     // interface, then we have to call adjust_method_entries() for
-    // every instanceKlass that has an itable since there isn't a
-    // subclass relationship between an interface and an instanceKlass.
+    // every InstanceKlass that has an itable since there isn't a
+    // subclass relationship between an interface and an InstanceKlass.
     if (ik->itable_length() > 0 && (Klass::cast(_the_class_oop)->is_interface()
         || ik->is_subclass_of(_the_class_oop))) {
       // ik->itable() creates a wrapper object; rm cleans it up
@@ -2609,7 +2698,7 @@
     // methods in the_class. We have to update method information in
     // other_cp's cache. If other_cp has a previous version, then we
     // have to repeat the process for each previous version. The
-    // constant pool cache holds the methodOops for non-virtual
+    // constant pool cache holds the Method*s for non-virtual
     // methods and for virtual, final methods.
     //
     // Special case: if the current class is the_class, then new_cp
@@ -2619,7 +2708,7 @@
     // updated. We can simply start with the previous version(s) in
     // that case.
     constantPoolHandle other_cp;
-    constantPoolCacheOop cp_cache;
+    ConstantPoolCache* cp_cache;
 
     if (k_oop != _the_class_oop) {
       // this klass' constant pool cache may need adjustment
@@ -2659,13 +2748,13 @@
 
 void VM_RedefineClasses::update_jmethod_ids() {
   for (int j = 0; j < _matching_methods_length; ++j) {
-    methodOop old_method = _matching_old_methods[j];
+    Method* old_method = _matching_old_methods[j];
     jmethodID jmid = old_method->find_jmethod_id_or_null();
     if (jmid != NULL) {
       // There is a jmethodID, change it to point to the new method
       methodHandle new_method_h(_matching_new_methods[j]);
-      JNIHandles::change_method_associated_with_jmethod_id(jmid, new_method_h);
-      assert(JNIHandles::resolve_jmethod_id(jmid) == _matching_new_methods[j],
+      Method::change_method_associated_with_jmethod_id(jmid, new_method_h());
+      assert(Method::resolve_jmethod_id(jmid) == _matching_new_methods[j],
              "should be replaced");
     }
   }
@@ -2677,14 +2766,13 @@
   int obsolete_count = 0;
   int old_index = 0;
   for (int j = 0; j < _matching_methods_length; ++j, ++old_index) {
-    methodOop old_method = _matching_old_methods[j];
-    methodOop new_method = _matching_new_methods[j];
-    methodOop old_array_method;
+    Method* old_method = _matching_old_methods[j];
+    Method* new_method = _matching_new_methods[j];
+    Method* old_array_method;
 
     // Maintain an old_index into the _old_methods array by skipping
     // deleted methods
-    while ((old_array_method = (methodOop) _old_methods->obj_at(old_index))
-                                                            != old_method) {
+    while ((old_array_method = _old_methods->at(old_index)) != old_method) {
       ++old_index;
     }
 
@@ -2718,29 +2806,29 @@
       // methods by new methods will save us space except for those
       // (hopefully few) old methods that are still executing.
       //
-      // A method refers to a constMethodOop and this presents another
-      // possible avenue to space savings. The constMethodOop in the
+      // A method refers to a ConstMethod* and this presents another
+      // possible avenue to space savings. The ConstMethod* in the
       // new method contains possibly new attributes (LNT, LVT, etc).
       // At first glance, it seems possible to save space by replacing
-      // the constMethodOop in the old method with the constMethodOop
+      // the ConstMethod* in the old method with the ConstMethod*
       // from the new method. The old and new methods would share the
-      // same constMethodOop and we would save the space occupied by
-      // the old constMethodOop. However, the constMethodOop contains
+      // same ConstMethod* and we would save the space occupied by
+      // the old ConstMethod*. However, the ConstMethod* contains
       // a back reference to the containing method. Sharing the
-      // constMethodOop between two methods could lead to confusion in
+      // ConstMethod* between two methods could lead to confusion in
       // the code that uses the back reference. This would lead to
       // brittle code that could be broken in non-obvious ways now or
       // in the future.
       //
-      // Another possibility is to copy the constMethodOop from the new
+      // Another possibility is to copy the ConstMethod* from the new
       // method to the old method and then overwrite the new method with
-      // the old method. Since the constMethodOop contains the bytecodes
+      // the old method. Since the ConstMethod* contains the bytecodes
       // for the method embedded in the oop, this option would change
       // the bytecodes out from under any threads executing the old
       // method and make the thread's bcp invalid. Since EMCP requires
       // that the bytecodes be the same modulo constant pool indices, it
       // is straight forward to compute the correct new bcp in the new
-      // constMethodOop from the old bcp in the old constMethodOop. The
+      // ConstMethod* from the old bcp in the old ConstMethod*. The
       // time consuming part would be searching all the frames in all
       // of the threads to find all of the calls to the old method.
       //
@@ -2766,8 +2854,8 @@
       obsolete_count++;
 
       // obsolete methods need a unique idnum
-      u2 num = instanceKlass::cast(_the_class_oop)->next_method_idnum();
-      if (num != constMethodOopDesc::UNSET_IDNUM) {
+      u2 num = InstanceKlass::cast(_the_class_oop)->next_method_idnum();
+      if (num != ConstMethod::UNSET_IDNUM) {
 //      u2 old_num = old_method->method_idnum();
         old_method->set_method_idnum(num);
 // TO DO: attach obsolete annotations to obsolete method's new idnum
@@ -2782,7 +2870,7 @@
     old_method->set_is_old();
   }
   for (int i = 0; i < _deleted_methods_length; ++i) {
-    methodOop old_method = _deleted_methods[i];
+    Method* old_method = _deleted_methods[i];
 
     assert(old_method->vtable_index() < 0,
            "cannot delete methods with vtable entries");;
@@ -2837,11 +2925,11 @@
   //    (1) without the prefix.
   //    (2) with the prefix.
   // where 'prefix' is the prefix at that 'depth' (first prefix, second prefix,...)
-  methodOop search_prefix_name_space(int depth, char* name_str, size_t name_len,
+  Method* search_prefix_name_space(int depth, char* name_str, size_t name_len,
                                      Symbol* signature) {
     TempNewSymbol name_symbol = SymbolTable::probe(name_str, (int)name_len);
     if (name_symbol != NULL) {
-      methodOop method = Klass::cast(the_class())->lookup_method(name_symbol, signature);
+      Method* method = Klass::cast(the_class())->lookup_method(name_symbol, signature);
       if (method != NULL) {
         // Even if prefixed, intermediate methods must exist.
         if (method->is_native()) {
@@ -2877,7 +2965,7 @@
   }
 
   // Return the method name with old prefixes stripped away.
-  char* method_name_without_prefixes(methodOop method) {
+  char* method_name_without_prefixes(Method* method) {
     Symbol* name = method->name();
     char* name_str = name->as_utf8();
 
@@ -2894,7 +2982,7 @@
 
   // Strip any prefixes off the old native method, then try to find a
   // (possibly prefixed) new native that matches it.
-  methodOop strip_and_search_for_new_native(methodOop method) {
+  Method* strip_and_search_for_new_native(Method* method) {
     ResourceMark rm;
     char* name_str = method_name_without_prefixes(method);
     return search_prefix_name_space(0, name_str, strlen(name_str),
@@ -2912,18 +3000,18 @@
   }
 
   // Attempt to transfer any of the old or deleted methods that are native
-  void transfer_registrations(methodOop* old_methods, int methods_length) {
+  void transfer_registrations(Method** old_methods, int methods_length) {
     for (int j = 0; j < methods_length; j++) {
-      methodOop old_method = old_methods[j];
+      Method* old_method = old_methods[j];
 
       if (old_method->is_native() && old_method->has_native_function()) {
-        methodOop new_method = strip_and_search_for_new_native(old_method);
+        Method* new_method = strip_and_search_for_new_native(old_method);
         if (new_method != NULL) {
           // Actually set the native function in the new method.
           // Redefine does not send events (except CFLH), certainly not this
           // behind the scenes re-registration.
           new_method->set_native_function(old_method->native_function(),
-                              !methodOopDesc::native_bind_event_is_interesting);
+                              !Method::native_bind_event_is_interesting);
         }
       }
     }
@@ -2977,13 +3065,13 @@
 }
 
 void VM_RedefineClasses::compute_added_deleted_matching_methods() {
-  methodOop old_method;
-  methodOop new_method;
-
-  _matching_old_methods = NEW_RESOURCE_ARRAY(methodOop, _old_methods->length());
-  _matching_new_methods = NEW_RESOURCE_ARRAY(methodOop, _old_methods->length());
-  _added_methods        = NEW_RESOURCE_ARRAY(methodOop, _new_methods->length());
-  _deleted_methods      = NEW_RESOURCE_ARRAY(methodOop, _old_methods->length());
+  Method* old_method;
+  Method* new_method;
+
+  _matching_old_methods = NEW_RESOURCE_ARRAY(Method*, _old_methods->length());
+  _matching_new_methods = NEW_RESOURCE_ARRAY(Method*, _old_methods->length());
+  _added_methods        = NEW_RESOURCE_ARRAY(Method*, _new_methods->length());
+  _deleted_methods      = NEW_RESOURCE_ARRAY(Method*, _old_methods->length());
 
   _matching_methods_length = 0;
   _deleted_methods_length  = 0;
@@ -2997,17 +3085,17 @@
         break; // we've looked at everything, done
       }
       // New method at the end
-      new_method = (methodOop) _new_methods->obj_at(nj);
+      new_method = _new_methods->at(nj);
       _added_methods[_added_methods_length++] = new_method;
       ++nj;
     } else if (nj >= _new_methods->length()) {
       // Old method, at the end, is deleted
-      old_method = (methodOop) _old_methods->obj_at(oj);
+      old_method = _old_methods->at(oj);
       _deleted_methods[_deleted_methods_length++] = old_method;
       ++oj;
     } else {
-      old_method = (methodOop) _old_methods->obj_at(oj);
-      new_method = (methodOop) _new_methods->obj_at(nj);
+      old_method = _old_methods->at(oj);
+      new_method = _new_methods->at(nj);
       if (old_method->name() == new_method->name()) {
         if (old_method->signature() == new_method->signature()) {
           _matching_old_methods[_matching_methods_length  ] = old_method;
@@ -3052,12 +3140,15 @@
 //      that we would like to pass to the helper method are saved in
 //      static global fields in the VM operation.
 void VM_RedefineClasses::redefine_single_class(jclass the_jclass,
-       instanceKlassHandle scratch_class, TRAPS) {
-
+       Klass* scratch_class_oop, TRAPS) {
+
+  HandleMark hm(THREAD);   // make sure handles from this call are freed
   RC_TIMER_START(_timer_rsc_phase1);
 
+  instanceKlassHandle scratch_class(scratch_class_oop);
+
   oop the_class_mirror = JNIHandles::resolve_non_null(the_jclass);
-  klassOop the_class_oop = java_lang_Class::as_klassOop(the_class_mirror);
+  Klass* the_class_oop = java_lang_Class::as_Klass(the_class_mirror);
   instanceKlassHandle the_class = instanceKlassHandle(THREAD, the_class_oop);
 
 #ifndef JVMTI_KERNEL
@@ -3105,13 +3196,13 @@
   // done here since we are past the bytecode verification and
   // constant pool optimization phases.
   for (int i = _old_methods->length() - 1; i >= 0; i--) {
-    methodOop method = (methodOop)_old_methods->obj_at(i);
+    Method* method = _old_methods->at(i);
     method->set_constants(scratch_class->constants());
   }
 
   {
     // walk all previous versions of the klass
-    instanceKlass *ik = (instanceKlass *)the_class()->klass_part();
+    InstanceKlass *ik = (InstanceKlass *)the_class();
     PreviousVersionWalker pvw(ik);
     instanceKlassHandle ikh;
     do {
@@ -3124,9 +3215,9 @@
 
         // Attach each method in the previous version of klass to the
         // new constant pool
-        objArrayOop prev_methods = ik->methods();
+        Array<Method*>* prev_methods = ik->methods();
         for (int i = prev_methods->length() - 1; i >= 0; i--) {
-          methodOop method = (methodOop)prev_methods->obj_at(i);
+          Method* method = prev_methods->at(i);
           method->set_constants(scratch_class->constants());
         }
       }
@@ -3139,7 +3230,7 @@
   scratch_class->set_methods(_old_methods);     // To prevent potential GCing of the old methods,
                                           // and to be able to undo operation easily.
 
-  constantPoolOop old_constants = the_class->constants();
+  ConstantPool* old_constants = the_class->constants();
   the_class->set_constants(scratch_class->constants());
   scratch_class->set_constants(old_constants);  // See the previous comment.
 #if 0
@@ -3166,7 +3257,7 @@
   // Miranda methods are a little more complicated. A miranda method is
   // provided by an interface when the class implementing the interface
   // does not provide its own method.  These interfaces are implemented
-  // internally as an instanceKlass. These special instanceKlasses
+  // internally as an InstanceKlass. These special instanceKlasses
   // share the constant pool of the class that "implements" the
   // interface. By sharing the constant pool, the method holder of a
   // miranda method is the class that "implements" the interface. In a
@@ -3205,7 +3296,7 @@
 #endif
 
   // Replace inner_classes
-  typeArrayOop old_inner_classes = the_class->inner_classes();
+  Array<u2>* old_inner_classes = the_class->inner_classes();
   the_class->set_inner_classes(scratch_class->inner_classes());
   scratch_class->set_inner_classes(old_inner_classes);
 
@@ -3247,34 +3338,10 @@
     the_class->set_access_flags(flags);
   }
 
-  // Replace class annotation fields values
-  typeArrayOop old_class_annotations = the_class->class_annotations();
-  the_class->set_class_annotations(scratch_class->class_annotations());
-  scratch_class->set_class_annotations(old_class_annotations);
-
-  // Replace fields annotation fields values
-  objArrayOop old_fields_annotations = the_class->fields_annotations();
-  the_class->set_fields_annotations(scratch_class->fields_annotations());
-  scratch_class->set_fields_annotations(old_fields_annotations);
-
-  // Replace methods annotation fields values
-  objArrayOop old_methods_annotations = the_class->methods_annotations();
-  the_class->set_methods_annotations(scratch_class->methods_annotations());
-  scratch_class->set_methods_annotations(old_methods_annotations);
-
-  // Replace methods parameter annotation fields values
-  objArrayOop old_methods_parameter_annotations =
-    the_class->methods_parameter_annotations();
-  the_class->set_methods_parameter_annotations(
-    scratch_class->methods_parameter_annotations());
-  scratch_class->set_methods_parameter_annotations(old_methods_parameter_annotations);
-
-  // Replace methods default annotation fields values
-  objArrayOop old_methods_default_annotations =
-    the_class->methods_default_annotations();
-  the_class->set_methods_default_annotations(
-    scratch_class->methods_default_annotations());
-  scratch_class->set_methods_default_annotations(old_methods_default_annotations);
+  // Replace annotation fields value
+  Annotations* old_annotations = the_class->annotations();
+  the_class->set_annotations(scratch_class->annotations());
+  scratch_class->set_annotations(old_annotations);
 
   // Replace minor version number of class file
   u2 old_minor_version = the_class->minor_version();
@@ -3305,6 +3372,9 @@
   // that reference methods of the evolved class.
   SystemDictionary::classes_do(adjust_cpool_cache_and_vtable, THREAD);
 
+  // Fix Resolution Error table also to remove old constant pools
+  SystemDictionary::delete_resolution_error(old_constants);
+
   if (the_class->oop_map_cache() != NULL) {
     // Flush references to any obsolete methods from the oop map cache
     // so that obsolete methods are not pinned.
@@ -3313,7 +3383,7 @@
 
   // increment the classRedefinedCount field in the_class and in any
   // direct and indirect subclasses of the_class
-  increment_class_counter((instanceKlass *)the_class()->klass_part(), THREAD);
+  increment_class_counter((InstanceKlass *)the_class(), THREAD);
 
   // RC_TRACE macro has an embedded ResourceMark
   RC_TRACE_WITH_THREAD(0x00000001, THREAD,
@@ -3326,11 +3396,11 @@
 } // end redefine_single_class()
 
 
-// Increment the classRedefinedCount field in the specific instanceKlass
+// Increment the classRedefinedCount field in the specific InstanceKlass
 // and in all direct and indirect subclasses.
-void VM_RedefineClasses::increment_class_counter(instanceKlass *ik, TRAPS) {
+void VM_RedefineClasses::increment_class_counter(InstanceKlass *ik, TRAPS) {
   oop class_mirror = ik->java_mirror();
-  klassOop class_oop = java_lang_Class::as_klassOop(class_mirror);
+  Klass* class_oop = java_lang_Class::as_Klass(class_mirror);
   int new_count = java_lang_Class::classRedefinedCount(class_mirror) + 1;
   java_lang_Class::set_classRedefinedCount(class_mirror, new_count);
 
@@ -3344,7 +3414,7 @@
        subk = subk->next_sibling()) {
     if (subk->oop_is_instance()) {
       // Only update instanceKlasses
-      instanceKlass *subik = (instanceKlass*)subk;
+      InstanceKlass *subik = (InstanceKlass*)subk;
       // recursively do subclasses of the current subclass
       increment_class_counter(subik, THREAD);
     }
@@ -3352,22 +3422,36 @@
 }
 
 #ifndef PRODUCT
-void VM_RedefineClasses::check_class(klassOop k_oop,
-       oop initiating_loader, TRAPS) {
-  Klass *k = k_oop->klass_part();
+void VM_RedefineClasses::check_class(Klass* k_oop,
+                                     ClassLoaderData* initiating_loader,
+                                     TRAPS) {
+  Klass *k = k_oop;
   if (k->oop_is_instance()) {
     HandleMark hm(THREAD);
-    instanceKlass *ik = (instanceKlass *) k;
+    InstanceKlass *ik = (InstanceKlass *) k;
 
     if (ik->vtable_length() > 0) {
       ResourceMark rm(THREAD);
       if (!ik->vtable()->check_no_old_entries()) {
         tty->print_cr("klassVtable::check_no_old_entries failure -- OLD method found -- class: %s", ik->signature_name());
         ik->vtable()->dump_vtable();
-        dump_methods();
         assert(false, "OLD method found");
       }
     }
+    if (ik->itable_length() > 0) {
+      ResourceMark rm(THREAD);
+      if (!ik->itable()->check_no_old_entries()) {
+        tty->print_cr("klassItable::check_no_old_entries failure -- OLD method found -- class: %s", ik->signature_name());
+        assert(false, "OLD method found");
+      }
+    }
+    // Check that the constant pool cache has no deleted entries.
+    if (ik->constants() != NULL &&
+        ik->constants()->cache() != NULL &&
+       !ik->constants()->cache()->check_no_old_entries()) {
+      tty->print_cr("klassVtable::check_no_old_entries failure -- OLD method found -- class: %s", ik->signature_name());
+      assert(false, "OLD method found");
+    }
   }
 }
 
@@ -3375,7 +3459,7 @@
         int j;
         tty->print_cr("_old_methods --");
         for (j = 0; j < _old_methods->length(); ++j) {
-          methodOop m = (methodOop) _old_methods->obj_at(j);
+          Method* m = _old_methods->at(j);
           tty->print("%4d  (%5d)  ", j, m->vtable_index());
           m->access_flags().print_on(tty);
           tty->print(" --  ");
@@ -3384,7 +3468,7 @@
         }
         tty->print_cr("_new_methods --");
         for (j = 0; j < _new_methods->length(); ++j) {
-          methodOop m = (methodOop) _new_methods->obj_at(j);
+          Method* m = _new_methods->at(j);
           tty->print("%4d  (%5d)  ", j, m->vtable_index());
           m->access_flags().print_on(tty);
           tty->print(" --  ");
@@ -3393,7 +3477,7 @@
         }
         tty->print_cr("_matching_(old/new)_methods --");
         for (j = 0; j < _matching_methods_length; ++j) {
-          methodOop m = _matching_old_methods[j];
+          Method* m = _matching_old_methods[j];
           tty->print("%4d  (%5d)  ", j, m->vtable_index());
           m->access_flags().print_on(tty);
           tty->print(" --  ");
@@ -3406,7 +3490,7 @@
         }
         tty->print_cr("_deleted_methods --");
         for (j = 0; j < _deleted_methods_length; ++j) {
-          methodOop m = _deleted_methods[j];
+          Method* m = _deleted_methods[j];
           tty->print("%4d  (%5d)  ", j, m->vtable_index());
           m->access_flags().print_on(tty);
           tty->print(" --  ");
@@ -3415,7 +3499,7 @@
         }
         tty->print_cr("_added_methods --");
         for (j = 0; j < _added_methods_length; ++j) {
-          methodOop m = _added_methods[j];
+          Method* m = _added_methods[j];
           tty->print("%4d  (%5d)  ", j, m->vtable_index());
           m->access_flags().print_on(tty);
           tty->print(" --  ");
--- a/src/share/vm/prims/jvmtiRedefineClasses.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiRedefineClasses.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -210,28 +210,23 @@
 // lazily resolved. Before explaining the copying complication, we need
 // to digress into CP entry resolution.
 //
-// JVM_CONSTANT_Class and JVM_CONSTANT_String entries are present in
-// the class file, but are not stored in memory as such until they are
-// resolved. The entries are not resolved unless they are used because
-// resolution is expensive. During class file parsing the entries are
-// initially stored in memory as JVM_CONSTANT_ClassIndex and
-// JVM_CONSTANT_StringIndex entries. These special CP entry types
-// indicate that the JVM_CONSTANT_Class and JVM_CONSTANT_String entries
-// have been parsed, but the index values in the entries have not been
+// JVM_CONSTANT_Class entries are present in the class file, but are not
+// stored in memory as such until they are resolved. The entries are not
+// resolved unless they are used because resolution is expensive. During class
+// file parsing the entries are initially stored in memory as
+// JVM_CONSTANT_ClassIndex and JVM_CONSTANT_StringIndex entries. These special
+// CP entry types indicate that the JVM_CONSTANT_Class and JVM_CONSTANT_String
+// entries have been parsed, but the index values in the entries have not been
 // validated. After the entire constant pool has been parsed, the index
 // values can be validated and then the entries are converted into
-// JVM_CONSTANT_UnresolvedClass and JVM_CONSTANT_UnresolvedString
+// JVM_CONSTANT_UnresolvedClass and JVM_CONSTANT_String
 // entries. During this conversion process, the UTF8 values that are
 // indirectly referenced by the JVM_CONSTANT_ClassIndex and
 // JVM_CONSTANT_StringIndex entries are changed into Symbol*s and the
 // entries are modified to refer to the Symbol*s. This optimization
 // eliminates one level of indirection for those two CP entry types and
-// gets the entries ready for verification. During class file parsing
-// it is also possible for JVM_CONSTANT_UnresolvedString entries to be
-// resolved into JVM_CONSTANT_String entries. Verification expects to
-// find JVM_CONSTANT_UnresolvedClass and either JVM_CONSTANT_String or
-// JVM_CONSTANT_UnresolvedString entries and not JVM_CONSTANT_Class
-// entries.
+// gets the entries ready for verification.  Verification expects to
+// find JVM_CONSTANT_UnresolvedClass but not JVM_CONSTANT_Class entries.
 //
 // Now we can get back to the copying complication. When we copy
 // entries from old_cp to merge_cp, we have to revert any
@@ -260,9 +255,9 @@
 // in merge_cp, then the change in index value is tracked.
 //
 // Note: the above discussion for the direct CP entries also applies
-// to the JVM_CONSTANT_Unresolved{Class,String} entry types.
+// to the JVM_CONSTANT_UnresolvedClass entry types.
 //
-// For the JVM_CONSTANT_{Class,String} entry types, since there is only
+// For the JVM_CONSTANT_Class entry types, since there is only
 // one data element at the end of the recursion, we know that we have
 // either one or two unique entries. If the JVM_CONSTANT_Utf8 entry is
 // unique then it is appended to merge_cp before the current entry.
@@ -271,9 +266,9 @@
 // appended to merge_cp. Again, any changes in index values are tracked
 // as needed.
 //
-// Note: the above discussion for JVM_CONSTANT_{Class,String} entry
+// Note: the above discussion for JVM_CONSTANT_Class entry
 // types is theoretical. Since those entry types have already been
-// optimized into JVM_CONSTANT_Unresolved{Class,String} entry types,
+// optimized into JVM_CONSTANT_UnresolvedClass entry types,
 // they are handled as direct CP entries.
 //
 // For the JVM_CONSTANT_NameAndType entry type, since there are two
@@ -320,17 +315,11 @@
 //   6 bytes. Perhaps Relocator only needs a 4 byte buffer to do
 //   what it does to the bytecodes. More investigation is needed.
 //
-// - java.lang.Object methods can be called on arrays. This is
-//   implemented via the arrayKlassOop vtable which we don't
-//   update. For example, if we redefine java.lang.Object.toString(),
-//   then the new version of the method will not be called for array
-//   objects.
-//
 // - How do we know if redefine_single_class() and the guts of
-//   instanceKlass are out of sync? I don't think this can be
+//   InstanceKlass are out of sync? I don't think this can be
 //   automated, but we should probably order the work in
 //   redefine_single_class() to match the order of field
-//   definitions in instanceKlass. We also need to add some
+//   definitions in InstanceKlass. We also need to add some
 //   comments about keeping things in sync.
 //
 // - set_new_constant_pool() is huge and we should consider refactoring
@@ -346,16 +335,16 @@
  private:
   // These static fields are needed by SystemDictionary::classes_do()
   // facility and the adjust_cpool_cache_and_vtable() helper:
-  static objArrayOop     _old_methods;
-  static objArrayOop     _new_methods;
-  static methodOop*      _matching_old_methods;
-  static methodOop*      _matching_new_methods;
-  static methodOop*      _deleted_methods;
-  static methodOop*      _added_methods;
+  static Array<Method*>* _old_methods;
+  static Array<Method*>* _new_methods;
+  static Method**      _matching_old_methods;
+  static Method**      _matching_new_methods;
+  static Method**      _deleted_methods;
+  static Method**      _added_methods;
   static int             _matching_methods_length;
   static int             _deleted_methods_length;
   static int             _added_methods_length;
-  static klassOop        _the_class_oop;
+  static Klass*          _the_class_oop;
 
   // The instance fields are used to pass information from
   // doit_prologue() to doit() and doit_epilogue().
@@ -371,7 +360,7 @@
   int                         _index_map_count;
   intArray *                  _index_map_p;
   // ptr to _class_count scratch_classes
-  instanceKlassHandle *       _scratch_classes;
+  Klass**                   _scratch_classes;
   jvmtiError                  _res;
 
   // Performance measurement support. These timers do not cover all
@@ -398,7 +387,7 @@
   // Swap annotations[i] with annotations[j]
   // Used by compare_and_normalize_class_versions() when normalizing
   // overloaded methods or changing idnum as when adding or deleting methods.
-  void swap_all_method_annotations(int i, int j, instanceKlassHandle scratch_class);
+  void swap_all_method_annotations(int i, int j, instanceKlassHandle scratch_class, TRAPS);
 
   // Figure out which new methods match old methods in name and signature,
   // which methods have been added, and which are no longer present
@@ -421,15 +410,16 @@
   // from their constant pool caches, itables, and/or vtables. We
   // use the SystemDictionary::classes_do() facility and this helper
   // to fix up these pointers.
-  static void adjust_cpool_cache_and_vtable(klassOop k_oop, oop loader, TRAPS);
+  static void adjust_cpool_cache_and_vtable(Klass* k_oop, ClassLoaderData* initiating_loader, TRAPS);
+  static void adjust_array_vtable(Klass* k_oop);
 
   // Install the redefinition of a class
   void redefine_single_class(jclass the_jclass,
-    instanceKlassHandle scratch_class, TRAPS);
+    Klass* scratch_class_oop, TRAPS);
 
-  // Increment the classRedefinedCount field in the specific instanceKlass
+  // Increment the classRedefinedCount field in the specific InstanceKlass
   // and in all direct and indirect subclasses.
-  void increment_class_counter(instanceKlass *ik, TRAPS);
+  void increment_class_counter(InstanceKlass *ik, TRAPS);
 
   // Support for constant pool merging (these routines are in alpha
   // order):
@@ -438,8 +428,6 @@
   int find_new_index(int old_index);
   bool is_unresolved_class_mismatch(constantPoolHandle cp1, int index1,
     constantPoolHandle cp2, int index2);
-  bool is_unresolved_string_mismatch(constantPoolHandle cp1, int index1,
-    constantPoolHandle cp2, int index2);
   void map_index(constantPoolHandle scratch_cp, int old_index, int new_index);
   bool merge_constant_pools(constantPoolHandle old_cp,
     constantPoolHandle scratch_cp, constantPoolHandle *merge_cp_p,
@@ -447,17 +435,17 @@
   jvmtiError merge_cp_and_rewrite(instanceKlassHandle the_class,
     instanceKlassHandle scratch_class, TRAPS);
   u2 rewrite_cp_ref_in_annotation_data(
-    typeArrayHandle annotations_typeArray, int &byte_i_ref,
+    AnnotationArray* annotations_typeArray, int &byte_i_ref,
     const char * trace_mesg, TRAPS);
   bool rewrite_cp_refs(instanceKlassHandle scratch_class, TRAPS);
   bool rewrite_cp_refs_in_annotation_struct(
-    typeArrayHandle class_annotations, int &byte_i_ref, TRAPS);
+    AnnotationArray* class_annotations, int &byte_i_ref, TRAPS);
   bool rewrite_cp_refs_in_annotations_typeArray(
-    typeArrayHandle annotations_typeArray, int &byte_i_ref, TRAPS);
+    AnnotationArray* annotations_typeArray, int &byte_i_ref, TRAPS);
   bool rewrite_cp_refs_in_class_annotations(
     instanceKlassHandle scratch_class, TRAPS);
   bool rewrite_cp_refs_in_element_value(
-    typeArrayHandle class_annotations, int &byte_i_ref, TRAPS);
+    AnnotationArray* class_annotations, int &byte_i_ref, TRAPS);
   bool rewrite_cp_refs_in_fields_annotations(
     instanceKlassHandle scratch_class, TRAPS);
   void rewrite_cp_refs_in_method(methodHandle method,
@@ -473,12 +461,13 @@
   void rewrite_cp_refs_in_verification_type_info(
          address& stackmap_addr_ref, address stackmap_end, u2 frame_i,
          u1 frame_size, TRAPS);
-  void set_new_constant_pool(instanceKlassHandle scratch_class,
-    constantPoolHandle scratch_cp, int scratch_cp_length, bool shrink, TRAPS);
+  void set_new_constant_pool(ClassLoaderData* loader_data,
+         instanceKlassHandle scratch_class,
+         constantPoolHandle scratch_cp, int scratch_cp_length, TRAPS);
 
   void flush_dependent_code(instanceKlassHandle k_h, TRAPS);
 
-  static void check_class(klassOop k_oop, oop initiating_loader, TRAPS) PRODUCT_RETURN;
+  static void check_class(Klass* k_oop, ClassLoaderData* initiating_loader, TRAPS) PRODUCT_RETURN;
 
   static void dump_methods()   PRODUCT_RETURN;
 
@@ -499,4 +488,16 @@
   static bool is_modifiable_class(oop klass_mirror);
 };
 
+
+// Helper class to mark and unmark metadata used on the stack as either handles
+// or executing methods, so that it can't be deleted during class redefinition
+// and class unloading.
+class MetadataOnStackMark : public StackObj {
+  NOT_PRODUCT(static bool _is_active;)
+ public:
+  MetadataOnStackMark();
+  ~MetadataOnStackMark();
+  static void record(Metadata* m);
+};
+
 #endif // SHARE_VM_PRIMS_JVMTIREDEFINECLASSES_HPP
--- a/src/share/vm/prims/jvmtiTagMap.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiTagMap.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -533,17 +533,6 @@
   }
 }
 
-// If the object is a java.lang.Class then return the klassOop,
-// otherwise return the original object
-static inline oop klassOop_if_java_lang_Class(oop o) {
-  if (o->klass() == SystemDictionary::Class_klass()) {
-    if (!java_lang_Class::is_primitive(o)) {
-      o = (oop)java_lang_Class::as_klassOop(o);
-      assert(o != NULL, "class for non-primitive mirror must exist");
-    }
-  }
-  return o;
-}
 
 // A CallbackWrapper is a support class for querying and tagging an object
 // around a callback to a profiler. The constructor does pre-callback
@@ -567,7 +556,6 @@
   oop _o;
   jlong _obj_size;
   jlong _obj_tag;
-  klassOop _klass;         // the object's class
   jlong _klass_tag;
 
  protected:
@@ -581,8 +569,8 @@
     assert(Thread::current()->is_VM_thread() || tag_map->is_locked(),
            "MT unsafe or must be VM thread");
 
-    // for Classes the klassOop is tagged
-    _o = klassOop_if_java_lang_Class(o);
+    // object to tag
+    _o = o;
 
     // object size
     _obj_size = (jlong)_o->size() * wordSize;
@@ -596,14 +584,9 @@
     _obj_tag = (_entry == NULL) ? 0 : _entry->tag();
 
     // get the class and the class's tag value
-    if (_o == o) {
-      _klass = _o->klass();
-    } else {
-      // if the object represents a runtime class then use the
-      // tag for java.lang.Class
-      _klass = SystemDictionary::Class_klass();
-    }
-    _klass_tag = tag_for(tag_map, _klass);
+    assert(SystemDictionary::Class_klass()->oop_is_instanceMirror(), "Is not?");
+
+    _klass_tag = tag_for(tag_map, _o->klass()->java_mirror());
   }
 
   ~CallbackWrapper() {
@@ -613,7 +596,6 @@
   inline jlong* obj_tag_p()                     { return &_obj_tag; }
   inline jlong obj_size() const                 { return _obj_size; }
   inline jlong obj_tag() const                  { return _obj_tag; }
-  inline klassOop klass() const                 { return _klass; }
   inline jlong klass_tag() const                { return _klass_tag; }
 };
 
@@ -686,8 +668,7 @@
       _referrer_klass_tag = klass_tag();
       _referrer_tag_p = obj_tag_p();
     } else {
-      // for Classes the klassOop is tagged
-      _referrer = klassOop_if_java_lang_Class(referrer);
+      _referrer = referrer;
       // record the context
       _referrer_hashmap = tag_map->hashmap();
       _referrer_entry = _referrer_hashmap->find(_referrer);
@@ -697,10 +678,7 @@
       _referrer_tag_p = &_referrer_obj_tag;
 
       // get referrer class tag.
-      klassOop k = (_referrer == referrer) ?  // Check if referrer is a class...
-          _referrer->klass()                  // No, just get its class
-         : SystemDictionary::Class_klass();   // Yes, its class is Class
-      _referrer_klass_tag = tag_for(tag_map, k);
+      _referrer_klass_tag = tag_for(tag_map, _referrer->klass()->java_mirror());
     }
   }
 
@@ -732,9 +710,6 @@
   // resolve the object
   oop o = JNIHandles::resolve_non_null(object);
 
-  // for Classes we tag the klassOop
-  o = klassOop_if_java_lang_Class(o);
-
   // see if the object is already tagged
   JvmtiTagHashmap* hashmap = _hashmap;
   JvmtiTagHashmapEntry* entry = hashmap->find(o);
@@ -767,8 +742,7 @@
   // resolve the object
   oop o = JNIHandles::resolve_non_null(object);
 
-  // for Classes get the tag from the klassOop
-  return tag_for(this, klassOop_if_java_lang_Class(o));
+  return tag_for(this, o);
 }
 
 
@@ -816,7 +790,7 @@
   ClassFieldDescriptor* field_at(int i) { return _fields->at(i); }
 
   // functions to create maps of static or instance fields
-  static ClassFieldMap* create_map_of_static_fields(klassOop k);
+  static ClassFieldMap* create_map_of_static_fields(Klass* k);
   static ClassFieldMap* create_map_of_instance_fields(oop obj);
 };
 
@@ -840,7 +814,7 @@
 // Returns a heap allocated ClassFieldMap to describe the static fields
 // of the given class.
 //
-ClassFieldMap* ClassFieldMap::create_map_of_static_fields(klassOop k) {
+ClassFieldMap* ClassFieldMap::create_map_of_static_fields(Klass* k) {
   HandleMark hm;
   instanceKlassHandle ikh = instanceKlassHandle(Thread::current(), k);
 
@@ -889,7 +863,7 @@
 }
 
 // Helper class used to cache a ClassFileMap for the instance fields of
-// a cache. A JvmtiCachedClassFieldMap can be cached by an instanceKlass during
+// a cache. A JvmtiCachedClassFieldMap can be cached by an InstanceKlass during
 // heap iteration and avoid creating a field map for each object in the heap
 // (only need to create the map when the first instance of a class is encountered).
 //
@@ -905,12 +879,12 @@
   JvmtiCachedClassFieldMap(ClassFieldMap* field_map);
   ~JvmtiCachedClassFieldMap();
 
-  static GrowableArray<instanceKlass*>* _class_list;
-  static void add_to_class_list(instanceKlass* ik);
+  static GrowableArray<InstanceKlass*>* _class_list;
+  static void add_to_class_list(InstanceKlass* ik);
 
  public:
   // returns the field map for a given object (returning map cached
-  // by instanceKlass if possible
+  // by InstanceKlass if possible
   static ClassFieldMap* get_map_of_instance_fields(oop obj);
 
   // removes the field map from all instanceKlasses - should be
@@ -921,7 +895,7 @@
   static int cached_field_map_count();
 };
 
-GrowableArray<instanceKlass*>* JvmtiCachedClassFieldMap::_class_list;
+GrowableArray<InstanceKlass*>* JvmtiCachedClassFieldMap::_class_list;
 
 JvmtiCachedClassFieldMap::JvmtiCachedClassFieldMap(ClassFieldMap* field_map) {
   _field_map = field_map;
@@ -955,23 +929,23 @@
 bool ClassFieldMapCacheMark::_is_active;
 
 
-// record that the given instanceKlass is caching a field map
-void JvmtiCachedClassFieldMap::add_to_class_list(instanceKlass* ik) {
+// record that the given InstanceKlass is caching a field map
+void JvmtiCachedClassFieldMap::add_to_class_list(InstanceKlass* ik) {
   if (_class_list == NULL) {
     _class_list = new (ResourceObj::C_HEAP, mtInternal)
-      GrowableArray<instanceKlass*>(initial_class_count, true);
+      GrowableArray<InstanceKlass*>(initial_class_count, true);
   }
   _class_list->push(ik);
 }
 
 // returns the instance field map for the given object
-// (returns field map cached by the instanceKlass if possible)
+// (returns field map cached by the InstanceKlass if possible)
 ClassFieldMap* JvmtiCachedClassFieldMap::get_map_of_instance_fields(oop obj) {
   assert(Thread::current()->is_VM_thread(), "must be VMThread");
   assert(ClassFieldMapCacheMark::is_active(), "ClassFieldMapCacheMark not active");
 
-  klassOop k = obj->klass();
-  instanceKlass* ik = instanceKlass::cast(k);
+  Klass* k = obj->klass();
+  InstanceKlass* ik = InstanceKlass::cast(k);
 
   // return cached map if possible
   JvmtiCachedClassFieldMap* cached_map = ik->jvmti_cached_class_field_map();
@@ -992,7 +966,7 @@
   assert(Thread::current()->is_VM_thread(), "must be VMThread");
   if (_class_list != NULL) {
     for (int i = 0; i < _class_list->length(); i++) {
-      instanceKlass* ik = _class_list->at(i);
+      InstanceKlass* ik = _class_list->at(i);
       JvmtiCachedClassFieldMap* cached_map = ik->jvmti_cached_class_field_map();
       assert(cached_map != NULL, "should not be NULL");
       ik->set_jvmti_cached_class_field_map(NULL);
@@ -1131,8 +1105,7 @@
   if (java_lang_Class::is_primitive(obj)) {
     return 0;
   }
-  klassOop k = java_lang_Class::as_klassOop(obj);
-  Klass* klass = k->klass_part();
+  Klass* klass = java_lang_Class::as_Klass(obj);
 
   // ignore classes for object and type arrays
   if (!klass->oop_is_instance()) {
@@ -1140,13 +1113,13 @@
   }
 
   // ignore classes which aren't linked yet
-  instanceKlass* ik = instanceKlass::cast(k);
+  InstanceKlass* ik = InstanceKlass::cast(klass);
   if (!ik->is_linked()) {
     return 0;
   }
 
   // get the field map
-  ClassFieldMap* field_map = ClassFieldMap::create_map_of_static_fields(k);
+  ClassFieldMap* field_map = ClassFieldMap::create_map_of_static_fields(klass);
 
   // invoke the callback for each static primitive field
   for (int i=0; i<field_map->field_count(); i++) {
@@ -1162,7 +1135,7 @@
 
     // get offset and field value
     int offset = field->field_offset();
-    address addr = (address)k + offset;
+    address addr = (address)klass + offset;
     jvalue value;
     copy_to_jvalue(&value, addr, value_type);
 
@@ -1265,14 +1238,6 @@
     // consider using safe_object_iterate() which avoids perm gen
     // objects that may contain bad references.
     Universe::heap()->object_iterate(_blk);
-
-    // when sharing is enabled we must iterate over the shared spaces
-    if (UseSharedSpaces) {
-      GenCollectedHeap* gch = GenCollectedHeap::heap();
-      CompactingPermGenGen* gen = (CompactingPermGenGen*)gch->perm_gen();
-      gen->ro_space()->object_iterate(_blk);
-      gen->rw_space()->object_iterate(_blk);
-    }
   }
 
 };
@@ -1545,14 +1510,7 @@
     for (int i=0; i<_tag_count; i++) {
       if (_tags[i] == entry->tag()) {
         oop o = entry->object();
-        assert(o != NULL, "sanity check");
-
-        // the mirror is tagged
-        if (o->is_klass()) {
-          klassOop k = (klassOop)o;
-          o = Klass::cast(k)->java_mirror();
-        }
-
+        assert(o != NULL && Universe::heap()->is_in_reserved(o), "sanity check");
         jobject ref = JNIHandles::make_local(JavaThread::current(), o);
         _object_results->append(ref);
         _tag_results->append((uint64_t)entry->tag());
@@ -1695,14 +1653,6 @@
     set_needs_reset(true);
   }
 
-  // When sharing is enabled we need to restore the headers of the objects
-  // in the readwrite space too.
-  if (UseSharedSpaces) {
-    GenCollectedHeap* gch = GenCollectedHeap::heap();
-    CompactingPermGenGen* gen = (CompactingPermGenGen*)gch->perm_gen();
-    gen->rw_space()->object_iterate(&blk);
-  }
-
   // now restore the interesting headers
   for (int i = 0; i < _saved_oop_stack->length(); i++) {
     oop o = _saved_oop_stack->at(i);
@@ -2069,7 +2019,7 @@
   if (referrer == context->last_referrer()) {
     referrer_tag = context->last_referrer_tag();
   } else {
-    referrer_tag = tag_for(tag_map(), klassOop_if_java_lang_Class(referrer));
+    referrer_tag = tag_for(tag_map(), referrer);
   }
 
   // do the callback
@@ -2602,23 +2552,14 @@
       return;
     }
 
+    assert(Universe::heap()->is_in_reserved(o), "should be impossible");
+
     jvmtiHeapReferenceKind kind = root_kind();
-
-    // many roots are Klasses so we use the java mirror
-    if (o->is_klass()) {
-      klassOop k = (klassOop)o;
-      o = Klass::cast(k)->java_mirror();
-      if (o == NULL) {
-        // Classes without mirrors don't correspond to real Java
-        // classes so just ignore them.
-        return;
-      }
-    } else {
-
+    if (kind == JVMTI_HEAP_REFERENCE_SYSTEM_CLASS) {
       // SystemDictionary::always_strong_oops_do reports the application
       // class loader as a root. We want this root to be reported as
       // a root kind of "OTHER" rather than "SYSTEM_CLASS".
-      if (o->is_instance() && root_kind() == JVMTI_HEAP_REFERENCE_SYSTEM_CLASS) {
+      if (!o->is_instanceMirror()) {
         kind = JVMTI_HEAP_REFERENCE_OTHER;
       }
     }
@@ -2733,7 +2674,7 @@
   // iterate over the various object types
   inline bool iterate_over_array(oop o);
   inline bool iterate_over_type_array(oop o);
-  inline bool iterate_over_class(klassOop o);
+  inline bool iterate_over_class(oop o);
   inline bool iterate_over_object(oop o);
 
   // root collection
@@ -2807,10 +2748,6 @@
 // each element in the array
 inline bool VM_HeapWalkOperation::iterate_over_array(oop o) {
   objArrayOop array = objArrayOop(o);
-  if (array->klass() == Universe::systemObjArrayKlassObj()) {
-    // filtered out
-    return true;
-  }
 
   // array reference to its class
   oop mirror = objArrayKlass::cast(array->klass())->java_mirror();
@@ -2836,7 +2773,7 @@
 
 // a type array references its class
 inline bool VM_HeapWalkOperation::iterate_over_type_array(oop o) {
-  klassOop k = o->klass();
+  Klass* k = o->klass();
   oop mirror = Klass::cast(k)->java_mirror();
   if (!CallbackInvoker::report_class_reference(o, mirror)) {
     return false;
@@ -2852,10 +2789,10 @@
 }
 
 // verify that a static oop field is in range
-static inline bool verify_static_oop(instanceKlass* ik,
+static inline bool verify_static_oop(InstanceKlass* ik,
                                      oop mirror, int offset) {
   address obj_p = (address)mirror + offset;
-  address start = (address)instanceMirrorKlass::start_of_static_fields(mirror);
+  address start = (address)InstanceMirrorKlass::start_of_static_fields(mirror);
   address end = start + (java_lang_Class::static_oop_field_count(mirror) * heapOopSize);
   assert(end >= start, "sanity check");
 
@@ -2868,12 +2805,12 @@
 
 // a class references its super class, interfaces, class loader, ...
 // and finally its static fields
-inline bool VM_HeapWalkOperation::iterate_over_class(klassOop k) {
+inline bool VM_HeapWalkOperation::iterate_over_class(oop java_class) {
   int i;
-  Klass* klass = klassOop(k)->klass_part();
+  Klass* klass = java_lang_Class::as_Klass(java_class);
 
   if (klass->oop_is_instance()) {
-    instanceKlass* ik = instanceKlass::cast(k);
+    InstanceKlass* ik = InstanceKlass::cast(klass);
 
     // ignore the class if it's has been initialized yet
     if (!ik->is_linked()) {
@@ -2884,7 +2821,7 @@
     oop mirror = klass->java_mirror();
 
     // super (only if something more interesting than java.lang.Object)
-    klassOop java_super = ik->java_super();
+    Klass* java_super = ik->java_super();
     if (java_super != NULL && java_super != SystemDictionary::Object_klass()) {
       oop super = Klass::cast(java_super)->java_mirror();
       if (!CallbackInvoker::report_superclass_reference(mirror, super)) {
@@ -2918,13 +2855,15 @@
 
     // references from the constant pool
     {
-      const constantPoolOop pool = ik->constants();
+      ConstantPool* const pool = ik->constants();
       for (int i = 1; i < pool->length(); i++) {
         constantTag tag = pool->tag_at(i).value();
         if (tag.is_string() || tag.is_klass()) {
           oop entry;
           if (tag.is_string()) {
             entry = pool->resolved_string_at(i);
+            // If the entry is non-null it it resolved.
+            if (entry == NULL) continue;
             assert(java_lang_String::is_instance(entry), "must be string");
           } else {
             entry = Klass::cast(pool->resolved_klass_at(i))->java_mirror();
@@ -2939,9 +2878,9 @@
     // interfaces
     // (These will already have been reported as references from the constant pool
     //  but are specified by IterateOverReachableObjects and must be reported).
-    objArrayOop interfaces = ik->local_interfaces();
+    Array<Klass*>* interfaces = ik->local_interfaces();
     for (i = 0; i < interfaces->length(); i++) {
-      oop interf = Klass::cast((klassOop)interfaces->obj_at(i))->java_mirror();
+      oop interf = Klass::cast((Klass*)interfaces->at(i))->java_mirror();
       if (interf == NULL) {
         continue;
       }
@@ -2952,7 +2891,7 @@
 
     // iterate over the static fields
 
-    ClassFieldMap* field_map = ClassFieldMap::create_map_of_static_fields(k);
+    ClassFieldMap* field_map = ClassFieldMap::create_map_of_static_fields(klass);
     for (i=0; i<field_map->field_count(); i++) {
       ClassFieldDescriptor* field = field_map->field_at(i);
       char type = field->field_type();
@@ -3003,12 +2942,8 @@
       oop fld_o = o->obj_field(field->field_offset());
       // ignore any objects that aren't visible to profiler
       if (fld_o != NULL && ServiceUtil::visible_oop(fld_o)) {
-        // reflection code may have a reference to a klassOop.
-        // - see sun.reflect.UnsafeStaticFieldAccessorImpl and sun.misc.Unsafe
-        if (fld_o->is_klass()) {
-          klassOop k = (klassOop)fld_o;
-          fld_o = Klass::cast(k)->java_mirror();
-        }
+        assert(Universe::heap()->is_in_reserved(fld_o), "unsafe code should not "
+               "have references to Klass* anymore");
         int slot = field->field_index();
         if (!CallbackInvoker::report_field_reference(o, fld_o, slot)) {
           return false;
@@ -3058,6 +2993,8 @@
   // Preloaded classes and loader from the system dictionary
   blk.set_kind(JVMTI_HEAP_REFERENCE_SYSTEM_CLASS);
   SystemDictionary::always_strong_oops_do(&blk);
+  KlassToOopClosure klass_blk(&blk);
+  ClassLoaderDataGraph::always_strong_oops_do(&blk, &klass_blk, false);
   if (blk.stopped()) {
     return false;
   }
@@ -3213,10 +3150,9 @@
   // instance
   if (o->is_instance()) {
     if (o->klass() == SystemDictionary::Class_klass()) {
-      o = klassOop_if_java_lang_Class(o);
-      if (o->is_klass()) {
+      if (!java_lang_Class::is_primitive(o)) {
         // a java.lang.Class
-        return iterate_over_class(klassOop(o));
+        return iterate_over_class(o);
       }
     } else {
       return iterate_over_object(o);
--- a/src/share/vm/prims/jvmtiThreadState.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiThreadState.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -229,7 +229,7 @@
   // tty->print_cr("CSD: counting frames on %s ...",
   //               JvmtiTrace::safe_get_thread_name(get_thread()));
   while (jvf != NULL) {
-    methodOop method = jvf->method();
+    Method* method = jvf->method();
     // tty->print_cr("CSD: frame - method %s.%s - loc %d",
     //               method->klass_name()->as_C_string(),
     //               method->name()->as_C_string(),
--- a/src/share/vm/prims/jvmtiThreadState.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiThreadState.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -249,8 +249,8 @@
   //   The jclass is always pointing to the mirror of _the_class.
   //   ~28 JVM_* functions called by the verifier for the information
   //   about CP entries and klass structure should check the jvmtiThreadState
-  //   info about equivalent klass versions and use it to replace a klassOop
-  //   of _the_class with a klassOop of _scratch_class. The function
+  //   info about equivalent klass versions and use it to replace a Klass*
+  //   of _the_class with a Klass* of _scratch_class. The function
   //   class_to_verify_considering_redefinition() must be called for it.
   //
   //   Note again, that this redirection happens only for the verifier thread.
@@ -274,7 +274,7 @@
   inline void clear_class_versions_map() { set_class_versions_map(NULL, NULL); }
 
   static inline
-  klassOop class_to_verify_considering_redefinition(klassOop klass,
+  Klass* class_to_verify_considering_redefinition(Klass* klass,
                                                     JavaThread *thread) {
     JvmtiThreadState *state = thread->jvmti_thread_state();
     if (state != NULL && state->_the_class_for_redefinition_verification != NULL) {
@@ -400,16 +400,22 @@
 class RedefineVerifyMark : public StackObj {
  private:
   JvmtiThreadState *_state;
+  KlassHandle       _scratch_class;
+  Handle            _scratch_mirror;
 
  public:
   RedefineVerifyMark(KlassHandle *the_class, KlassHandle *scratch_class,
-                     JvmtiThreadState *state) : _state(state)
+                     JvmtiThreadState *state) : _state(state), _scratch_class(*scratch_class)
   {
     _state->set_class_versions_map(the_class, scratch_class);
+    _scratch_mirror = Handle(_scratch_class->java_mirror());
     (*scratch_class)->set_java_mirror((*the_class)->java_mirror());
   }
 
   ~RedefineVerifyMark() {
+    // Restore the scratch class's mirror, so when scratch_class is removed
+    // the correct mirror pointing to it can be cleared.
+    _scratch_class->set_java_mirror(_scratch_mirror());
     _state->clear_class_versions_map();
   }
 };
--- a/src/share/vm/prims/jvmtiTrace.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/jvmtiTrace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -288,7 +288,7 @@
   if (java_lang_Class::is_primitive(k_mirror)) {
     return "primitive";
   }
-  klassOop k_oop = java_lang_Class::as_klassOop(k_mirror);
+  Klass* k_oop = java_lang_Class::as_Klass(k_mirror);
   if (k_oop == NULL) {
     return "INVALID";
   }
--- a/src/share/vm/prims/methodComparator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/methodComparator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -32,13 +32,13 @@
 
 BytecodeStream *MethodComparator::_s_old;
 BytecodeStream *MethodComparator::_s_new;
-constantPoolOop MethodComparator::_old_cp;
-constantPoolOop MethodComparator::_new_cp;
+ConstantPool* MethodComparator::_old_cp;
+ConstantPool* MethodComparator::_new_cp;
 BciMap *MethodComparator::_bci_map;
 bool MethodComparator::_switchable_test;
 GrowableArray<int> *MethodComparator::_fwd_jmps;
 
-bool MethodComparator::methods_EMCP(methodOop old_method, methodOop new_method) {
+bool MethodComparator::methods_EMCP(Method* old_method, Method* new_method) {
   if (old_method->code_size() != new_method->code_size())
     return false;
   if (check_stack_and_locals_size(old_method, new_method) != 0) {
@@ -69,7 +69,7 @@
 }
 
 
-bool MethodComparator::methods_switchable(methodOop old_method, methodOop new_method,
+bool MethodComparator::methods_switchable(Method* old_method, Method* new_method,
                                           BciMap &bci_map) {
   if (old_method->code_size() > new_method->code_size())
     // Something has definitely been deleted in the new method, compared to the old one.
@@ -167,14 +167,20 @@
   case Bytecodes::_invokedynamic: {
     int cpci_old = _s_old->get_index_u4();
     int cpci_new = _s_new->get_index_u4();
+
     // Check if the names of classes, field/method names and signatures at these indexes
     // are the same. Indices which are really into constantpool cache (rather than constant
     // pool itself) are accepted by the constantpool query routines below.
     if ((_old_cp->name_ref_at(cpci_old) != _new_cp->name_ref_at(cpci_new)) ||
         (_old_cp->signature_ref_at(cpci_old) != _new_cp->signature_ref_at(cpci_new)))
       return false;
-    int cpi_old = _old_cp->cache()->main_entry_at(cpci_old)->constant_pool_index();
-    int cpi_new = _new_cp->cache()->main_entry_at(cpci_new)->constant_pool_index();
+
+    // Translate object indexes to constant pool cache indexes.
+    cpci_old = _old_cp->invokedynamic_cp_cache_index(cpci_old);
+    cpci_new = _new_cp->invokedynamic_cp_cache_index(cpci_new);
+
+    int cpi_old = _old_cp->cache()->entry_at(cpci_old)->constant_pool_index();
+    int cpi_new = _new_cp->cache()->entry_at(cpci_new)->constant_pool_index();
     int bsm_old = _old_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_old);
     int bsm_new = _new_cp->invoke_dynamic_bootstrap_method_ref_index_at(cpi_new);
     if (!pool_constants_same(bsm_old, bsm_new))
@@ -395,9 +401,7 @@
       if (jint_cast(_old_cp->float_at(cpi_old)) != jint_cast(_new_cp->float_at(cpi_new)))
         return false;
     }
-  } else if (tag_old.is_string() || tag_old.is_unresolved_string()) {
-    if (! (tag_new.is_unresolved_string() || tag_new.is_string()))
-      return false;
+  } else if (tag_old.is_string() && tag_new.is_string()) {
     if (strcmp(_old_cp->string_at_noresolve(cpi_old),
                _new_cp->string_at_noresolve(cpi_new)) != 0)
       return false;
@@ -430,7 +434,7 @@
 }
 
 
-int MethodComparator::check_stack_and_locals_size(methodOop old_method, methodOop new_method) {
+int MethodComparator::check_stack_and_locals_size(Method* old_method, Method* new_method) {
   if (old_method->max_stack() != new_method->max_stack()) {
     return 1;
   } else if (old_method->max_locals() != new_method->max_locals()) {
--- a/src/share/vm/prims/methodComparator.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/methodComparator.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -26,8 +26,8 @@
 #define SHARE_VM_PRIMS_METHODCOMPARATOR_HPP
 
 #include "interpreter/bytecodeStream.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/method.hpp"
 
 class BciMap;
 
@@ -37,14 +37,15 @@
 class MethodComparator {
  private:
   static BytecodeStream *_s_old, *_s_new;
-  static constantPoolOop _old_cp, _new_cp;
+  static ConstantPool* _old_cp;
+  static ConstantPool* _new_cp;
   static BciMap *_bci_map;
   static bool _switchable_test;
   static GrowableArray<int> *_fwd_jmps;
 
   static bool args_same(Bytecodes::Code c_old, Bytecodes::Code c_new);
   static bool pool_constants_same(int cpi_old, int cpi_new);
-  static int check_stack_and_locals_size(methodOop old_method, methodOop new_method);
+  static int check_stack_and_locals_size(Method* old_method, Method* new_method);
 
  public:
   // Check if the new method is equivalent to the old one modulo constant pool (EMCP).
@@ -52,9 +53,9 @@
   // on the source code level. Practically, we check whether the only difference between
   // method versions is some constantpool indices embedded into the bytecodes, and whether
   // these indices eventually point to the same constants for both method versions.
-  static bool methods_EMCP(methodOop old_method, methodOop new_method);
+  static bool methods_EMCP(Method* old_method, Method* new_method);
 
-  static bool methods_switchable(methodOop old_method, methodOop new_method, BciMap &bci_map);
+  static bool methods_switchable(Method* old_method, Method* new_method, BciMap &bci_map);
 };
 
 
--- a/src/share/vm/prims/methodHandles.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/methodHandles.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -124,49 +124,49 @@
 }
 
 oop MethodHandles::init_MemberName(oop mname_oop, oop target_oop) {
-  klassOop target_klass = target_oop->klass();
+  Klass* target_klass = target_oop->klass();
   if (target_klass == SystemDictionary::reflect_Field_klass()) {
     oop clazz = java_lang_reflect_Field::clazz(target_oop); // fd.field_holder()
     int slot  = java_lang_reflect_Field::slot(target_oop);  // fd.index()
     int mods  = java_lang_reflect_Field::modifiers(target_oop);
     oop type  = java_lang_reflect_Field::type(target_oop);
     oop name  = java_lang_reflect_Field::name(target_oop);
-    klassOop k = java_lang_Class::as_klassOop(clazz);
-    intptr_t offset = instanceKlass::cast(k)->field_offset(slot);
+    Klass* k = java_lang_Class::as_Klass(clazz);
+    intptr_t offset = InstanceKlass::cast(k)->field_offset(slot);
     return init_field_MemberName(mname_oop, k, accessFlags_from(mods), type, name, offset);
   } else if (target_klass == SystemDictionary::reflect_Method_klass()) {
     oop clazz  = java_lang_reflect_Method::clazz(target_oop);
     int slot   = java_lang_reflect_Method::slot(target_oop);
-    klassOop k = java_lang_Class::as_klassOop(clazz);
+    Klass* k = java_lang_Class::as_Klass(clazz);
     if (k != NULL && Klass::cast(k)->oop_is_instance()) {
-      methodOop m = instanceKlass::cast(k)->method_with_idnum(slot);
+      Method* m = InstanceKlass::cast(k)->method_with_idnum(slot);
       return init_method_MemberName(mname_oop, m, true, k);
     }
   } else if (target_klass == SystemDictionary::reflect_Constructor_klass()) {
     oop clazz  = java_lang_reflect_Constructor::clazz(target_oop);
     int slot   = java_lang_reflect_Constructor::slot(target_oop);
-    klassOop k = java_lang_Class::as_klassOop(clazz);
+    Klass* k = java_lang_Class::as_Klass(clazz);
     if (k != NULL && Klass::cast(k)->oop_is_instance()) {
-      methodOop m = instanceKlass::cast(k)->method_with_idnum(slot);
+      Method* m = InstanceKlass::cast(k)->method_with_idnum(slot);
       return init_method_MemberName(mname_oop, m, false, k);
     }
   } else if (target_klass == SystemDictionary::MemberName_klass()) {
     // Note: This only works if the MemberName has already been resolved.
     oop clazz        = java_lang_invoke_MemberName::clazz(target_oop);
     int flags        = java_lang_invoke_MemberName::flags(target_oop);
-    oop vmtarget     = java_lang_invoke_MemberName::vmtarget(target_oop);
+    Metadata* vmtarget=java_lang_invoke_MemberName::vmtarget(target_oop);
     intptr_t vmindex = java_lang_invoke_MemberName::vmindex(target_oop);
-    klassOop k       = java_lang_Class::as_klassOop(clazz);
+    Klass* k         = java_lang_Class::as_Klass(clazz);
     int ref_kind     = (flags >> REFERENCE_KIND_SHIFT) & REFERENCE_KIND_MASK;
     if (vmtarget == NULL)  return NULL;  // not resolved
     if ((flags & IS_FIELD) != 0) {
-      assert(vmtarget->is_klass(), "field vmtarget is klassOop");
+      assert(vmtarget->is_klass(), "field vmtarget is Klass*");
       int basic_mods = (ref_kind_is_static(ref_kind) ? JVM_ACC_STATIC : 0);
       // FIXME:  how does k (receiver_limit) contribute?
-      return init_field_MemberName(mname_oop, klassOop(vmtarget), accessFlags_from(basic_mods), NULL, NULL, vmindex);
+      return init_field_MemberName(mname_oop, (Klass*)vmtarget, accessFlags_from(basic_mods), NULL, NULL, vmindex);
     } else if ((flags & (IS_METHOD | IS_CONSTRUCTOR)) != 0) {
-      assert(vmtarget->is_method(), "method or constructor vmtarget is methodOop");
-      return init_method_MemberName(mname_oop, methodOop(vmtarget), ref_kind_does_dispatch(ref_kind), k);
+      assert(vmtarget->is_method(), "method or constructor vmtarget is Method*");
+      return init_method_MemberName(mname_oop, (Method*)vmtarget, ref_kind_does_dispatch(ref_kind), k);
     } else {
       return NULL;
     }
@@ -174,12 +174,12 @@
   return NULL;
 }
 
-oop MethodHandles::init_method_MemberName(oop mname_oop, methodOop m, bool do_dispatch,
-                                          klassOop receiver_limit) {
+oop MethodHandles::init_method_MemberName(oop mname_oop, Method* m, bool do_dispatch,
+                                          Klass* receiver_limit) {
   AccessFlags mods = m->access_flags();
   int flags = (jushort)( mods.as_short() & JVM_RECOGNIZED_METHOD_MODIFIERS );
-  int vmindex = methodOopDesc::nonvirtual_vtable_index; // implies never any dispatch
-  klassOop mklass = m->method_holder();
+  int vmindex = Method::nonvirtual_vtable_index; // implies never any dispatch
+  Klass* mklass = m->method_holder();
   if (receiver_limit == NULL)
     receiver_limit = mklass;
   if (m->is_initializer()) {
@@ -198,7 +198,7 @@
     flags |= IS_METHOD | (JVM_REF_invokeVirtual << REFERENCE_KIND_SHIFT);
     // it is a miranda method, so m->vtable_index is not what we want
     ResourceMark rm;
-    klassVtable* vt = instanceKlass::cast(receiver_limit)->vtable();
+    klassVtable* vt = InstanceKlass::cast(receiver_limit)->vtable();
     vmindex = vt->index_of_miranda(m->name(), m->signature());
   } else if (!do_dispatch || m->can_be_statically_bound()) {
     flags |= IS_METHOD | (JVM_REF_invokeSpecial << REFERENCE_KIND_SHIFT);
@@ -214,7 +214,7 @@
   // Note:  name and type can be lazily computed by resolve_MemberName,
   // if Java code needs them as resolved String and MethodType objects.
   // The clazz must be eagerly stored, because it provides a GC
-  // root to help keep alive the methodOop.
+  // root to help keep alive the Method*.
   // If relevant, the vtable or itable value is stored as vmindex.
   // This is done eagerly, since it is readily available without
   // constructing any new objects.
@@ -238,7 +238,7 @@
     vmindex = klassItable::compute_itable_index(m());
   } else if (m->can_be_statically_bound()) {
     // LinkResolver reports vtable index even for final methods!
-    vmindex = methodOopDesc::nonvirtual_vtable_index;
+    vmindex = Method::nonvirtual_vtable_index;
   } else {
     vmindex = info.vtable_index();
   }
@@ -247,13 +247,13 @@
   return Handle(THREAD, res);
 }
 
-oop MethodHandles::init_field_MemberName(oop mname_oop, klassOop field_holder,
+oop MethodHandles::init_field_MemberName(oop mname_oop, Klass* field_holder,
                                          AccessFlags mods, oop type, oop name,
                                          intptr_t offset, bool is_setter) {
   int flags = (jushort)( mods.as_short() & JVM_RECOGNIZED_FIELD_MODIFIERS );
   flags |= IS_FIELD | ((mods.is_static() ? JVM_REF_getStatic : JVM_REF_getField) << REFERENCE_KIND_SHIFT);
   if (is_setter)  flags += ((JVM_REF_putField - JVM_REF_getField) << REFERENCE_KIND_SHIFT);
-  oop vmtarget = field_holder;
+  Metadata* vmtarget = field_holder;
   int vmindex  = offset;  // determines the field uniquely when combined with static bit
   java_lang_invoke_MemberName::set_flags(mname_oop,    flags);
   java_lang_invoke_MemberName::set_vmtarget(mname_oop, vmtarget);
@@ -276,7 +276,7 @@
 
 Handle MethodHandles::init_field_MemberName(oop mname_oop, FieldAccessInfo& info, TRAPS) {
   return Handle();
-#if 0
+#if 0 // FIXME
   KlassHandle field_holder = info.klass();
   intptr_t    field_offset = info.field_offset();
   return init_field_MemberName(mname_oop, field_holder(),
@@ -293,7 +293,7 @@
 // * It has a single formal parameter of type Object[].
 // * It has a return type of Object.
 // * It has the ACC_VARARGS and ACC_NATIVE flags set.
-bool MethodHandles::is_method_handle_invoke_name(klassOop klass, Symbol* name) {
+bool MethodHandles::is_method_handle_invoke_name(Klass* klass, Symbol* name) {
   if (klass == NULL)
     return false;
   // The following test will fail spuriously during bootstrap of MethodHandle itself:
@@ -302,7 +302,7 @@
   if (Klass::cast(klass)->name() != vmSymbols::java_lang_invoke_MethodHandle())
     return false;
   Symbol* poly_sig = vmSymbols::object_array_object_signature();
-  methodOop m = instanceKlass::cast(klass)->find_method(name, poly_sig);
+  Method* m = InstanceKlass::cast(klass)->find_method(name, poly_sig);
   if (m == NULL)  return false;
   int required = JVM_ACC_NATIVE | JVM_ACC_VARARGS;
   int flags = m->access_flags().as_int();
@@ -351,7 +351,7 @@
   }
 
   // Cover the case of invokeExact and any future variants of invokeFoo.
-  klassOop mh_klass = SystemDictionary::well_known_klass(
+  Klass* mh_klass = SystemDictionary::well_known_klass(
                               SystemDictionary::WK_KLASS_ENUM_NAME(MethodHandle_klass) );
   if (mh_klass != NULL && is_method_handle_invoke_name(mh_klass, name))
     return vmIntrinsics::_invokeGeneric;
@@ -361,7 +361,7 @@
   return vmIntrinsics::_none;
 }
 
-vmIntrinsics::ID MethodHandles::signature_polymorphic_name_id(klassOop klass, Symbol* name) {
+vmIntrinsics::ID MethodHandles::signature_polymorphic_name_id(Klass* klass, Symbol* name) {
   if (klass != NULL &&
       Klass::cast(klass)->name() == vmSymbols::java_lang_invoke_MethodHandle()) {
     vmIntrinsics::ID iid = signature_polymorphic_name_id(name);
@@ -568,7 +568,7 @@
       if (s->byte_at(0) == 'L' && s->byte_at(len-1) == ';') {
         TempNewSymbol cname = SymbolTable::probe((const char*)&s->bytes()[1], len-2);
         if (cname == NULL)  return NULL;
-        klassOop wkk = SystemDictionary::find_well_known_klass(cname);
+        Klass* wkk = SystemDictionary::find_well_known_klass(cname);
         if (wkk == NULL)  return NULL;
         return Klass::cast(wkk)->java_mirror();
       }
@@ -577,9 +577,10 @@
   return NULL;
 }
 
+
 // An unresolved member name is a mere symbolic reference.
 // Resolving it plants a vmtarget/vmindex in it,
-// which refers dirctly to JVM internals.
+// which refers directly to JVM internals.
 Handle MethodHandles::resolve_MemberName(Handle mname, TRAPS) {
   Handle empty;
   assert(java_lang_invoke_MemberName::is_instance(mname()), "");
@@ -587,7 +588,7 @@
   if (java_lang_invoke_MemberName::vmtarget(mname()) != NULL) {
     // Already resolved.
     DEBUG_ONLY(int vmindex = java_lang_invoke_MemberName::vmindex(mname()));
-    assert(vmindex >= methodOopDesc::nonvirtual_vtable_index, "");
+    assert(vmindex >= Method::nonvirtual_vtable_index, "");
     return mname;
   }
 
@@ -609,13 +610,13 @@
 
   instanceKlassHandle defc;
   {
-    klassOop defc_klassOop = java_lang_Class::as_klassOop(defc_oop());
-    if (defc_klassOop == NULL)  return empty;  // a primitive; no resolution possible
-    if (!Klass::cast(defc_klassOop)->oop_is_instance()) {
-      if (!Klass::cast(defc_klassOop)->oop_is_array())  return empty;
-      defc_klassOop = SystemDictionary::Object_klass();
+    Klass* defc_klass = java_lang_Class::as_Klass(defc_oop());
+    if (defc_klass == NULL)  return empty;  // a primitive; no resolution possible
+    if (!Klass::cast(defc_klass)->oop_is_instance()) {
+      if (!Klass::cast(defc_klass)->oop_is_array())  return empty;
+      defc_klass = SystemDictionary::Object_klass();
     }
-    defc = instanceKlassHandle(THREAD, defc_klassOop);
+    defc = instanceKlassHandle(THREAD, defc_klass);
   }
   if (defc.is_null()) {
     THROW_MSG_(vmSymbols::java_lang_InternalError(), "primitive class", empty);
@@ -705,14 +706,14 @@
     {
       // This is taken from LinkResolver::resolve_field, sans access checks.
       fieldDescriptor fd; // find_field initializes fd if found
-      KlassHandle sel_klass(THREAD, instanceKlass::cast(defc())->find_field(name, type, &fd));
+      KlassHandle sel_klass(THREAD, InstanceKlass::cast(defc())->find_field(name, type, &fd));
       // check if field exists; i.e., if a klass containing the field def has been selected
       if (sel_klass.is_null())  return empty;  // should not happen
       oop type = field_signature_type_or_null(fd.signature());
       oop name = field_name_or_null(fd.name());
       bool is_setter = (ref_kind_is_valid(ref_kind) && ref_kind_is_setter(ref_kind));
       mname = Handle(THREAD,
-                     init_field_MemberName(mname(), sel_klass->as_klassOop(),
+                     init_field_MemberName(mname(), sel_klass(),
                                            fd.access_flags(), type, name, fd.offset(), is_setter));
       return mname;
     }
@@ -729,7 +730,7 @@
 // which refers directly to JVM internals.
 void MethodHandles::expand_MemberName(Handle mname, int suppress, TRAPS) {
   assert(java_lang_invoke_MemberName::is_instance(mname()), "");
-  oop vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
+  Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
   int vmindex  = java_lang_invoke_MemberName::vmindex(mname());
   if (vmtarget == NULL) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "nothing to expand");
@@ -752,12 +753,12 @@
   case IS_METHOD:
   case IS_CONSTRUCTOR:
     {
-      assert(vmtarget->is_method(), "method or constructor vmtarget is methodOop");
-      methodHandle m(THREAD, methodOop(vmtarget));
+      assert(vmtarget->is_method(), "method or constructor vmtarget is Method*");
+      methodHandle m(THREAD, (Method*)vmtarget);
       DEBUG_ONLY(vmtarget = NULL);  // safety
       if (m.is_null())  break;
       if (!have_defc) {
-        klassOop defc = m->method_holder();
+        Klass* defc = m->method_holder();
         java_lang_invoke_MemberName::set_clazz(mname(), Klass::cast(defc)->java_mirror());
       }
       if (!have_name) {
@@ -774,9 +775,9 @@
   case IS_FIELD:
     {
       // This is taken from LinkResolver::resolve_field, sans access checks.
-      assert(vmtarget->is_klass(), "field vmtarget is klassOop");
-      if (!Klass::cast((klassOop) vmtarget)->oop_is_instance())  break;
-      instanceKlassHandle defc(THREAD, (klassOop) vmtarget);
+      assert(vmtarget->is_klass(), "field vmtarget is Klass*");
+      if (!Klass::cast((Klass*) vmtarget)->oop_is_instance())  break;
+      instanceKlassHandle defc(THREAD, (Klass*) vmtarget);
       DEBUG_ONLY(vmtarget = NULL);  // safety
       bool is_static = ((flags & JVM_ACC_STATIC) != 0);
       fieldDescriptor fd; // find_field initializes fd if found
@@ -804,9 +805,9 @@
   THROW_MSG(vmSymbols::java_lang_InternalError(), "unrecognized MemberName format");
 }
 
-int MethodHandles::find_MemberNames(klassOop k,
+int MethodHandles::find_MemberNames(Klass* k,
                                     Symbol* name, Symbol* sig,
-                                    int mflags, klassOop caller,
+                                    int mflags, Klass* caller,
                                     int skip, objArrayOop results) {
   DEBUG_ONLY(No_Safepoint_Verifier nsv);
   // this code contains no safepoints!
@@ -855,7 +856,7 @@
           return -99;  // caller bug!
         oop type = field_signature_type_or_null(st.signature());
         oop name = field_name_or_null(st.name());
-        oop saved = MethodHandles::init_field_MemberName(result, st.klass()->as_klassOop(),
+        oop saved = MethodHandles::init_field_MemberName(result, st.klass()(),
                                                          st.access_flags(), type, name,
                                                          st.offset());
         if (saved != result)
@@ -892,7 +893,7 @@
       // caller will accept either sort; no need to adjust name
     }
     for (MethodStream st(k, local_only, !search_intfc); !st.eos(); st.next()) {
-      methodOop m = st.method();
+      Method* m = st.method();
       Symbol* m_name = m->name();
       if (m_name == clinit_name)
         continue;
@@ -919,7 +920,6 @@
   // return number of elements we at leasted wanted to initialize
   return rfill + overflow;
 }
-
 //
 // Here are the native methods in java.lang.invoke.MethodHandleNatives
 // They are the private interface between this JVM and the HotSpot-specific
@@ -928,6 +928,7 @@
 // Note:  We use a JVM_ENTRY macro to define each of these, for this is the way
 // that intrinsic (non-JNI) native methods are defined in HotSpot.
 //
+
 JVM_ENTRY(jint, MHN_getConstant(JNIEnv *env, jobject igcls, jint which)) {
   switch (which) {
   case MethodHandles::GC_COUNT_GWT:
@@ -1033,10 +1034,10 @@
   // access checks on behalf of the given caller.  But, we can verify this.
   if (VerifyMethodHandles && caller_jh != NULL &&
       java_lang_invoke_MemberName::clazz(mname()) != NULL) {
-    klassOop reference_klass = java_lang_Class::as_klassOop(java_lang_invoke_MemberName::clazz(mname()));
+    Klass* reference_klass = java_lang_Class::as_Klass(java_lang_invoke_MemberName::clazz(mname()));
     if (reference_klass != NULL) {
       // Emulate LinkResolver::check_klass_accessability.
-      klassOop caller = java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(caller_jh));
+      Klass* caller = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(caller_jh));
       if (!Reflection::verify_class_access(caller,
                                            reference_klass,
                                            true)) {
@@ -1107,22 +1108,19 @@
   if (mname_jh == NULL)  return NULL;
   Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
   intptr_t vmindex  = java_lang_invoke_MemberName::vmindex(mname());
-  Handle   vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
+  Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
   objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL);
   jvalue vmindex_value; vmindex_value.j = (long)vmindex;
   oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL);
   result->obj_at_put(0, x);
   x = NULL;
-  if (vmtarget.is_null() || vmtarget->is_instance()) {
-    x = vmtarget();
+  if (vmtarget == NULL) {
+    x = NULL;
   } else if (vmtarget->is_klass()) {
-    x = Klass::cast((klassOop) vmtarget())->java_mirror();
-  } else {
+    x = Klass::cast((Klass*) vmtarget)->java_mirror();
+  } else if (vmtarget->is_method()) {
     Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL);
-    if (vmtarget->is_method())
-      x = MethodHandles::init_method_MemberName(mname2(), methodOop(vmtarget()), false, NULL);
-    else
-      x = MethodHandles::init_MemberName(mname2(), vmtarget());
+    x = MethodHandles::init_method_MemberName(mname2(), (Method*)vmtarget, false, NULL);
   }
   result->obj_at_put(1, x);
   return JNIHandles::make_local(env, result());
@@ -1137,7 +1135,7 @@
                                jclass clazz_jh, jstring name_jh, jstring sig_jh,
                                int mflags, jclass caller_jh, jint skip, jobjectArray results_jh)) {
   if (clazz_jh == NULL || results_jh == NULL)  return -1;
-  KlassHandle k(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(clazz_jh)));
+  KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz_jh)));
 
   objArrayHandle results(THREAD, (objArrayOop) JNIHandles::resolve(results_jh));
   if (results.is_null() || !results->is_objArray())  return -1;
@@ -1157,7 +1155,7 @@
   if (caller_jh != NULL) {
     oop caller_oop = JNIHandles::resolve_non_null(caller_jh);
     if (!java_lang_Class::is_instance(caller_oop))  return -1;
-    caller = KlassHandle(THREAD, java_lang_Class::as_klassOop(caller_oop));
+    caller = KlassHandle(THREAD, java_lang_Class::as_Klass(caller_oop));
   }
 
   if (name != NULL && sig != NULL && results.not_null()) {
--- a/src/share/vm/prims/methodHandles.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/methodHandles.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -55,16 +55,16 @@
   static void expand_MemberName(Handle mname, int suppress, TRAPS);  // expand defc/name/type if missing
   static Handle new_MemberName(TRAPS);  // must be followed by init_MemberName
   static oop init_MemberName(oop mname_oop, oop target_oop); // compute vmtarget/vmindex from target
-  static oop init_method_MemberName(oop mname_oop, methodOop m, bool do_dispatch,
-                                    klassOop receiver_limit);
-  static oop init_field_MemberName(oop mname_oop, klassOop field_holder,
+  static oop init_method_MemberName(oop mname_oop, Method* m, bool do_dispatch,
+                                    Klass* receiver_limit);
+  static oop init_field_MemberName(oop mname_oop, Klass* field_holder,
                                    AccessFlags mods, oop type, oop name,
                                    intptr_t offset, bool is_setter = false);
   static Handle init_method_MemberName(oop mname_oop, CallInfo& info, TRAPS);
   static Handle init_field_MemberName(oop mname_oop, FieldAccessInfo& info, TRAPS);
-  static int method_ref_kind(methodOop m, bool do_dispatch_if_possible = true);
-  static int find_MemberNames(klassOop k, Symbol* name, Symbol* sig,
-                              int mflags, klassOop caller,
+  static int method_ref_kind(Method* m, bool do_dispatch_if_possible = true);
+  static int find_MemberNames(Klass* k, Symbol* name, Symbol* sig,
+                              int mflags, Klass* caller,
                               int skip, objArrayOop results);
   // bit values for suppress argument to expand_MemberName:
   enum { _suppress_defc = 1, _suppress_name = 2, _suppress_type = 4 };
@@ -116,13 +116,13 @@
   static Symbol* signature_polymorphic_intrinsic_name(vmIntrinsics::ID iid);
   static int signature_polymorphic_intrinsic_ref_kind(vmIntrinsics::ID iid);
 
-  static vmIntrinsics::ID signature_polymorphic_name_id(klassOop klass, Symbol* name);
+  static vmIntrinsics::ID signature_polymorphic_name_id(Klass* klass, Symbol* name);
   static vmIntrinsics::ID signature_polymorphic_name_id(Symbol* name);
   static bool is_signature_polymorphic_name(Symbol* name) {
     return signature_polymorphic_name_id(name) != vmIntrinsics::_none;
   }
-  static bool is_method_handle_invoke_name(klassOop klass, Symbol* name);
-  static bool is_signature_polymorphic_name(klassOop klass, Symbol* name) {
+  static bool is_method_handle_invoke_name(Klass* klass, Symbol* name);
+  static bool is_signature_polymorphic_name(Klass* klass, Symbol* name) {
     return signature_polymorphic_name_id(klass, name) != vmIntrinsics::_none;
   }
 
--- a/src/share/vm/prims/nativeLookup.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/nativeLookup.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -30,7 +30,7 @@
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
 #include "prims/jvm_misc.hpp"
@@ -166,7 +166,7 @@
   // gets found the first time around - otherwise an infinite loop can occure. This is
   // another VM/library dependency
   Handle loader(THREAD,
-                instanceKlass::cast(method->method_holder())->class_loader());
+                InstanceKlass::cast(method->method_holder())->class_loader());
   if (loader.is_null()) {
     entry = lookup_special_native(jni_name);
     if (entry == NULL) {
@@ -349,7 +349,7 @@
     TempNewSymbol wrapper_symbol = SymbolTable::probe(wrapper_name, wrapper_name_len);
     if (wrapper_symbol != NULL) {
       KlassHandle kh(method->method_holder());
-      methodOop wrapper_method = Klass::cast(kh())->lookup_method(wrapper_symbol,
+      Method* wrapper_method = Klass::cast(kh())->lookup_method(wrapper_symbol,
                                                                   method->signature());
       if (wrapper_method != NULL && !wrapper_method->is_native()) {
         // we found a wrapper method, use its native entry
@@ -386,7 +386,7 @@
             SharedRuntime::native_method_throw_unsupported_operation_exception_entry() :
             lookup_base(method, in_base_library, CHECK_NULL);
     method->set_native_function(entry,
-      methodOopDesc::native_bind_event_is_interesting);
+      Method::native_bind_event_is_interesting);
     // -verbose:jni printing
     if (PrintJNIResolving) {
       ResourceMark rm(THREAD);
@@ -406,7 +406,7 @@
   TempNewSymbol s_name = SymbolTable::new_symbol(signature,   CATCH);
 
   // Find the class
-  klassOop k = SystemDictionary::resolve_or_fail(c_name, true, CATCH);
+  Klass* k = SystemDictionary::resolve_or_fail(c_name, true, CATCH);
   instanceKlassHandle klass (THREAD, k);
 
   // Find method and invoke standard lookup
--- a/src/share/vm/prims/privilegedStack.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/privilegedStack.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -25,18 +25,17 @@
 #include "precompiled.hpp"
 #include "memory/allocation.inline.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/privilegedStack.hpp"
 #include "runtime/vframe.hpp"
 
 
 void PrivilegedElement::initialize(vframeStream* vfst, oop context, PrivilegedElement* next, TRAPS) {
-  methodOop method      = vfst->method();
+  Method* method        = vfst->method();
   _klass                = method->method_holder();
   _privileged_context   = context;
 #ifdef CHECK_UNHANDLED_OOPS
-  THREAD->allow_unhandled_oop(&_klass);
   THREAD->allow_unhandled_oop(&_privileged_context);
 #endif // CHECK_UNHANDLED_OOPS
   _frame_id             = vfst->frame_id();
@@ -48,12 +47,19 @@
 void PrivilegedElement::oops_do(OopClosure* f) {
   PrivilegedElement *cur = this;
   do {
-    f->do_oop((oop*) &cur->_klass);
     f->do_oop((oop*) &cur->_privileged_context);
     cur = cur->_next;
   } while(cur != NULL);
 }
 
+void PrivilegedElement::classes_do(KlassClosure* f) {
+  PrivilegedElement *cur = this;
+  do {
+    f->do_klass(cur->_klass);
+    cur = cur->_next;
+  } while(cur != NULL);
+}
+
 //-------------------------------------------------------------------------------
 #ifndef PRODUCT
 
--- a/src/share/vm/prims/privilegedStack.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/privilegedStack.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -32,17 +32,18 @@
 
 class PrivilegedElement VALUE_OBJ_CLASS_SPEC {
  private:
-  klassOop  _klass;                // klass for method
+  Klass*    _klass;                // klass for method
   oop       _privileged_context;   // context for operation
   intptr_t*     _frame_id;             // location on stack
   PrivilegedElement* _next;        // Link to next one on stack
  public:
   void initialize(vframeStream* vf, oop context, PrivilegedElement* next, TRAPS);
   void oops_do(OopClosure* f);
+  void classes_do(KlassClosure* f);
   intptr_t* frame_id() const           { return _frame_id; }
   oop  privileged_context() const  { return _privileged_context; }
-  oop  class_loader() const        { return instanceKlass::cast(_klass)->class_loader(); }
-  oop  protection_domain() const   { return instanceKlass::cast(_klass)->protection_domain(); }
+  oop  class_loader() const        { return InstanceKlass::cast(_klass)->class_loader(); }
+  oop  protection_domain() const   { return InstanceKlass::cast(_klass)->protection_domain(); }
   PrivilegedElement *next() const  { return _next; }
 
   // debugging (used for find)
--- a/src/share/vm/prims/unsafe.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/unsafe.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -197,9 +197,9 @@
     if (ret != NULL) {
       if (offset == java_lang_ref_Reference::referent_offset) {
         oop o = JNIHandles::resolve_non_null(obj);
-        klassOop k = o->klass();
-        if (instanceKlass::cast(k)->reference_type() != REF_NONE) {
-          assert(instanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+        Klass* k = o->klass();
+        if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+          assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
           needs_barrier = true;
         }
       }
@@ -255,9 +255,9 @@
     if (ret != NULL) {
       if (offset == java_lang_ref_Reference::referent_offset && obj != NULL) {
         oop o = JNIHandles::resolve(obj);
-        klassOop k = o->klass();
-        if (instanceKlass::cast(k)->reference_type() != REF_NONE) {
-          assert(instanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
+        Klass* k = o->klass();
+        if (InstanceKlass::cast(k)->reference_type() != REF_NONE) {
+          assert(InstanceKlass::cast(k)->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
           needs_barrier = true;
         }
       }
@@ -695,7 +695,7 @@
 
   oop reflected   = JNIHandles::resolve_non_null(field);
   oop mirror      = java_lang_reflect_Field::clazz(reflected);
-  klassOop k      = java_lang_Class::as_klassOop(mirror);
+  Klass* k      = java_lang_Class::as_Klass(mirror);
   int slot        = java_lang_reflect_Field::slot(reflected);
   int modifiers   = java_lang_reflect_Field::modifiers(reflected);
 
@@ -706,7 +706,7 @@
     }
   }
 
-  int offset = instanceKlass::cast(k)->field_offset(slot);
+  int offset = InstanceKlass::cast(k)->field_offset(slot);
   return field_offset_from_byte_offset(offset);
 }
 
@@ -768,9 +768,9 @@
   }
   oop mirror = JNIHandles::resolve_non_null(clazz);
 
-  klassOop klass = java_lang_Class::as_klassOop(mirror);
+  Klass* klass = java_lang_Class::as_Klass(mirror);
   if (klass != NULL && Klass::cast(klass)->should_be_initialized()) {
-    instanceKlass* k = instanceKlass::cast(klass);
+    InstanceKlass* k = InstanceKlass::cast(klass);
     k->initialize(CHECK);
   }
 }
@@ -782,7 +782,7 @@
     THROW_(vmSymbols::java_lang_NullPointerException(), false);
   }
   oop mirror = JNIHandles::resolve_non_null(clazz);
-  klassOop klass = java_lang_Class::as_klassOop(mirror);
+  Klass* klass = java_lang_Class::as_Klass(mirror);
   if (klass != NULL && Klass::cast(klass)->should_be_initialized()) {
     return true;
   }
@@ -795,13 +795,13 @@
     THROW(vmSymbols::java_lang_NullPointerException());
   }
   oop      mirror = JNIHandles::resolve_non_null(acls);
-  klassOop k      = java_lang_Class::as_klassOop(mirror);
-  if (k == NULL || !k->klass_part()->oop_is_array()) {
+  Klass* k      = java_lang_Class::as_Klass(mirror);
+  if (k == NULL || !k->oop_is_array()) {
     THROW(vmSymbols::java_lang_InvalidClassException());
-  } else if (k->klass_part()->oop_is_objArray()) {
+  } else if (k->oop_is_objArray()) {
     base  = arrayOopDesc::base_offset_in_bytes(T_OBJECT);
     scale = heapOopSize;
-  } else if (k->klass_part()->oop_is_typeArray()) {
+  } else if (k->oop_is_typeArray()) {
     typeArrayKlass* tak = typeArrayKlass::cast(k);
     base  = tak->array_header_in_bytes();
     assert(base == arrayOopDesc::base_offset_in_bytes(tak->element_type()), "array_header_size semantics ok");
@@ -1039,7 +1039,7 @@
     cp_patches_h = objArrayHandle(THREAD, (objArrayOop)p);
   }
 
-  KlassHandle host_klass(THREAD, java_lang_Class::as_klassOop(JNIHandles::resolve_non_null(host_class)));
+  KlassHandle host_klass(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(host_class)));
   const char* host_source = host_klass->external_name();
   Handle      host_loader(THREAD, host_klass->class_loader());
   Handle      host_domain(THREAD, host_klass->protection_domain());
@@ -1063,7 +1063,7 @@
   instanceKlassHandle anon_klass;
   {
     Symbol* no_class_name = NULL;
-    klassOop anonk = SystemDictionary::parse_stream(no_class_name,
+    Klass* anonk = SystemDictionary::parse_stream(no_class_name,
                                                     host_loader, host_domain,
                                                     &st, host_klass, cp_patches,
                                                     CHECK_NULL);
@@ -1156,12 +1156,7 @@
   oop e = JNIHandles::resolve(e_h);
   oop p = JNIHandles::resolve(obj);
   HeapWord* addr = (HeapWord *)index_oop_from_field_offset_long(p, offset);
-  if (UseCompressedOops) {
-    update_barrier_set_pre((narrowOop*)addr, e);
-  } else {
-    update_barrier_set_pre((oop*)addr, e);
-  }
-  oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e);
+  oop res = oopDesc::atomic_compare_exchange_oop(x, addr, e, true);
   jboolean success  = (res == e);
   if (success)
     update_barrier_set((void*)addr, x);
--- a/src/share/vm/prims/wbtestmethods/parserTests.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/wbtestmethods/parserTests.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 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
@@ -128,7 +128,7 @@
   CmdLine cmdline(c_cmdline, strlen(c_cmdline), true);
   parser.parse(&cmdline,',',CHECK_NULL);
 
-  klassOop k = SystemDictionary::Object_klass();
+  Klass* k = SystemDictionary::Object_klass();
   objArrayOop returnvalue_array = oopFactory::new_objArray(k, parser.num_arguments() * 2, CHECK_NULL);
 
   GrowableArray<const char *>*parsedArgNames = parser.argument_name_array();
--- a/src/share/vm/prims/whitebox.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/prims/whitebox.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -28,6 +28,7 @@
 #include "oops/oop.inline.hpp"
 
 #include "classfile/symbolTable.hpp"
+#include "classfile/classLoaderData.hpp"
 
 #include "prims/whitebox.hpp"
 #include "prims/wbtestmethods/parserTests.hpp"
@@ -52,6 +53,38 @@
   return heapOopSize;
 WB_END
 
+
+class WBIsKlassAliveClosure : public KlassClosure {
+    Symbol* _name;
+    bool _found;
+public:
+    WBIsKlassAliveClosure(Symbol* name) : _name(name), _found(false) {}
+
+    void do_klass(Klass* k) {
+      if (_found) return;
+      Symbol* ksym = k->name();
+      if (ksym->fast_compare(_name) == 0) {
+        _found = true;
+      }
+    }
+
+    bool found() const {
+        return _found;
+    }
+};
+
+WB_ENTRY(jboolean, WB_IsClassAlive(JNIEnv* env, jobject target, jstring name))
+  Handle h_name = JNIHandles::resolve(name);
+  if (h_name.is_null()) return false;
+  Symbol* sym = java_lang_String::as_symbol(h_name, CHECK_false);
+  TempNewSymbol tsym(sym); // Make sure to decrement reference count on sym on return
+
+  WBIsKlassAliveClosure closure(sym);
+  ClassLoaderDataGraph::classes_do(&closure);
+
+  return closure.found();
+WB_END
+
 #ifndef SERIALGC
 WB_ENTRY(jboolean, WB_G1IsHumongous(JNIEnv* env, jobject o, jobject obj))
   G1CollectedHeap* g1 = G1CollectedHeap::heap();
@@ -84,9 +117,9 @@
   Thread* THREAD = Thread::current();
 
   //Get the class of our object
-  klassOop arg_klass = object->klass();
+  Klass* arg_klass = object->klass();
   //Turn it into an instance-klass
-  instanceKlass* ik = instanceKlass::cast(arg_klass);
+  InstanceKlass* ik = InstanceKlass::cast(arg_klass);
 
   //Create symbols to look for in the class
   TempNewSymbol name_symbol = SymbolTable::lookup(field_name, (int) strlen(field_name),
@@ -95,7 +128,7 @@
   //To be filled in with an offset of the field we're looking for
   fieldDescriptor fd;
 
-  klassOop res = ik->find_field(name_symbol, signature_symbol, &fd);
+  Klass* res = ik->find_field(name_symbol, signature_symbol, &fd);
   if (res == NULL) {
     tty->print_cr("Invalid layout of %s at %s", ik->external_name(),
         name_symbol->as_C_string());
@@ -133,6 +166,7 @@
 static JNINativeMethod methods[] = {
   {CC"getObjectAddress",   CC"(Ljava/lang/Object;)J", (void*)&WB_GetObjectAddress  },
   {CC"getHeapOopSize",     CC"()I",                   (void*)&WB_GetHeapOopSize    },
+  {CC"isClassAlive0",       CC"(Ljava/lang/String;)Z", (void*)&WB_IsClassAlive      },
   {CC "parseCommandLine",
       CC "(Ljava/lang/String;[Lsun/hotspot/parser/DiagnosticCommand;)[Ljava/lang/Object;",
       (void*) &WB_ParseCommandLine
--- a/src/share/vm/runtime/advancedThresholdPolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/advancedThresholdPolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -73,7 +73,7 @@
 }
 
 // update_rate() is called from select_task() while holding a compile queue lock.
-void AdvancedThresholdPolicy::update_rate(jlong t, methodOop m) {
+void AdvancedThresholdPolicy::update_rate(jlong t, Method* m) {
   if (is_old(m)) {
     // We don't remove old methods from the queue,
     // so we can just zero the rate.
@@ -106,7 +106,7 @@
 
 // Check if this method has been stale from a given number of milliseconds.
 // See select_task().
-bool AdvancedThresholdPolicy::is_stale(jlong t, jlong timeout, methodOop m) {
+bool AdvancedThresholdPolicy::is_stale(jlong t, jlong timeout, Method* m) {
   jlong delta_s = t - SafepointSynchronize::end_of_last_safepoint();
   jlong delta_t = t - m->prev_time();
   if (delta_t > timeout && delta_s > timeout) {
@@ -120,16 +120,16 @@
 
 // We don't remove old methods from the compile queue even if they have
 // very low activity. See select_task().
-bool AdvancedThresholdPolicy::is_old(methodOop method) {
+bool AdvancedThresholdPolicy::is_old(Method* method) {
   return method->invocation_count() > 50000 || method->backedge_count() > 500000;
 }
 
-double AdvancedThresholdPolicy::weight(methodOop method) {
+double AdvancedThresholdPolicy::weight(Method* method) {
   return (method->rate() + 1) * ((method->invocation_count() + 1) *  (method->backedge_count() + 1));
 }
 
 // Apply heuristics and return true if x should be compiled before y
-bool AdvancedThresholdPolicy::compare_methods(methodOop x, methodOop y) {
+bool AdvancedThresholdPolicy::compare_methods(Method* x, Method* y) {
   if (x->highest_comp_level() > y->highest_comp_level()) {
     // recompilation after deopt
     return true;
@@ -143,8 +143,8 @@
 }
 
 // Is method profiled enough?
-bool AdvancedThresholdPolicy::is_method_profiled(methodOop method) {
-  methodDataOop mdo = method->method_data();
+bool AdvancedThresholdPolicy::is_method_profiled(Method* method) {
+  MethodData* mdo = method->method_data();
   if (mdo != NULL) {
     int i = mdo->invocation_count_delta();
     int b = mdo->backedge_count_delta();
@@ -156,19 +156,20 @@
 // Called with the queue locked and with at least one element
 CompileTask* AdvancedThresholdPolicy::select_task(CompileQueue* compile_queue) {
   CompileTask *max_task = NULL;
-  methodHandle max_method;
+  Method* max_method;
   jlong t = os::javaTimeMillis();
   // Iterate through the queue and find a method with a maximum rate.
   for (CompileTask* task = compile_queue->first(); task != NULL;) {
     CompileTask* next_task = task->next();
-    methodHandle method = (methodOop)JNIHandles::resolve(task->method_handle());
-    update_rate(t, method());
+    Method* method = task->method();
+    MethodData* mdo = method->method_data();
+    update_rate(t, method);
     if (max_task == NULL) {
       max_task = task;
       max_method = method;
     } else {
       // If a method has been stale for some time, remove it from the queue.
-      if (is_stale(t, TieredCompileTaskTimeout, method()) && !is_old(method())) {
+      if (is_stale(t, TieredCompileTaskTimeout, method) && !is_old(method)) {
         if (PrintTieredEvents) {
           print_event(REMOVE_FROM_QUEUE, method, method, task->osr_bci(), (CompLevel)task->comp_level());
         }
@@ -180,7 +181,7 @@
       }
 
       // Select a method with a higher rate
-      if (compare_methods(method(), max_method())) {
+      if (compare_methods(method, max_method)) {
         max_task = task;
         max_method = method;
       }
@@ -189,7 +190,7 @@
   }
 
   if (max_task->comp_level() == CompLevel_full_profile && TieredStopAtLevel > CompLevel_full_profile
-      && is_method_profiled(max_method())) {
+      && is_method_profiled(max_method)) {
     max_task->set_comp_level(CompLevel_limited_profile);
     if (PrintTieredEvents) {
       print_event(UPDATE_IN_QUEUE, max_method, max_method, max_task->osr_bci(), (CompLevel)max_task->comp_level());
@@ -247,7 +248,7 @@
 // If a method is old enough and is still in the interpreter we would want to
 // start profiling without waiting for the compiled method to arrive.
 // We also take the load on compilers into the account.
-bool AdvancedThresholdPolicy::should_create_mdo(methodOop method, CompLevel cur_level) {
+bool AdvancedThresholdPolicy::should_create_mdo(Method* method, CompLevel cur_level) {
   if (cur_level == CompLevel_none &&
       CompileBroker::queue_size(CompLevel_full_optimization) <=
       Tier3DelayOn * compiler_count(CompLevel_full_optimization)) {
@@ -274,7 +275,7 @@
 void AdvancedThresholdPolicy::create_mdo(methodHandle mh, JavaThread* THREAD) {
   if (mh->is_native() || mh->is_abstract() || mh->is_accessor()) return;
   if (mh->method_data() == NULL) {
-    methodOopDesc::build_interpreter_method_data(mh, CHECK_AND_CLEAR);
+    Method::build_interpreter_method_data(mh, CHECK_AND_CLEAR);
   }
 }
 
@@ -318,7 +319,7 @@
  */
 
 // Common transition function. Given a predicate determines if a method should transition to another level.
-CompLevel AdvancedThresholdPolicy::common(Predicate p, methodOop method, CompLevel cur_level, bool disable_feedback) {
+CompLevel AdvancedThresholdPolicy::common(Predicate p, Method* method, CompLevel cur_level, bool disable_feedback) {
   CompLevel next_level = cur_level;
   int i = method->invocation_count();
   int b = method->backedge_count();
@@ -352,7 +353,7 @@
         // Special case: we got here because this method was fully profiled in the interpreter.
         next_level = CompLevel_full_optimization;
       } else {
-        methodDataOop mdo = method->method_data();
+        MethodData* mdo = method->method_data();
         if (mdo != NULL) {
           if (mdo->would_profile()) {
             if (disable_feedback || (CompileBroker::queue_size(CompLevel_full_optimization) <=
@@ -368,7 +369,7 @@
       break;
     case CompLevel_full_profile:
       {
-        methodDataOop mdo = method->method_data();
+        MethodData* mdo = method->method_data();
         if (mdo != NULL) {
           if (mdo->would_profile()) {
             int mdo_i = mdo->invocation_count_delta();
@@ -388,7 +389,7 @@
 }
 
 // Determine if a method should be compiled with a normal entry point at a different level.
-CompLevel AdvancedThresholdPolicy::call_event(methodOop method, CompLevel cur_level) {
+CompLevel AdvancedThresholdPolicy::call_event(Method* method, CompLevel cur_level) {
   CompLevel osr_level = MIN2((CompLevel) method->highest_osr_comp_level(),
                              common(&AdvancedThresholdPolicy::loop_predicate, method, cur_level, true));
   CompLevel next_level = common(&AdvancedThresholdPolicy::call_predicate, method, cur_level);
@@ -397,7 +398,7 @@
   // equalized by raising the regular method level in order to avoid OSRs during each
   // invocation of the method.
   if (osr_level == CompLevel_full_optimization && cur_level == CompLevel_full_profile) {
-    methodDataOop mdo = method->method_data();
+    MethodData* mdo = method->method_data();
     guarantee(mdo != NULL, "MDO should not be NULL");
     if (mdo->invocation_count() >= 1) {
       next_level = CompLevel_full_optimization;
@@ -409,7 +410,7 @@
 }
 
 // Determine if we should do an OSR compilation of a given method.
-CompLevel AdvancedThresholdPolicy::loop_event(methodOop method, CompLevel cur_level) {
+CompLevel AdvancedThresholdPolicy::loop_event(Method* method, CompLevel cur_level) {
   CompLevel next_level = common(&AdvancedThresholdPolicy::loop_predicate, method, cur_level, true);
   if (cur_level == CompLevel_none) {
     // If there is a live OSR method that means that we deopted to the interpreter
--- a/src/share/vm/runtime/advancedThresholdPolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/advancedThresholdPolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -99,7 +99,7 @@
  *   The intuition is to equalize the time that is spend profiling each method.
  *   The same predicate is used to control the transition from level 3 to level 4 (C2). It should be
  *   noted though that the thresholds are relative. Moreover i and b for the 0->3 transition come
- *   from methodOop and for 3->4 transition they come from MDO (since profiled invocations are
+ *   from Method* and for 3->4 transition they come from MDO (since profiled invocations are
  *   counted separately).
  *
  *   OSR transitions are controlled simply with b > TierXBackEdgeThreshold * s predicates.
@@ -168,38 +168,38 @@
   bool call_predicate(int i, int b, CompLevel cur_level);
   bool loop_predicate(int i, int b, CompLevel cur_level);
   // Common transition function. Given a predicate determines if a method should transition to another level.
-  CompLevel common(Predicate p, methodOop method, CompLevel cur_level, bool disable_feedback = false);
+  CompLevel common(Predicate p, Method* method, CompLevel cur_level, bool disable_feedback = false);
   // Transition functions.
   // call_event determines if a method should be compiled at a different
   // level with a regular invocation entry.
-  CompLevel call_event(methodOop method, CompLevel cur_level);
+  CompLevel call_event(Method* method, CompLevel cur_level);
   // loop_event checks if a method should be OSR compiled at a different
   // level.
-  CompLevel loop_event(methodOop method, CompLevel cur_level);
+  CompLevel loop_event(Method* method, CompLevel cur_level);
   // Has a method been long around?
   // We don't remove old methods from the compile queue even if they have
   // very low activity (see select_task()).
-  inline bool is_old(methodOop method);
+  inline bool is_old(Method* method);
   // Was a given method inactive for a given number of milliseconds.
   // If it is, we would remove it from the queue (see select_task()).
-  inline bool is_stale(jlong t, jlong timeout, methodOop m);
+  inline bool is_stale(jlong t, jlong timeout, Method* m);
   // Compute the weight of the method for the compilation scheduling
-  inline double weight(methodOop method);
+  inline double weight(Method* method);
   // Apply heuristics and return true if x should be compiled before y
-  inline bool compare_methods(methodOop x, methodOop y);
+  inline bool compare_methods(Method* x, Method* y);
   // Compute event rate for a given method. The rate is the number of event (invocations + backedges)
   // per millisecond.
-  inline void update_rate(jlong t, methodOop m);
+  inline void update_rate(jlong t, Method* m);
   // Compute threshold scaling coefficient
   inline double threshold_scale(CompLevel level, int feedback_k);
   // If a method is old enough and is still in the interpreter we would want to
   // start profiling without waiting for the compiled method to arrive. This function
   // determines whether we should do that.
-  inline bool should_create_mdo(methodOop method, CompLevel cur_level);
+  inline bool should_create_mdo(Method* method, CompLevel cur_level);
   // Create MDO if necessary.
   void create_mdo(methodHandle mh, JavaThread* thread);
   // Is method profiled enough?
-  bool is_method_profiled(methodOop method);
+  bool is_method_profiled(Method* method);
 
 protected:
   void print_specific(EventType type, methodHandle mh, methodHandle imh, int bci, CompLevel level);
--- a/src/share/vm/runtime/aprofiler.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/aprofiler.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -25,7 +25,6 @@
 #include "precompiled.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
-#include "memory/permGen.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/space.hpp"
 #include "oops/oop.inline.hpp"
@@ -34,35 +33,19 @@
 
 
 bool AllocationProfiler::_active = false;
-GrowableArray<klassOop>* AllocationProfiler::_print_array = NULL;
+GrowableArray<Klass*>* AllocationProfiler::_print_array = NULL;
 
 
 class AllocProfClosure : public ObjectClosure {
  public:
   void do_object(oop obj) {
-    Klass* k = obj->blueprint();
+    Klass* k = obj->klass();
     k->set_alloc_count(k->alloc_count() + 1);
     k->set_alloc_size(k->alloc_size() + obj->size());
   }
 };
 
 
-#ifndef PRODUCT
-
-class AllocProfResetClosure : public ObjectClosure {
- public:
-  void do_object(oop obj) {
-    if (obj->is_klass()) {
-      Klass* k = Klass::cast(klassOop(obj));
-      k->set_alloc_count(0);
-      k->set_alloc_size(0);
-    }
-  }
-};
-
-#endif
-
-
 void AllocationProfiler::iterate_since_last_gc() {
   if (is_active()) {
     AllocProfClosure blk;
@@ -82,20 +65,20 @@
 }
 
 
-void AllocationProfiler::add_class_to_array(klassOop k) {
+void AllocationProfiler::add_class_to_array(Klass* k) {
   _print_array->append(k);
 }
 
 
-void AllocationProfiler::add_classes_to_array(klassOop k) {
+void AllocationProfiler::add_classes_to_array(Klass* k) {
   // Iterate over klass and all array klasses for klass
-  k->klass_part()->with_array_klasses_do(&AllocationProfiler::add_class_to_array);
+  k->with_array_klasses_do(&AllocationProfiler::add_class_to_array);
 }
 
 
-int AllocationProfiler::compare_classes(klassOop* k1, klassOop* k2) {
+int AllocationProfiler::compare_classes(Klass** k1, Klass** k2) {
   // Sort by total allocation size
-  return (*k2)->klass_part()->alloc_size() - (*k1)->klass_part()->alloc_size();
+  return (*k2)->alloc_size() - (*k1)->alloc_size();
 }
 
 
@@ -113,14 +96,14 @@
   size_t total_alloc_size = 0;
   int total_alloc_count = 0;
   for (int index = 0; index < _print_array->length(); index++) {
-    klassOop k = _print_array->at(index);
-    size_t alloc_size = k->klass_part()->alloc_size();
+    Klass* k = _print_array->at(index);
+    size_t alloc_size = k->alloc_size();
     if (alloc_size > cutoff) {
-      int alloc_count = k->klass_part()->alloc_count();
+      int alloc_count = k->alloc_count();
 #ifdef PRODUCT
-      const char* name = k->klass_part()->external_name();
+      const char* name = k->external_name();
 #else
-      const char* name = k->klass_part()->internal_name();
+      const char* name = k->internal_name();
 #endif
       tty->print_cr("%20u %10u %8u  %s",
         alloc_size * BytesPerWord,
@@ -130,6 +113,8 @@
       total_alloc_size += alloc_size;
       total_alloc_count += alloc_count;
     }
+    k->set_alloc_count(0);
+    k->set_alloc_size(0);
   }
   tty->print_cr("%20u %10u %8u  --total--",
     total_alloc_size * BytesPerWord,
@@ -148,32 +133,11 @@
   tty->cr();
 
   // Print regular instance klasses and basic type array klasses
-  _print_array = new GrowableArray<klassOop>(SystemDictionary::number_of_classes()*2);
+  _print_array = new GrowableArray<Klass*>(SystemDictionary::number_of_classes()*2);
   SystemDictionary::classes_do(&add_classes_to_array);
   Universe::basic_type_classes_do(&add_classes_to_array);
   sort_and_print_array(cutoff);
 
-  #ifndef PRODUCT
-  tty->print_cr("Allocation profile for system classes (sizes in bytes, cutoff = %d bytes):", cutoff * BytesPerWord);
-  tty->cr();
-
-  // Print system klasses (methods, symbols, constant pools, etc.)
-  _print_array = new GrowableArray<klassOop>(64);
-  Universe::system_classes_do(&add_classes_to_array);
-  sort_and_print_array(cutoff);
-
-  tty->print_cr("Permanent generation dump (sizes in bytes, cutoff = %d bytes):", cutoff * BytesPerWord);
-  tty->cr();
-
-  AllocProfResetClosure resetblk;
-  Universe::heap()->permanent_object_iterate(&resetblk);
-  AllocProfClosure blk;
-  Universe::heap()->permanent_object_iterate(&blk);
-
-  _print_array = new GrowableArray<klassOop>(SystemDictionary::number_of_classes()*2);
-  SystemDictionary::classes_do(&add_classes_to_array);
-  Universe::basic_type_classes_do(&add_classes_to_array);
-  Universe::system_classes_do(&add_classes_to_array);
-  sort_and_print_array(cutoff);
-  #endif
+  // This used to print metadata in the permgen but since there isn't a permgen
+  // anymore, it is not yet implemented.
 }
--- a/src/share/vm/runtime/aprofiler.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/aprofiler.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -28,7 +28,6 @@
 #include "memory/allocation.hpp"
 #include "memory/universe.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
 #include "utilities/top.hpp"
 
 // A simple allocation profiler for Java. The profiler collects and prints
@@ -46,12 +45,12 @@
   friend class MarkSweep;
  private:
   static bool _active;                          // tells whether profiler is active
-  static GrowableArray<klassOop>* _print_array; // temporary array for printing
+  static GrowableArray<Klass*>* _print_array; // temporary array for printing
 
   // Utility printing functions
-  static void add_class_to_array(klassOop k);
-  static void add_classes_to_array(klassOop k);
-  static int  compare_classes(klassOop* k1, klassOop* k2);
+  static void add_class_to_array(Klass* k);
+  static void add_classes_to_array(Klass* k);
+  static int  compare_classes(Klass** k1, Klass** k2);
   static int  average(size_t alloc_size, int alloc_count);
   static void sort_and_print_array(size_t cutoff);
 
--- a/src/share/vm/runtime/arguments.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/arguments.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -245,6 +245,18 @@
                            JDK_Version::jdk_update(6,27), JDK_Version::jdk(8) },
   { "AllowTransitionalJSR292",       JDK_Version::jdk(7), JDK_Version::jdk(8) },
   { "UseCompressedStrings",          JDK_Version::jdk(7), JDK_Version::jdk(8) },
+  { "CMSPermGenPrecleaningEnabled", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "CMSTriggerPermRatio", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "CMSInitiatingPermOccupancyFraction", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "AdaptivePermSizeWeight", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "PermGenPadding", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "PermMarkSweepDeadRatio", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "PermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "MaxPermSize", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "MinPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "MaxPermHeapExpansion", JDK_Version::jdk(8),  JDK_Version::jdk(9) },
+  { "CMSRevisitStackSize",           JDK_Version::jdk(8), JDK_Version::jdk(9) },
+  { "PrintRevisitStats",             JDK_Version::jdk(8), JDK_Version::jdk(9) },
 #ifdef PRODUCT
   { "DesiredMethodLimit",
                            JDK_Version::jdk_update(7, 2), JDK_Version::jdk(8) },
@@ -1086,9 +1098,6 @@
     }
   }
   if (UseParNewGC) {
-    // CDS doesn't work with ParNew yet
-    no_shared_spaces();
-
     // By default YoungPLABSize and OldPLABSize are set to 4096 and 1024 respectively,
     // these settings are default for Parallel Scavenger. For ParNew+Tenured configuration
     // we set them to 1024 and 1024.
@@ -1332,10 +1341,10 @@
 
 inline uintx max_heap_for_compressed_oops() {
   // Avoid sign flip.
-  if (OopEncodingHeapMax < MaxPermSize + os::vm_page_size()) {
+  if (OopEncodingHeapMax < ClassMetaspaceSize + os::vm_page_size()) {
     return 0;
   }
-  LP64_ONLY(return OopEncodingHeapMax - MaxPermSize - os::vm_page_size());
+  LP64_ONLY(return OopEncodingHeapMax - ClassMetaspaceSize - os::vm_page_size());
   NOT_LP64(ShouldNotReachHere(); return 0);
 }
 
@@ -1354,11 +1363,6 @@
 }
 
 void Arguments::set_ergonomics_flags() {
-  // Parallel GC is not compatible with sharing. If one specifies
-  // that they want sharing explicitly, do not set ergonomics flags.
-  if (DumpSharedSpaces || RequireSharedSpaces) {
-    return;
-  }
 
   if (os::is_server_class_machine()) {
     // If no other collector is requested explicitly,
@@ -1368,13 +1372,19 @@
         !UseConcMarkSweepGC &&
         !UseG1GC &&
         !UseParNewGC &&
-        !DumpSharedSpaces &&
         FLAG_IS_DEFAULT(UseParallelGC)) {
       if (should_auto_select_low_pause_collector()) {
         FLAG_SET_ERGO(bool, UseConcMarkSweepGC, true);
       } else {
         FLAG_SET_ERGO(bool, UseParallelGC, true);
       }
+    }
+    // Shared spaces work fine with other GCs but causes bytecode rewriting
+    // to be disabled, which hurts interpreter performance and decreases
+    // server performance.   On server class machines, keep the default
+    // off unless it is asked for.  Future work: either add bytecode rewriting
+    // at link time, or rewrite bytecodes in non-shared methods.
+    if (!DumpSharedSpaces && !RequireSharedSpaces) {
       no_shared_spaces();
     }
   }
@@ -1402,6 +1412,30 @@
     if (UseCompressedOops && !FLAG_IS_DEFAULT(UseCompressedOops)) {
       warning("Max heap size too large for Compressed Oops");
       FLAG_SET_DEFAULT(UseCompressedOops, false);
+      FLAG_SET_DEFAULT(UseCompressedKlassPointers, false);
+    }
+  }
+  // UseCompressedOops must be on for UseCompressedKlassPointers to be on.
+  if (!UseCompressedOops) {
+    if (UseCompressedKlassPointers) {
+      warning("UseCompressedKlassPointers requires UseCompressedOops");
+    }
+    FLAG_SET_DEFAULT(UseCompressedKlassPointers, false);
+  } else {
+    // Turn on UseCompressedKlassPointers too
+    // The compiler is broken for this so turn it on when the compiler is fixed.
+    // if (FLAG_IS_DEFAULT(UseCompressedKlassPointers)) {
+    //   FLAG_SET_ERGO(bool, UseCompressedKlassPointers, true);
+    // }
+    // Set the ClassMetaspaceSize to something that will not need to be
+    // expanded, since it cannot be expanded.
+    if (UseCompressedKlassPointers && FLAG_IS_DEFAULT(ClassMetaspaceSize)) {
+      // 100,000 classes seems like a good size, so 100M assumes around 1K
+      // per klass.   The vtable and oopMap is embedded so we don't have a fixed
+      // size per klass.   Eventually, this will be parameterized because it
+      // would also be useful to determine the optimal size of the
+      // systemDictionary.
+      FLAG_SET_ERGO(uintx, ClassMetaspaceSize, 100*M);
     }
   }
   // Also checks that certain machines are slower with compressed oops
@@ -1444,9 +1478,6 @@
       if (FLAG_IS_DEFAULT(MarkSweepDeadRatio)) {
         FLAG_SET_DEFAULT(MarkSweepDeadRatio, 1);
       }
-      if (FLAG_IS_DEFAULT(PermMarkSweepDeadRatio)) {
-        FLAG_SET_DEFAULT(PermMarkSweepDeadRatio, 5);
-      }
     }
   }
   if (UseNUMA) {
@@ -1470,7 +1501,6 @@
     FLAG_SET_DEFAULT(ParallelGCThreads,
                      Abstract_VM_Version::parallel_worker_threads());
   }
-  no_shared_spaces();
 
   if (FLAG_IS_DEFAULT(MarkStackSize)) {
     FLAG_SET_DEFAULT(MarkStackSize, 128 * TASKQUEUE_SIZE);
@@ -1806,7 +1836,6 @@
 
   status = status && verify_percentage(AdaptiveSizePolicyWeight,
                               "AdaptiveSizePolicyWeight");
-  status = status && verify_percentage(AdaptivePermSizeWeight, "AdaptivePermSizeWeight");
   status = status && verify_percentage(ThresholdTolerance, "ThresholdTolerance");
   status = status && verify_percentage(MinHeapFreeRatio, "MinHeapFreeRatio");
   status = status && verify_percentage(MaxHeapFreeRatio, "MaxHeapFreeRatio");
@@ -1946,6 +1975,9 @@
 
   status = status && verify_object_alignment();
 
+  status = status && verify_min_value(ClassMetaspaceSize, 1*M,
+                                      "ClassMetaspaceSize");
+
   return status;
 }
 
@@ -2385,13 +2417,7 @@
 
     // -Xshare:dump
     } else if (match_option(option, "-Xshare:dump", &tail)) {
-#ifdef TIERED
-      FLAG_SET_CMDLINE(bool, DumpSharedSpaces, true);
-      set_mode_flags(_int);     // Prevent compilation, which creates objects
-#elif defined(COMPILER2)
-      vm_exit_during_initialization(
-          "Dumping a shared archive is not supported on the Server JVM.", NULL);
-#elif defined(KERNEL)
+#if defined(KERNEL)
       vm_exit_during_initialization(
           "Dumping a shared archive is not supported on the Kernel JVM.", NULL);
 #else
@@ -2491,15 +2517,6 @@
       // process space.  The 64bit VM version of this function is a nop.
       initHeapSize = os::allocatable_physical_memory(initHeapSize);
 
-      // The perm gen is separate but contiguous with the
-      // object heap (and is reserved with it) so subtract it
-      // from the heap size.
-      if (initHeapSize > MaxPermSize) {
-        initHeapSize = initHeapSize - MaxPermSize;
-      } else {
-        warning("AggressiveHeap and MaxPermSize values may conflict");
-      }
-
       if (FLAG_IS_DEFAULT(MaxHeapSize)) {
          FLAG_SET_CMDLINE(uintx, MaxHeapSize, initHeapSize);
          FLAG_SET_CMDLINE(uintx, InitialHeapSize, initHeapSize);
@@ -2904,39 +2921,25 @@
   const bool must_share = DumpSharedSpaces || RequireSharedSpaces;
   const bool might_share = must_share || UseSharedSpaces;
 
-  // The string table is part of the shared archive so the size must match.
-  if (!FLAG_IS_DEFAULT(StringTableSize)) {
-    // Disable sharing.
-    if (must_share) {
-      warning("disabling shared archive %s because of non-default "
-              "StringTableSize", DumpSharedSpaces ? "creation" : "use");
-    }
-    if (might_share) {
-      FLAG_SET_DEFAULT(DumpSharedSpaces, false);
-      FLAG_SET_DEFAULT(RequireSharedSpaces, false);
-      FLAG_SET_DEFAULT(UseSharedSpaces, false);
-    }
-    return;
-  }
-
-  // Check whether class data sharing settings conflict with GC, compressed oops
-  // or page size, and fix them up.  Explicit sharing options override other
-  // settings.
-  const bool cannot_share = UseConcMarkSweepGC || CMSIncrementalMode ||
-    UseG1GC || UseParNewGC || UseParallelGC || UseParallelOldGC ||
-    UseCompressedOops || UseLargePages && FLAG_IS_CMDLINE(UseLargePages);
+  // CompressedOops cannot be used with CDS.  The offsets of oopmaps and
+  // static fields are incorrect in the archive.  With some more clever
+  // initialization, this restriction can probably be lifted.
+  // ??? UseLargePages might be okay now
+  const bool cannot_share = UseCompressedOops ||
+                            (UseLargePages && FLAG_IS_CMDLINE(UseLargePages));
   if (cannot_share) {
     if (must_share) {
-        warning("selecting serial gc and disabling large pages %s"
+        warning("disabling large pages %s"
                 "because of %s", "" LP64_ONLY("and compressed oops "),
                 DumpSharedSpaces ? "-Xshare:dump" : "-Xshare:on");
-        force_serial_gc();
         FLAG_SET_CMDLINE(bool, UseLargePages, false);
         LP64_ONLY(FLAG_SET_CMDLINE(bool, UseCompressedOops, false));
+        LP64_ONLY(FLAG_SET_CMDLINE(bool, UseCompressedKlassPointers, false));
     } else {
+      // Prefer compressed oops and large pages to class data sharing
       if (UseSharedSpaces && Verbose) {
-        warning("turning off use of shared archive because of "
-                "choice of garbage collector or large pages");
+        warning("turning off use of shared archive because of large pages%s",
+                 "" LP64_ONLY(" and/or compressed oops"));
       }
       no_shared_spaces();
     }
@@ -2945,6 +2948,18 @@
     // there may not even be a shared archive to use.
     FLAG_SET_DEFAULT(UseLargePages, false);
   }
+
+  // Add 2M to any size for SharedReadOnlySize to get around the JPRT setting
+  if (DumpSharedSpaces && !FLAG_IS_DEFAULT(SharedReadOnlySize)) {
+    SharedReadOnlySize = 14*M;
+  }
+
+  if (DumpSharedSpaces) {
+    if (RequireSharedSpaces) {
+      warning("cannot dump shared archive while using shared archive");
+    }
+    UseSharedSpaces = false;
+  }
 }
 
 // Disable options not supported in this release, with a warning if they
@@ -3103,12 +3118,6 @@
     }
     ScavengeRootsInCode = 1;
   }
-  if (!JavaObjectsInPerm && ScavengeRootsInCode == 0) {
-    if (!FLAG_IS_DEFAULT(ScavengeRootsInCode)) {
-      warning("forcing ScavengeRootsInCode non-zero because JavaObjectsInPerm is false");
-    }
-    ScavengeRootsInCode = 1;
-  }
 
   if (PrintGCDetails) {
     // Turn on -verbose:gc options as well
@@ -3200,6 +3209,7 @@
   FLAG_SET_DEFAULT(ProfileInterpreter, false);
   FLAG_SET_DEFAULT(UseBiasedLocking, false);
   LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedOops, false));
+  LP64_ONLY(FLAG_SET_DEFAULT(UseCompressedKlassPointers, false));
 #endif // CC_INTERP
 
 #ifdef COMPILER2
--- a/src/share/vm/runtime/biasedLocking.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/biasedLocking.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -38,7 +38,7 @@
 static GrowableArray<Handle>*  _preserved_oop_stack  = NULL;
 static GrowableArray<markOop>* _preserved_mark_stack = NULL;
 
-static void enable_biased_locking(klassOop k) {
+static void enable_biased_locking(Klass* k) {
   Klass::cast(k)->set_prototype_header(markOopDesc::biased_locking_prototype());
 }
 
@@ -276,7 +276,7 @@
   // 2. Revoke the biases of all objects in the heap of this type
   //    and don't allow rebiasing of these objects. Disable
   //    allocation of objects of that type with the bias bit set.
-  Klass* k = o->blueprint();
+  Klass* k = o->klass();
   jlong cur_time = os::javaTimeMillis();
   jlong last_bulk_revocation_time = k->last_biased_lock_bulk_revocation_time();
   int revocation_count = k->biased_lock_revocation_count();
@@ -330,10 +330,10 @@
   }
 
   jlong cur_time = os::javaTimeMillis();
-  o->blueprint()->set_last_biased_lock_bulk_revocation_time(cur_time);
+  o->klass()->set_last_biased_lock_bulk_revocation_time(cur_time);
 
 
-  klassOop k_o = o->klass();
+  Klass* k_o = o->klass();
   Klass* klass = Klass::cast(k_o);
 
   if (bulk_rebias) {
--- a/src/share/vm/runtime/compilationPolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/compilationPolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -28,8 +28,8 @@
 #include "code/scopeDesc.hpp"
 #include "compiler/compilerOracle.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/nativeLookup.hpp"
 #include "runtime/advancedThresholdPolicy.hpp"
@@ -222,7 +222,7 @@
 //
 class CounterDecay : public AllStatic {
   static jlong _last_timestamp;
-  static void do_method(methodOop m) {
+  static void do_method(Method* m) {
     m->invocation_counter()->decay();
   }
 public:
@@ -245,9 +245,9 @@
   double classes_per_tick = nclasses * (CounterDecayMinIntervalLength * 1e-3 /
                                         CounterHalfLifeTime);
   for (int i = 0; i < classes_per_tick; i++) {
-    klassOop k = SystemDictionary::try_get_next_class();
-    if (k != NULL && k->klass_part()->oop_is_instance()) {
-      instanceKlass::cast(k)->methods_do(do_method);
+    Klass* k = SystemDictionary::try_get_next_class();
+    if (k != NULL && k->oop_is_instance()) {
+      InstanceKlass::cast(k)->methods_do(do_method);
     }
   }
 }
@@ -277,12 +277,12 @@
 
 // This method can be called by any component of the runtime to notify the policy
 // that it's recommended to delay the complation of this method.
-void NonTieredCompPolicy::delay_compilation(methodOop method) {
+void NonTieredCompPolicy::delay_compilation(Method* method) {
   method->invocation_counter()->decay();
   method->backedge_counter()->decay();
 }
 
-void NonTieredCompPolicy::disable_compilation(methodOop method) {
+void NonTieredCompPolicy::disable_compilation(Method* method) {
   method->invocation_counter()->set_state(InvocationCounter::wait_for_nothing);
   method->backedge_counter()->set_state(InvocationCounter::wait_for_nothing);
 }
@@ -291,8 +291,8 @@
   return compile_queue->first();
 }
 
-bool NonTieredCompPolicy::is_mature(methodOop method) {
-  methodDataOop mdo = method->method_data();
+bool NonTieredCompPolicy::is_mature(Method* method) {
+  MethodData* mdo = method->method_data();
   assert(mdo != NULL, "Should be");
   uint current = mdo->mileage_of(method);
   uint initial = mdo->creation_mileage();
@@ -371,7 +371,7 @@
     bc->print();
     if (ProfileInterpreter) {
       if (bci != InvocationEntryBci) {
-        methodDataOop mdo = m->method_data();
+        MethodData* mdo = m->method_data();
         if (mdo != NULL) {
           int count = mdo->bci_to_data(branch_bci)->as_JumpData()->taken();
           tty->print_cr("back branch count = %d", count);
@@ -627,7 +627,7 @@
   // negative filter: should send NOT be inlined?  returns NULL (--> inline) or rejection msg
   if (m->is_abstract()) return (_msg = "abstract method");
   // note: we allow ik->is_abstract()
-  if (!instanceKlass::cast(m->method_holder())->is_initialized()) return (_msg = "method holder not initialized");
+  if (!InstanceKlass::cast(m->method_holder())->is_initialized()) return (_msg = "method holder not initialized");
   if (m->is_native()) return (_msg = "native method");
   nmethod* m_code = m->code();
   if (m_code != NULL && m_code->code_size() > InlineSmallCode)
@@ -639,7 +639,7 @@
     if ((m->code() == NULL) && m->was_never_executed()) return (_msg = "never executed");
     if (!m->was_executed_more_than(MIN2(MinInliningThreshold, CompileThreshold >> 1))) return (_msg = "executed < MinInliningThreshold times");
   }
-  if (methodOopDesc::has_unloaded_classes_in_signature(m, JavaThread::current())) return (_msg = "unloaded signature classes");
+  if (Method::has_unloaded_classes_in_signature(m, JavaThread::current())) return (_msg = "unloaded signature classes");
 
   return NULL;
 }
--- a/src/share/vm/runtime/compilationPolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/compilationPolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -71,15 +71,15 @@
   virtual void reprofile(ScopeDesc* trap_scope, bool is_osr) = 0;
   // delay_compilation(method) can be called by any component of the runtime to notify the policy
   // that it's recommended to delay the complation of this method.
-  virtual void delay_compilation(methodOop method) = 0;
+  virtual void delay_compilation(Method* method) = 0;
   // disable_compilation() is called whenever the runtime decides to disable compilation of the
   // specified method.
-  virtual void disable_compilation(methodOop method) = 0;
+  virtual void disable_compilation(Method* method) = 0;
   // Select task is called by CompileBroker. The queue is guaranteed to have at least one
   // element and is locked. The function should select one and return it.
   virtual CompileTask* select_task(CompileQueue* compile_queue) = 0;
   // Tell the runtime if we think a given method is adequately profiled.
-  virtual bool is_mature(methodOop method) = 0;
+  virtual bool is_mature(Method* method) = 0;
   // Do policy initialization
   virtual void initialize() = 0;
   virtual bool should_not_inline(ciEnv* env, ciMethod* method) { return false; }
@@ -100,9 +100,9 @@
   virtual int compiler_count(CompLevel comp_level);
   virtual void do_safepoint_work();
   virtual void reprofile(ScopeDesc* trap_scope, bool is_osr);
-  virtual void delay_compilation(methodOop method);
-  virtual void disable_compilation(methodOop method);
-  virtual bool is_mature(methodOop method);
+  virtual void delay_compilation(Method* method);
+  virtual void disable_compilation(Method* method);
+  virtual bool is_mature(Method* method);
   virtual void initialize();
   virtual CompileTask* select_task(CompileQueue* compile_queue);
   virtual nmethod* event(methodHandle method, methodHandle inlinee, int branch_bci, int bci, CompLevel comp_level, nmethod* nm, JavaThread* thread);
--- a/src/share/vm/runtime/deoptimization.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/deoptimization.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,7 +34,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiThreadState.hpp"
 #include "runtime/biasedLocking.hpp"
@@ -748,11 +748,11 @@
     assert(objects->at(i)->is_object(), "invalid debug information");
     ObjectValue* sv = (ObjectValue*) objects->at(i);
 
-    KlassHandle k(((ConstantOopReadValue*) sv->klass())->value()());
+    KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()));
     oop obj = NULL;
 
     if (k->oop_is_instance()) {
-      instanceKlass* ik = instanceKlass::cast(k());
+      InstanceKlass* ik = InstanceKlass::cast(k());
       obj = ik->allocate_instance(CHECK_(false));
     } else if (k->oop_is_typeArray()) {
       typeArrayKlass* ak = typeArrayKlass::cast(k());
@@ -782,7 +782,7 @@
   frame* _fr;
   RegisterMap* _reg_map;
   ObjectValue* _sv;
-  instanceKlass* _ik;
+  InstanceKlass* _ik;
   oop _obj;
 
   int _i;
@@ -914,12 +914,12 @@
 void Deoptimization::reassign_fields(frame* fr, RegisterMap* reg_map, GrowableArray<ScopeValue*>* objects) {
   for (int i = 0; i < objects->length(); i++) {
     ObjectValue* sv = (ObjectValue*) objects->at(i);
-    KlassHandle k(((ConstantOopReadValue*) sv->klass())->value()());
+    KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()));
     Handle obj = sv->value();
     assert(obj.not_null(), "reallocation was missed");
 
     if (k->oop_is_instance()) {
-      instanceKlass* ik = instanceKlass::cast(k());
+      InstanceKlass* ik = InstanceKlass::cast(k());
       FieldReassigner reassign(fr, reg_map, sv, obj());
       ik->do_nonstatic_fields(&reassign);
     } else if (k->oop_is_typeArray()) {
@@ -965,11 +965,11 @@
 
   for (int i = 0; i < objects->length(); i++) {
     ObjectValue* sv = (ObjectValue*) objects->at(i);
-    KlassHandle k(((ConstantOopReadValue*) sv->klass())->value()());
+    KlassHandle k(java_lang_Class::as_Klass(sv->klass()->as_ConstantOopReadValue()->value()()));
     Handle obj = sv->value();
 
     tty->print("     object <" INTPTR_FORMAT "> of type ", sv->value()());
-    k->as_klassOop()->print_value();
+    k->print_value();
     tty->print(" allocated (%d bytes)", obj->size() * HeapWordSize);
     tty->cr();
 
@@ -1182,13 +1182,13 @@
 void Deoptimization::load_class_by_index(constantPoolHandle constant_pool, int index, TRAPS) {
   // in case of an unresolved klass entry, load the class.
   if (constant_pool->tag_at(index).is_unresolved_klass()) {
-    klassOop tk = constant_pool->klass_at(index, CHECK);
+    Klass* tk = constant_pool->klass_at(index, CHECK);
     return;
   }
 
   if (!constant_pool->tag_at(index).is_symbol()) return;
 
-  Handle class_loader (THREAD, instanceKlass::cast(constant_pool->pool_holder())->class_loader());
+  Handle class_loader (THREAD, InstanceKlass::cast(constant_pool->pool_holder())->class_loader());
   Symbol*  symbol  = constant_pool->symbol_at(index);
 
   // class name?
@@ -1268,8 +1268,8 @@
     // Ensure that we can record deopt. history:
     bool create_if_missing = ProfileTraps;
 
-    methodDataHandle trap_mdo
-      (THREAD, get_method_data(thread, trap_method, create_if_missing));
+    MethodData* trap_mdo =
+      get_method_data(thread, trap_method, create_if_missing);
 
     // Print a bunch of diagnostics, if requested.
     if (TraceDeoptimization || LogCompilation) {
@@ -1297,7 +1297,7 @@
         if (xtty != NULL)
           xtty->name(class_name);
       }
-      if (xtty != NULL && trap_mdo.not_null()) {
+      if (xtty != NULL && trap_mdo != NULL) {
         // Dump the relevant MDO state.
         // This is the deopt count for the current reason, any previous
         // reasons or recompiles seen at this point.
@@ -1380,7 +1380,7 @@
     //   PerMethodRecompilationCutoff, the method is abandoned.
     //   This should only happen if the method is very large and has
     //   many "lukewarm" deoptimizations.  The code which enforces this
-    //   limit is elsewhere (class nmethod, class methodOopDesc).
+    //   limit is elsewhere (class nmethod, class Method).
     //
     // Note that the per-BCI 'is_recompiled' bit gives the compiler one chance
     // to recompile at each bytecode independently of the per-BCI cutoff.
@@ -1449,15 +1449,15 @@
     // Setting +ProfileTraps fixes the following, on all platforms:
     // 4852688: ProfileInterpreter is off by default for ia64.  The result is
     // infinite heroic-opt-uncommon-trap/deopt/recompile cycles, since the
-    // recompile relies on a methodDataOop to record heroic opt failures.
+    // recompile relies on a MethodData* to record heroic opt failures.
 
     // Whether the interpreter is producing MDO data or not, we also need
     // to use the MDO to detect hot deoptimization points and control
     // aggressive optimization.
     bool inc_recompile_count = false;
     ProfileData* pdata = NULL;
-    if (ProfileTraps && update_trap_state && trap_mdo.not_null()) {
-      assert(trap_mdo() == get_method_data(thread, trap_method, false), "sanity");
+    if (ProfileTraps && update_trap_state && trap_mdo != NULL) {
+      assert(trap_mdo == get_method_data(thread, trap_method, false), "sanity");
       uint this_trap_count = 0;
       bool maybe_prior_trap = false;
       bool maybe_prior_recompile = false;
@@ -1573,15 +1573,15 @@
 }
 JRT_END
 
-methodDataOop
+MethodData*
 Deoptimization::get_method_data(JavaThread* thread, methodHandle m,
                                 bool create_if_missing) {
   Thread* THREAD = thread;
-  methodDataOop mdo = m()->method_data();
+  MethodData* mdo = m()->method_data();
   if (mdo == NULL && create_if_missing && !HAS_PENDING_EXCEPTION) {
     // Build an MDO.  Ignore errors like OutOfMemory;
     // that simply means we won't have an MDO to update.
-    methodOopDesc::build_interpreter_method_data(m, THREAD);
+    Method::build_interpreter_method_data(m, THREAD);
     if (HAS_PENDING_EXCEPTION) {
       assert((PENDING_EXCEPTION->is_a(SystemDictionary::OutOfMemoryError_klass())), "we expect only an OOM error here");
       CLEAR_PENDING_EXCEPTION;
@@ -1592,7 +1592,7 @@
 }
 
 ProfileData*
-Deoptimization::query_update_method_data(methodDataHandle trap_mdo,
+Deoptimization::query_update_method_data(MethodData* trap_mdo,
                                          int trap_bci,
                                          Deoptimization::DeoptReason reason,
                                          //outputs:
@@ -1652,7 +1652,7 @@
 }
 
 void
-Deoptimization::update_method_data_from_interpreter(methodDataHandle trap_mdo, int trap_bci, int reason) {
+Deoptimization::update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason) {
   ResourceMark rm;
   // Ignored outputs:
   uint ignore_this_trap_count;
@@ -1940,7 +1940,7 @@
 }
 
 void
-Deoptimization::update_method_data_from_interpreter(methodDataHandle trap_mdo, int trap_bci, int reason) {
+Deoptimization::update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason) {
   // no udpate
 }
 
--- a/src/share/vm/runtime/deoptimization.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/deoptimization.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -332,9 +332,9 @@
   static void popframe_preserve_args(JavaThread* thread, int bytes_to_save, void* start_address);
 
  private:
-  static methodDataOop get_method_data(JavaThread* thread, methodHandle m, bool create_if_missing);
+  static MethodData* get_method_data(JavaThread* thread, methodHandle m, bool create_if_missing);
   // Update the mdo's count and per-BCI reason bits, returning previous state:
-  static ProfileData* query_update_method_data(methodDataHandle trap_mdo,
+  static ProfileData* query_update_method_data(MethodData* trap_mdo,
                                                int trap_bci,
                                                DeoptReason reason,
                                                //outputs:
@@ -355,7 +355,7 @@
   // Note:  Histogram array size is 1-2 Kb.
 
  public:
-  static void update_method_data_from_interpreter(methodDataHandle trap_mdo, int trap_bci, int reason);
+  static void update_method_data_from_interpreter(MethodData* trap_mdo, int trap_bci, int reason);
 };
 
 class DeoptimizationMarker : StackObj {  // for profiling
--- a/src/share/vm/runtime/dtraceJSDT.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/dtraceJSDT.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -67,7 +67,7 @@
       assert(probe->name != NULL, "valid probe name");
       assert(probe->function != NULL, "valid probe function spec");
       methodHandle h_method =
-        methodHandle(THREAD, JNIHandles::resolve_jmethod_id(probe->method));
+        methodHandle(THREAD, Method::resolve_jmethod_id(probe->method));
       nmethod* nm = AdapterHandlerLibrary::create_dtrace_nmethod(h_method);
       if (nm == NULL) {
         delete probes;
@@ -92,7 +92,7 @@
 }
 
 jboolean DTraceJSDT::is_probe_enabled(jmethodID method) {
-  methodOop m = JNIHandles::resolve_jmethod_id(method);
+  Method* m = Method::resolve_jmethod_id(method);
   return nativeInstruction_at(m->code()->trap_address())->is_dtrace_trap();
 }
 
--- a/src/share/vm/runtime/fieldDescriptor.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/fieldDescriptor.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -27,6 +27,7 @@
 #include "classfile/vmSymbols.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
+#include "oops/annotations.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/fieldStreams.hpp"
 #include "runtime/fieldDescriptor.hpp"
@@ -35,7 +36,7 @@
 
 
 oop fieldDescriptor::loader() const {
-  return instanceKlass::cast(_cp->pool_holder())->class_loader();
+  return InstanceKlass::cast(_cp->pool_holder())->class_loader();
 }
 
 Symbol* fieldDescriptor::generic_signature() const {
@@ -44,7 +45,7 @@
   }
 
   int idx = 0;
-  instanceKlass* ik = instanceKlass::cast(field_holder());
+  InstanceKlass* ik = InstanceKlass::cast(field_holder());
   for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
     if (idx == _index) {
       return fs.generic_signature();
@@ -56,12 +57,12 @@
   return NULL;
 }
 
-typeArrayOop fieldDescriptor::annotations() const {
-  instanceKlass* ik = instanceKlass::cast(field_holder());
-  objArrayOop md = ik->fields_annotations();
+AnnotationArray* fieldDescriptor::annotations() const {
+  InstanceKlass* ik = InstanceKlass::cast(field_holder());
+  Array<AnnotationArray*>* md = ik->fields_annotations();
   if (md == NULL)
     return NULL;
-  return typeArrayOop(md->obj_at(index()));
+  return md->at(index());
 }
 
 constantTag fieldDescriptor::initial_value_tag() const {
@@ -85,11 +86,10 @@
 }
 
 oop fieldDescriptor::string_initial_value(TRAPS) const {
-  return constants()->string_at(initial_value_index(), CHECK_0);
+  return constants()->uncached_string_at(initial_value_index(), CHECK_0);
 }
 
-void fieldDescriptor::initialize(klassOop k, int index) {
-  instanceKlass* ik = instanceKlass::cast(k);
+void fieldDescriptor::initialize(InstanceKlass* ik, int index) {
   _cp = ik->constants();
   FieldInfo* f = ik->field(index);
   assert(!f->is_internal(), "regular Java fields only");
--- a/src/share/vm/runtime/fieldDescriptor.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/fieldDescriptor.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -25,9 +25,7 @@
 #ifndef SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
 #define SHARE_VM_RUNTIME_FIELDDESCRIPTOR_HPP
 
-#include "oops/constantPoolOop.hpp"
-#include "oops/klassOop.hpp"
-#include "oops/oop.inline.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/symbol.hpp"
 #include "runtime/fieldType.hpp"
 #include "utilities/accessFlags.hpp"
@@ -45,12 +43,12 @@
 
   // update the access_flags for the field in the klass
   void update_klass_field_access_flag() {
-    instanceKlass* ik = instanceKlass::cast(field_holder());
+    InstanceKlass* ik = InstanceKlass::cast(field_holder());
     ik->field(index())->set_access_flags(_access_flags.as_short());
   }
 
   FieldInfo* field() const {
-    instanceKlass* ik = instanceKlass::cast(field_holder());
+    InstanceKlass* ik = InstanceKlass::cast(field_holder());
     return ik->field(_index);
   }
 
@@ -61,15 +59,15 @@
   Symbol* signature() const {
     return field()->signature(_cp);
   }
-  klassOop field_holder() const        { return _cp->pool_holder(); }
-  constantPoolOop constants() const    { return _cp(); }
+  Klass* field_holder() const        { return _cp->pool_holder(); }
+  ConstantPool* constants() const    { return _cp(); }
   AccessFlags access_flags() const     { return _access_flags; }
   oop loader() const;
-  // Offset (in words) of field from start of instanceOop / klassOop
+  // Offset (in words) of field from start of instanceOop / Klass*
   int offset() const                   { return field()->offset(); }
   Symbol* generic_signature() const;
   int index() const                    { return _index; }
-  typeArrayOop annotations() const;
+  AnnotationArray* annotations() const;
 
   // Initial field value
   bool has_initial_value() const          { return field()->initval_index() != 0; }
@@ -113,7 +111,7 @@
   }
 
   // Initialization
-  void initialize(klassOop k, int index);
+  void initialize(InstanceKlass* ik, int index);
 
   // Print
   void print() { print_on(tty); }
--- a/src/share/vm/runtime/fprofiler.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/fprofiler.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -288,9 +288,9 @@
   virtual bool is_runtime_stub() const{ return false; }
   virtual void oops_do(OopClosure* f) = 0;
 
-  virtual bool interpreted_match(methodOop m) const { return false; }
-  virtual bool compiled_match(methodOop m ) const { return false; }
-  virtual bool stub_match(methodOop m, const char* name) const { return false; }
+  virtual bool interpreted_match(Method* m) const { return false; }
+  virtual bool compiled_match(Method* m ) const { return false; }
+  virtual bool stub_match(Method* m, const char* name) const { return false; }
   virtual bool adapter_match() const { return false; }
   virtual bool runtimeStub_match(const CodeBlob* stub, const char* name) const { return false; }
   virtual bool unknown_compiled_match(const CodeBlob* cb) const { return false; }
@@ -312,12 +312,12 @@
     st->cr();
   }
 
-  virtual methodOop method()         = 0;
+  virtual Method* method()         = 0;
 
   virtual void print_method_on(outputStream* st) {
     int limit;
     int i;
-    methodOop m = method();
+    Method* m = method();
     Symbol* k = m->klass_name();
     // Print the class name with dots instead of slashes
     limit = k->utf8_length();
@@ -342,7 +342,7 @@
       Symbol* sig = m->signature();
       sig->print_symbol_on(st);
     } else if (MethodHandles::is_signature_polymorphic(m->intrinsic_id()))
-      // compare with methodOopDesc::print_short_name
+      // compare with Method::print_short_name
       MethodHandles::print_as_basic_type_signature_on(st, m->signature(), true);
   }
 
@@ -356,7 +356,7 @@
   }
 
   // for hashing into the table
-  static int hash(methodOop method) {
+  static int hash(Method* method) {
       // The point here is to try to make something fairly unique
       // out of the fields we can read without grabbing any locks
       // since the method may be locked when we need the hash.
@@ -388,24 +388,26 @@
 
 class interpretedNode : public ProfilerNode {
  private:
-   methodOop _method;
+   Method* _method;
+   oop       _class_loader;  // needed to keep metadata for the method alive
  public:
-   interpretedNode(methodOop method, TickPosition where) : ProfilerNode() {
+   interpretedNode(Method* method, TickPosition where) : ProfilerNode() {
      _method = method;
+     _class_loader = method->method_holder()->class_loader();
      update(where);
    }
 
    bool is_interpreted() const { return true; }
 
-   bool interpreted_match(methodOop m) const {
+   bool interpreted_match(Method* m) const {
       return _method == m;
    }
 
    void oops_do(OopClosure* f) {
-     f->do_oop((oop*)&_method);
+     f->do_oop(&_class_loader);
    }
 
-   methodOop method() { return _method; }
+   Method* method() { return _method; }
 
    static void print_title(outputStream* st) {
      st->fill_to(col1);
@@ -425,22 +427,24 @@
 
 class compiledNode : public ProfilerNode {
  private:
-   methodOop _method;
+   Method* _method;
+   oop       _class_loader;  // needed to keep metadata for the method alive
  public:
-   compiledNode(methodOop method, TickPosition where) : ProfilerNode() {
+   compiledNode(Method* method, TickPosition where) : ProfilerNode() {
      _method = method;
+     _class_loader = method->method_holder()->class_loader();
      update(where);
   }
   bool is_compiled()    const { return true; }
 
-  bool compiled_match(methodOop m) const {
+  bool compiled_match(Method* m) const {
     return _method == m;
   }
 
-  methodOop method()         { return _method; }
+  Method* method()         { return _method; }
 
   void oops_do(OopClosure* f) {
-    f->do_oop((oop*)&_method);
+    f->do_oop(&_class_loader);
   }
 
   static void print_title(outputStream* st) {
@@ -460,26 +464,28 @@
 
 class stubNode : public ProfilerNode {
  private:
-  methodOop _method;
+  Method* _method;
+  oop       _class_loader;  // needed to keep metadata for the method alive
   const char* _symbol;   // The name of the nearest VM symbol (for +ProfileVM). Points to a unique string
  public:
-   stubNode(methodOop method, const char* name, TickPosition where) : ProfilerNode() {
+   stubNode(Method* method, const char* name, TickPosition where) : ProfilerNode() {
      _method = method;
+     _class_loader = method->method_holder()->class_loader();
      _symbol = name;
      update(where);
    }
 
    bool is_stub() const { return true; }
 
-   bool stub_match(methodOop m, const char* name) const {
+   void oops_do(OopClosure* f) {
+     f->do_oop(&_class_loader);
+   }
+
+   bool stub_match(Method* m, const char* name) const {
      return (_method == m) && (_symbol == name);
    }
 
-   void oops_do(OopClosure* f) {
-     f->do_oop((oop*)&_method);
-   }
-
-   methodOop method() { return _method; }
+   Method* method() { return _method; }
 
    static void print_title(outputStream* st) {
      st->fill_to(col1);
@@ -512,7 +518,7 @@
 
   bool adapter_match() const { return true; }
 
-  methodOop method()         { return NULL; }
+  Method* method()         { return NULL; }
 
   void oops_do(OopClosure* f) {
     ;
@@ -545,7 +551,7 @@
             (_symbol == name);
   }
 
-  methodOop method() { return NULL; }
+  Method* method() { return NULL; }
 
   static void print_title(outputStream* st) {
     st->fill_to(col1);
@@ -593,7 +599,7 @@
        return !strcmp(((SingletonBlob*)cb)->name(), _name);
   }
 
-  methodOop method()         { return NULL; }
+  Method* method()         { return NULL; }
 
   void oops_do(OopClosure* f) {
     ;
@@ -627,7 +633,7 @@
 
   bool vm_match(const char* name) const { return strcmp(name, _name) == 0; }
 
-  methodOop method()          { return NULL; }
+  Method* method()          { return NULL; }
 
   static int hash(const char* name){
     // Compute a simple hash
@@ -661,7 +667,7 @@
   }
 };
 
-void ThreadProfiler::interpreted_update(methodOop method, TickPosition where) {
+void ThreadProfiler::interpreted_update(Method* method, TickPosition where) {
   int index = entry(ProfilerNode::hash(method));
   if (!table[index]) {
     table[index] = new (this) interpretedNode(method, where);
@@ -678,7 +684,7 @@
   }
 }
 
-void ThreadProfiler::compiled_update(methodOop method, TickPosition where) {
+void ThreadProfiler::compiled_update(Method* method, TickPosition where) {
   int index = entry(ProfilerNode::hash(method));
   if (!table[index]) {
     table[index] = new (this) compiledNode(method, where);
@@ -695,7 +701,7 @@
   }
 }
 
-void ThreadProfiler::stub_update(methodOop method, const char* name, TickPosition where) {
+void ThreadProfiler::stub_update(Method* method, const char* name, TickPosition where) {
   int index = entry(ProfilerNode::hash(method));
   if (!table[index]) {
     table[index] = new (this) stubNode(method, name, where);
@@ -957,7 +963,7 @@
 
   // The frame has been fully validated so we can trust the method and bci
 
-  methodOop method = *fr.interpreter_frame_method_addr();
+  Method* method = *fr.interpreter_frame_method_addr();
 
   interpreted_update(method, where);
 
@@ -984,8 +990,8 @@
         cb = fr.cb();
         localwhere = tp_native;
   }
-  methodOop method = (cb->is_nmethod()) ? ((nmethod *)cb)->method() :
-                                          (methodOop)NULL;
+  Method* method = (cb->is_nmethod()) ? ((nmethod *)cb)->method() :
+                                          (Method*)NULL;
 
   if (method == NULL) {
     if (cb->is_runtime_stub())
--- a/src/share/vm/runtime/fprofiler.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/fprofiler.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -154,9 +154,9 @@
 private:
   void record_interpreted_tick(JavaThread* thread, frame fr, TickPosition where, int* ticks);
   void record_compiled_tick   (JavaThread* thread, frame fr, TickPosition where);
-  void interpreted_update(methodOop method, TickPosition where);
-  void compiled_update   (methodOop method, TickPosition where);
-  void stub_update       (methodOop method, const char* name, TickPosition where);
+  void interpreted_update(Method* method, TickPosition where);
+  void compiled_update   (Method* method, TickPosition where);
+  void stub_update       (Method* method, const char* name, TickPosition where);
   void adapter_update    (TickPosition where);
 
   void runtime_stub_update(const CodeBlob* stub, const char* name, TickPosition where);
--- a/src/share/vm/runtime/frame.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/frame.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -29,8 +29,8 @@
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/oop.inline2.hpp"
 #include "prims/methodHandles.hpp"
@@ -383,15 +383,15 @@
   *interpreter_frame_locals_addr() = locs;
 }
 
-methodOop frame::interpreter_frame_method() const {
+Method* frame::interpreter_frame_method() const {
   assert(is_interpreted_frame(), "interpreted frame expected");
-  methodOop m = *interpreter_frame_method_addr();
-  assert(m->is_perm(), "bad methodOop in interpreter frame");
-  assert(m->is_method(), "not a methodOop");
+  Method* m = *interpreter_frame_method_addr();
+  assert(m->is_metadata(), "bad Method* in interpreter frame");
+  assert(m->is_method(), "not a Method*");
   return m;
 }
 
-void frame::interpreter_frame_set_method(methodOop method) {
+void frame::interpreter_frame_set_method(Method* method) {
   assert(is_interpreted_frame(), "interpreted frame expected");
   *interpreter_frame_method_addr() = method;
 }
@@ -410,7 +410,7 @@
         if (!is_now_bci) {
           // The bcx was just converted from bci to bcp.
           // Convert the mdx in parallel.
-          methodDataOop mdo = interpreter_frame_method()->method_data();
+          MethodData* mdo = interpreter_frame_method()->method_data();
           assert(mdo != NULL, "");
           int mdi = mdx - 1; // We distinguish valid mdi from zero by adding one.
           address mdp = mdo->di_to_dp(mdi);
@@ -420,7 +420,7 @@
         if (is_now_bci) {
           // The bcx was just converted from bcp to bci.
           // Convert the mdx in parallel.
-          methodDataOop mdo = interpreter_frame_method()->method_data();
+          MethodData* mdo = interpreter_frame_method()->method_data();
           assert(mdo != NULL, "");
           int mdi = mdo->dp_to_di((address)mdx);
           interpreter_frame_set_mdx((intptr_t)mdi + 1); // distinguish valid from 0.
@@ -691,7 +691,7 @@
 void frame::print_on_error(outputStream* st, char* buf, int buflen, bool verbose) const {
   if (_cb != NULL) {
     if (Interpreter::contains(pc())) {
-      methodOop m = this->interpreter_frame_method();
+      Method* m = this->interpreter_frame_method();
       if (m != NULL) {
         m->name_and_sig_as_C_string(buf, buflen);
         st->print("j  %s", buf);
@@ -709,7 +709,7 @@
     } else if (_cb->is_buffer_blob()) {
       st->print("v  ~BufferBlob::%s", ((BufferBlob *)_cb)->name());
     } else if (_cb->is_nmethod()) {
-      methodOop m = ((nmethod *)_cb)->method();
+      Method* m = ((nmethod *)_cb)->method();
       if (m != NULL) {
         m->name_and_sig_as_C_string(buf, buflen);
         st->print("J  %s", buf);
@@ -736,8 +736,8 @@
 /*
   The interpreter_frame_expression_stack_at method in the case of SPARC needs the
   max_stack value of the method in order to compute the expression stack address.
-  It uses the methodOop in order to get the max_stack value but during GC this
-  methodOop value saved on the frame is changed by reverse_and_push and hence cannot
+  It uses the Method* in order to get the max_stack value but during GC this
+  Method* value saved on the frame is changed by reverse_and_push and hence cannot
   be used. So we save the max_stack value in the FrameClosure object and pass it
   down to the interpreter_frame_expression_stack_at method
 */
@@ -886,9 +886,12 @@
   methodHandle m (thread, interpreter_frame_method());
   jint      bci = interpreter_frame_bci();
 
-  assert(Universe::heap()->is_in(m()), "must be valid oop");
+  assert(!Universe::heap()->is_in(m()),
+          "must be valid oop");
   assert(m->is_method(), "checking frame value");
-  assert((m->is_native() && bci == 0)  || (!m->is_native() && bci >= 0 && bci < m->code_size()), "invalid bci value");
+  assert((m->is_native() && bci == 0)  ||
+         (!m->is_native() && bci >= 0 && bci < m->code_size()),
+         "invalid bci value");
 
   // Handle the monitor elements in the activation
   for (
@@ -903,23 +906,10 @@
   }
 
   // process fixed part
-  f->do_oop((oop*)interpreter_frame_method_addr());
-  f->do_oop((oop*)interpreter_frame_cache_addr());
-
-  // Hmm what about the mdp?
-#ifdef CC_INTERP
-  // Interpreter frame in the midst of a call have a methodOop within the
-  // object.
-  interpreterState istate = get_interpreterState();
-  if (istate->msg() == BytecodeInterpreter::call_method) {
-    f->do_oop((oop*)&istate->_result._to_call._callee);
-  }
-
-#endif /* CC_INTERP */
-
 #if !defined(PPC) || defined(ZERO)
   if (m->is_native()) {
 #ifdef CC_INTERP
+    interpreterState istate = get_interpreterState();
     f->do_oop((oop*)&istate->_oop_temp);
 #else
     f->do_oop((oop*)( fp() + interpreter_frame_oop_temp_offset ));
@@ -1148,9 +1138,19 @@
 }
 
 
+// call f() on the interpreted Method*s in the stack.
+// Have to walk the entire code cache for the compiled frames Yuck.
+void frame::metadata_do(void f(Metadata*)) {
+  if (_cb != NULL && Interpreter::contains(pc())) {
+    Method* m = this->interpreter_frame_method();
+    assert(m != NULL, "huh?");
+    f(m);
+  }
+}
+
 void frame::gc_prologue() {
   if (is_interpreted_frame()) {
-    // set bcx to bci to become methodOop position independent during GC
+    // set bcx to bci to become Method* position independent during GC
     interpreter_frame_set_bcx(interpreter_frame_bci());
   }
 }
@@ -1225,7 +1225,7 @@
 void frame::zap_dead_interpreted_locals(JavaThread *thread, const RegisterMap* map) {
   // get current interpreter 'pc'
   assert(is_interpreted_frame(), "Not an interpreted frame");
-  methodOop m   = interpreter_frame_method();
+  Method* m   = interpreter_frame_method();
   int       bci = interpreter_frame_bci();
 
   int max_locals = m->is_native() ? m->size_of_parameters() : m->max_locals();
@@ -1269,7 +1269,7 @@
 void frame::verify(const RegisterMap* map) {
   // for now make sure receiver type is correct
   if (is_interpreted_frame()) {
-    methodOop method = interpreter_frame_method();
+    Method* method = interpreter_frame_method();
     guarantee(method->is_method(), "method is wrong in frame::verify");
     if (!method->is_static()) {
       // fetch the receiver
@@ -1334,7 +1334,7 @@
   }
 
   if (is_interpreted_frame()) {
-    methodOop m = interpreter_frame_method();
+    Method* m = interpreter_frame_method();
     int bci = interpreter_frame_bci();
 
     // Label the method and current bci
--- a/src/share/vm/runtime/frame.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/frame.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,7 +26,7 @@
 #define SHARE_VM_RUNTIME_FRAME_HPP
 
 #include "asm/assembler.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/basicLock.hpp"
 #include "runtime/monitorChunk.hpp"
 #include "runtime/registerMap.hpp"
@@ -197,7 +197,7 @@
 
   oop*      obj_at_addr(int offset) const        { return (oop*)     addr_at(offset); }
 
-  oop*      adjusted_obj_at_addr(methodOop method, int index) { return obj_at_addr(adjust_offset(method, index)); }
+  oop*      adjusted_obj_at_addr(Method* method, int index) { return obj_at_addr(adjust_offset(method, index)); }
 
  private:
   jint*    int_at_addr(int offset) const         { return (jint*)    addr_at(offset); }
@@ -343,10 +343,10 @@
 
  public:
   // Method & constant pool cache
-  methodOop interpreter_frame_method() const;
-  void interpreter_frame_set_method(methodOop method);
-  methodOop* interpreter_frame_method_addr() const;
-  constantPoolCacheOop* interpreter_frame_cache_addr() const;
+  Method* interpreter_frame_method() const;
+  void interpreter_frame_set_method(Method* method);
+  Method** interpreter_frame_method_addr() const;
+  ConstantPoolCache** interpreter_frame_cache_addr() const;
 #ifdef PPC
   oop* interpreter_frame_mirror_addr() const;
 #endif
@@ -422,12 +422,15 @@
   void oops_do_internal(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map, bool use_interpreter_oop_map_cache);
   void oops_entry_do(OopClosure* f, const RegisterMap* map);
   void oops_code_blob_do(OopClosure* f, CodeBlobClosure* cf, const RegisterMap* map);
-  int adjust_offset(methodOop method, int index); // helper for above fn
+  int adjust_offset(Method* method, int index); // helper for above fn
  public:
   // Memory management
   void oops_do(OopClosure* f, CodeBlobClosure* cf, RegisterMap* map) { oops_do_internal(f, cf, map, true); }
   void nmethods_do(CodeBlobClosure* cf);
 
+  // RedefineClasses support for finding live interpreted methods on the stack
+  void metadata_do(void f(Metadata*));
+
   void gc_prologue();
   void gc_epilogue();
   void pd_gc_epilog();
--- a/src/share/vm/runtime/frame.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/frame.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -28,7 +28,7 @@
 #include "interpreter/bytecodeInterpreter.hpp"
 #include "interpreter/bytecodeInterpreter.inline.hpp"
 #include "interpreter/interpreter.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/frame.hpp"
 #include "runtime/signature.hpp"
 #ifdef TARGET_ARCH_x86
@@ -58,7 +58,7 @@
 // This file holds platform-independent bodies of inline functions for frames.
 
 // Note: The bcx usually contains the bcp; however during GC it contains the bci
-//       (changed by gc_prologue() and gc_epilogue()) to be methodOop position
+//       (changed by gc_prologue() and gc_epilogue()) to be Method* position
 //       independent. These accessors make sure the correct value is returned
 //       by testing the range of the bcx value. bcp's are guaranteed to be above
 //       max_method_code_size, since methods are always allocated in OldSpace and
--- a/src/share/vm/runtime/globals.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/globals.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -175,8 +175,7 @@
 define_pd_global(intx, ReservedCodeCacheSize,        32*M);
 define_pd_global(intx, CodeCacheExpansionSize,       32*K);
 define_pd_global(intx, CodeCacheMinBlockLength,      1);
-define_pd_global(uintx,PermSize,    ScaleForWordSize(4*M));
-define_pd_global(uintx,MaxPermSize, ScaleForWordSize(64*M));
+define_pd_global(uintx,MetaspaceSize,    ScaleForWordSize(4*M));
 define_pd_global(bool, NeverActAsServerClassMachine, true);
 define_pd_global(uint64_t,MaxRAM,                    1ULL*G);
 #define CI_COMPILER_COUNT 0
@@ -439,7 +438,11 @@
 #define RUNTIME_FLAGS(develop, develop_pd, product, product_pd, diagnostic, experimental, notproduct, manageable, product_rw, lp64_product) \
                                                                             \
   lp64_product(bool, UseCompressedOops, false,                              \
-            "Use 32-bit object references in 64-bit VM. "                   \
+            "Use 32-bit object references in 64-bit VM  "                   \
+            "lp64_product means flag is always constant in 32 bit VM")      \
+                                                                            \
+  lp64_product(bool, UseCompressedKlassPointers, false,                     \
+            "Use 32-bit klass pointers in 64-bit VM  "                      \
             "lp64_product means flag is always constant in 32 bit VM")      \
                                                                             \
   notproduct(bool, CheckCompressedOops, true,                               \
@@ -1188,11 +1191,6 @@
           "Decay time (in milliseconds) to re-enable bulk rebiasing of a "  \
           "type after previous bulk rebias")                                \
                                                                             \
-  develop(bool, JavaObjectsInPerm, false,                                   \
-          "controls whether Classes and interned Strings are allocated"     \
-          "in perm.  This purely intended to allow debugging issues"        \
-          "in production.")                                                 \
-                                                                            \
   /* tracing */                                                             \
                                                                             \
   notproduct(bool, TraceRuntimeCalls, false,                                \
@@ -1677,9 +1675,6 @@
   product(uintx, CMSConcMarkMultiple, 32,                                   \
           "Size (in cards) of CMS concurrent MT marking task")              \
                                                                             \
-  product(uintx, CMSRevisitStackSize, 1*M,                                  \
-          "Size of CMS KlassKlass revisit stack")                           \
-                                                                            \
   product(bool, CMSAbortSemantics, false,                                   \
           "Whether abort-on-overflow semantics is implemented")             \
                                                                             \
@@ -1697,10 +1692,6 @@
   product(bool, CMSConcurrentMTEnabled, true,                               \
           "Whether multi-threaded concurrent work enabled (if ParNewGC)")   \
                                                                             \
-  product(bool, CMSPermGenPrecleaningEnabled, true,                         \
-          "Whether concurrent precleaning enabled in perm gen"              \
-          " (effective only when CMSPrecleaningEnabled is true)")           \
-                                                                            \
   product(bool, CMSPrecleaningEnabled, true,                                \
           "Whether concurrent precleaning enabled")                         \
                                                                             \
@@ -1816,11 +1807,6 @@
           "Percentage of MinHeapFreeRatio in CMS generation that is "       \
           "allocated before a CMS collection cycle commences")              \
                                                                             \
-  product(intx, CMSTriggerPermRatio, 80,                                    \
-          "Percentage of MinHeapFreeRatio in the CMS perm generation that " \
-          "is allocated before a CMS collection cycle commences, that "     \
-          "also collects the perm generation")                              \
-                                                                            \
   product(uintx, CMSBootstrapOccupancy, 50,                                 \
           "Percentage CMS generation occupancy at which to "                \
           "initiate CMS collection for bootstrapping collection stats")     \
@@ -1836,11 +1822,6 @@
           "not just one of the generations (e.g., G1). A value of 0 "       \
           "denotes 'do constant GC cycles'.")                               \
                                                                             \
-  product(intx, CMSInitiatingPermOccupancyFraction, -1,                     \
-          "Percentage CMS perm generation occupancy to start a "            \
-          "CMScollection cycle. A negative value means that "               \
-          "CMSTriggerPermRatio is used")                                    \
-                                                                            \
   product(bool, UseCMSInitiatingOccupancyOnly, false,                       \
           "Only use occupancy as a crierion for starting a CMS collection") \
                                                                             \
@@ -1900,6 +1881,29 @@
           "Number of ObjArray elements to push onto the marking stack"      \
           "before pushing a continuation entry")                            \
                                                                             \
+  develop(bool, MetadataAllocationFailALot, false,                          \
+          "Fail metadata allocations at intervals controlled by "           \
+          "MetadataAllocationFailALotInterval")                             \
+                                                                            \
+  develop(uintx, MetadataAllocationFailALotInterval, 1000,                  \
+          "metadata allocation failure alot interval")                      \
+                                                                            \
+  develop(bool, MetaDataDeallocateALot, false,                              \
+          "Deallocation bunches of metadata at intervals controlled by "    \
+          "MetaDataAllocateALotInterval")                                   \
+                                                                            \
+  develop(uintx, MetaDataDeallocateALotInterval, 100,                       \
+          "Metadata deallocation alot interval")                            \
+                                                                            \
+  develop(bool, TraceMetadataChunkAllocation, false,                        \
+          "Trace humongous metadata allocations")                           \
+                                                                            \
+  product(bool, TraceMetadataHumongousAllocation, false,                    \
+          "Trace humongous metadata allocations")                           \
+                                                                            \
+  develop(bool, TraceMetavirtualspaceAllocation, false,                     \
+          "Trace humongous metadata allocations")                           \
+                                                                            \
   notproduct(bool, ExecuteInternalVMTests, false,                           \
           "Enable execution of internal VM tests.")                         \
                                                                             \
@@ -1920,9 +1924,6 @@
   product(bool, TLABStats, true,                                            \
           "Print various TLAB related information")                         \
                                                                             \
-  product(bool, PrintRevisitStats, false,                                   \
-          "Print revisit (klass and MDO) stack related information")        \
-                                                                            \
   EMBEDDED_ONLY(product(bool, LowMemoryProtection, true,                    \
           "Enable LowMemoryProtection"))                                    \
                                                                             \
@@ -2023,12 +2024,6 @@
   product(uintx, SurvivorPadding, 3,                                        \
           "How much buffer to keep for survivor overflow")                  \
                                                                             \
-  product(uintx, AdaptivePermSizeWeight, 20,                                \
-          "Weight for perm gen exponential resizing, between 0 and 100")    \
-                                                                            \
-  product(uintx, PermGenPadding, 3,                                         \
-          "How much buffer to keep for perm gen sizing")                    \
-                                                                            \
   product(uintx, ThresholdTolerance, 10,                                    \
           "Allowed collection cost difference between generations")         \
                                                                             \
@@ -2216,6 +2211,12 @@
   product_rw(bool, TraceLoaderConstraints, false,                           \
           "Trace loader constraints")                                       \
                                                                             \
+  develop(bool, TraceClassLoaderData, false,                                \
+          "Trace class loader loader_data lifetime")                        \
+                                                                            \
+  product(uintx, InitialBootClassLoaderMetaspaceSize, 3*M,                  \
+          "Initial size of the boot class loader data metaspace")           \
+                                                                            \
   product(bool, TraceGen0Time, false,                                       \
           "Trace accumulated time for Gen 0 collection")                    \
                                                                             \
@@ -2986,11 +2987,15 @@
           "Additional size added to desired new generation size per "       \
           "non-daemon thread (in bytes)")                                   \
                                                                             \
-  product_pd(uintx, PermSize,                                               \
-          "Initial size of permanent generation (in bytes)")                \
-                                                                            \
-  product_pd(uintx, MaxPermSize,                                            \
-          "Maximum size of permanent generation (in bytes)")                \
+  product_pd(uintx, MetaspaceSize,                                          \
+          "Initial size of Metaspaces (in bytes)")                          \
+                                                                            \
+  product(uintx, MaxMetaspaceSize, max_uintx,                               \
+          "Maximum size of Metaspaces (in bytes)")                          \
+                                                                            \
+  product(uintx, ClassMetaspaceSize, 2*M,                                   \
+          "Maximum size of InstanceKlass area in Metaspace used for "       \
+          "UseCompressedKlassPointers")                                     \
                                                                             \
   product(uintx, MinHeapFreeRatio,    40,                                   \
           "Min percentage of heap free after GC to avoid expansion")        \
@@ -3004,10 +3009,10 @@
   product(uintx, MinHeapDeltaBytes, ScaleForWordSize(128*K),                \
           "Min change in heap space due to GC (in bytes)")                  \
                                                                             \
-  product(uintx, MinPermHeapExpansion, ScaleForWordSize(256*K),             \
+  product(uintx, MinMetaspaceExpansion, ScaleForWordSize(256*K),             \
           "Min expansion of permanent heap (in bytes)")                     \
                                                                             \
-  product(uintx, MaxPermHeapExpansion, ScaleForWordSize(4*M),               \
+  product(uintx, MaxMetaspaceExpansion, ScaleForWordSize(4*M),               \
           "Max expansion of permanent heap without full GC (in bytes)")     \
                                                                             \
   product(intx, QueuedAllocationWarningCount, 0,                            \
@@ -3038,10 +3043,6 @@
           "either completely full or completely empty.  Par compact also"   \
           "has a smaller default value; see arguments.cpp.")                \
                                                                             \
-  product(uintx, PermMarkSweepDeadRatio,    20,                             \
-          "Percentage (0-100) of the perm gen allowed as dead wood."        \
-          "See MarkSweepDeadRatio for collector-specific comments.")        \
-                                                                            \
   product(intx, MarkSweepAlwaysCompactCount,     4,                         \
           "How often should we fully compact the heap (ignoring the dead "  \
           "space parameters)")                                              \
@@ -3523,29 +3524,20 @@
   product(bool, PrintSharedSpaces, false,                                   \
           "Print usage of shared spaces")                                   \
                                                                             \
-  product(uintx, SharedDummyBlockSize, 512*M,                               \
-          "Size of dummy block used to shift heap addresses (in bytes)")    \
-                                                                            \
-  product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(13*M),      \
+  product(uintx, SharedReadWriteSize,  NOT_LP64(12*M) LP64_ONLY(16*M),      \
           "Size of read-write space in permanent generation (in bytes)")    \
                                                                             \
-  product(uintx, SharedReadOnlySize,   10*M,                                \
+  product(uintx, SharedReadOnlySize,  NOT_LP64(12*M) LP64_ONLY(16*M),       \
           "Size of read-only space in permanent generation (in bytes)")     \
                                                                             \
-  product(uintx, SharedMiscDataSize, NOT_LP64(4*M) LP64_ONLY(5*M) NOT_PRODUCT(+1*M),       \
+  product(uintx, SharedMiscDataSize,    NOT_LP64(2*M) LP64_ONLY(4*M),       \
           "Size of the shared data area adjacent to the heap (in bytes)")   \
                                                                             \
-  product(uintx, SharedMiscCodeSize,    4*M,                                \
+  product(uintx, SharedMiscCodeSize,    120*K,                              \
           "Size of the shared code area adjacent to the heap (in bytes)")   \
                                                                             \
-  diagnostic(bool, SharedOptimizeColdStart, true,                           \
-          "At dump time, order shared objects to achieve better "           \
-          "cold startup time.")                                             \
-                                                                            \
-  develop(intx, SharedOptimizeColdStartPolicy, 2,                           \
-          "Reordering policy for SharedOptimizeColdStart "                  \
-          "0=favor classload-time locality, 1=balanced, "                   \
-          "2=favor runtime locality")                                       \
+  product(uintx, SharedDummyBlockSize, 0,                                   \
+          "Size of dummy block used to shift heap addresses (in bytes)")    \
                                                                             \
   diagnostic(bool, SharedSkipVerify, false,                                 \
           "Skip assert() and verify() which page-in unwanted shared "       \
--- a/src/share/vm/runtime/handles.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/handles.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -24,6 +24,7 @@
 
 #include "precompiled.hpp"
 #include "memory/allocation.inline.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #ifdef TARGET_OS_FAMILY_linux
@@ -70,8 +71,10 @@
   // during GC phase 3, a handle may be a forward pointer that
   // is not yet valid, so loosen the assertion
   while (bottom < top) {
-//    assert((*bottom)->is_oop(), "handle should point to oop");
-      assert(Universe::heap()->is_in(*bottom), "handle should be valid heap address");
+    // This test can be moved up but for now check every oop.
+
+    assert((*bottom)->is_oop(), "handle should point to oop");
+
     f->do_oop(bottom++);
   }
   return handles_visited;
@@ -148,6 +151,8 @@
       // Note: _nof_handlemarks is only set in debug mode
       warning("%d: Allocated in HandleMark : %d", _nof_handlemarks, handles);
     }
+
+    tty->print_cr("Handles %d", handles);
   }
 #endif
 
--- a/src/share/vm/runtime/handles.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/handles.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,8 +26,6 @@
 #define SHARE_VM_RUNTIME_HANDLES_HPP
 
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
-#include "utilities/top.hpp"
 
 //------------------------------------------------------------------------------------------------------------------------
 // In order to preserve oops during garbage collection, they should be
@@ -56,17 +54,8 @@
 // there is a corresponding handle called xxxHandle, e.g.
 //
 //   oop           Handle
-//   methodOop     methodHandle
+//   Method*       methodHandle
 //   instanceOop   instanceHandle
-//
-// For klassOops, it is often useful to model the Klass hierarchy in order
-// to get access to the klass_part without casting. For each xxxKlass there
-// is a corresponding handle called xxxKlassHandle, e.g.
-//
-//   klassOop      Klass           KlassHandle
-//   klassOop      methodKlass     methodKlassHandle
-//   klassOop      instanceKlass   instanceKlassHandle
-//
 
 //------------------------------------------------------------------------------------------------------------------------
 // Base class for all handles. Provides overloading of frequently
@@ -84,12 +73,7 @@
   // Constructors
   Handle()                                       { _handle = NULL; }
   Handle(oop obj);
-#ifndef ASSERT
   Handle(Thread* thread, oop obj);
-#else
-  // Don't inline body with assert for current thread
-  Handle(Thread* thread, oop obj);
-#endif // ASSERT
 
   // General access
   oop     operator () () const                   { return obj(); }
@@ -115,53 +99,8 @@
   static oop raw_resolve(oop *handle)            { return handle == NULL ? (oop)NULL : *handle; }
 };
 
-
-//------------------------------------------------------------------------------------------------------------------------
-// Base class for Handles containing klassOops. Provides overloading of frequently
-// used operators for ease of use and typed access to the Klass part.
-class KlassHandle: public Handle {
- protected:
-  klassOop    obj() const                        { return (klassOop)Handle::obj(); }
-  klassOop    non_null_obj() const               { return (klassOop)Handle::non_null_obj(); }
-  Klass*      as_klass() const                   { return non_null_obj()->klass_part(); }
-
- public:
-  // Constructors
-  KlassHandle ()                                 : Handle()            {}
-  KlassHandle (oop obj) : Handle(obj) {
-    assert(SharedSkipVerify || is_null() || obj->is_klass(), "not a klassOop");
-  }
-  KlassHandle (Klass* kl) : Handle(kl ? kl->as_klassOop() : (klassOop)NULL) {
-    assert(SharedSkipVerify || is_null() || obj()->is_klass(), "not a klassOop");
-  }
-
-  // Faster versions passing Thread
-  KlassHandle (Thread* thread, oop obj) : Handle(thread, obj) {
-    assert(SharedSkipVerify || is_null() || obj->is_klass(), "not a klassOop");
-  }
-  KlassHandle (Thread *thread, Klass* kl)
-    : Handle(thread, kl ? kl->as_klassOop() : (klassOop)NULL) {
-    assert(is_null() || obj()->is_klass(), "not a klassOop");
-  }
-
-  // Direct interface, use very sparingly.
-  // Used by SystemDictionaryHandles to create handles on existing WKKs.
-  // The obj of such a klass handle may be null, because the handle is formed
-  // during system bootstrapping.
-  KlassHandle(klassOop *handle, bool dummy) : Handle((oop*)handle, dummy) {
-    assert(SharedSkipVerify || is_null() || obj() == NULL || obj()->is_klass(), "not a klassOop");
-  }
-
-  // General access
-  klassOop    operator () () const               { return obj(); }
-  Klass*      operator -> () const               { return as_klass(); }
-};
-
-
-//------------------------------------------------------------------------------------------------------------------------
 // Specific Handles for different oop types
 #define DEF_HANDLE(type, is_a)                   \
-  class type##Handle;                            \
   class type##Handle: public Handle {            \
    protected:                                    \
     type##Oop    obj() const                     { return (type##Oop)Handle::obj(); } \
@@ -178,9 +117,6 @@
       assert(SharedSkipVerify || is_null() || ((oop)obj)->is_a(), "illegal type");  \
     }                                                                         \
     \
-    /* Special constructor, use sparingly */ \
-    type##Handle (type##Oop *handle, bool dummy) : Handle((oop*)handle, dummy) {} \
-                                                 \
     /* Operators for ease of use */              \
     type##Oop    operator () () const            { return obj(); } \
     type##Oop    operator -> () const            { return non_null_obj(); } \
@@ -188,52 +124,94 @@
 
 
 DEF_HANDLE(instance         , is_instance         )
-DEF_HANDLE(method           , is_method           )
-DEF_HANDLE(constMethod      , is_constMethod      )
-DEF_HANDLE(methodData       , is_methodData       )
 DEF_HANDLE(array            , is_array            )
-DEF_HANDLE(constantPool     , is_constantPool     )
-DEF_HANDLE(constantPoolCache, is_constantPoolCache)
 DEF_HANDLE(objArray         , is_objArray         )
 DEF_HANDLE(typeArray        , is_typeArray        )
 
 //------------------------------------------------------------------------------------------------------------------------
-// Specific KlassHandles for different Klass types
+
+// Metadata Handles.  Unlike oop Handles these are needed to prevent metadata
+// from being reclaimed by RedefineClasses.
 
-#define DEF_KLASS_HANDLE(type, is_a)             \
-  class type##Handle : public KlassHandle {      \
+// Specific Handles for different oop types
+#define DEF_METADATA_HANDLE(name, type)          \
+  class name##Handle;                            \
+  class name##Handle {                           \
+    type*     _value;                            \
+    Thread*   _thread;                           \
+   protected:                                    \
+    type*        obj() const                     { return _value; } \
+    type*        non_null_obj() const            { assert(_value != NULL, "resolving NULL _value"); return _value; } \
+                                                 \
    public:                                       \
     /* Constructors */                           \
-    type##Handle ()                              : KlassHandle()           {} \
-    type##Handle (klassOop obj) : KlassHandle(obj) {                          \
-      assert(SharedSkipVerify || is_null() || obj->klass_part()->is_a(),      \
-             "illegal type");                                                 \
-    }                                                                         \
-    type##Handle (Thread* thread, klassOop obj) : KlassHandle(thread, obj) {  \
-      assert(SharedSkipVerify || is_null() || obj->klass_part()->is_a(),      \
-             "illegal type");                                                 \
-    }                                                                         \
+    name##Handle () : _value(NULL), _thread(NULL) {}   \
+    name##Handle (type* obj);                    \
+    name##Handle (Thread* thread, type* obj);    \
+                                                 \
+    name##Handle (const name##Handle &h);        \
+    name##Handle& operator=(const name##Handle &s); \
+                                                 \
+    /* Destructor */                             \
+    ~name##Handle ();                            \
+    void remove();                               \
                                                  \
-    /* Access to klass part */                   \
-    type*        operator -> () const            { return (type*)obj()->klass_part(); } \
+    /* Operators for ease of use */              \
+    type*        operator () () const            { return obj(); } \
+    type*        operator -> () const            { return non_null_obj(); } \
                                                  \
-    static type##Handle cast(KlassHandle h)      { return type##Handle(h()); } \
+    bool    operator == (type* o) const          { return obj() == o; } \
+    bool    operator == (const name##Handle& h) const  { return obj() == h.obj(); } \
                                                  \
+    /* Null checks */                            \
+    bool    is_null() const                      { return _value == NULL; } \
+    bool    not_null() const                     { return _value != NULL; } \
   };
 
 
-DEF_KLASS_HANDLE(instanceKlass         , oop_is_instance_slow )
-DEF_KLASS_HANDLE(methodKlass           , oop_is_method        )
-DEF_KLASS_HANDLE(constMethodKlass      , oop_is_constMethod   )
-DEF_KLASS_HANDLE(klassKlass            , oop_is_klass         )
-DEF_KLASS_HANDLE(arrayKlassKlass       , oop_is_arrayKlass    )
-DEF_KLASS_HANDLE(objArrayKlassKlass    , oop_is_objArrayKlass )
-DEF_KLASS_HANDLE(typeArrayKlassKlass   , oop_is_typeArrayKlass)
-DEF_KLASS_HANDLE(arrayKlass            , oop_is_array         )
-DEF_KLASS_HANDLE(typeArrayKlass        , oop_is_typeArray_slow)
-DEF_KLASS_HANDLE(objArrayKlass         , oop_is_objArray_slow )
-DEF_KLASS_HANDLE(constantPoolKlass     , oop_is_constantPool  )
-DEF_KLASS_HANDLE(constantPoolCacheKlass, oop_is_constantPool  )
+DEF_METADATA_HANDLE(method, Method)
+DEF_METADATA_HANDLE(constantPool, ConstantPool)
+
+// Writing this class explicitly, since DEF_METADATA_HANDLE(klass) doesn't
+// provide the necessary Klass* <-> Klass* conversions. This Klass
+// could be removed when we don't have the Klass* typedef anymore.
+class KlassHandle {
+  Klass* _value;
+ protected:
+   Klass* obj() const          { return _value; }
+   Klass* non_null_obj() const { assert(_value != NULL, "resolving NULL _value"); return _value; }
+
+ public:
+   KlassHandle()                                 : _value(NULL) {}
+   KlassHandle(const Klass* obj)                 : _value(const_cast<Klass *>(obj)) {};
+   KlassHandle(Thread* thread, const Klass* obj) : _value(const_cast<Klass *>(obj)) {};
+
+   Klass* operator () () const { return obj(); }
+   Klass* operator -> () const { return non_null_obj(); }
+
+   bool operator == (Klass* o) const             { return obj() == o; }
+   bool operator == (const KlassHandle& h) const { return obj() == h.obj(); }
+
+    bool is_null() const  { return _value == NULL; }
+    bool not_null() const { return _value != NULL; }
+};
+
+class instanceKlassHandle : public KlassHandle {
+ public:
+  /* Constructors */
+  instanceKlassHandle () : KlassHandle() {}
+  instanceKlassHandle (const Klass* k) : KlassHandle(k) {
+    assert(SharedSkipVerify || k == NULL || k->oop_is_instance(),
+           "illegal type");
+  }
+  instanceKlassHandle (Thread* thread, const Klass* k) : KlassHandle(thread, k) {
+    assert(SharedSkipVerify || k == NULL || k->oop_is_instance(),
+           "illegal type");
+  }
+  /* Access to klass part */
+  InstanceKlass*       operator () () const { return (InstanceKlass*)obj(); }
+  InstanceKlass*       operator -> () const { return (InstanceKlass*)obj(); }
+};
 
 
 //------------------------------------------------------------------------------------------------------------------------
--- a/src/share/vm/runtime/handles.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/handles.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -62,6 +62,63 @@
 }
 #endif // ASSERT
 
+// Constructors for metadata handles
+#define DEF_METADATA_HANDLE_FN(name, type) \
+inline name##Handle::name##Handle(type* obj) : _value(obj), _thread(NULL) {       \
+  if (obj != NULL) {                                                   \
+    assert(((Metadata*)obj)->is_valid(), "obj is valid");              \
+    _thread = Thread::current();                                       \
+    assert (_thread->is_in_stack((address)this), "not on stack?");     \
+    _thread->metadata_handles()->push((Metadata*)obj);                 \
+  }                                                                    \
+}                                                                      \
+inline name##Handle::name##Handle(Thread* thread, type* obj) : _value(obj), _thread(thread) { \
+  if (obj != NULL) {                                                   \
+    assert(((Metadata*)obj)->is_valid(), "obj is valid");              \
+    assert(_thread == Thread::current(), "thread must be current");    \
+    assert (_thread->is_in_stack((address)this), "not on stack?");     \
+    _thread->metadata_handles()->push((Metadata*)obj);                 \
+  }                                                                    \
+}                                                                      \
+inline name##Handle::name##Handle(const name##Handle &h) {             \
+  _value = h._value;                                                   \
+  if (_value != NULL) {                                                \
+    assert(_value->is_valid(), "obj is valid");                        \
+    if (h._thread != NULL) {                                           \
+      assert(h._thread == Thread::current(), "thread must be current");\
+      _thread = h._thread;                                             \
+    } else {                                                           \
+      _thread = Thread::current();                                     \
+    }                                                                  \
+    _thread->metadata_handles()->push((Metadata*)_value);              \
+  }                                                                    \
+}                                                                      \
+inline name##Handle& name##Handle::operator=(const name##Handle &s) {  \
+  remove();                                                            \
+  _value = s._value;                                                   \
+  if (_value != NULL) {                                                \
+    assert(_value->is_valid(), "obj is valid");                        \
+    if (s._thread != NULL) {                                           \
+      assert(s._thread == Thread::current(), "thread must be current");\
+      _thread = s._thread;                                             \
+    } else {                                                           \
+      _thread = Thread::current();                                     \
+    }                                                                  \
+    _thread->metadata_handles()->push((Metadata*)_value);              \
+  }                                                                    \
+  return *this;                                                        \
+}                                                                      \
+inline void name##Handle::remove() {                                   \
+  if (_value != NULL) {                                                \
+    int i = _thread->metadata_handles()->find_from_end((Metadata*)_value); \
+    assert(i!=-1, "not in metadata_handles list");                     \
+    _thread->metadata_handles()->remove_at(i);                         \
+  }                                                                    \
+}                                                                      \
+inline name##Handle::~name##Handle () { remove(); }                    \
+
+DEF_METADATA_HANDLE_FN(method, Method)
+DEF_METADATA_HANDLE_FN(constantPool, ConstantPool)
 
 inline HandleMark::HandleMark() {
   initialize(Thread::current());
--- a/src/share/vm/runtime/init.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/init.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -94,12 +94,13 @@
   management_init();
   bytecodes_init();
   classLoader_init();
+  Metaspace::global_initialize(); // must be before codeCache
   codeCache_init();
   VM_Version_init();
   os_init_globals();
   stubRoutines_init1();
   jint status = universe_init();  // dependent on codeCache_init and
-                                  // stubRoutines_init1
+                                  // stubRoutines_init1 and metaspace_init.
   if (status != JNI_OK)
     return status;
 
--- a/src/share/vm/runtime/java.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/java.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -33,12 +33,11 @@
 #include "memory/genCollectedHeap.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.hpp"
-#include "oops/constantPoolOop.hpp"
+#include "oops/constantPool.hpp"
 #include "oops/generateOopMap.hpp"
 #include "oops/instanceKlass.hpp"
-#include "oops/instanceKlassKlass.hpp"
 #include "oops/instanceOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
@@ -115,19 +114,23 @@
 
 // Statistics printing (method invocation histogram)
 
-GrowableArray<methodOop>* collected_invoked_methods;
+GrowableArray<Method*>* collected_invoked_methods;
 
-void collect_invoked_methods(methodOop m) {
+void collect_invoked_methods(Method* m) {
   if (m->invocation_count() + m->compiled_invocation_count() >= 1 ) {
     collected_invoked_methods->push(m);
   }
 }
 
 
-GrowableArray<methodOop>* collected_profiled_methods;
+GrowableArray<Method*>* collected_profiled_methods;
 
-void collect_profiled_methods(methodOop m) {
-  methodHandle mh(Thread::current(), m);
+void collect_profiled_methods(Method* m) {
+  Thread* thread = Thread::current();
+  // This HandleMark prevents a huge amount of handles from being added
+  // to the metadata_handles() array on the thread.
+  HandleMark hm(thread);
+  methodHandle mh(thread, m);
   if ((m->method_data() != NULL) &&
       (PrintMethodData || CompilerOracle::should_print(mh))) {
     collected_profiled_methods->push(m);
@@ -135,7 +138,7 @@
 }
 
 
-int compare_methods(methodOop* a, methodOop* b) {
+int compare_methods(Method** a, Method** b) {
   // %%% there can be 32-bit overflow here
   return ((*b)->invocation_count() + (*b)->compiled_invocation_count())
        - ((*a)->invocation_count() + (*a)->compiled_invocation_count());
@@ -145,7 +148,7 @@
 void print_method_invocation_histogram() {
   ResourceMark rm;
   HandleMark hm;
-  collected_invoked_methods = new GrowableArray<methodOop>(1024);
+  collected_invoked_methods = new GrowableArray<Method*>(1024);
   SystemDictionary::methods_do(collect_invoked_methods);
   collected_invoked_methods->sort(&compare_methods);
   //
@@ -156,7 +159,7 @@
   unsigned total = 0, int_total = 0, comp_total = 0, static_total = 0, final_total = 0,
       synch_total = 0, nativ_total = 0, acces_total = 0;
   for (int index = 0; index < collected_invoked_methods->length(); index++) {
-    methodOop m = collected_invoked_methods->at(index);
+    Method* m = collected_invoked_methods->at(index);
     int c = m->invocation_count() + m->compiled_invocation_count();
     if (c >= MethodHistogramCutoff) m->print_invocation_count();
     int_total  += m->invocation_count();
@@ -185,14 +188,14 @@
 void print_method_profiling_data() {
   ResourceMark rm;
   HandleMark hm;
-  collected_profiled_methods = new GrowableArray<methodOop>(1024);
+  collected_profiled_methods = new GrowableArray<Method*>(1024);
   SystemDictionary::methods_do(collect_profiled_methods);
   collected_profiled_methods->sort(&compare_methods);
 
   int count = collected_profiled_methods->length();
   if (count > 0) {
     for (int index = 0; index < count; index++) {
-      methodOop m = collected_profiled_methods->at(index);
+      Method* m = collected_profiled_methods->at(index);
       ttyLocker ttyl;
       tty->print_cr("------------------------------------------------------------------------");
       //m->print_name(tty);
@@ -485,6 +488,9 @@
   if (PrintGCDetails) {
     Universe::print();
     AdaptiveSizePolicyOutput(0);
+    if (Verbose) {
+      ClassLoaderDataGraph::dump_on(gclog_or_tty);
+    }
   }
 
 
--- a/src/share/vm/runtime/javaCalls.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/javaCalls.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -89,7 +89,6 @@
   _receiver = receiver();
 
 #ifdef CHECK_UNHANDLED_OOPS
-  THREAD->allow_unhandled_oop(&_callee_method);
   THREAD->allow_unhandled_oop(&_receiver);
 #endif // CHECK_UNHANDLED_OOPS
 
@@ -154,7 +153,6 @@
 
 
 void JavaCallWrapper::oops_do(OopClosure* f) {
-  f->do_oop((oop*)&_callee_method);
   f->do_oop((oop*)&_receiver);
   handles()->oops_do(f);
 }
@@ -191,7 +189,7 @@
   assert(method->name() == vmSymbols::object_initializer_name(),    "Should only be called for default constructor");
   assert(method->signature() == vmSymbols::void_method_signature(), "Should only be called for default constructor");
 
-  instanceKlass* ik = instanceKlass::cast(method->method_holder());
+  InstanceKlass* ik = InstanceKlass::cast(method->method_holder());
   if (ik->is_initialized() && ik->has_vanilla_constructor()) {
     // safe to skip constructor call
   } else {
@@ -206,7 +204,7 @@
 void JavaCalls::call_virtual(JavaValue* result, KlassHandle spec_klass, Symbol* name, Symbol* signature, JavaCallArguments* args, TRAPS) {
   CallInfo callinfo;
   Handle receiver = args->receiver();
-  KlassHandle recvrKlass(THREAD, receiver.is_null() ? (klassOop)NULL : receiver->klass());
+  KlassHandle recvrKlass(THREAD, receiver.is_null() ? (Klass*)NULL : receiver->klass());
   LinkResolver::resolve_virtual_call(
           callinfo, receiver, recvrKlass, spec_klass, name, signature,
           KlassHandle(), false, true, CHECK);
@@ -346,11 +344,11 @@
 
 
 #ifdef ASSERT
-  { klassOop holder = method->method_holder();
+  { Klass* holder = method->method_holder();
     // A klass might not be initialized since JavaCall's might be used during the executing of
     // the <clinit>. For example, a Thread.start might start executing on an object that is
     // not fully initialized! (bad Java programming style)
-    assert(instanceKlass::cast(holder)->is_linked(), "rewritting must have taken place");
+    assert(InstanceKlass::cast(holder)->is_linked(), "rewritting must have taken place");
   }
 #endif
 
--- a/src/share/vm/runtime/javaCalls.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/javaCalls.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,7 +26,7 @@
 #define SHARE_VM_RUNTIME_JAVACALLS_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/handles.hpp"
 #include "runtime/javaFrameAnchor.hpp"
 #include "runtime/vmThread.hpp"
@@ -67,7 +67,7 @@
  private:
   JavaThread*      _thread;                 // the thread to which this call belongs
   JNIHandleBlock*  _handles;                // the saved handle block
-  methodOop        _callee_method;          // to be able to collect arguments if entry frame is top frame
+  Method*          _callee_method;          // to be able to collect arguments if entry frame is top frame
   oop              _receiver;               // the receiver of the call (if a non-static call)
 
   JavaFrameAnchor  _anchor;                 // last thread anchor state that we must restore
@@ -87,7 +87,7 @@
 
   JavaValue*       result() const           { return _result; }
   // GC support
-  methodOop        callee_method()          { return _callee_method; }
+  Method*          callee_method()          { return _callee_method; }
   oop              receiver()               { return _receiver; }
   void             oops_do(OopClosure* f);
 
--- a/src/share/vm/runtime/jfieldIDWorkaround.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/jfieldIDWorkaround.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -91,14 +91,14 @@
     }
     return (intptr_t)result;
   }
-  static intptr_t encode_klass_hash(klassOop k, intptr_t offset);
-  static bool             klass_hash_ok(klassOop k, jfieldID id);
-  static void  verify_instance_jfieldID(klassOop k, jfieldID id);
+  static intptr_t encode_klass_hash(Klass* k, intptr_t offset);
+  static bool             klass_hash_ok(Klass* k, jfieldID id);
+  static void  verify_instance_jfieldID(Klass* k, jfieldID id);
 
  public:
-  static bool is_valid_jfieldID(klassOop k, jfieldID id);
+  static bool is_valid_jfieldID(Klass* k, jfieldID id);
 
-  static bool is_instance_jfieldID(klassOop k, jfieldID id) {
+  static bool is_instance_jfieldID(Klass* k, jfieldID id) {
     uintptr_t as_uint = (uintptr_t) id;
     return ((as_uint & instance_mask_in_place) != 0);
   }
@@ -107,7 +107,7 @@
     return ((as_uint & instance_mask_in_place) == 0);
   }
 
-  static jfieldID to_instance_jfieldID(klassOop k, int offset) {
+  static jfieldID to_instance_jfieldID(Klass* k, int offset) {
     intptr_t as_uint = ((offset & large_offset_mask) << offset_shift) | instance_mask_in_place;
     if (VerifyJNIFields) {
       as_uint |= encode_klass_hash(k, offset);
@@ -124,7 +124,7 @@
     return result;
   }
 
-  static intptr_t from_instance_jfieldID(klassOop k, jfieldID id) {
+  static intptr_t from_instance_jfieldID(Klass* k, jfieldID id) {
 #ifndef ASSERT
     // always verify in debug mode; switchable in anything else
     if (VerifyJNIFields)
--- a/src/share/vm/runtime/jniHandles.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/jniHandles.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -111,19 +111,6 @@
   return res;
 }
 
-jmethodID JNIHandles::make_jmethod_id(methodHandle mh) {
-  return (jmethodID) make_weak_global(mh);
-}
-
-
-
-void JNIHandles::change_method_associated_with_jmethod_id(jmethodID jmid, methodHandle mh) {
-  MutexLocker ml(JNIGlobalHandle_lock); // Is this necessary?
-  Handle obj = (Handle)mh;
-  oop* jobj = (oop*)jmid;
-  *jobj = obj();
-}
-
 
 void JNIHandles::destroy_global(jobject handle) {
   if (handle != NULL) {
@@ -140,10 +127,6 @@
   }
 }
 
-void JNIHandles::destroy_jmethod_id(jmethodID mid) {
-  destroy_weak_global((jobject)mid);
-}
-
 
 void JNIHandles::oops_do(OopClosure* f) {
   f->do_oop(&_deleted_handle);
@@ -162,8 +145,8 @@
   EXCEPTION_MARK;
   // We will never reach the CATCH below since Exceptions::_throw will cause
   // the VM to exit if an exception is thrown during initialization
-  klassOop k      = SystemDictionary::Object_klass();
-  _deleted_handle = instanceKlass::cast(k)->allocate_permanent_instance(CATCH);
+  Klass* k      = SystemDictionary::Object_klass();
+  _deleted_handle = InstanceKlass::cast(k)->allocate_instance(CATCH);
 }
 
 
--- a/src/share/vm/runtime/jniHandles.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/jniHandles.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -62,23 +62,6 @@
   static jobject make_weak_global(Handle obj);
   static void destroy_weak_global(jobject handle);
 
-  // jmethodID handling (as Weak global handles).
-  // Because the useful life-span of a jmethodID cannot be determined, once created they are
-  // never reclaimed.  The methods to which they refer, however, can be GC'ed away if the class
-  // is unloaded or if the method is made obsolete or deleted -- in these cases, the jmethodID
-  // refers to NULL (as is the case for any weak reference).
-  static jmethodID make_jmethod_id(methodHandle mh);
-  static void destroy_jmethod_id(jmethodID mid);
-  // Use resolve_jmethod_id() in situations where the caller is expected
-  // to provide a valid jmethodID; the only sanity checks are in asserts;
-  // result guaranteed not to be NULL.
-  inline static methodOop resolve_jmethod_id(jmethodID mid);
-  // Use checked_resolve_jmethod_id() in situations where the caller
-  // should provide a valid jmethodID, but might not. NULL is returned
-  // when the jmethodID does not refer to a valid method.
-  inline static methodOop checked_resolve_jmethod_id(jmethodID mid);
-  static void change_method_associated_with_jmethod_id(jmethodID jmid, methodHandle mh);
-
   // Sentinel marking deleted handles in block. Note that we cannot store NULL as
   // the sentinel, since clearing weak global JNI refs are done by storing NULL in
   // the handle. The handle may not be reused before destroy_weak_global is called.
@@ -207,20 +190,6 @@
   return result;
 };
 
-inline methodOop JNIHandles::resolve_jmethod_id(jmethodID mid) {
-  return (methodOop) resolve_non_null((jobject)mid);
-};
-
-inline methodOop JNIHandles::checked_resolve_jmethod_id(jmethodID mid) {
-  oop o = resolve_external_guard((jobject) mid);
-  if (o == NULL || !o->is_method()) {
-    return (methodOop) NULL;
-  }
-
-  return (methodOop) o;
-};
-
-
 inline void JNIHandles::destroy_local(jobject handle) {
   if (handle != NULL) {
     *((oop*)handle) = deleted_handle(); // Mark the handle as deleted, allocate will reuse it
--- a/src/share/vm/runtime/memprofiler.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/memprofiler.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -28,7 +28,6 @@
 #include "gc_interface/collectedHeap.inline.hpp"
 #include "interpreter/oopMapCache.hpp"
 #include "memory/generation.hpp"
-#include "memory/permGen.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/jniHandles.hpp"
@@ -129,15 +128,12 @@
   }
 
   // Print trace line in log
-  fprintf(_log_fp, "%6.1f,%5d,%5d," UINTX_FORMAT_W(6) "," UINTX_FORMAT_W(6) ","
-          UINTX_FORMAT_W(6) "," UINTX_FORMAT_W(6) ",",
+  fprintf(_log_fp, "%6.1f,%5d,%5d," UINTX_FORMAT_W(6) "," UINTX_FORMAT_W(6) ",",
           os::elapsedTime(),
           Threads::number_of_threads(),
           SystemDictionary::number_of_classes(),
           Universe::heap()->used() / K,
-          Universe::heap()->capacity() / K,
-          Universe::heap()->permanent_used() / HWperKB,
-          Universe::heap()->permanent_capacity() / HWperKB);
+          Universe::heap()->capacity() / K);
 
   fprintf(_log_fp, UINTX_FORMAT_W(6) ",", CodeCache::capacity() / K);
 
--- a/src/share/vm/runtime/mutexLocker.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/mutexLocker.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -225,7 +225,7 @@
   def(ExpandHeap_lock              , Mutex  , leaf,        true ); // Used during compilation by VM thread
   def(JNIHandleBlockFreeList_lock  , Mutex  , leaf,        true ); // handles are used by VM thread
   def(SignatureHandlerLibrary_lock , Mutex  , leaf,        false);
-  def(SymbolTable_lock             , Mutex  , leaf,        true );
+  def(SymbolTable_lock             , Mutex  , leaf+2,      true );
   def(StringTable_lock             , Mutex  , leaf,        true );
   def(ProfilePrint_lock            , Mutex  , leaf,        false); // serial profile printing
   def(ExceptionCache_lock          , Mutex  , leaf,        false); // serial profile printing
--- a/src/share/vm/runtime/objectMonitor.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/objectMonitor.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -69,11 +69,11 @@
 // TODO-FIXME: probes should not fire when caller is _blocked.  assert() accordingly.
 
 
-#define DTRACE_MONITOR_PROBE_COMMON(klassOop, thread)                      \
+#define DTRACE_MONITOR_PROBE_COMMON(obj, thread)                           \
   char* bytes = NULL;                                                      \
   int len = 0;                                                             \
   jlong jtid = SharedRuntime::get_java_tid(thread);                        \
-  Symbol* klassname = ((oop)(klassOop))->klass()->klass_part()->name();    \
+  Symbol* klassname = ((oop)obj)->klass()->name();                         \
   if (klassname != NULL) {                                                 \
     bytes = (char*)klassname->bytes();                                     \
     len = klassname->utf8_length();                                        \
@@ -92,19 +92,19 @@
 HS_DTRACE_PROBE_DECL4(hotspot, monitor__contended__exit,
   jlong, uintptr_t, char*, int);
 
-#define DTRACE_MONITOR_WAIT_PROBE(monitor, klassOop, thread, millis)       \
+#define DTRACE_MONITOR_WAIT_PROBE(monitor, obj, thread, millis)       \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                       \
       HS_DTRACE_PROBE5(hotspot, monitor__wait, jtid,                       \
                        (monitor), bytes, len, (millis));                   \
     }                                                                      \
   }
 
-#define DTRACE_MONITOR_PROBE(probe, monitor, klassOop, thread)             \
+#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread)             \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                       \
       HS_DTRACE_PROBE4(hotspot, monitor__##probe, jtid,                    \
                        (uintptr_t)(monitor), bytes, len);                  \
     }                                                                      \
@@ -112,10 +112,10 @@
 
 #else /* USDT2 */
 
-#define DTRACE_MONITOR_WAIT_PROBE(monitor, klassOop, thread, millis)       \
+#define DTRACE_MONITOR_WAIT_PROBE(monitor, obj, thread, millis)            \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HOTSPOT_MONITOR_WAIT(jtid,                                           \
                        (monitor), bytes, len, (millis));                   \
     }                                                                      \
@@ -127,10 +127,10 @@
 #define HOTSPOT_MONITOR_notify HOTSPOT_MONITOR_NOTIFY
 #define HOTSPOT_MONITOR_notifyAll HOTSPOT_MONITOR_NOTIFYALL
 
-#define DTRACE_MONITOR_PROBE(probe, monitor, klassOop, thread)             \
+#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread)                  \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HOTSPOT_MONITOR_##probe(jtid,                                               \
                        (uintptr_t)(monitor), bytes, len);                  \
     }                                                                      \
@@ -139,8 +139,8 @@
 #endif /* USDT2 */
 #else //  ndef DTRACE_ENABLED
 
-#define DTRACE_MONITOR_WAIT_PROBE(klassOop, thread, millis, mon)    {;}
-#define DTRACE_MONITOR_PROBE(probe, klassOop, thread, mon)          {;}
+#define DTRACE_MONITOR_WAIT_PROBE(obj, thread, millis, mon)    {;}
+#define DTRACE_MONITOR_PROBE(probe, obj, thread, mon)          {;}
 
 #endif // ndef DTRACE_ENABLED
 
--- a/src/share/vm/runtime/os.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/os.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -271,7 +271,7 @@
       default: {
         // Dispatch the signal to java
         HandleMark hm(THREAD);
-        klassOop k = SystemDictionary::resolve_or_null(vmSymbols::sun_misc_Signal(), THREAD);
+        Klass* k = SystemDictionary::resolve_or_null(vmSymbols::sun_misc_Signal(), THREAD);
         KlassHandle klass (THREAD, k);
         if (klass.not_null()) {
           JavaValue result(T_VOID);
@@ -294,7 +294,7 @@
             char klass_name[256];
             char tmp_sig_name[16];
             const char* sig_name = "UNKNOWN";
-            instanceKlass::cast(PENDING_EXCEPTION->klass())->
+            InstanceKlass::cast(PENDING_EXCEPTION->klass())->
               name()->as_klass_external_name(klass_name, 256);
             if (os::exception_name(sig, tmp_sig_name, 16) != NULL)
               sig_name = tmp_sig_name;
@@ -314,7 +314,7 @@
   if (!ReduceSignalUsage) {
     // Setup JavaThread for processing signals
     EXCEPTION_MARK;
-    klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
+    Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
     instanceKlassHandle klass (THREAD, k);
     instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
 
@@ -893,17 +893,6 @@
     if (print) {
       st->print_cr(INTPTR_FORMAT " is an oop", addr);
       oop(p)->print_on(st);
-      if (p != (HeapWord*)x && oop(p)->is_constMethod() &&
-          constMethodOop(p)->contains(addr)) {
-        Thread *thread = Thread::current();
-        HandleMark hm(thread);
-        methodHandle mh (thread, constMethodOop(p)->method());
-        if (!mh->is_native()) {
-          st->print_cr("bci_from(%p) = %d; print_codes():",
-                        addr, mh->bci_from(address(x)));
-          mh->print_codes_on(st);
-        }
-      }
       return;
     }
   } else {
@@ -958,6 +947,17 @@
     }
 
   }
+
+#ifndef PRODUCT
+  // Check if in metaspace.
+  if (ClassLoaderDataGraph::contains((address)addr)) {
+    // Use addr->print() from the debugger instead (not here)
+    st->print_cr(INTPTR_FORMAT
+                 " is pointing into metadata", addr);
+    return;
+  }
+#endif
+
   // Try an OS specific find
   if (os::find(addr, st)) {
     return;
--- a/src/share/vm/runtime/perfData.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/perfData.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -213,7 +213,10 @@
 
 void PerfLongVariant::sample() {
 
-  assert(_sample_helper != NULL || _sampled != NULL, "unexpected state");
+  // JJJ - This should not happen.  Maybe the first sample is taken
+  // while the _sample_helper is being null'ed out.
+  // assert(_sample_helper != NULL || _sampled != NULL, "unexpected state");
+  if (_sample_helper == NULL) return;
 
   if (_sample_helper != NULL) {
     *(jlong*)_valuep = _sample_helper->take_sample();
--- a/src/share/vm/runtime/perfData.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/perfData.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -425,6 +425,7 @@
     inline void inc() { (*(jlong*)_valuep)++; }
     inline void inc(jlong val) { (*(jlong*)_valuep) += val; }
     inline void add(jlong val) { (*(jlong*)_valuep) += val; }
+    void clear_sample_helper() { _sample_helper = NULL; }
 };
 
 /*
--- a/src/share/vm/runtime/reflection.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/reflection.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -46,24 +46,24 @@
 
 #define JAVA_1_5_VERSION                  49
 
-static void trace_class_resolution(klassOop to_class) {
+static void trace_class_resolution(Klass* to_class) {
   ResourceMark rm;
   int line_number = -1;
   const char * source_file = NULL;
-  klassOop caller = NULL;
+  Klass* caller = NULL;
   JavaThread* jthread = JavaThread::current();
   if (jthread->has_last_Java_frame()) {
     vframeStream vfst(jthread);
     // skip over any frames belonging to java.lang.Class
     while (!vfst.at_end() &&
-           instanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class()) {
+           InstanceKlass::cast(vfst.method()->method_holder())->name() == vmSymbols::java_lang_Class()) {
       vfst.next();
     }
     if (!vfst.at_end()) {
       // this frame is a likely suspect
       caller = vfst.method()->method_holder();
       line_number = vfst.method()->line_number_from_bci(vfst.bci());
-      Symbol* s = instanceKlass::cast(vfst.method()->method_holder())->source_file_name();
+      Symbol* s = InstanceKlass::cast(vfst.method()->method_holder())->source_file_name();
       if (s != NULL) {
         source_file = s->as_C_string();
       }
@@ -254,7 +254,7 @@
     if (value_type == T_OBJECT) {
       oop obj = (oop) value->l;
       if (obj != NULL) {
-        klassOop element_klass = objArrayKlass::cast(a->klass())->element_klass();
+        Klass* element_klass = objArrayKlass::cast(a->klass())->element_klass();
         if (!obj->is_a(element_klass)) {
           THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "array element type mismatch");
         }
@@ -301,7 +301,7 @@
 }
 
 
-klassOop Reflection::basic_type_mirror_to_arrayklass(oop basic_type_mirror, TRAPS) {
+Klass* Reflection::basic_type_mirror_to_arrayklass(oop basic_type_mirror, TRAPS) {
   assert(java_lang_Class::is_primitive(basic_type_mirror), "just checking");
   BasicType type = java_lang_Class::primitive_type(basic_type_mirror);
   if (type == T_VOID) {
@@ -312,7 +312,7 @@
 }
 
 
-oop Reflection:: basic_type_arrayklass_to_mirror(klassOop basic_type_arrayklass, TRAPS) {
+oop Reflection:: basic_type_arrayklass_to_mirror(Klass* basic_type_arrayklass, TRAPS) {
   BasicType type = typeArrayKlass::cast(basic_type_arrayklass)->element_type();
   return Universe::java_mirror(type);
 }
@@ -326,10 +326,10 @@
     THROW_0(vmSymbols::java_lang_NegativeArraySizeException());
   }
   if (java_lang_Class::is_primitive(element_mirror)) {
-    klassOop tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
+    Klass* tak = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
     return typeArrayKlass::cast(tak)->allocate(length, THREAD);
   } else {
-    klassOop k = java_lang_Class::as_klassOop(element_mirror);
+    Klass* k = java_lang_Class::as_Klass(element_mirror);
     if (Klass::cast(k)->oop_is_array() && arrayKlass::cast(k)->dimension() >= MAX_DIM) {
       THROW_0(vmSymbols::java_lang_IllegalArgumentException());
     }
@@ -360,12 +360,12 @@
     dimensions[i] = d;
   }
 
-  klassOop klass;
+  Klass* klass;
   int dim = len;
   if (java_lang_Class::is_primitive(element_mirror)) {
     klass = basic_type_mirror_to_arrayklass(element_mirror, CHECK_NULL);
   } else {
-    klass = java_lang_Class::as_klassOop(element_mirror);
+    klass = java_lang_Class::as_Klass(element_mirror);
     if (Klass::cast(klass)->oop_is_array()) {
       int k_dim = arrayKlass::cast(klass)->dimension();
       if (k_dim + len > MAX_DIM) {
@@ -386,7 +386,7 @@
     return NULL;
   }
 
-  klassOop klass = java_lang_Class::as_klassOop(mirror);
+  Klass* klass = java_lang_Class::as_Klass(mirror);
   if (!Klass::cast(klass)->oop_is_array()) {
     return NULL;
   }
@@ -401,7 +401,7 @@
       result2 = Klass::cast(objArrayKlass::cast(klass)->element_klass())->java_mirror();
     }
   } else {
-    klassOop lower_dim = arrayKlass::cast(klass)->lower_dimension();
+    Klass* lower_dim = arrayKlass::cast(klass)->lower_dimension();
     assert(Klass::cast(lower_dim)->oop_is_array(), "just checking");
     result2 = Klass::cast(lower_dim)->java_mirror();
   }
@@ -411,7 +411,7 @@
 }
 
 
-bool Reflection::reflect_check_access(klassOop field_class, AccessFlags acc, klassOop target_class, bool is_method_invoke, TRAPS) {
+bool Reflection::reflect_check_access(Klass* field_class, AccessFlags acc, Klass* target_class, bool is_method_invoke, TRAPS) {
   // field_class  : declaring class
   // acc          : declared field access
   // target_class : for protected
@@ -424,7 +424,7 @@
   // that case (same as classic).
   ResourceMark rm(THREAD);
   assert(THREAD->is_Java_thread(), "sanity check");
-  klassOop client_class = ((JavaThread *)THREAD)->security_get_caller_class(is_method_invoke ? 0 : 1);
+  Klass* client_class = ((JavaThread *)THREAD)->security_get_caller_class(is_method_invoke ? 0 : 1);
 
   if (client_class != field_class) {
     if (!verify_class_access(client_class, field_class, false)
@@ -454,13 +454,13 @@
 }
 
 
-bool Reflection::verify_class_access(klassOop current_class, klassOop new_class, bool classloader_only) {
+bool Reflection::verify_class_access(Klass* current_class, Klass* new_class, bool classloader_only) {
   // Verify that current_class can access new_class.  If the classloader_only
   // flag is set, we automatically allow any accesses in which current_class
   // doesn't have a classloader.
   if ((current_class == NULL) ||
       (current_class == new_class) ||
-      (instanceKlass::cast(new_class)->is_public()) ||
+      (InstanceKlass::cast(new_class)->is_public()) ||
       is_same_class_package(current_class, new_class)) {
     return true;
   }
@@ -475,13 +475,13 @@
   return can_relax_access_check_for(current_class, new_class, classloader_only);
 }
 
-static bool under_host_klass(instanceKlass* ik, klassOop host_klass) {
+static bool under_host_klass(InstanceKlass* ik, Klass* host_klass) {
   DEBUG_ONLY(int inf_loop_check = 1000 * 1000 * 1000);
   for (;;) {
-    klassOop hc = (klassOop) ik->host_klass();
+    Klass* hc = (Klass*) ik->host_klass();
     if (hc == NULL)        return false;
     if (hc == host_klass)  return true;
-    ik = instanceKlass::cast(hc);
+    ik = InstanceKlass::cast(hc);
 
     // There's no way to make a host class loop short of patching memory.
     // Therefore there cannot be a loop here unles there's another bug.
@@ -491,9 +491,9 @@
 }
 
 bool Reflection::can_relax_access_check_for(
-    klassOop accessor, klassOop accessee, bool classloader_only) {
-  instanceKlass* accessor_ik = instanceKlass::cast(accessor);
-  instanceKlass* accessee_ik  = instanceKlass::cast(accessee);
+    Klass* accessor, Klass* accessee, bool classloader_only) {
+  InstanceKlass* accessor_ik = InstanceKlass::cast(accessor);
+  InstanceKlass* accessee_ik  = InstanceKlass::cast(accessee);
 
   // If either is on the other's host_klass chain, access is OK,
   // because one is inside the other.
@@ -513,9 +513,9 @@
   }
 }
 
-bool Reflection::verify_field_access(klassOop current_class,
-                                     klassOop resolved_class,
-                                     klassOop field_class,
+bool Reflection::verify_field_access(Klass* current_class,
+                                     Klass* resolved_class,
+                                     Klass* field_class,
                                      AccessFlags access,
                                      bool classloader_only,
                                      bool protected_restriction) {
@@ -569,12 +569,12 @@
 }
 
 
-bool Reflection::is_same_class_package(klassOop class1, klassOop class2) {
-  return instanceKlass::cast(class1)->is_same_class_package(class2);
+bool Reflection::is_same_class_package(Klass* class1, Klass* class2) {
+  return InstanceKlass::cast(class1)->is_same_class_package(class2);
 }
 
-bool Reflection::is_same_package_member(klassOop class1, klassOop class2, TRAPS) {
-  return instanceKlass::cast(class1)->is_same_package_member(class2, THREAD);
+bool Reflection::is_same_package_member(Klass* class1, Klass* class2, TRAPS) {
+  return InstanceKlass::cast(class1)->is_same_package_member(class2, THREAD);
 }
 
 
@@ -592,9 +592,9 @@
      int ooff = iter.outer_class_info_index();
 
      if (inner_is_member && ioff != 0 && ooff != 0) {
-        klassOop o = cp->klass_at(ooff, CHECK);
+        Klass* o = cp->klass_at(ooff, CHECK);
         if (o == outer()) {
-          klassOop i = cp->klass_at(ioff, CHECK);
+          Klass* i = cp->klass_at(ioff, CHECK);
           if (i == inner()) {
             return;
           }
@@ -602,7 +602,7 @@
      }
      if (!inner_is_member && ioff != 0 && ooff == 0 &&
          cp->klass_name_at_matches(inner, ioff)) {
-        klassOop i = cp->klass_at(ioff, CHECK);
+        Klass* i = cp->klass_at(ioff, CHECK);
         if (i == inner()) {
           return;
         }
@@ -630,9 +630,9 @@
     case T_OBJECT:
     case T_ARRAY:
       Symbol* name        = ss->as_symbol(CHECK_NULL);
-      oop loader            = instanceKlass::cast(method->method_holder())->class_loader();
-      oop protection_domain = instanceKlass::cast(method->method_holder())->protection_domain();
-      klassOop k = SystemDictionary::resolve_or_fail(
+      oop loader            = InstanceKlass::cast(method->method_holder())->class_loader();
+      oop protection_domain = InstanceKlass::cast(method->method_holder())->protection_domain();
+      Klass* k = SystemDictionary::resolve_or_fail(
                                        name,
                                        Handle(THREAD, loader),
                                        Handle(THREAD, protection_domain),
@@ -680,9 +680,9 @@
     return Handle(THREAD, Universe::java_mirror(type));
   }
 
-  oop loader = instanceKlass::cast(k())->class_loader();
+  oop loader = InstanceKlass::cast(k())->class_loader();
   oop protection_domain = Klass::cast(k())->protection_domain();
-  klassOop result = SystemDictionary::resolve_or_fail(signature,
+  Klass* result = SystemDictionary::resolve_or_fail(signature,
                                     Handle(THREAD, loader),
                                     Handle(THREAD, protection_domain),
                                     true, CHECK_(Handle()));
@@ -748,13 +748,16 @@
     java_lang_reflect_Method::set_signature(mh(), sig());
   }
   if (java_lang_reflect_Method::has_annotations_field()) {
-    java_lang_reflect_Method::set_annotations(mh(), method->annotations());
+    typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
+    java_lang_reflect_Method::set_annotations(mh(), an_oop);
   }
   if (java_lang_reflect_Method::has_parameter_annotations_field()) {
-    java_lang_reflect_Method::set_parameter_annotations(mh(), method->parameter_annotations());
+    typeArrayOop an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
+    java_lang_reflect_Method::set_parameter_annotations(mh(), an_oop);
   }
   if (java_lang_reflect_Method::has_annotation_default_field()) {
-    java_lang_reflect_Method::set_annotation_default(mh(), method->annotation_default());
+    typeArrayOop an_oop = Annotations::make_java_array(method->annotation_default(), CHECK_NULL);
+    java_lang_reflect_Method::set_annotation_default(mh(), an_oop);
   }
   return mh();
 }
@@ -791,10 +794,12 @@
     java_lang_reflect_Constructor::set_signature(ch(), sig());
   }
   if (java_lang_reflect_Constructor::has_annotations_field()) {
-    java_lang_reflect_Constructor::set_annotations(ch(), method->annotations());
+    typeArrayOop an_oop = Annotations::make_java_array(method->annotations(), CHECK_NULL);
+    java_lang_reflect_Constructor::set_annotations(ch(), an_oop);
   }
   if (java_lang_reflect_Constructor::has_parameter_annotations_field()) {
-    java_lang_reflect_Constructor::set_parameter_annotations(ch(), method->parameter_annotations());
+    typeArrayOop an_oop = Annotations::make_java_array(method->parameter_annotations(), CHECK_NULL);
+    java_lang_reflect_Constructor::set_parameter_annotations(ch(), an_oop);
   }
   return ch();
 }
@@ -811,7 +816,7 @@
     name = java_lang_String::create_from_symbol(field_name, CHECK_NULL);
   }
   Symbol*  signature  = fd->signature();
-  KlassHandle  holder    (THREAD, fd->field_holder());
+  instanceKlassHandle  holder    (THREAD, fd->field_holder());
   Handle type = new_type(signature, holder, CHECK_NULL);
   Handle rh  = java_lang_reflect_Field::create(CHECK_NULL);
 
@@ -829,7 +834,8 @@
     java_lang_reflect_Field::set_signature(rh(), sig());
   }
   if (java_lang_reflect_Field::has_annotations_field()) {
-    java_lang_reflect_Field::set_annotations(rh(), fd->annotations());
+    typeArrayOop an_oop = Annotations::make_java_array(fd->annotations(), CHECK_NULL);
+    java_lang_reflect_Field::set_annotations(rh(), an_oop);
   }
   return rh();
 }
@@ -882,7 +888,7 @@
       method = reflected_method;
     } else {
       // resolve based on the receiver
-      if (instanceKlass::cast(reflected_method->method_holder())->is_interface()) {
+      if (InstanceKlass::cast(reflected_method->method_holder())->is_interface()) {
         // resolve interface call
         if (ReflectionWrapResolutionErrors) {
           // new default: 6531596
@@ -905,10 +911,10 @@
         // if the method can be overridden, we resolve using the vtable index.
         int index  = reflected_method->vtable_index();
         method = reflected_method;
-        if (index != methodOopDesc::nonvirtual_vtable_index) {
+        if (index != Method::nonvirtual_vtable_index) {
           // target_klass might be an arrayKlassOop but all vtables start at
           // the same place. The cast is to avoid virtual call and assertion.
-          instanceKlass* inst = (instanceKlass*)target_klass()->klass_part();
+          InstanceKlass* inst = (InstanceKlass*)target_klass();
           method = methodHandle(THREAD, inst->method_at_vtable(index));
         }
         if (!method.is_null()) {
@@ -919,7 +925,7 @@
               ResourceMark rm(THREAD);
               Handle h_origexception = Exceptions::new_exception(THREAD,
                      vmSymbols::java_lang_AbstractMethodError(),
-                     methodOopDesc::name_and_sig_as_C_string(Klass::cast(target_klass()),
+                     Method::name_and_sig_as_C_string(Klass::cast(target_klass()),
                      method->name(),
                      method->signature()));
               JavaCallArguments args(h_origexception);
@@ -929,7 +935,7 @@
             } else {
               ResourceMark rm(THREAD);
               THROW_MSG_0(vmSymbols::java_lang_AbstractMethodError(),
-                        methodOopDesc::name_and_sig_as_C_string(Klass::cast(target_klass()),
+                        Method::name_and_sig_as_C_string(Klass::cast(target_klass()),
                                                                 method->name(),
                                                                 method->signature()));
             }
@@ -944,7 +950,7 @@
   if (method.is_null()) {
     ResourceMark rm(THREAD);
     THROW_MSG_0(vmSymbols::java_lang_NoSuchMethodError(),
-                methodOopDesc::name_and_sig_as_C_string(Klass::cast(klass()),
+                Method::name_and_sig_as_C_string(Klass::cast(klass()),
                                                         reflected_method->name(),
                                                         reflected_method->signature()));
   }
@@ -1003,7 +1009,7 @@
       }
     } else {
       if (arg != NULL) {
-        klassOop k = java_lang_Class::as_klassOop(type_mirror);
+        Klass* k = java_lang_Class::as_Klass(type_mirror);
         if (!arg->is_a(k)) {
           THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "argument type mismatch");
         }
@@ -1079,8 +1085,8 @@
     rtype = T_OBJECT;
   }
 
-  instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror));
-  methodOop m = klass->method_with_idnum(slot);
+  instanceKlassHandle klass(THREAD, java_lang_Class::as_Klass(mirror));
+  Method* m = klass->method_with_idnum(slot);
   if (m == NULL) {
     THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke");
   }
@@ -1096,8 +1102,8 @@
   bool override          = java_lang_reflect_Constructor::override(constructor_mirror) != 0;
   objArrayHandle ptypes(THREAD, objArrayOop(java_lang_reflect_Constructor::parameter_types(constructor_mirror)));
 
-  instanceKlassHandle klass(THREAD, java_lang_Class::as_klassOop(mirror));
-  methodOop m = klass->method_with_idnum(slot);
+  instanceKlassHandle klass(THREAD, java_lang_Class::as_Klass(mirror));
+  Method* m = klass->method_with_idnum(slot);
   if (m == NULL) {
     THROW_MSG_0(vmSymbols::java_lang_InternalError(), "invoke");
   }
--- a/src/share/vm/runtime/reflection.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/reflection.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -45,11 +45,11 @@
 class Reflection: public AllStatic {
  private:
   // Access checking
-  static bool reflect_check_access(klassOop field_class, AccessFlags acc, klassOop target_class, bool is_method_invoke, TRAPS);
+  static bool reflect_check_access(Klass* field_class, AccessFlags acc, Klass* target_class, bool is_method_invoke, TRAPS);
 
   // Conversion
-  static klassOop basic_type_mirror_to_arrayklass(oop basic_type_mirror, TRAPS);
-  static oop      basic_type_arrayklass_to_mirror(klassOop basic_type_arrayklass, TRAPS);
+  static Klass* basic_type_mirror_to_arrayklass(oop basic_type_mirror, TRAPS);
+  static oop      basic_type_arrayklass_to_mirror(Klass* basic_type_arrayklass, TRAPS);
 
   static objArrayHandle get_parameter_types(methodHandle method, int parameter_count, oop* return_type, TRAPS);
   static objArrayHandle get_exception_types(methodHandle method, TRAPS);
@@ -86,19 +86,19 @@
   static arrayOop reflect_new_multi_array(oop element_mirror, typeArrayOop dimensions, TRAPS);
 
   // Verification
-  static bool     verify_class_access(klassOop current_class, klassOop new_class, bool classloader_only);
+  static bool     verify_class_access(Klass* current_class, Klass* new_class, bool classloader_only);
 
-  static bool     verify_field_access(klassOop current_class,
-                                      klassOop resolved_class,
-                                      klassOop field_class,
+  static bool     verify_field_access(Klass* current_class,
+                                      Klass* resolved_class,
+                                      Klass* field_class,
                                       AccessFlags access,
                                       bool classloader_only,
                                       bool protected_restriction = false);
-  static bool     is_same_class_package(klassOop class1, klassOop class2);
-  static bool     is_same_package_member(klassOop class1, klassOop class2, TRAPS);
+  static bool     is_same_class_package(Klass* class1, Klass* class2);
+  static bool     is_same_package_member(Klass* class1, Klass* class2, TRAPS);
 
   static bool can_relax_access_check_for(
-    klassOop accessor, klassOop accesee, bool classloader_only);
+    Klass* accessor, Klass* accesee, bool classloader_only);
 
   // inner class reflection
   // raise an ICCE unless the required relationship can be proven to hold
--- a/src/share/vm/runtime/reflectionUtils.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/reflectionUtils.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -30,7 +30,7 @@
 KlassStream::KlassStream(instanceKlassHandle klass, bool local_only, bool classes_only) {
   _klass = klass;
   if (classes_only) {
-    _interfaces = Universe::the_empty_system_obj_array();
+    _interfaces = Universe::the_empty_klass_array();
   } else {
     _interfaces = klass->transitive_interfaces();
   }
@@ -47,7 +47,7 @@
     _klass = _klass->super();
   } else {
     if (_interface_index > 0) {
-      _klass = klassOop(_interfaces->obj_at(--_interface_index));
+      _klass = _interfaces->at(--_interface_index);
     } else {
       return true;
     }
@@ -70,7 +70,7 @@
   if (JDK_Version::is_gte_jdk16x_version()) {
     // The following class fields do not exist in
     // previous version of jdk.
-    offset = sun_reflect_ConstantPool::cp_oop_offset();
+    offset = sun_reflect_ConstantPool::oop_offset();
     _filtered_fields->append(new FilteredField(SystemDictionary::reflect_ConstantPool_klass(), offset));
     offset = sun_reflect_UnsafeStaticFieldAccessorImpl::base_offset();
     _filtered_fields->append(new FilteredField(SystemDictionary::reflect_UnsafeStaticFieldAccessorImpl_klass(), offset));
--- a/src/share/vm/runtime/reflectionUtils.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/reflectionUtils.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 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
@@ -39,14 +39,14 @@
 // interfaces last).
 //
 //    for (KlassStream st(k, false, false); !st.eos(); st.next()) {
-//      klassOop k = st.klass();
+//      Klass* k = st.klass();
 //      ...
 //    }
 
 class KlassStream VALUE_OBJ_CLASS_SPEC {
  protected:
   instanceKlassHandle _klass;           // current klass/interface iterated over
-  objArrayHandle      _interfaces;      // transitive interfaces for initial class
+  Array<Klass*>*    _interfaces;      // transitive interfaces for initial class
   int                 _interface_index; // current interface being processed
   bool                _local_only;      // process initial class/interface only
   bool                _classes_only;    // process classes only (no interfaces)
@@ -75,14 +75,14 @@
 // Usage:
 //
 //    for (MethodStream st(k, false, false); !st.eos(); st.next()) {
-//      methodOop m = st.method();
+//      Method* m = st.method();
 //      ...
 //    }
 
 class MethodStream : public KlassStream {
  private:
   int length() const          { return methods()->length(); }
-  objArrayOop methods() const { return _klass->methods(); }
+  Array<Method*>* methods() const { return _klass->methods(); }
  public:
   MethodStream(instanceKlassHandle klass, bool local_only, bool classes_only)
     : KlassStream(klass, local_only, classes_only) {
@@ -91,7 +91,7 @@
   }
 
   void next() { _index--; }
-  methodOop method() const { return methodOop(methods()->obj_at(index())); }
+  Method* method() const { return methods()->at(index()); }
 };
 
 
@@ -138,16 +138,15 @@
 
 class FilteredField {
  private:
-  klassOop _klass;
+  Klass* _klass;
   int      _field_offset;
 
  public:
-  FilteredField(klassOop klass, int field_offset) {
+  FilteredField(Klass* klass, int field_offset) {
     _klass = klass;
     _field_offset = field_offset;
   }
-  klassOop klass() { return _klass; }
-  oop* klass_addr() { return (oop*) &_klass; }
+  Klass* klass() { return _klass; }
   int  field_offset() { return _field_offset; }
 };
 
@@ -156,7 +155,7 @@
   static GrowableArray<FilteredField *> *_filtered_fields;
  public:
   static void initialize();
-  static bool is_filtered_field(klassOop klass, int field_offset) {
+  static bool is_filtered_field(Klass* klass, int field_offset) {
     for (int i=0; i < _filtered_fields->length(); i++) {
       if (klass == _filtered_fields->at(i)->klass() &&
         field_offset == _filtered_fields->at(i)->field_offset()) {
@@ -165,21 +164,21 @@
     }
     return false;
   }
-  static int  filtered_fields_count(klassOop klass, bool local_only) {
+  static int  filtered_fields_count(Klass* klass, bool local_only) {
     int nflds = 0;
     for (int i=0; i < _filtered_fields->length(); i++) {
       if (local_only && klass == _filtered_fields->at(i)->klass()) {
         nflds++;
-      } else if (klass->klass_part()->is_subtype_of(_filtered_fields->at(i)->klass())) {
+      } else if (klass->is_subtype_of(_filtered_fields->at(i)->klass())) {
         nflds++;
       }
     }
     return nflds;
   }
-  // GC support.
-  static void klasses_oops_do(OopClosure* f) {
+  // Enhance Class Redefinition Support
+  static void classes_do(KlassClosure* f) {
     for (int i = 0; i < _filtered_fields->length(); i++) {
-      f->do_oop((oop*)_filtered_fields->at(i)->klass_addr());
+      f->do_klass(_filtered_fields->at(i)->klass());
     }
   }
 };
@@ -204,13 +203,13 @@
  public:
   FilteredFieldStream(instanceKlassHandle klass, bool local_only, bool classes_only)
     : FieldStream(klass, local_only, classes_only) {
-    _filtered_fields_count = FilteredFieldsMap::filtered_fields_count((klassOop)klass(), local_only);
+    _filtered_fields_count = FilteredFieldsMap::filtered_fields_count((Klass*)klass(), local_only);
   }
   int field_count();
   void next() {
     _index -= 1;
     if (has_filtered_field()) {
-      while (_index >=0 && FilteredFieldsMap::is_filtered_field((klassOop)_klass(), offset())) {
+      while (_index >=0 && FilteredFieldsMap::is_filtered_field((Klass*)_klass(), offset())) {
         _index -= 1;
       }
     }
--- a/src/share/vm/runtime/relocator.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/relocator.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,6 +25,7 @@
 #include "precompiled.hpp"
 #include "classfile/stackMapTableFormat.hpp"
 #include "interpreter/bytecodes.hpp"
+#include "memory/metadataFactory.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/oop.inline.hpp"
@@ -155,11 +156,16 @@
   if (!handle_code_changes()) return methodHandle();
 
     // Construct the new method
-  methodHandle new_method = methodOopDesc::clone_with_new_data(method(),
+  methodHandle new_method = Method::clone_with_new_data(method(),
                               code_array(), code_length(),
                               compressed_line_number_table(),
                               compressed_line_number_table_size(),
                               CHECK_(methodHandle()));
+
+  // Deallocate the old Method* from metadata
+  ClassLoaderData* loader_data = method()->method_holder()->class_loader_data();
+  loader_data->add_to_deallocate_list(method()());
+
     set_method(new_method);
 
   if (TraceRelocator) {
@@ -443,16 +449,14 @@
 
 // Create a new array, copying the src array but adding a hole at
 // the specified location
-static typeArrayOop insert_hole_at(
-    size_t where, int hole_sz, typeArrayOop src) {
+static Array<u1>* insert_hole_at(ClassLoaderData* loader_data,
+    size_t where, int hole_sz, Array<u1>* src) {
   Thread* THREAD = Thread::current();
-  Handle src_hnd(THREAD, src);
-  typeArrayOop dst =
-      oopFactory::new_permanent_byteArray(src->length() + hole_sz, CHECK_NULL);
-  src = (typeArrayOop)src_hnd();
+  Array<u1>* dst =
+      MetadataFactory::new_array<u1>(loader_data, src->length() + hole_sz, 0, CHECK_NULL);
 
-  address src_addr = (address)src->byte_at_addr(0);
-  address dst_addr = (address)dst->byte_at_addr(0);
+  address src_addr = (address)src->adr_at(0);
+  address dst_addr = (address)dst->adr_at(0);
 
   memcpy(dst_addr, src_addr, where);
   memcpy(dst_addr + where + hole_sz,
@@ -464,10 +468,10 @@
 // map frames.
 void Relocator::adjust_stack_map_table(int bci, int delta) {
   if (method()->has_stackmap_table()) {
-    typeArrayOop data = method()->stackmap_data();
+    Array<u1>* data = method()->stackmap_data();
     // The data in the array is a classfile representation of the stackmap table
     stack_map_table* sm_table =
-        stack_map_table::at((address)data->byte_at_addr(0));
+        stack_map_table::at((address)data->adr_at(0));
 
     int count = sm_table->number_of_entries();
     stack_map_frame* frame = sm_table->entries();
@@ -497,14 +501,18 @@
           // We can safely ignore the reverse situation as a small delta
           // can still be used in an extended version of the frame.
 
-          size_t frame_offset = (address)frame - (address)data->byte_at_addr(0);
+          size_t frame_offset = (address)frame - (address)data->adr_at(0);
 
-          data = insert_hole_at(frame_offset + 1, 2, data);
-          if (data == NULL) {
+          ClassLoaderData* loader_data = method()->method_holder()->class_loader_data();
+          Array<u1>* new_data = insert_hole_at(loader_data, frame_offset + 1, 2, data);
+          if (new_data == NULL) {
             return; // out-of-memory?
           }
+          // Deallocate old data
+          MetadataFactory::free_array<u1>(loader_data, data);
+          data = new_data;
 
-          address frame_addr = (address)(data->byte_at_addr(0) + frame_offset);
+          address frame_addr = (address)(data->adr_at(0) + frame_offset);
           frame = stack_map_frame::at(frame_addr);
 
 
@@ -573,7 +581,7 @@
   if (code_array() != NULL) {
     memcpy(new_code_array, code_array(), code_length());
   } else {
-    // Initial copy. Copy directly from methodOop
+    // Initial copy. Copy directly from Method*
     memcpy(new_code_array, method()->code_base(), code_length());
   }
 
--- a/src/share/vm/runtime/relocator.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/relocator.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,7 +26,7 @@
 #define SHARE_VM_RUNTIME_RELOCATOR_HPP
 
 #include "interpreter/bytecodes.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #ifdef TARGET_ARCH_x86
 # include "bytes_x86.hpp"
 #endif
--- a/src/share/vm/runtime/rframe.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/rframe.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -69,9 +69,9 @@
   RFrame* parent() const;                 // rframe containing lexical scope (if any)
   virtual void print()                    = 0;
 
-  static int computeSends(methodOop m);
+  static int computeSends(Method* m);
   static int computeSends(nmethod* nm);
-  static int computeCumulSends(methodOop m);
+  static int computeCumulSends(Method* m);
   static int computeCumulSends(nmethod* nm);
 };
 
--- a/src/share/vm/runtime/sharedRuntime.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/sharedRuntime.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -590,13 +590,13 @@
 // to modify the compilers to generate calls to this function.
 //
 JRT_LEAF(int, SharedRuntime::rc_trace_method_entry(
-    JavaThread* thread, methodOopDesc* method))
+    JavaThread* thread, Method* method))
   assert(RC_TRACE_IN_RANGE(0x00001000, 0x00002000), "wrong call");
 
   if (method->is_obsolete()) {
     // We are calling an obsolete method, but this is not necessarily
     // an error. Our method could have been redefined just after we
-    // fetched the methodOop from the constant pool.
+    // fetched the Method* from the constant pool.
 
     // RC_TRACE macro has an embedded ResourceMark
     RC_TRACE_WITH_THREAD(0x00001000, thread,
@@ -725,8 +725,8 @@
 JRT_ENTRY(void, SharedRuntime::throw_StackOverflowError(JavaThread* thread))
   // We avoid using the normal exception construction in this case because
   // it performs an upcall to Java, and we're already out of stack space.
-  klassOop k = SystemDictionary::StackOverflowError_klass();
-  oop exception_oop = instanceKlass::cast(k)->allocate_instance(CHECK);
+  Klass* k = SystemDictionary::StackOverflowError_klass();
+  oop exception_oop = InstanceKlass::cast(k)->allocate_instance(CHECK);
   Handle exception (thread, exception_oop);
   if (StackTraceInThrowable) {
     java_lang_Throwable::fill_in_stack_trace(exception);
@@ -909,8 +909,8 @@
 
 JRT_ENTRY_NO_ASYNC(void, SharedRuntime::register_finalizer(JavaThread* thread, oopDesc* obj))
   assert(obj->is_oop(), "must be a valid oop");
-  assert(obj->klass()->klass_part()->has_finalizer(), "shouldn't be here otherwise");
-  instanceKlass::register_finalizer(instanceOop(obj), CHECK);
+  assert(obj->klass()->has_finalizer(), "shouldn't be here otherwise");
+  InstanceKlass::register_finalizer(instanceOop(obj), CHECK);
 JRT_END
 
 
@@ -935,7 +935,7 @@
 
 int SharedRuntime::dtrace_object_alloc_base(Thread* thread, oopDesc* o) {
   assert(DTraceAllocProbes, "wrong call");
-  Klass* klass = o->blueprint();
+  Klass* klass = o->klass();
   int size = o->size();
   Symbol* name = klass->name();
 #ifndef USDT2
@@ -950,7 +950,7 @@
 }
 
 JRT_LEAF(int, SharedRuntime::dtrace_method_entry(
-    JavaThread* thread, methodOopDesc* method))
+    JavaThread* thread, Method* method))
   assert(DTraceMethodProbes, "wrong call");
   Symbol* kname = method->klass_name();
   Symbol* name = method->name();
@@ -971,7 +971,7 @@
 JRT_END
 
 JRT_LEAF(int, SharedRuntime::dtrace_method_exit(
-    JavaThread* thread, methodOopDesc* method))
+    JavaThread* thread, Method* method))
   assert(DTraceMethodProbes, "wrong call");
   Symbol* kname = method->klass_name();
   Symbol* name = method->name();
@@ -1059,7 +1059,7 @@
   if (bc != Bytecodes::_invokestatic && bc != Bytecodes::_invokedynamic) {
     assert(receiver.not_null(), "should have thrown exception");
     KlassHandle receiver_klass(THREAD, receiver->klass());
-    klassOop rk = constants->klass_ref_at(bytecode_index, CHECK_(nullHandle));
+    Klass* rk = constants->klass_ref_at(bytecode_index, CHECK_(nullHandle));
                             // klass is already loaded
     KlassHandle static_receiver_klass(THREAD, rk);
     // Method handle invokes might have been optimized to a direct call
@@ -1071,11 +1071,11 @@
            callee->is_compiled_lambda_form(),
            "actual receiver must be subclass of static receiver klass");
     if (receiver_klass->oop_is_instance()) {
-      if (instanceKlass::cast(receiver_klass())->is_not_initialized()) {
+      if (InstanceKlass::cast(receiver_klass())->is_not_initialized()) {
         tty->print_cr("ERROR: Klass not yet initialized!!");
-        receiver_klass.print();
+        receiver_klass()->print();
       }
-      assert(!instanceKlass::cast(receiver_klass())->is_not_initialized(), "receiver_klass must be initialized");
+      assert(!InstanceKlass::cast(receiver_klass())->is_not_initialized(), "receiver_klass must be initialized");
     }
   }
 #endif
@@ -1233,7 +1233,7 @@
   {
     MutexLocker ml_patch(CompiledIC_lock);
 
-    // Now that we are ready to patch if the methodOop was redefined then
+    // Now that we are ready to patch if the Method* was redefined then
     // don't update call site and let the caller retry.
 
     if (!callee_method->is_old()) {
@@ -1245,7 +1245,9 @@
       }
 #endif
       if (is_virtual) {
-        CompiledIC* inline_cache = CompiledIC_before(caller_frame.pc());
+        nmethod* nm = callee_nm;
+        if (nm == NULL) CodeCache::find_blob(caller_frame.pc());
+        CompiledIC* inline_cache = CompiledIC_before(caller_nm, caller_frame.pc());
         if (inline_cache->is_clean()) {
           inline_cache->set_to_monomorphic(virtual_call_info);
         }
@@ -1274,8 +1276,8 @@
   methodHandle callee_method;
   JRT_BLOCK
     callee_method = SharedRuntime::handle_ic_miss_helper(thread, CHECK_NULL);
-    // Return methodOop through TLS
-    thread->set_vm_result(callee_method());
+    // Return Method* through TLS
+    thread->set_vm_result_2(callee_method());
   JRT_BLOCK_END
   // return compiled code entry point after potential safepoints
   assert(callee_method->verified_code_entry() != NULL, " Jump to zero!");
@@ -1307,9 +1309,9 @@
 
   if (caller_frame.is_interpreted_frame() ||
       caller_frame.is_entry_frame()) {
-    methodOop callee = thread->callee_target();
+    Method* callee = thread->callee_target();
     guarantee(callee != NULL && callee->is_method(), "bad handshake");
-    thread->set_vm_result(callee);
+    thread->set_vm_result_2(callee);
     thread->set_callee_target(NULL);
     return callee->get_c2i_entry();
   }
@@ -1319,7 +1321,7 @@
   JRT_BLOCK
     // Force resolving of caller (if we called from compiled frame)
     callee_method = SharedRuntime::reresolve_call_site(thread, CHECK_NULL);
-    thread->set_vm_result(callee_method());
+    thread->set_vm_result_2(callee_method());
   JRT_BLOCK_END
   // return compiled code entry point after potential safepoints
   assert(callee_method->verified_code_entry() != NULL, " Jump to zero!");
@@ -1332,7 +1334,7 @@
   methodHandle callee_method;
   JRT_BLOCK
     callee_method = SharedRuntime::resolve_helper(thread, false, false, CHECK_NULL);
-    thread->set_vm_result(callee_method());
+    thread->set_vm_result_2(callee_method());
   JRT_BLOCK_END
   // return compiled code entry point after potential safepoints
   assert(callee_method->verified_code_entry() != NULL, " Jump to zero!");
@@ -1345,7 +1347,7 @@
   methodHandle callee_method;
   JRT_BLOCK
     callee_method = SharedRuntime::resolve_helper(thread, true, false, CHECK_NULL);
-    thread->set_vm_result(callee_method());
+    thread->set_vm_result_2(callee_method());
   JRT_BLOCK_END
   // return compiled code entry point after potential safepoints
   assert(callee_method->verified_code_entry() != NULL, " Jump to zero!");
@@ -1359,7 +1361,7 @@
   methodHandle callee_method;
   JRT_BLOCK
     callee_method = SharedRuntime::resolve_helper(thread, true, true, CHECK_NULL);
-    thread->set_vm_result(callee_method());
+    thread->set_vm_result_2(callee_method());
   JRT_BLOCK_END
   // return compiled code entry point after potential safepoints
   assert(callee_method->verified_code_entry() != NULL, " Jump to zero!");
@@ -1442,7 +1444,7 @@
     CodeBlob* cb = caller_frame.cb();
     if (cb->is_nmethod() && ((nmethod*)cb)->is_in_use()) {
       // Not a non-entrant nmethod, so find inline_cache
-      CompiledIC* inline_cache = CompiledIC_before(caller_frame.pc());
+      CompiledIC* inline_cache = CompiledIC_before(((nmethod*)cb), caller_frame.pc());
       bool should_be_mono = false;
       if (inline_cache->is_optimized()) {
         if (TraceCallFixup) {
@@ -1452,9 +1454,9 @@
           tty->print_cr(" code: " INTPTR_FORMAT, callee_method->code());
         }
         should_be_mono = true;
-      } else {
-        compiledICHolderOop ic_oop = (compiledICHolderOop) inline_cache->cached_oop();
-        if ( ic_oop != NULL && ic_oop->is_compiledICHolder()) {
+      } else if (inline_cache->is_icholder_call()) {
+        CompiledICHolder* ic_oop = inline_cache->cached_icholder();
+        if ( ic_oop != NULL) {
 
           if (receiver()->klass() == ic_oop->holder_klass()) {
             // This isn't a real miss. We must have seen that compiled code
@@ -1591,7 +1593,7 @@
           ssc->set_to_clean();
         } else {
           // compiled, dispatched call (which used to call an interpreted method)
-          CompiledIC* inline_cache = CompiledIC_at(call_addr);
+          CompiledIC* inline_cache = CompiledIC_at(caller_nm, call_addr);
           inline_cache->set_to_clean();
         }
       }
@@ -1622,8 +1624,8 @@
 // where we went int -> i2c -> c2i and so the caller could in fact be
 // interpreted. If the caller is compiled we attempt to patch the caller
 // so he no longer calls into the interpreter.
-IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(methodOopDesc* method, address caller_pc))
-  methodOop moop(method);
+IRT_LEAF(void, SharedRuntime::fixup_callers_callsite(Method* method, address caller_pc))
+  Method* moop(method);
 
   address entry_point = moop->from_compiled_entry();
 
@@ -1634,7 +1636,7 @@
   // Also it is possible that we lost a race in that from_compiled_entry
   // is now back to the i2c in that case we don't need to patch and if
   // we did we'd leap into space because the callsite needs to use
-  // "to interpreter" stub in order to load up the methodOop. Don't
+  // "to interpreter" stub in order to load up the Method*. Don't
   // ask me how I know this...
 
   CodeBlob* cb = CodeCache::find_blob(caller_pc);
@@ -1907,7 +1909,7 @@
   static int _max_size;                       // max. arg size seen
 
   static void add_method_to_histogram(nmethod* nm) {
-    methodOop m = nm->method();
+    Method* m = nm->method();
     ArgumentCount args(m->signature());
     int arity   = args.size() + (m->is_static() ? 0 : 1);
     int argsize = m->size_of_parameters();
@@ -2800,7 +2802,7 @@
   // QQQ we could place number of active monitors in the array so that compiled code
   // could double check it.
 
-  methodOop moop = fr.interpreter_frame_method();
+  Method* moop = fr.interpreter_frame_method();
   int max_locals = moop->max_locals();
   // Allocate temp buffer, 1 word per local & 2 per active monitor
   int buf_size_words = max_locals + active_monitor_count*2;
--- a/src/share/vm/runtime/sharedRuntime.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/sharedRuntime.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -234,7 +234,7 @@
   static void throw_and_post_jvmti_exception(JavaThread *thread, Symbol* name, const char *message = NULL);
 
   // RedefineClasses() tracing support for obsolete method entry
-  static int rc_trace_method_entry(JavaThread* thread, methodOopDesc* m);
+  static int rc_trace_method_entry(JavaThread* thread, Method* m);
 
   // To be used as the entry point for unresolved native methods.
   static address native_method_throw_unsatisfied_link_error_entry();
@@ -253,8 +253,8 @@
   // dtrace notifications
   static int dtrace_object_alloc(oopDesc* o);
   static int dtrace_object_alloc_base(Thread* thread, oopDesc* o);
-  static int dtrace_method_entry(JavaThread* thread, methodOopDesc* m);
-  static int dtrace_method_exit(JavaThread* thread, methodOopDesc* m);
+  static int dtrace_method_entry(JavaThread* thread, Method* m);
+  static int dtrace_method_exit(JavaThread* thread, Method* m);
 
   // Utility method for retrieving the Java thread id, returns 0 if the
   // thread is not a well formed Java thread.
@@ -452,7 +452,7 @@
 
   // A compiled caller has just called the interpreter, but compiled code
   // exists.  Patch the caller so he no longer calls into the interpreter.
-  static void fixup_callers_callsite(methodOopDesc* moop, address ret_pc);
+  static void fixup_callers_callsite(Method* moop, address ret_pc);
 
   // Slow-path Locking and Unlocking
   static void complete_monitor_locking_C(oopDesc* obj, BasicLock* lock, JavaThread* thread);
--- a/src/share/vm/runtime/signature.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/signature.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -336,7 +336,7 @@
   return name;
 }
 
-klassOop SignatureStream::as_klass(Handle class_loader, Handle protection_domain,
+Klass* SignatureStream::as_klass(Handle class_loader, Handle protection_domain,
                                    FailureMode failure_mode, TRAPS) {
   if (!is_object())  return NULL;
   Symbol* name = as_symbol(CHECK_NULL);
@@ -352,7 +352,7 @@
                                     FailureMode failure_mode, TRAPS) {
   if (!is_object())
     return Universe::java_mirror(type());
-  klassOop klass = as_klass(class_loader, protection_domain, failure_mode, CHECK_NULL);
+  Klass* klass = as_klass(class_loader, protection_domain, failure_mode, CHECK_NULL);
   if (klass == NULL)  return NULL;
   return Klass::cast(klass)->java_mirror();
 }
--- a/src/share/vm/runtime/signature.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/signature.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -26,7 +26,7 @@
 #define SHARE_VM_RUNTIME_SIGNATURE_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "utilities/top.hpp"
 
 // SignatureIterators iterate over a Java signature (or parts of it).
@@ -394,7 +394,7 @@
   BasicType type() const                         { return _type; }
   Symbol* as_symbol(TRAPS);
   enum FailureMode { ReturnNull, CNFException, NCDFError };
-  klassOop as_klass(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS);
+  Klass* as_klass(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS);
   oop as_java_mirror(Handle class_loader, Handle protection_domain, FailureMode failure_mode, TRAPS);
   const jbyte* raw_bytes()  { return _signature->bytes() + _begin; }
   int          raw_length() { return _end - _begin; }
--- a/src/share/vm/runtime/simpleThresholdPolicy.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/simpleThresholdPolicy.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -34,10 +34,10 @@
 void SimpleThresholdPolicy::print_counters(const char* prefix, methodHandle mh) {
   int invocation_count = mh->invocation_count();
   int backedge_count = mh->backedge_count();
-  methodDataHandle mdh = mh->method_data();
+  MethodData* mdh = mh->method_data();
   int mdo_invocations = 0, mdo_backedges = 0;
   int mdo_invocations_start = 0, mdo_backedges_start = 0;
-  if (mdh() != NULL) {
+  if (mdh != NULL) {
     mdo_invocations = mdh->invocation_count();
     mdo_backedges = mdh->backedge_count();
     mdo_invocations_start = mdh->invocation_count_start();
@@ -147,10 +147,10 @@
 }
 
 // Set carry flags on the counters if necessary
-void SimpleThresholdPolicy::handle_counter_overflow(methodOop method) {
+void SimpleThresholdPolicy::handle_counter_overflow(Method* method) {
   set_carry_if_necessary(method->invocation_counter());
   set_carry_if_necessary(method->backedge_counter());
-  methodDataOop mdo = method->method_data();
+  MethodData* mdo = method->method_data();
   if (mdo != NULL) {
     set_carry_if_necessary(mdo->invocation_counter());
     set_carry_if_necessary(mdo->backedge_counter());
@@ -168,7 +168,7 @@
       methodHandle mh(sd->method());
       print_event(REPROFILE, mh, mh, InvocationEntryBci, CompLevel_none);
     }
-    methodDataOop mdo = sd->method()->method_data();
+    MethodData* mdo = sd->method()->method_data();
     if (mdo != NULL) {
       mdo->reset_start_counters();
     }
@@ -272,9 +272,9 @@
 }
 
 // Determine is a method is mature.
-bool SimpleThresholdPolicy::is_mature(methodOop method) {
+bool SimpleThresholdPolicy::is_mature(Method* method) {
   if (is_trivial(method)) return true;
-  methodDataOop mdo = method->method_data();
+  MethodData* mdo = method->method_data();
   if (mdo != NULL) {
     int i = mdo->invocation_count();
     int b = mdo->backedge_count();
@@ -286,7 +286,7 @@
 }
 
 // Common transition function. Given a predicate determines if a method should transition to another level.
-CompLevel SimpleThresholdPolicy::common(Predicate p, methodOop method, CompLevel cur_level) {
+CompLevel SimpleThresholdPolicy::common(Predicate p, Method* method, CompLevel cur_level) {
   CompLevel next_level = cur_level;
   int i = method->invocation_count();
   int b = method->backedge_count();
@@ -306,7 +306,7 @@
     case CompLevel_limited_profile:
     case CompLevel_full_profile:
       {
-        methodDataOop mdo = method->method_data();
+        MethodData* mdo = method->method_data();
         if (mdo != NULL) {
           if (mdo->would_profile()) {
             int mdo_i = mdo->invocation_count_delta();
@@ -326,7 +326,7 @@
 }
 
 // Determine if a method should be compiled with a normal entry point at a different level.
-CompLevel SimpleThresholdPolicy::call_event(methodOop method,  CompLevel cur_level) {
+CompLevel SimpleThresholdPolicy::call_event(Method* method,  CompLevel cur_level) {
   CompLevel osr_level = MIN2((CompLevel) method->highest_osr_comp_level(),
                              common(&SimpleThresholdPolicy::loop_predicate, method, cur_level));
   CompLevel next_level = common(&SimpleThresholdPolicy::call_predicate, method, cur_level);
@@ -335,7 +335,7 @@
   // equalized by raising the regular method level in order to avoid OSRs during each
   // invocation of the method.
   if (osr_level == CompLevel_full_optimization && cur_level == CompLevel_full_profile) {
-    methodDataOop mdo = method->method_data();
+    MethodData* mdo = method->method_data();
     guarantee(mdo != NULL, "MDO should not be NULL");
     if (mdo->invocation_count() >= 1) {
       next_level = CompLevel_full_optimization;
@@ -348,7 +348,7 @@
 }
 
 // Determine if we should do an OSR compilation of a given method.
-CompLevel SimpleThresholdPolicy::loop_event(methodOop method, CompLevel cur_level) {
+CompLevel SimpleThresholdPolicy::loop_event(Method* method, CompLevel cur_level) {
   CompLevel next_level = common(&SimpleThresholdPolicy::loop_predicate, method, cur_level);
   if (cur_level == CompLevel_none) {
     // If there is a live OSR method that means that we deopted to the interpreter
--- a/src/share/vm/runtime/simpleThresholdPolicy.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/simpleThresholdPolicy.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 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
@@ -26,7 +26,7 @@
 #define SHARE_VM_RUNTIME_SIMPLETHRESHOLDPOLICY_HPP
 
 #include "code/nmethod.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "utilities/globalDefinitions.hpp"
 
@@ -38,8 +38,8 @@
 
   // Check if the counter is big enough and set carry (effectively infinity).
   inline void set_carry_if_necessary(InvocationCounter *counter);
-  // Set carry flags in the counters (in methodOop and MDO).
-  inline void handle_counter_overflow(methodOop method);
+  // Set carry flags in the counters (in Method* and MDO).
+  inline void handle_counter_overflow(Method* method);
   // Call and loop predicates determine whether a transition to a higher compilation
   // level should be performed (pointers to predicate functions are passed to common_TF().
   // Predicates also take compiler load into account.
@@ -47,14 +47,14 @@
   bool call_predicate(int i, int b, CompLevel cur_level);
   bool loop_predicate(int i, int b, CompLevel cur_level);
   // Common transition function. Given a predicate determines if a method should transition to another level.
-  CompLevel common(Predicate p, methodOop method, CompLevel cur_level);
+  CompLevel common(Predicate p, Method* method, CompLevel cur_level);
   // Transition functions.
   // call_event determines if a method should be compiled at a different
   // level with a regular invocation entry.
-  CompLevel call_event(methodOop method, CompLevel cur_level);
+  CompLevel call_event(Method* method, CompLevel cur_level);
   // loop_event checks if a method should be OSR compiled at a different
   // level.
-  CompLevel loop_event(methodOop method, CompLevel cur_level);
+  CompLevel loop_event(Method* method, CompLevel cur_level);
   void print_counters(const char* prefix, methodHandle mh);
 protected:
   int c1_count() const     { return _c1_count; }
@@ -72,7 +72,7 @@
   virtual void submit_compile(methodHandle mh, int bci, CompLevel level, JavaThread* thread);
   // Simple methods are as good being compiled with C1 as C2.
   // This function tells if it's such a function.
-  inline bool is_trivial(methodOop method);
+  inline bool is_trivial(Method* method);
 
   // Predicate helpers are used by .*_predicate() methods as well as others.
   // They check the given counter values, multiplied by the scale against the thresholds.
@@ -80,7 +80,7 @@
   template<CompLevel level> static inline bool loop_predicate_helper(int i, int b, double scale);
 
   // Get a compilation level for a given method.
-  static CompLevel comp_level(methodOop method) {
+  static CompLevel comp_level(Method* method) {
     nmethod *nm = method->code();
     if (nm != NULL && nm->is_in_use()) {
       return (CompLevel)nm->comp_level();
@@ -100,15 +100,15 @@
   }
   virtual CompLevel initial_compile_level() { return MIN2((CompLevel)TieredStopAtLevel, CompLevel_initial_compile); }
   virtual void do_safepoint_work() { }
-  virtual void delay_compilation(methodOop method) { }
-  virtual void disable_compilation(methodOop method) { }
+  virtual void delay_compilation(Method* method) { }
+  virtual void disable_compilation(Method* method) { }
   virtual void reprofile(ScopeDesc* trap_scope, bool is_osr);
   virtual nmethod* event(methodHandle method, methodHandle inlinee,
                          int branch_bci, int bci, CompLevel comp_level, nmethod* nm, JavaThread* thread);
   // Select task is called by CompileBroker. We should return a task or NULL.
   virtual CompileTask* select_task(CompileQueue* compile_queue);
   // Tell the runtime if we think a given method is adequately profiled.
-  virtual bool is_mature(methodOop method);
+  virtual bool is_mature(Method* method);
   // Initialize: set compiler thread count
   virtual void initialize();
   virtual bool should_not_inline(ciEnv* env, ciMethod* callee) {
--- a/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 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
@@ -53,10 +53,10 @@
 
 // Simple methods are as good being compiled with C1 as C2.
 // Determine if a given method is such a case.
-bool SimpleThresholdPolicy::is_trivial(methodOop method) {
+bool SimpleThresholdPolicy::is_trivial(Method* method) {
   if (method->is_accessor()) return true;
   if (method->code() != NULL) {
-    methodDataOop mdo = method->method_data();
+    MethodData* mdo = method->method_data();
     if (mdo != NULL && mdo->num_loops() == 0 &&
         (method->code_size() < 5  || (mdo->num_blocks() < 4) && (method->code_size() < 15))) {
       return !mdo->would_profile();
--- a/src/share/vm/runtime/stackValue.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/stackValue.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -145,7 +145,7 @@
     return new StackValue(value.p);
   } else if (sv->is_constant_oop()) {
     // constant oop
-    return new StackValue(((ConstantOopReadValue *)sv)->value());
+    return new StackValue(sv->as_ConstantOopReadValue()->value());
 #ifdef _LP64
   } else if (sv->is_constant_double()) {
     // Constant double in a single stack slot
--- a/src/share/vm/runtime/stubRoutines.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/stubRoutines.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -240,7 +240,7 @@
     address   link,
     intptr_t* result,
     BasicType result_type,
-    methodOopDesc* method,
+    Method* method,
     address   entry_point,
     intptr_t* parameters,
     int       size_of_parameters,
--- a/src/share/vm/runtime/sweeper.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/sweeper.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -24,10 +24,12 @@
 
 #include "precompiled.hpp"
 #include "code/codeCache.hpp"
+#include "code/compiledIC.hpp"
+#include "code/icBuffer.hpp"
 #include "code/nmethod.hpp"
 #include "compiler/compileBroker.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/atomic.hpp"
 #include "runtime/compilationPolicy.hpp"
 #include "runtime/mutexLocker.hpp"
@@ -324,13 +326,32 @@
  public:
   NMethodMarker(nmethod* nm) {
     _thread = CompilerThread::current();
+    if (!nm->is_zombie() && !nm->is_unloaded()) {
+      // Only expose live nmethods for scanning
     _thread->set_scanned_nmethod(nm);
   }
+  }
   ~NMethodMarker() {
     _thread->set_scanned_nmethod(NULL);
   }
 };
 
+void NMethodSweeper::release_nmethod(nmethod *nm) {
+  // Clean up any CompiledICHolders
+  {
+    ResourceMark rm;
+    MutexLocker ml_patch(CompiledIC_lock);
+    RelocIterator iter(nm);
+    while (iter.next()) {
+      if (iter.type() == relocInfo::virtual_call_type) {
+        CompiledIC::cleanup_call_site(iter.virtual_call_reloc());
+      }
+    }
+  }
+
+  MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
+  nm->flush();
+}
 
 void NMethodSweeper::process_nmethod(nmethod *nm) {
   assert(!CodeCache_lock->owned_by_self(), "just checking");
@@ -365,8 +386,7 @@
       if (PrintMethodFlushing && Verbose) {
         tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (marked for reclamation) being flushed", nm->compile_id(), nm);
       }
-      MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-      nm->flush();
+      release_nmethod(nm);
     } else {
       if (PrintMethodFlushing && Verbose) {
         tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (zombie) being marked for reclamation", nm->compile_id(), nm);
@@ -400,10 +420,9 @@
     if (PrintMethodFlushing && Verbose)
       tty->print_cr("### Nmethod %3d/" PTR_FORMAT " (unloaded) being made zombie", nm->compile_id(), nm);
     if (nm->is_osr_method()) {
+      SWEEP(nm);
       // No inline caches will ever point to osr methods, so we can just remove it
-      MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
-      SWEEP(nm);
-      nm->flush();
+      release_nmethod(nm);
     } else {
       nm->make_zombie();
       _rescan = true;
@@ -434,8 +453,8 @@
 // saving the old code in a list in the CodeCache. Then
 // execution resumes. If a method so marked is not called by the second sweeper
 // stack traversal after the current one, the nmethod will be marked non-entrant and
-// got rid of by normal sweeping. If the method is called, the methodOop's
-// _code field is restored and the methodOop/nmethod
+// got rid of by normal sweeping. If the method is called, the Method*'s
+// _code field is restored and the Method*/nmethod
 // go back to their normal state.
 void NMethodSweeper::handle_full_code_cache(bool is_full) {
   // Only the first one to notice can advise us to start early cleaning
--- a/src/share/vm/runtime/sweeper.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/sweeper.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -52,6 +52,8 @@
 
   static void process_nmethod(nmethod *nm);
 
+  static void release_nmethod(nmethod* nm);
+
   static void log_sweep(const char* msg, const char* format = NULL, ...);
 
  public:
--- a/src/share/vm/runtime/synchronizer.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/synchronizer.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
@@ -77,11 +77,11 @@
 // Only bother with this argument setup if dtrace is available
 // TODO-FIXME: probes should not fire when caller is _blocked.  assert() accordingly.
 
-#define DTRACE_MONITOR_PROBE_COMMON(klassOop, thread)                      \
+#define DTRACE_MONITOR_PROBE_COMMON(obj, thread)                           \
   char* bytes = NULL;                                                      \
   int len = 0;                                                             \
   jlong jtid = SharedRuntime::get_java_tid(thread);                        \
-  Symbol* klassname = ((oop)(klassOop))->klass()->klass_part()->name();  \
+  Symbol* klassname = ((oop)(obj))->klass()->name();                       \
   if (klassname != NULL) {                                                 \
     bytes = (char*)klassname->bytes();                                     \
     len = klassname->utf8_length();                                        \
@@ -93,19 +93,19 @@
 HS_DTRACE_PROBE_DECL4(hotspot, monitor__waited,
   jlong, uintptr_t, char*, int);
 
-#define DTRACE_MONITOR_WAIT_PROBE(monitor, klassOop, thread, millis)       \
+#define DTRACE_MONITOR_WAIT_PROBE(monitor, obj, thread, millis)            \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HS_DTRACE_PROBE5(hotspot, monitor__wait, jtid,                       \
                        (monitor), bytes, len, (millis));                   \
     }                                                                      \
   }
 
-#define DTRACE_MONITOR_PROBE(probe, monitor, klassOop, thread)             \
+#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread)                  \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HS_DTRACE_PROBE4(hotspot, monitor__##probe, jtid,                    \
                        (uintptr_t)(monitor), bytes, len);                  \
     }                                                                      \
@@ -113,10 +113,10 @@
 
 #else /* USDT2 */
 
-#define DTRACE_MONITOR_WAIT_PROBE(monitor, klassOop, thread, millis)       \
+#define DTRACE_MONITOR_WAIT_PROBE(monitor, obj, thread, millis)            \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HOTSPOT_MONITOR_WAIT(jtid,                                           \
                            (uintptr_t)(monitor), bytes, len, (millis));  \
     }                                                                      \
@@ -124,10 +124,10 @@
 
 #define HOTSPOT_MONITOR_PROBE_waited HOTSPOT_MONITOR_PROBE_WAITED
 
-#define DTRACE_MONITOR_PROBE(probe, monitor, klassOop, thread)             \
+#define DTRACE_MONITOR_PROBE(probe, monitor, obj, thread)                  \
   {                                                                        \
     if (DTraceMonitorProbes) {                                            \
-      DTRACE_MONITOR_PROBE_COMMON(klassOop, thread);                       \
+      DTRACE_MONITOR_PROBE_COMMON(obj, thread);                            \
       HOTSPOT_MONITOR_PROBE_##probe(jtid, /* probe = waited */             \
                        (uintptr_t)(monitor), bytes, len);                  \
     }                                                                      \
@@ -136,8 +136,8 @@
 #endif /* USDT2 */
 #else //  ndef DTRACE_ENABLED
 
-#define DTRACE_MONITOR_WAIT_PROBE(klassOop, thread, millis, mon)    {;}
-#define DTRACE_MONITOR_PROBE(probe, klassOop, thread, mon)          {;}
+#define DTRACE_MONITOR_WAIT_PROBE(obj, thread, millis, mon)    {;}
+#define DTRACE_MONITOR_PROBE(probe, obj, thread, mon)          {;}
 
 #endif // ndef DTRACE_ENABLED
 
--- a/src/share/vm/runtime/thread.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/thread.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -34,6 +34,7 @@
 #include "interpreter/oopMapCache.hpp"
 #include "jvmtifiles/jvmtiEnv.hpp"
 #include "memory/gcLocker.inline.hpp"
+#include "memory/metaspaceShared.hpp"
 #include "memory/oopFactory.hpp"
 #include "memory/universe.inline.hpp"
 #include "oops/instanceKlass.hpp"
@@ -219,6 +220,7 @@
   set_osthread(NULL);
   set_resource_area(new (mtThread)ResourceArea());
   set_handle_area(new (mtThread) HandleArea(NULL));
+  set_metadata_handles(new (ResourceObj::C_HEAP, mtClass) GrowableArray<Metadata*>(300, true));
   set_active_handles(NULL);
   set_free_handle_block(NULL);
   set_last_handle_mark(NULL);
@@ -316,10 +318,9 @@
   set_stack_size(os::current_stack_size());
 
   // record thread's native stack, stack grows downward
-  address vm_base = _stack_base - _stack_size;
-  MemTracker::record_virtual_memory_reserve(vm_base, _stack_size,
-    CURRENT_PC, this);
-  MemTracker::record_virtual_memory_type(vm_base, mtThreadStack);
+  address low_stack_addr = stack_base() - stack_size();
+  MemTracker::record_thread_stack(low_stack_addr, stack_size(), this,
+             CURRENT_PC);
 }
 
 
@@ -327,8 +328,14 @@
   // Reclaim the objectmonitors from the omFreeList of the moribund thread.
   ObjectSynchronizer::omFlush (this) ;
 
-  MemTracker::record_virtual_memory_release((_stack_base - _stack_size),
-    _stack_size, this);
+  // stack_base can be NULL if the thread is never started or exited before
+  // record_stack_base_and_size called. Although, we would like to ensure
+  // that all started threads do call record_stack_base_and_size(), there is
+  // not proper way to enforce that.
+  if (_stack_base != NULL) {
+    address low_stack_addr = stack_base() - stack_size();
+    MemTracker::release_thread_stack(low_stack_addr, stack_size(), this);
+  }
 
   // deallocate data structures
   delete resource_area();
@@ -346,6 +353,7 @@
   ParkEvent::Release (_MuxEvent)    ; _MuxEvent    = NULL ;
 
   delete handle_area();
+  delete metadata_handles();
 
   // osthread() can be NULL, if creation of thread failed.
   if (osthread() != NULL) os::free_thread(osthread());
@@ -817,6 +825,14 @@
   // no nmethods in a generic thread...
 }
 
+void Thread::metadata_do(void f(Metadata*)) {
+  if (metadata_handles() != NULL) {
+    for (int i = 0; i< metadata_handles()->length(); i++) {
+      f(metadata_handles()->at(i));
+    }
+  }
+}
+
 void Thread::print_on(outputStream* st) const {
   // get_priority assumes osthread initialized
   if (osthread() != NULL) {
@@ -916,6 +932,8 @@
 bool Thread::is_in_stack(address adr) const {
   assert(Thread::current() == this, "is_in_stack can only be called from current thread");
   address end = os::current_stack_pointer();
+  // Allow non Java threads to call this without stack_base
+  if (_stack_base == NULL) return true;
   if (stack_base() >= adr && adr >= end) return true;
 
   return false;
@@ -937,14 +955,14 @@
 }
 
 static void initialize_class(Symbol* class_name, TRAPS) {
-  klassOop klass = SystemDictionary::resolve_or_fail(class_name, true, CHECK);
-  instanceKlass::cast(klass)->initialize(CHECK);
+  Klass* klass = SystemDictionary::resolve_or_fail(class_name, true, CHECK);
+  InstanceKlass::cast(klass)->initialize(CHECK);
 }
 
 
 // Creates the initial ThreadGroup
 static Handle create_initial_thread_group(TRAPS) {
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ThreadGroup(), true, CHECK_NH);
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_ThreadGroup(), true, CHECK_NH);
   instanceKlassHandle klass (THREAD, k);
 
   Handle system_instance = klass->allocate_instance_handle(CHECK_NH);
@@ -977,7 +995,7 @@
 
 // Creates the initial Thread
 static oop create_initial_thread(Handle thread_group, JavaThread* thread, TRAPS) {
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL);
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK_NULL);
   instanceKlassHandle klass (THREAD, k);
   instanceHandle thread_oop = klass->allocate_instance_handle(CHECK_NULL);
 
@@ -999,7 +1017,7 @@
 }
 
 static void call_initializeSystemClass(TRAPS) {
-  klassOop k =  SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK);
+  Klass* k =  SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK);
   instanceKlassHandle klass (THREAD, k);
 
   JavaValue result(T_VOID);
@@ -1011,11 +1029,11 @@
 
 // extract the JRE name from sun.misc.Version.java_runtime_name
 static const char* get_java_runtime_name(TRAPS) {
-  klassOop k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
+  Klass* k = SystemDictionary::find(vmSymbols::sun_misc_Version(),
                                       Handle(), Handle(), CHECK_AND_CLEAR_NULL);
   fieldDescriptor fd;
   bool found = k != NULL &&
-               instanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_name_name(),
+               InstanceKlass::cast(k)->find_local_field(vmSymbols::java_runtime_name_name(),
                                                         vmSymbols::string_signature(), &fd);
   if (found) {
     oop name_oop = k->java_mirror()->obj_field(fd.offset());
@@ -1033,7 +1051,7 @@
 // General purpose hook into Java code, run once when the VM is initialized.
 // The Java library method itself may be changed independently from the VM.
 static void call_postVMInitHook(TRAPS) {
-  klassOop k = SystemDictionary::PostVMInitHook_klass();
+  Klass* k = SystemDictionary::PostVMInitHook_klass();
   instanceKlassHandle klass (THREAD, k);
   if (klass.not_null()) {
     JavaValue result(T_VOID);
@@ -1049,7 +1067,7 @@
   const char *vm_info = VM_Version::vm_info_string();
 
   // java.lang.System class
-  klassOop k =  SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK);
+  Klass* k =  SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(), true, CHECK);
   instanceKlassHandle klass (THREAD, k);
 
   // setProperty arguments
@@ -1074,7 +1092,7 @@
   assert(thread_group.not_null(), "thread group should be specified");
   assert(threadObj() == NULL, "should only create Java thread object once");
 
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
   instanceKlassHandle klass (THREAD, k);
   instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
 
@@ -1982,7 +2000,7 @@
           frame f = last_frame();
           tty->print(" (pc: " INTPTR_FORMAT " sp: " INTPTR_FORMAT " )", f.pc(), f.sp());
         }
-        tty->print_cr(" of type: %s", instanceKlass::cast(_pending_async_exception->klass())->external_name());
+        tty->print_cr(" of type: %s", InstanceKlass::cast(_pending_async_exception->klass())->external_name());
       }
       _pending_async_exception = NULL;
       clear_has_async_exception();
@@ -2103,10 +2121,10 @@
 
       if (TraceExceptions) {
        ResourceMark rm;
-       tty->print_cr("Pending Async. exception installed of type: %s", instanceKlass::cast(_pending_async_exception->klass())->external_name());
+       tty->print_cr("Pending Async. exception installed of type: %s", InstanceKlass::cast(_pending_async_exception->klass())->external_name());
       }
       // for AbortVMOnException flag
-      NOT_PRODUCT(Exceptions::debug_check_abort(instanceKlass::cast(_pending_async_exception->klass())->external_name()));
+      NOT_PRODUCT(Exceptions::debug_check_abort(InstanceKlass::cast(_pending_async_exception->klass())->external_name()));
     }
   }
 
@@ -2656,7 +2674,6 @@
   // around using this function
   f->do_oop((oop*) &_threadObj);
   f->do_oop((oop*) &_vm_result);
-  f->do_oop((oop*) &_vm_result_2);
   f->do_oop((oop*) &_exception_oop);
   f->do_oop((oop*) &_pending_async_exception);
 
@@ -2679,6 +2696,22 @@
   }
 }
 
+void JavaThread::metadata_do(void f(Metadata*)) {
+  Thread::metadata_do(f);
+  if (has_last_Java_frame()) {
+    // Traverse the execution stack to call f() on the methods in the stack
+    for(StackFrameStream fst(this); !fst.is_done(); fst.next()) {
+      fst.current()->metadata_do(f);
+    }
+  } else if (is_Compiler_thread()) {
+    // need to walk ciMetadata in current compile tasks to keep alive.
+    CompilerThread* ct = (CompilerThread*)this;
+    if (ct->env() != NULL) {
+      ct->env()->metadata_do(f);
+    }
+  }
+}
+
 // Printing
 const char* _get_thread_state_name(JavaThreadState _thread_state) {
   switch (_thread_state) {
@@ -2869,7 +2902,7 @@
 
   Handle thread_oop(Thread::current(),
                     JNIHandles::resolve_non_null(jni_thread));
-  assert(instanceKlass::cast(thread_oop->klass())->is_linked(),
+  assert(InstanceKlass::cast(thread_oop->klass())->is_linked(),
     "must be initialized");
   set_threadObj(thread_oop());
   java_lang_Thread::set_thread(thread_oop(), this);
@@ -3070,7 +3103,7 @@
 }
 
 
-klassOop JavaThread::security_get_caller_class(int depth) {
+Klass* JavaThread::security_get_caller_class(int depth) {
   vframeStream vfst(this);
   vfst.security_get_caller_frame(depth);
   if (!vfst.at_end()) {
@@ -3123,6 +3156,9 @@
 int         Threads::_number_of_non_daemon_threads = 0;
 int         Threads::_return_code = 0;
 size_t      JavaThread::_stack_size_at_create = 0;
+#ifdef ASSERT
+bool        Threads::_vm_complete = false;
+#endif
 
 // All JavaThreads
 #define ALL_JAVA_THREADS(X) for (JavaThread* X = _thread_list; X; X = X->next())
@@ -3320,9 +3356,8 @@
   // At this point, the Universe is initialized, but we have not executed
   // any byte code.  Now is a good time (the only time) to dump out the
   // internal state of the JVM for sharing.
-
   if (DumpSharedSpaces) {
-    Universe::heap()->preload_and_dump(CHECK_0);
+    MetaspaceShared::preload_and_dump(CHECK_0);
     ShouldNotReachHere();
   }
 
@@ -3351,10 +3386,10 @@
         // Forcibly initialize java/util/HashMap and mutate the private
         // static final "frontCacheEnabled" field before we start creating instances
 #ifdef ASSERT
-        klassOop tmp_k = SystemDictionary::find(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0);
+        Klass* tmp_k = SystemDictionary::find(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0);
         assert(tmp_k == NULL, "java/util/HashMap should not be loaded yet");
 #endif
-        klassOop k_o = SystemDictionary::resolve_or_null(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0);
+        Klass* k_o = SystemDictionary::resolve_or_null(vmSymbols::java_util_HashMap(), Handle(), Handle(), CHECK_0);
         KlassHandle k = KlassHandle(THREAD, k_o);
         guarantee(k.not_null(), "Must find java/util/HashMap");
         instanceKlassHandle ik = instanceKlassHandle(THREAD, k());
@@ -3369,7 +3404,7 @@
       if (UseStringCache) {
         // Forcibly initialize java/lang/StringValue and mutate the private
         // static final "stringCacheEnabled" field before we start creating instances
-        klassOop k_o = SystemDictionary::resolve_or_null(vmSymbols::java_lang_StringValue(), Handle(), Handle(), CHECK_0);
+        Klass* k_o = SystemDictionary::resolve_or_null(vmSymbols::java_lang_StringValue(), Handle(), Handle(), CHECK_0);
         // Possible that StringValue isn't present: if so, silently don't break
         if (k_o != NULL) {
           KlassHandle k = KlassHandle(THREAD, k_o);
@@ -3574,6 +3609,9 @@
   os::init_3();
 
   create_vm_timer.end();
+#ifdef ASSERT
+  _vm_complete = true;
+#endif
   return JNI_OK;
 }
 
@@ -3781,7 +3819,7 @@
   }
 
   EXCEPTION_MARK;
-  klassOop k =
+  Klass* k =
     SystemDictionary::resolve_or_null(vmSymbols::java_lang_Shutdown(),
                                       THREAD);
   if (k != NULL) {
@@ -3840,6 +3878,9 @@
 bool Threads::destroy_vm() {
   JavaThread* thread = JavaThread::current();
 
+#ifdef ASSERT
+  _vm_complete = false;
+#endif
   // Wait until we are the last non-daemon thread to execute
   { MutexLocker nu(Threads_lock);
     while (Threads::number_of_non_daemon_threads() > 1 )
@@ -4100,6 +4141,12 @@
   VMThread::vm_thread()->nmethods_do(cf);
 }
 
+void Threads::metadata_do(void f(Metadata*)) {
+  ALL_JAVA_THREADS(p) {
+    p->metadata_do(f);
+  }
+}
+
 void Threads::gc_epilogue() {
   ALL_JAVA_THREADS(p) {
     p->gc_epilogue();
--- a/src/share/vm/runtime/thread.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/thread.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -417,6 +417,9 @@
   HandleArea* handle_area() const                { return _handle_area; }
   void set_handle_area(HandleArea* area)         { _handle_area = area; }
 
+  GrowableArray<Metadata*>* metadata_handles() const          { return _metadata_handles; }
+  void set_metadata_handles(GrowableArray<Metadata*>* handles){ _metadata_handles = handles; }
+
   // Thread-Local Allocation Buffer (TLAB) support
   ThreadLocalAllocBuffer& tlab()                 { return _tlab; }
   void initialize_tlab() {
@@ -500,6 +503,9 @@
   // Sweeper support
   void nmethods_do(CodeBlobClosure* cf);
 
+  // jvmtiRedefineClasses support
+  void metadata_do(void f(Metadata*));
+
   // Used by fast lock support
   virtual bool is_lock_owned(address adr) const;
 
@@ -520,6 +526,7 @@
 
   // Thread local handle area for allocation of handles within the VM
   HandleArea* _handle_area;
+  GrowableArray<Metadata*>* _metadata_handles;
 
   // Support for stack overflow handling, get_thread, etc.
   address          _stack_base;
@@ -790,18 +797,18 @@
   GrowableArray<jvmtiDeferredLocalVariableSet*>* _deferred_locals_updates;
 
   // Handshake value for fixing 6243940. We need a place for the i2c
-  // adapter to store the callee methodOop. This value is NEVER live
+  // adapter to store the callee Method*. This value is NEVER live
   // across a gc point so it does NOT have to be gc'd
   // The handshake is open ended since we can't be certain that it will
   // be NULLed. This is because we rarely ever see the race and end up
   // in handle_wrong_method which is the backend of the handshake. See
   // code in i2c adapters and handle_wrong_method.
 
-  methodOop     _callee_target;
+  Method*       _callee_target;
 
-  // Oop results of VM runtime calls
-  oop           _vm_result;    // Used to pass back an oop result into Java code, GC-preserved
-  oop           _vm_result_2;  // Used to pass back an oop result into Java code, GC-preserved
+  // Used to pass back results to the interpreter or generated code running Java code.
+  oop           _vm_result;    // oop result is GC-preserved
+  Metadata*     _vm_result_2;  // non-oop result
 
   // See ReduceInitialCardMarks: this holds the precise space interval of
   // the most recent slow path allocation for which compiled code has
@@ -1218,15 +1225,15 @@
   void set_deopt_nmethod(nmethod* nm)            { _deopt_nmethod = nm;   }
   nmethod* deopt_nmethod()                       { return _deopt_nmethod; }
 
-  methodOop  callee_target() const               { return _callee_target; }
-  void set_callee_target  (methodOop x)          { _callee_target   = x; }
+  Method*    callee_target() const               { return _callee_target; }
+  void set_callee_target  (Method* x)          { _callee_target   = x; }
 
   // Oop results of vm runtime calls
   oop  vm_result() const                         { return _vm_result; }
   void set_vm_result  (oop x)                    { _vm_result   = x; }
 
-  oop  vm_result_2() const                       { return _vm_result_2; }
-  void set_vm_result_2  (oop x)                  { _vm_result_2   = x; }
+  Metadata*    vm_result_2() const               { return _vm_result_2; }
+  void set_vm_result_2  (Metadata* x)          { _vm_result_2   = x; }
 
   MemRegion deferred_card_mark() const           { return _deferred_card_mark; }
   void set_deferred_card_mark(MemRegion mr)      { _deferred_card_mark = mr;   }
@@ -1389,6 +1396,9 @@
   // Sweeper operations
   void nmethods_do(CodeBlobClosure* cf);
 
+  // RedefineClasses Support
+  void metadata_do(void f(Metadata*));
+
   // Memory management operations
   void gc_epilogue();
   void gc_prologue();
@@ -1419,7 +1429,7 @@
 
   // Returns method at 'depth' java or native frames down the stack
   // Used for security checks
-  klassOop security_get_caller_class(int depth);
+  Klass* security_get_caller_class(int depth);
 
   // Print stack trace in external format
   void print_stack_on(outputStream* st);
@@ -1836,6 +1846,9 @@
   static int         _number_of_threads;
   static int         _number_of_non_daemon_threads;
   static int         _return_code;
+#ifdef ASSERT
+  static bool        _vm_complete;
+#endif
 
  public:
   // Thread management
@@ -1883,8 +1896,14 @@
   // Sweeper
   static void nmethods_do(CodeBlobClosure* cf);
 
+  // RedefineClasses support
+  static void metadata_do(void f(Metadata*));
+
   static void gc_epilogue();
   static void gc_prologue();
+#ifdef ASSERT
+  static bool is_vm_complete() { return _vm_complete; }
+#endif
 
   // Verification
   static void verify();
--- a/src/share/vm/runtime/unhandledOops.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/unhandledOops.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -84,7 +84,7 @@
 void UnhandledOops::allow_unhandled_oop(oop* op) {
   assert (CheckUnhandledOops, "should only be called with checking option");
 
-  int i = _oop_list->find_at_end(op, match_oop_entry);
+  int i = _oop_list->find_from_end(op, match_oop_entry);
   assert(i!=-1, "safe for gc oop not in unhandled_oop_list");
 
   UnhandledOopEntry entry = _oop_list->at(i);
@@ -106,7 +106,7 @@
     tty->print_cr("u "INTPTR_FORMAT, op);
   }
 
-  int i = _oop_list->find_at_end(op, match_oop_entry);
+  int i = _oop_list->find_from_end(op, match_oop_entry);
   assert(i!=-1, "oop not in unhandled_oop_list");
   _oop_list->remove_at(i);
 }
--- a/src/share/vm/runtime/vframe.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframe.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -146,8 +146,8 @@
   if (obj.not_null()) {
     st->print("\t- %s <" INTPTR_FORMAT "> ", lock_state, (address)obj());
     if (obj->klass() == SystemDictionary::Class_klass()) {
-      klassOop target_klass = java_lang_Class::as_klassOop(obj());
-      st->print_cr("(a java.lang.Class for %s)", instanceKlass::cast(target_klass)->external_name());
+      Klass* target_klass = java_lang_Class::as_Klass(obj());
+      st->print_cr("(a java.lang.Class for %s)", InstanceKlass::cast(target_klass)->external_name());
     } else {
       Klass* k = Klass::cast(obj->klass());
       st->print_cr("(a %s)", k->external_name());
@@ -161,7 +161,7 @@
   // If this is the first frame, and java.lang.Object.wait(...) then print out the receiver.
   if (frame_count == 0) {
     if (method()->name() == vmSymbols::wait_name() &&
-        instanceKlass::cast(method()->method_holder())->name() == vmSymbols::java_lang_Object()) {
+        InstanceKlass::cast(method()->method_holder())->name() == vmSymbols::java_lang_Object()) {
       StackValueCollection* locs = locals();
       if (!locs->is_empty()) {
         StackValue* sv = locs->at(0);
@@ -186,7 +186,7 @@
       MonitorInfo* monitor = mons->at(index);
       if (monitor->eliminated() && is_compiled_frame()) { // Eliminated in compiled code
         if (monitor->owner_is_scalar_replaced()) {
-          Klass* k = Klass::cast(monitor->owner_klass());
+          Klass* k = java_lang_Class::as_Klass(monitor->owner_klass());
           st->print("\t- eliminated <owner is scalar replaced> (a %s)", k->external_name());
         } else {
           oop obj = monitor->owner();
@@ -249,7 +249,7 @@
   return method()->bci_from(bcp());
 }
 
-methodOop interpretedVFrame::method() const {
+Method* interpretedVFrame::method() const {
   return fr().interpreter_frame_method();
 }
 
@@ -527,7 +527,7 @@
     MonitorInfo* monitor = list->at(index);
     tty->print("\t  obj\t");
     if (monitor->owner_is_scalar_replaced()) {
-      Klass* k = Klass::cast(monitor->owner_klass());
+      Klass* k = java_lang_Class::as_Klass(monitor->owner_klass());
       tty->print("( is scalar replaced %s)", k->external_name());
     } else if (monitor->owner() == NULL) {
       tty->print("( null )");
@@ -546,14 +546,14 @@
 
 
 void javaVFrame::print_value() const {
-  methodOop  m = method();
-  klassOop   k = m->method_holder();
+  Method*    m = method();
+  Klass*     k = m->method_holder();
   tty->print_cr("frame( sp=" INTPTR_FORMAT ", unextended_sp=" INTPTR_FORMAT ", fp=" INTPTR_FORMAT ", pc=" INTPTR_FORMAT ")",
                 _fr.sp(),  _fr.unextended_sp(), _fr.fp(), _fr.pc());
   tty->print("%s.%s", Klass::cast(k)->internal_name(), m->name()->as_C_string());
 
   if (!m->is_native()) {
-    Symbol*  source_name = instanceKlass::cast(k)->source_file_name();
+    Symbol*  source_name = InstanceKlass::cast(k)->source_file_name();
     int        line_number = m->line_number_from_bci(bci());
     if (source_name != NULL && (line_number != -1)) {
       tty->print("(%s:%d)", source_name->as_C_string(), line_number);
--- a/src/share/vm/runtime/vframe.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframe.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -106,7 +106,7 @@
 class javaVFrame: public vframe {
  public:
   // JVM state
-  virtual methodOop                    method()         const = 0;
+  virtual Method*                      method()         const = 0;
   virtual int                          bci()            const = 0;
   virtual StackValueCollection*        locals()         const = 0;
   virtual StackValueCollection*        expressions()    const = 0;
@@ -158,7 +158,7 @@
 class interpretedVFrame: public javaVFrame {
  public:
   // JVM state
-  methodOop                    method()         const;
+  Method*                      method()         const;
   int                          bci()            const;
   StackValueCollection*        locals()         const;
   StackValueCollection*        expressions()    const;
@@ -243,7 +243,7 @@
  private:
   oop        _owner; // the object owning the monitor
   BasicLock* _lock;
-  oop        _owner_klass; // klass if owner was scalar replaced
+  oop        _owner_klass; // klass (mirror) if owner was scalar replaced
   bool       _eliminated;
   bool       _owner_is_scalar_replaced;
  public:
@@ -266,9 +266,9 @@
     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
     return _owner;
   }
-  klassOop   owner_klass() const {
+  oop   owner_klass() const {
     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
-    return (klassOop)_owner_klass;
+    return _owner_klass;
   }
   BasicLock* lock()  const { return _lock;  }
   bool eliminated()  const { return _eliminated; }
@@ -286,7 +286,7 @@
   int _sender_decode_offset;
 
   // Cached information
-  methodOop _method;
+  Method* _method;
   int       _bci;
 
   // Should VM activations be ignored or not
@@ -311,7 +311,7 @@
   }
 
   // Accessors
-  methodOop method() const { return _method; }
+  Method* method() const { return _method; }
   int bci() const { return _bci; }
   intptr_t* frame_id() const { return _frame.id(); }
   address frame_pc() const { return _frame.pc(); }
@@ -414,7 +414,7 @@
   // Decode first part of scopeDesc
   DebugInfoReadStream buffer(nm(), decode_offset);
   _sender_decode_offset = buffer.read_int();
-  _method               = methodOop(buffer.read_oop());
+  _method               = buffer.read_method();
   _bci                  = buffer.read_bci();
 
   assert(_method->is_method(), "checking type of decoded method");
@@ -509,7 +509,7 @@
 
 
 inline void vframeStreamCommon::fill_from_interpreter_frame() {
-  methodOop method = _frame.interpreter_frame_method();
+  Method* method = _frame.interpreter_frame_method();
   intptr_t  bcx    = _frame.interpreter_frame_bcx();
   int       bci    = method->validate_bci_from_bcx(bcx);
   // 6379830 AsyncGetCallTrace sometimes feeds us wild frames.
--- a/src/share/vm/runtime/vframeArray.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframeArray.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -29,7 +29,7 @@
 #include "memory/allocation.inline.hpp"
 #include "memory/resourceArea.hpp"
 #include "memory/universe.inline.hpp"
-#include "oops/methodDataOop.hpp"
+#include "oops/methodData.hpp"
 #include "oops/oop.inline.hpp"
 #include "prims/jvmtiThreadState.hpp"
 #include "runtime/handles.inline.hpp"
@@ -299,7 +299,7 @@
   }
   iframe()->interpreter_frame_set_bcx((intptr_t)bcp); // cannot use bcp because frame is not initialized yet
   if (ProfileInterpreter) {
-    methodDataOop mdo = method()->method_data();
+    MethodData* mdo = method()->method_data();
     if (mdo != NULL) {
       int bci = iframe()->interpreter_frame_bci();
       if (use_next_mdp) ++bci;
--- a/src/share/vm/runtime/vframeArray.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframeArray.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -54,7 +54,7 @@
     frame _frame;                                                // the interpreter frame we will unpack into
     int  _bci;                                                   // raw bci for this vframe
     bool _reexecute;                                             // whether sould we reexecute this bytecode
-    methodOop  _method;                                          // the method for this vframe
+    Method*    _method;                                          // the method for this vframe
     MonitorChunk* _monitors;                                     // active monitors for this vframe
     StackValueCollection* _locals;
     StackValueCollection* _expressions;
@@ -68,7 +68,7 @@
   int raw_bci(void) const            { return _bci; }
   bool should_reexecute(void) const  { return _reexecute; }
 
-  methodOop method(void) const       { return _method; }
+  Method* method(void) const       { return _method; }
 
   MonitorChunk* monitors(void) const { return _monitors; }
 
--- a/src/share/vm/runtime/vframe_hp.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframe_hp.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -196,7 +196,7 @@
   // Natives has no scope
   if (scope() == NULL) {
     nmethod* nm = code();
-    methodOop method = nm->method();
+    Method* method = nm->method();
     assert(method->is_native(), "");
     if (!method->is_synchronized()) {
       return new GrowableArray<MonitorInfo*>(0);
@@ -226,8 +226,9 @@
       // Put klass for scalar replaced object.
       ScopeValue* kv = ((ObjectValue *)ov)->klass();
       assert(kv->is_constant_oop(), "klass should be oop constant for scalar replaced object");
-      KlassHandle k(((ConstantOopReadValue*)kv)->value()());
-      result->push(new MonitorInfo(k->as_klassOop(), resolve_monitor_lock(mv->basic_lock()),
+      Handle k(((ConstantOopReadValue*)kv)->value()());
+      assert(java_lang_Class::is_instance(k()), "must be");
+      result->push(new MonitorInfo(k(), resolve_monitor_lock(mv->basic_lock()),
                                    mv->eliminated(), true));
     } else {
       result->push(new MonitorInfo(owner_sv->get_obj()(), resolve_monitor_lock(mv->basic_lock()),
@@ -267,14 +268,14 @@
 }
 
 
-methodOop compiledVFrame::method() const {
+Method* compiledVFrame::method() const {
   if (scope() == NULL) {
     // native nmethods have no scope the method is implied
     nmethod* nm = code();
     assert(nm->is_native_method(), "must be native");
     return nm->method();
   }
-  return scope()->method()();
+  return scope()->method();
 }
 
 
@@ -318,7 +319,7 @@
   }
 }
 
-jvmtiDeferredLocalVariableSet::jvmtiDeferredLocalVariableSet(methodOop method, int bci, intptr_t* id) {
+jvmtiDeferredLocalVariableSet::jvmtiDeferredLocalVariableSet(Method* method, int bci, intptr_t* id) {
   _method = method;
   _bci = bci;
   _id = id;
@@ -353,8 +354,8 @@
 }
 
 void jvmtiDeferredLocalVariableSet::oops_do(OopClosure* f) {
-
-  f->do_oop((oop*) &_method);
+  // The Method* is on the stack so a live activation keeps it alive
+  // either by mirror in interpreter or code in compiled code.
   for ( int i = 0; i < locals()->length(); i++ ) {
     if ( locals()->at(i)->type() == T_OBJECT) {
       f->do_oop(locals()->at(i)->oop_addr());
--- a/src/share/vm/runtime/vframe_hp.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vframe_hp.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -30,7 +30,7 @@
 class compiledVFrame: public javaVFrame {
  public:
   // JVM state
-  methodOop                    method()             const;
+  Method*                      method()             const;
   int                          bci()                const;
   bool                         should_reexecute()   const;
   StackValueCollection*        locals()             const;
@@ -92,14 +92,14 @@
 class jvmtiDeferredLocalVariableSet : public CHeapObj<mtCompiler> {
 private:
 
-  methodOop _method;           // must be GC'd
+  Method* _method;
   int       _bci;
   intptr_t* _id;
   GrowableArray<jvmtiDeferredLocalVariable*>* _locals;
 
  public:
   // JVM state
-  methodOop                         method()         const  { return _method; }
+  Method*                           method()         const  { return _method; }
   int                               bci()            const  { return _bci; }
   intptr_t*                         id()             const  { return _id; }
   GrowableArray<jvmtiDeferredLocalVariable*>* locals()         const  { return _locals; }
@@ -111,7 +111,7 @@
   void                              oops_do(OopClosure* f);
 
   // constructor
-  jvmtiDeferredLocalVariableSet(methodOop method, int bci, intptr_t* id);
+  jvmtiDeferredLocalVariableSet(Method* method, int bci, intptr_t* id);
 
   // destructor
   ~jvmtiDeferredLocalVariableSet();
--- a/src/share/vm/runtime/virtualspace.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/virtualspace.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -155,38 +155,27 @@
   return true;
 }
 
-ReservedSpace::ReservedSpace(const size_t prefix_size,
-                             const size_t prefix_align,
-                             const size_t suffix_size,
+ReservedSpace::ReservedSpace(const size_t suffix_size,
                              const size_t suffix_align,
                              char* requested_address,
                              const size_t noaccess_prefix)
 {
-  assert(prefix_size != 0, "sanity");
-  assert(prefix_align != 0, "sanity");
   assert(suffix_size != 0, "sanity");
   assert(suffix_align != 0, "sanity");
-  assert((prefix_size & (prefix_align - 1)) == 0,
-    "prefix_size not divisible by prefix_align");
   assert((suffix_size & (suffix_align - 1)) == 0,
     "suffix_size not divisible by suffix_align");
-  assert((suffix_align & (prefix_align - 1)) == 0,
-    "suffix_align not divisible by prefix_align");
 
   // Assert that if noaccess_prefix is used, it is the same as prefix_align.
-  assert(noaccess_prefix == 0 ||
-         noaccess_prefix == prefix_align, "noaccess prefix wrong");
-
-  // Add in noaccess_prefix to prefix_size;
-  const size_t adjusted_prefix_size = prefix_size + noaccess_prefix;
+  // Add in noaccess_prefix to prefix
+  const size_t adjusted_prefix_size = noaccess_prefix;
   const size_t size = adjusted_prefix_size + suffix_size;
 
   // On systems where the entire region has to be reserved and committed up
   // front, the compound alignment normally done by this method is unnecessary.
   const bool try_reserve_special = UseLargePages &&
-    prefix_align == os::large_page_size();
+    suffix_align == os::large_page_size();
   if (!os::can_commit_large_page_memory() && try_reserve_special) {
-    initialize(size, prefix_align, true, requested_address, noaccess_prefix,
+    initialize(size, suffix_align, true, requested_address, noaccess_prefix,
                false);
     return;
   }
@@ -209,12 +198,11 @@
       addr = NULL;
     }
   } else {
-    addr = os::reserve_memory(size, NULL, prefix_align);
+    addr = os::reserve_memory(size, NULL, suffix_align);
   }
   if (addr == NULL) return;
 
-  // Check whether the result has the needed alignment (unlikely unless
-  // prefix_align < suffix_align).
+  // Check whether the result has the needed alignment
   const size_t ofs = (size_t(addr) + adjusted_prefix_size) & (suffix_align - 1);
   if (ofs != 0) {
     // Wrong alignment.  Release, allocate more space and do manual alignment.
@@ -229,12 +217,12 @@
     }
 
     const size_t extra = MAX2(ofs, suffix_align - ofs);
-    addr = reserve_and_align(size + extra, adjusted_prefix_size, prefix_align,
+    addr = reserve_and_align(size + extra, adjusted_prefix_size, suffix_align,
                              suffix_size, suffix_align);
     if (addr == NULL) {
       // Try an even larger region.  If this fails, address space is exhausted.
       addr = reserve_and_align(size + suffix_align, adjusted_prefix_size,
-                               prefix_align, suffix_size, suffix_align);
+                               suffix_align, suffix_size, suffix_align);
     }
 
     if (requested_address != 0 &&
@@ -249,7 +237,7 @@
 
   _base = addr;
   _size = size;
-  _alignment = prefix_align;
+  _alignment = suffix_align;
   _noaccess_prefix = noaccess_prefix;
 }
 
@@ -499,21 +487,18 @@
   protect_noaccess_prefix(size);
 }
 
-ReservedHeapSpace::ReservedHeapSpace(const size_t prefix_size,
-                                     const size_t prefix_align,
-                                     const size_t suffix_size,
-                                     const size_t suffix_align,
+ReservedHeapSpace::ReservedHeapSpace(const size_t heap_space_size,
+                                     const size_t alignment,
                                      char* requested_address) :
-  ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align,
+  ReservedSpace(heap_space_size, alignment,
                 requested_address,
                 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
                  Universe::narrow_oop_use_implicit_null_checks()) ?
-                  lcm(os::vm_page_size(), prefix_align) : 0) {
+                  lcm(os::vm_page_size(), alignment) : 0) {
   if (base() > 0) {
     MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
   }
-
-  protect_noaccess_prefix(prefix_size+suffix_size);
+  protect_noaccess_prefix(heap_space_size);
 }
 
 // Reserve space for code segment.  Same as Java heap only we mark this as
--- a/src/share/vm/runtime/virtualspace.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/virtualspace.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -79,8 +79,7 @@
   ReservedSpace(size_t size, size_t alignment, bool large,
                 char* requested_address = NULL,
                 const size_t noaccess_prefix = 0);
-  ReservedSpace(const size_t prefix_size, const size_t prefix_align,
-                const size_t suffix_size, const size_t suffix_align,
+  ReservedSpace(const size_t suffix_size, const size_t suffix_align,
                 char* requested_address,
                 const size_t noaccess_prefix = 0);
   ReservedSpace(size_t size, size_t alignment, bool large, bool executable);
@@ -130,7 +129,6 @@
   ReservedHeapSpace(size_t size, size_t forced_base_alignment,
                     bool large, char* requested_address);
   ReservedHeapSpace(const size_t prefix_size, const size_t prefix_align,
-                    const size_t suffix_size, const size_t suffix_align,
                     char* requested_address);
 };
 
--- a/src/share/vm/runtime/vmStructs.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vmStructs.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -51,48 +51,37 @@
 #include "interpreter/bytecodeInterpreter.hpp"
 #include "interpreter/bytecodes.hpp"
 #include "interpreter/interpreter.hpp"
+#include "memory/allocation.hpp"
 #include "memory/cardTableRS.hpp"
-#include "memory/compactPermGen.hpp"
 #include "memory/defNewGeneration.hpp"
 #include "memory/freeBlockDictionary.hpp"
 #include "memory/genCollectedHeap.hpp"
 #include "memory/generation.hpp"
 #include "memory/generationSpec.hpp"
 #include "memory/heap.hpp"
-#include "memory/permGen.hpp"
 #include "memory/space.hpp"
 #include "memory/tenuredGeneration.hpp"
 #include "memory/universe.hpp"
 #include "memory/watermark.hpp"
 #include "oops/arrayKlass.hpp"
-#include "oops/arrayKlassKlass.hpp"
 #include "oops/arrayOop.hpp"
-#include "oops/compiledICHolderKlass.hpp"
-#include "oops/compiledICHolderOop.hpp"
-#include "oops/constMethodKlass.hpp"
-#include "oops/constMethodOop.hpp"
-#include "oops/constantPoolKlass.hpp"
-#include "oops/constantPoolOop.hpp"
-#include "oops/cpCacheKlass.hpp"
-#include "oops/cpCacheOop.hpp"
+#include "oops/compiledICHolder.hpp"
+#include "oops/constMethod.hpp"
+#include "oops/constantPool.hpp"
+#include "oops/cpCache.hpp"
+#include "oops/instanceClassLoaderKlass.hpp"
 #include "oops/instanceKlass.hpp"
 #include "oops/instanceMirrorKlass.hpp"
-#include "oops/instanceKlassKlass.hpp"
 #include "oops/instanceOop.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/markOop.hpp"
-#include "oops/methodDataKlass.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodKlass.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/objArrayKlass.hpp"
-#include "oops/objArrayKlassKlass.hpp"
 #include "oops/objArrayOop.hpp"
 #include "oops/oop.inline.hpp"
 #include "oops/symbol.hpp"
 #include "oops/typeArrayKlass.hpp"
-#include "oops/typeArrayKlassKlass.hpp"
 #include "oops/typeArrayOop.hpp"
 #include "prims/jvmtiAgentThread.hpp"
 #include "runtime/arguments.hpp"
@@ -107,6 +96,7 @@
 #include "runtime/stubRoutines.hpp"
 #include "runtime/virtualspace.hpp"
 #include "runtime/vmStructs.hpp"
+#include "utilities/array.hpp"
 #include "utilities/globalDefinitions.hpp"
 #include "utilities/hashtable.hpp"
 #ifdef TARGET_ARCH_x86
@@ -167,7 +157,6 @@
 # include "vmStructs_bsd_zero.hpp"
 #endif
 #ifndef SERIALGC
-#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
 #include "gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp"
 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.hpp"
@@ -178,7 +167,6 @@
 #include "gc_implementation/parallelScavenge/asPSYoungGen.hpp"
 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "gc_implementation/parallelScavenge/psVirtualspace.hpp"
 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
 #include "gc_implementation/parallelScavenge/vmStructs_parallelgc.hpp"
@@ -248,9 +236,9 @@
 typedef Hashtable<Symbol*, mtSymbol>          SymbolHashtable;
 typedef HashtableEntry<Symbol*, mtClass>      SymbolHashtableEntry;
 typedef Hashtable<oop, mtSymbol>              StringHashtable;
-typedef TwoOopHashtable<klassOop, mtClass>    klassOopTwoOopHashtable;
-typedef Hashtable<klassOop, mtClass>          klassOopHashtable;
-typedef HashtableEntry<klassOop, mtClass>     klassHashtableEntry;
+typedef TwoOopHashtable<Klass*, mtClass>      KlassTwoOopHashtable;
+typedef Hashtable<Klass*, mtClass>            KlassHashtable;
+typedef HashtableEntry<Klass*, mtClass>       KlassHashtableEntry;
 typedef TwoOopHashtable<Symbol*, mtClass>     SymbolTwoOopHashtable;
 
 //--------------------------------------------------------------------------------
@@ -273,131 +261,126 @@
                    last_entry) \
                                                                                                                                      \
   /******************************************************************/                                                               \
-  /* OopDesc and Klass hierarchies (NOTE: methodDataOop incomplete) */                                                               \
+  /* OopDesc and Klass hierarchies (NOTE: MethodData* incomplete) */                                                               \
   /******************************************************************/                                                               \
                                                                                                                                      \
   volatile_nonstatic_field(oopDesc,            _mark,                                         markOop)                               \
-  volatile_nonstatic_field(oopDesc,            _metadata._klass,                              wideKlassOop)                          \
+  volatile_nonstatic_field(oopDesc,            _metadata._klass,                              Klass*)                                \
   volatile_nonstatic_field(oopDesc,            _metadata._compressed_klass,                   narrowOop)                             \
      static_field(oopDesc,                     _bs,                                           BarrierSet*)                           \
   nonstatic_field(arrayKlass,                  _dimension,                                    int)                                   \
-  volatile_nonstatic_field(arrayKlass,         _higher_dimension,                             klassOop)                              \
-  volatile_nonstatic_field(arrayKlass,         _lower_dimension,                              klassOop)                              \
+  volatile_nonstatic_field(arrayKlass,         _higher_dimension,                             Klass*)                                \
+  volatile_nonstatic_field(arrayKlass,         _lower_dimension,                              Klass*)                                \
   nonstatic_field(arrayKlass,                  _vtable_len,                                   int)                                   \
   nonstatic_field(arrayKlass,                  _alloc_size,                                   juint)                                 \
   nonstatic_field(arrayKlass,                  _component_mirror,                             oop)                                   \
-  nonstatic_field(compiledICHolderKlass,       _alloc_size,                                   juint)                                 \
-  nonstatic_field(compiledICHolderOopDesc,     _holder_method,                                methodOop)                             \
-  nonstatic_field(compiledICHolderOopDesc,     _holder_klass,                                 klassOop)                              \
-  nonstatic_field(constantPoolOopDesc,         _tags,                                         typeArrayOop)                          \
-  nonstatic_field(constantPoolOopDesc,         _cache,                                        constantPoolCacheOop)                  \
-  nonstatic_field(constantPoolOopDesc,         _pool_holder,                                  klassOop)                              \
-  nonstatic_field(constantPoolOopDesc,         _operands,                                     typeArrayOop)                          \
-  nonstatic_field(constantPoolOopDesc,         _length,                                       int)                                   \
-  nonstatic_field(constantPoolCacheOopDesc,    _length,                                       int)                                   \
-  nonstatic_field(constantPoolCacheOopDesc,    _constant_pool,                                constantPoolOop)                       \
-  nonstatic_field(instanceKlass,               _array_klasses,                                klassOop)                              \
-  nonstatic_field(instanceKlass,               _methods,                                      objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _method_ordering,                              typeArrayOop)                          \
-  nonstatic_field(instanceKlass,               _local_interfaces,                             objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _transitive_interfaces,                        objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _fields,                                       typeArrayOop)                          \
-  nonstatic_field(instanceKlass,               _java_fields_count,                            u2)                                    \
-  nonstatic_field(instanceKlass,               _constants,                                    constantPoolOop)                       \
-  nonstatic_field(instanceKlass,               _class_loader,                                 oop)                                   \
-  nonstatic_field(instanceKlass,               _protection_domain,                            oop)                                   \
-  nonstatic_field(instanceKlass,               _signers,                                      objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _source_file_name,                             Symbol*)                               \
-  nonstatic_field(instanceKlass,               _source_debug_extension,                       char*)                                 \
-  nonstatic_field(instanceKlass,               _inner_classes,                                typeArrayOop)                          \
-  nonstatic_field(instanceKlass,               _nonstatic_field_size,                         int)                                   \
-  nonstatic_field(instanceKlass,               _static_field_size,                            int)                                   \
-  nonstatic_field(instanceKlass,               _static_oop_field_count,                       u2)                                   \
-  nonstatic_field(instanceKlass,               _nonstatic_oop_map_size,                       int)                                   \
-  nonstatic_field(instanceKlass,               _is_marked_dependent,                          bool)                                  \
-  nonstatic_field(instanceKlass,               _minor_version,                                u2)                                    \
-  nonstatic_field(instanceKlass,               _major_version,                                u2)                                    \
-  nonstatic_field(instanceKlass,               _init_state,                                   u1)                                    \
-  nonstatic_field(instanceKlass,               _init_thread,                                  Thread*)                               \
-  nonstatic_field(instanceKlass,               _vtable_len,                                   int)                                   \
-  nonstatic_field(instanceKlass,               _itable_len,                                   int)                                   \
-  nonstatic_field(instanceKlass,               _reference_type,                               u1)                                    \
-  volatile_nonstatic_field(instanceKlass,      _oop_map_cache,                                OopMapCache*)                          \
-  nonstatic_field(instanceKlass,               _jni_ids,                                      JNIid*)                                \
-  nonstatic_field(instanceKlass,               _osr_nmethods_head,                            nmethod*)                              \
-  nonstatic_field(instanceKlass,               _breakpoints,                                  BreakpointInfo*)                       \
-  nonstatic_field(instanceKlass,               _generic_signature,                            Symbol*)                               \
-  nonstatic_field(instanceKlass,               _methods_jmethod_ids,                          jmethodID*)                            \
-  nonstatic_field(instanceKlass,               _methods_cached_itable_indices,                int*)                                  \
-  volatile_nonstatic_field(instanceKlass,      _idnum_allocated_count,                        u2)                                    \
-  nonstatic_field(instanceKlass,               _class_annotations,                            typeArrayOop)                          \
-  nonstatic_field(instanceKlass,               _fields_annotations,                           objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _methods_annotations,                          objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _methods_parameter_annotations,                objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _methods_default_annotations,                  objArrayOop)                           \
-  nonstatic_field(instanceKlass,               _dependencies,                                 nmethodBucket*)                        \
+  nonstatic_field(CompiledICHolder,     _holder_method,                                Method*)                        \
+  nonstatic_field(CompiledICHolder,     _holder_klass,                                 Klass*)                                \
+  nonstatic_field(ConstantPool,         _tags,                                         Array<u1>*)                            \
+  nonstatic_field(ConstantPool,         _cache,                                        ConstantPoolCache*)             \
+  nonstatic_field(ConstantPool,         _pool_holder,                                  Klass*)                                \
+  nonstatic_field(ConstantPool,         _operands,                                     Array<u2>*)                            \
+  nonstatic_field(ConstantPool,         _length,                                       int)                                   \
+  nonstatic_field(ConstantPool,         _resolved_references,                          jobject)                               \
+  nonstatic_field(ConstantPool,         _reference_map,                                Array<u2>*)                            \
+  nonstatic_field(ConstantPoolCache,    _length,                                       int)                                   \
+  nonstatic_field(ConstantPoolCache,    _constant_pool,                                ConstantPool*)                  \
+  nonstatic_field(InstanceKlass,               _array_klasses,                                Klass*)                                \
+  nonstatic_field(InstanceKlass,               _methods,                                      Array<Method*>*)                \
+  nonstatic_field(InstanceKlass,               _local_interfaces,                             Array<Klass*>*)                        \
+  nonstatic_field(InstanceKlass,               _transitive_interfaces,                        Array<Klass*>*)                        \
+  nonstatic_field(InstanceKlass,               _fields,                                       Array<u2>*)                            \
+  nonstatic_field(InstanceKlass,               _java_fields_count,                            u2)                                    \
+  nonstatic_field(InstanceKlass,               _constants,                                    ConstantPool*)                  \
+  nonstatic_field(InstanceKlass,               _class_loader_data,                            ClassLoaderData*)                      \
+  nonstatic_field(InstanceKlass,               _protection_domain,                            oop)                                   \
+  nonstatic_field(InstanceKlass,               _signers,                                      objArrayOop)                           \
+  nonstatic_field(InstanceKlass,               _source_file_name,                             Symbol*)                               \
+  nonstatic_field(InstanceKlass,               _source_debug_extension,                       char*)                                 \
+  nonstatic_field(InstanceKlass,               _inner_classes,                               Array<jushort>*)                       \
+  nonstatic_field(InstanceKlass,               _nonstatic_field_size,                         int)                                   \
+  nonstatic_field(InstanceKlass,               _static_field_size,                            int)                                   \
+  nonstatic_field(InstanceKlass,               _static_oop_field_count,                       u2)                                   \
+  nonstatic_field(InstanceKlass,               _nonstatic_oop_map_size,                       int)                                   \
+  nonstatic_field(InstanceKlass,               _is_marked_dependent,                          bool)                                  \
+  nonstatic_field(InstanceKlass,               _minor_version,                                u2)                                    \
+  nonstatic_field(InstanceKlass,               _major_version,                                u2)                                    \
+  nonstatic_field(InstanceKlass,               _init_state,                                   u1)                                    \
+  nonstatic_field(InstanceKlass,               _init_thread,                                  Thread*)                               \
+  nonstatic_field(InstanceKlass,               _vtable_len,                                   int)                                   \
+  nonstatic_field(InstanceKlass,               _itable_len,                                   int)                                   \
+  nonstatic_field(InstanceKlass,               _reference_type,                               u1)                                    \
+  volatile_nonstatic_field(InstanceKlass,      _oop_map_cache,                                OopMapCache*)                          \
+  nonstatic_field(InstanceKlass,               _jni_ids,                                      JNIid*)                                \
+  nonstatic_field(InstanceKlass,               _osr_nmethods_head,                            nmethod*)                              \
+  nonstatic_field(InstanceKlass,               _breakpoints,                                  BreakpointInfo*)                       \
+  nonstatic_field(InstanceKlass,               _generic_signature,                            Symbol*)                               \
+  nonstatic_field(InstanceKlass,               _methods_jmethod_ids,                          jmethodID*)                            \
+  nonstatic_field(InstanceKlass,               _methods_cached_itable_indices,                int*)                                  \
+  volatile_nonstatic_field(InstanceKlass,      _idnum_allocated_count,                        u2)                                    \
+  nonstatic_field(InstanceKlass,               _annotations,                                  Annotations*)                          \
+  nonstatic_field(InstanceKlass,               _dependencies,                                 nmethodBucket*)                        \
   nonstatic_field(nmethodBucket,               _nmethod,                                      nmethod*)                              \
   nonstatic_field(nmethodBucket,               _count,                                        int)                                   \
   nonstatic_field(nmethodBucket,               _next,                                         nmethodBucket*)                        \
+  nonstatic_field(InstanceKlass,               _method_ordering,                              Array<int>*)                           \
   nonstatic_field(Klass,                       _super_check_offset,                           juint)                                 \
-  nonstatic_field(Klass,                       _secondary_super_cache,                        klassOop)                              \
-  nonstatic_field(Klass,                       _secondary_supers,                             objArrayOop)                           \
-  nonstatic_field(Klass,                       _primary_supers[0],                            klassOop)                              \
+  nonstatic_field(Klass,                       _secondary_super_cache,                        Klass*)                                \
+  nonstatic_field(Klass,                       _secondary_supers,                             Array<Klass*>*)                        \
+  nonstatic_field(Klass,                       _primary_supers[0],                            Klass*)                                \
   nonstatic_field(Klass,                       _java_mirror,                                  oop)                                   \
   nonstatic_field(Klass,                       _modifier_flags,                               jint)                                  \
-  nonstatic_field(Klass,                       _super,                                        klassOop)                              \
+  nonstatic_field(Klass,                       _super,                                        Klass*)                                \
   nonstatic_field(Klass,                       _layout_helper,                                jint)                                  \
   nonstatic_field(Klass,                       _name,                                         Symbol*)                               \
   nonstatic_field(Klass,                       _access_flags,                                 AccessFlags)                           \
-  nonstatic_field(Klass,                       _subklass,                                     klassOop)                              \
-  nonstatic_field(Klass,                       _next_sibling,                                 klassOop)                              \
+  nonstatic_field(Klass,                       _subklass,                                     Klass*)                                \
+  nonstatic_field(Klass,                       _next_sibling,                                 Klass*)                                \
   nonproduct_nonstatic_field(Klass,            _verify_count,                                 int)                                   \
   nonstatic_field(Klass,                       _alloc_count,                                  juint)                                 \
-  nonstatic_field(klassKlass,                  _alloc_size,                                   juint)                                 \
-  nonstatic_field(methodKlass,                 _alloc_size,                                   juint)                                 \
-  nonstatic_field(methodDataOopDesc,           _size,                                         int)                                   \
-  nonstatic_field(methodDataOopDesc,           _method,                                       methodOop)                             \
-  nonstatic_field(methodDataOopDesc,           _data_size,                                    int)                                   \
-  nonstatic_field(methodDataOopDesc,           _data[0],                                      intptr_t)                              \
-  nonstatic_field(methodDataOopDesc,           _nof_decompiles,                               uint)                                  \
-  nonstatic_field(methodDataOopDesc,           _nof_overflow_recompiles,                      uint)                                  \
-  nonstatic_field(methodDataOopDesc,           _nof_overflow_traps,                           uint)                                  \
-  nonstatic_field(methodDataOopDesc,           _eflags,                                       intx)                                  \
-  nonstatic_field(methodDataOopDesc,           _arg_local,                                    intx)                                  \
-  nonstatic_field(methodDataOopDesc,           _arg_stack,                                    intx)                                  \
-  nonstatic_field(methodDataOopDesc,           _arg_returned,                                 intx)                                  \
-  nonstatic_field(methodOopDesc,               _constMethod,                                  constMethodOop)                        \
-  nonstatic_field(methodOopDesc,               _method_data,                                  methodDataOop)                         \
-  nonstatic_field(methodOopDesc,               _interpreter_invocation_count,                 int)                                   \
-  nonstatic_field(methodOopDesc,               _access_flags,                                 AccessFlags)                           \
-  nonstatic_field(methodOopDesc,               _vtable_index,                                 int)                                   \
-  nonstatic_field(methodOopDesc,               _method_size,                                  u2)                                    \
-  nonstatic_field(methodOopDesc,               _max_stack,                                    u2)                                    \
-  nonstatic_field(methodOopDesc,               _max_locals,                                   u2)                                    \
-  nonstatic_field(methodOopDesc,               _size_of_parameters,                           u2)                                    \
-  nonstatic_field(methodOopDesc,               _interpreter_throwout_count,                   u2)                                    \
-  nonstatic_field(methodOopDesc,               _number_of_breakpoints,                        u2)                                    \
-  nonstatic_field(methodOopDesc,               _invocation_counter,                           InvocationCounter)                     \
-  nonstatic_field(methodOopDesc,               _backedge_counter,                             InvocationCounter)                     \
-  nonproduct_nonstatic_field(methodOopDesc,    _compiled_invocation_count,                    int)                                   \
-  volatile_nonstatic_field(methodOopDesc,      _code,                                         nmethod*)                              \
-  nonstatic_field(methodOopDesc,               _i2i_entry,                                    address)                               \
-  nonstatic_field(methodOopDesc,               _adapter,                                      AdapterHandlerEntry*)                  \
-  volatile_nonstatic_field(methodOopDesc,      _from_compiled_entry,                          address)                               \
-  volatile_nonstatic_field(methodOopDesc,      _from_interpreted_entry,                       address)                               \
-  volatile_nonstatic_field(constMethodOopDesc, _fingerprint,                                  uint64_t)                              \
-  nonstatic_field(constMethodOopDesc,          _constants,                                    constantPoolOop)                       \
-  nonstatic_field(constMethodOopDesc,          _stackmap_data,                                typeArrayOop)                          \
-  nonstatic_field(constMethodOopDesc,          _constMethod_size,                             int)                                   \
-  nonstatic_field(constMethodOopDesc,          _interpreter_kind,                             jbyte)                                 \
-  nonstatic_field(constMethodOopDesc,          _flags,                                        jbyte)                                 \
-  nonstatic_field(constMethodOopDesc,          _code_size,                                    u2)                                    \
-  nonstatic_field(constMethodOopDesc,          _name_index,                                   u2)                                    \
-  nonstatic_field(constMethodOopDesc,          _signature_index,                              u2)                                    \
-  nonstatic_field(constMethodOopDesc,          _method_idnum,                                 u2)                                    \
-  nonstatic_field(constMethodOopDesc,          _generic_signature_index,                      u2)                                    \
-  nonstatic_field(objArrayKlass,               _element_klass,                                klassOop)                              \
-  nonstatic_field(objArrayKlass,               _bottom_klass,                                 klassOop)                              \
+  nonstatic_field(MethodData,           _size,                                         int)                                   \
+  nonstatic_field(MethodData,           _method,                                       Method*)                        \
+  nonstatic_field(MethodData,           _data_size,                                    int)                                   \
+  nonstatic_field(MethodData,           _data[0],                                      intptr_t)                              \
+  nonstatic_field(MethodData,           _nof_decompiles,                               uint)                                  \
+  nonstatic_field(MethodData,           _nof_overflow_recompiles,                      uint)                                  \
+  nonstatic_field(MethodData,           _nof_overflow_traps,                           uint)                                  \
+  nonstatic_field(MethodData,           _eflags,                                       intx)                                  \
+  nonstatic_field(MethodData,           _arg_local,                                    intx)                                  \
+  nonstatic_field(MethodData,           _arg_stack,                                    intx)                                  \
+  nonstatic_field(MethodData,           _arg_returned,                                 intx)                                  \
+  nonstatic_field(Method,               _constMethod,                                  ConstMethod*)                   \
+  nonstatic_field(Method,               _method_data,                                  MethodData*)                    \
+  nonstatic_field(Method,               _interpreter_invocation_count,                 int)                                   \
+  nonstatic_field(Method,               _access_flags,                                 AccessFlags)                           \
+  nonstatic_field(Method,               _vtable_index,                                 int)                                   \
+  nonstatic_field(Method,               _method_size,                                  u2)                                    \
+  nonstatic_field(Method,               _max_stack,                                    u2)                                    \
+  nonstatic_field(Method,               _max_locals,                                   u2)                                    \
+  nonstatic_field(Method,               _size_of_parameters,                           u2)                                    \
+  nonstatic_field(Method,               _interpreter_throwout_count,                   u2)                                    \
+  nonstatic_field(Method,               _number_of_breakpoints,                        u2)                                    \
+  nonstatic_field(Method,               _invocation_counter,                           InvocationCounter)                     \
+  nonstatic_field(Method,               _backedge_counter,                             InvocationCounter)                     \
+  nonproduct_nonstatic_field(Method,    _compiled_invocation_count,                    int)                                   \
+  volatile_nonstatic_field(Method,      _code,                                         nmethod*)                              \
+  nonstatic_field(Method,               _i2i_entry,                                    address)                               \
+  nonstatic_field(Method,               _adapter,                                      AdapterHandlerEntry*)                  \
+  volatile_nonstatic_field(Method,      _from_compiled_entry,                          address)                               \
+  volatile_nonstatic_field(Method,      _from_interpreted_entry,                       address)                               \
+  volatile_nonstatic_field(ConstMethod, _fingerprint,                                  uint64_t)                              \
+  nonstatic_field(ConstMethod,          _constants,                                    ConstantPool*)                  \
+  nonstatic_field(ConstMethod,          _stackmap_data,                                Array<u1>*)                            \
+  nonstatic_field(ConstMethod,          _constMethod_size,                             int)                                   \
+  nonstatic_field(ConstMethod,          _interpreter_kind,                             jbyte)                                 \
+  nonstatic_field(ConstMethod,          _flags,                                        jbyte)                                 \
+  nonstatic_field(ConstMethod,          _code_size,                                    u2)                                    \
+  nonstatic_field(ConstMethod,          _name_index,                                   u2)                                    \
+  nonstatic_field(ConstMethod,          _signature_index,                              u2)                                    \
+  nonstatic_field(ConstMethod,          _method_idnum,                                 u2)                                    \
+  nonstatic_field(ConstMethod,          _generic_signature_index,                      u2)                                    \
+  nonstatic_field(objArrayKlass,               _element_klass,                                Klass*)                                \
+  nonstatic_field(objArrayKlass,               _bottom_klass,                                 Klass*)                                \
   volatile_nonstatic_field(Symbol,             _refcount,                                     int)                                   \
   nonstatic_field(Symbol,                      _identity_hash,                                int)                                   \
   nonstatic_field(Symbol,                      _length,                                       unsigned short)                        \
@@ -409,7 +392,7 @@
   /***********************/                                                                                                          \
                                                                                                                                      \
   volatile_nonstatic_field(ConstantPoolCacheEntry,      _indices,                                      intx)                         \
-  volatile_nonstatic_field(ConstantPoolCacheEntry,      _f1,                                           oop)                          \
+  nonstatic_field(ConstantPoolCacheEntry,               _f1,                                           volatile Metadata*)           \
   volatile_nonstatic_field(ConstantPoolCacheEntry,      _f2,                                           intx)                         \
   volatile_nonstatic_field(ConstantPoolCacheEntry,      _flags,                                        intx)                         \
                                                                                                                                      \
@@ -437,40 +420,24 @@
   /* JNI IDs */                                                                                                                      \
   /***********/                                                                                                                      \
                                                                                                                                      \
-  nonstatic_field(JNIid,                       _holder,                                       klassOop)                              \
+  nonstatic_field(JNIid,                       _holder,                                       Klass*)                                \
   nonstatic_field(JNIid,                       _next,                                         JNIid*)                                \
   nonstatic_field(JNIid,                       _offset,                                       int)                                   \
   /************/                                                                                                                     \
   /* Universe */                                                                                                                     \
   /************/                                                                                                                     \
                                                                                                                                      \
-     static_field(Universe,                    _boolArrayKlassObj,                            klassOop)                              \
-     static_field(Universe,                    _byteArrayKlassObj,                            klassOop)                              \
-     static_field(Universe,                    _charArrayKlassObj,                            klassOop)                              \
-     static_field(Universe,                    _intArrayKlassObj,                             klassOop)                              \
-     static_field(Universe,                    _shortArrayKlassObj,                           klassOop)                              \
-     static_field(Universe,                    _longArrayKlassObj,                            klassOop)                              \
-     static_field(Universe,                    _singleArrayKlassObj,                          klassOop)                              \
-     static_field(Universe,                    _doubleArrayKlassObj,                          klassOop)                              \
-     static_field(Universe,                    _methodKlassObj,                               klassOop)                              \
-     static_field(Universe,                    _constMethodKlassObj,                          klassOop)                              \
-     static_field(Universe,                    _methodDataKlassObj,                           klassOop)                              \
-     static_field(Universe,                    _klassKlassObj,                                klassOop)                              \
-     static_field(Universe,                    _arrayKlassKlassObj,                           klassOop)                              \
-     static_field(Universe,                    _objArrayKlassKlassObj,                        klassOop)                              \
-     static_field(Universe,                    _typeArrayKlassKlassObj,                       klassOop)                              \
-     static_field(Universe,                    _instanceKlassKlassObj,                        klassOop)                              \
-     static_field(Universe,                    _constantPoolKlassObj,                         klassOop)                              \
-     static_field(Universe,                    _constantPoolCacheKlassObj,                    klassOop)                              \
-     static_field(Universe,                    _compiledICHolderKlassObj,                     klassOop)                              \
-     static_field(Universe,                    _systemObjArrayKlassObj,                       klassOop)                              \
+     static_field(Universe,                    _boolArrayKlassObj,                            Klass*)                                \
+     static_field(Universe,                    _byteArrayKlassObj,                            Klass*)                                \
+     static_field(Universe,                    _charArrayKlassObj,                            Klass*)                                \
+     static_field(Universe,                    _intArrayKlassObj,                             Klass*)                                \
+     static_field(Universe,                    _shortArrayKlassObj,                           Klass*)                                \
+     static_field(Universe,                    _longArrayKlassObj,                            Klass*)                                \
+     static_field(Universe,                    _singleArrayKlassObj,                          Klass*)                                \
+     static_field(Universe,                    _doubleArrayKlassObj,                          Klass*)                                \
      static_field(Universe,                    _mirrors[0],                                   oop)                                   \
      static_field(Universe,                    _main_thread_group,                            oop)                                   \
      static_field(Universe,                    _system_thread_group,                          oop)                                   \
-     static_field(Universe,                    _the_empty_byte_array,                         typeArrayOop)                          \
-     static_field(Universe,                    _the_empty_short_array,                        typeArrayOop)                          \
-     static_field(Universe,                    _the_empty_int_array,                          typeArrayOop)                          \
-     static_field(Universe,                    _the_empty_system_obj_array,                   objArrayOop)                           \
      static_field(Universe,                    _the_empty_class_klass_array,                  objArrayOop)                           \
      static_field(Universe,                    _out_of_memory_error_java_heap,                oop)                                   \
      static_field(Universe,                    _out_of_memory_error_perm_gen,                 oop)                                   \
@@ -528,7 +495,6 @@
   nonstatic_field(CardTableRS,                 _ct_bs,                                        CardTableModRefBSForCTRS*)             \
                                                                                                                                      \
   nonstatic_field(CollectedHeap,               _reserved,                                     MemRegion)                             \
-  nonstatic_field(SharedHeap,                  _perm_gen,                                     PermGen*)                              \
   nonstatic_field(CollectedHeap,               _barrier_set,                                  BarrierSet*)                           \
   nonstatic_field(CollectedHeap,               _defer_initial_card_mark,                      bool)                                  \
   nonstatic_field(CollectedHeap,               _is_gc_active,                                 bool)                                  \
@@ -536,7 +502,6 @@
   nonstatic_field(CompactibleSpace,            _first_dead,                                   HeapWord*)                             \
   nonstatic_field(CompactibleSpace,            _end_of_live,                                  HeapWord*)                             \
                                                                                                                                      \
-  nonstatic_field(CompactingPermGen,           _gen,                                          OneContigSpaceCardGeneration*)         \
                                                                                                                                      \
   nonstatic_field(ContiguousSpace,             _top,                                          HeapWord*)                             \
   nonstatic_field(ContiguousSpace,             _concurrent_iteration_safe_limit,              HeapWord*)                             \
@@ -579,30 +544,7 @@
   nonstatic_field(OneContigSpaceCardGeneration, _the_space,                                   ContiguousSpace*)                      \
   nonstatic_field(OneContigSpaceCardGeneration, _last_gc,                                     WaterMark)                             \
                                                                                                                                      \
-  nonstatic_field(CompactingPermGenGen,        _ro_vs,                                        VirtualSpace)                          \
-  nonstatic_field(CompactingPermGenGen,        _rw_vs,                                        VirtualSpace)                          \
-  nonstatic_field(CompactingPermGenGen,        _md_vs,                                        VirtualSpace)                          \
-  nonstatic_field(CompactingPermGenGen,        _mc_vs,                                        VirtualSpace)                          \
-  nonstatic_field(CompactingPermGenGen,        _ro_space,                                     OffsetTableContigSpace*)               \
-  nonstatic_field(CompactingPermGenGen,        _rw_space,                                     OffsetTableContigSpace*)               \
-     static_field(CompactingPermGenGen,        unshared_bottom,                               HeapWord*)                             \
-     static_field(CompactingPermGenGen,        unshared_end,                                  HeapWord*)                             \
-     static_field(CompactingPermGenGen,        shared_bottom,                                 HeapWord*)                             \
-     static_field(CompactingPermGenGen,        readonly_bottom,                               HeapWord*)                             \
-     static_field(CompactingPermGenGen,        readonly_end,                                  HeapWord*)                             \
-     static_field(CompactingPermGenGen,        readwrite_bottom,                              HeapWord*)                             \
-     static_field(CompactingPermGenGen,        readwrite_end,                                 HeapWord*)                             \
-     static_field(CompactingPermGenGen,        miscdata_bottom,                               HeapWord*)                             \
-     static_field(CompactingPermGenGen,        miscdata_end,                                  HeapWord*)                             \
-     static_field(CompactingPermGenGen,        misccode_bottom,                               HeapWord*)                             \
-     static_field(CompactingPermGenGen,        misccode_end,                                  HeapWord*)                             \
-     static_field(CompactingPermGenGen,        shared_end,                                    HeapWord*)                             \
                                                                                                                                      \
-  nonstatic_field(PermGen,                     _capacity_expansion_limit,                     size_t)                                \
-                                                                                                                                     \
-  nonstatic_field(PermanentGenerationSpec,     _name,                                         PermGen::Name)                         \
-  nonstatic_field(PermanentGenerationSpec,     _init_size,                                    size_t)                                \
-  nonstatic_field(PermanentGenerationSpec,     _max_size,                                     size_t)                                \
                                                                                                                                      \
   nonstatic_field(Space,                       _bottom,                                       HeapWord*)                             \
   nonstatic_field(Space,                       _end,                                          HeapWord*)                             \
@@ -677,40 +619,40 @@
       static_field(SystemDictionary,            _shared_dictionary,                            Dictionary*)                          \
       static_field(SystemDictionary,            _system_loader_lock_obj,                       oop)                                  \
       static_field(SystemDictionary,            _loader_constraints,                           LoaderConstraintTable*)               \
-      static_field(SystemDictionary,            WK_KLASS(Object_klass),                        klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(String_klass),                        klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Class_klass),                         klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Cloneable_klass),                     klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ClassLoader_klass),                   klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Serializable_klass),                  klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(System_klass),                        klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Throwable_klass),                     klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ThreadDeath_klass),                   klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Error_klass),                         klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Exception_klass),                     klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(RuntimeException_klass),              klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ClassNotFoundException_klass),        klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(NoClassDefFoundError_klass),          klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(LinkageError_klass),                  klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ClassCastException_klass),            klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ArrayStoreException_klass),           klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(VirtualMachineError_klass),           klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(OutOfMemoryError_klass),              klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(StackOverflowError_klass),            klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ProtectionDomain_klass),              klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(AccessControlContext_klass),          klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Reference_klass),                     klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(SoftReference_klass),                 klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(WeakReference_klass),                 klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(FinalReference_klass),                klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(PhantomReference_klass),              klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Finalizer_klass),                     klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Thread_klass),                        klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(ThreadGroup_klass),                   klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(Properties_klass),                    klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(StringBuffer_klass),                  klassOop)                             \
-      static_field(SystemDictionary,            WK_KLASS(MethodHandle_klass),                  klassOop)                             \
-      static_field(SystemDictionary,            _box_klasses[0],                               klassOop)                             \
+      static_field(SystemDictionary,            WK_KLASS(Object_klass),                        Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(String_klass),                        Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Class_klass),                         Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Cloneable_klass),                     Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ClassLoader_klass),                   Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Serializable_klass),                  Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(System_klass),                        Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Throwable_klass),                     Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ThreadDeath_klass),                   Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Error_klass),                         Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Exception_klass),                     Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(RuntimeException_klass),              Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ClassNotFoundException_klass),        Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(NoClassDefFoundError_klass),          Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(LinkageError_klass),                  Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ClassCastException_klass),            Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ArrayStoreException_klass),           Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(VirtualMachineError_klass),           Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(OutOfMemoryError_klass),              Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(StackOverflowError_klass),            Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ProtectionDomain_klass),              Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(AccessControlContext_klass),          Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Reference_klass),                     Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(SoftReference_klass),                 Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(WeakReference_klass),                 Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(FinalReference_klass),                Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(PhantomReference_klass),              Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Finalizer_klass),                     Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Thread_klass),                        Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(ThreadGroup_klass),                   Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(Properties_klass),                    Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(StringBuffer_klass),                  Klass*)                               \
+      static_field(SystemDictionary,            WK_KLASS(MethodHandle_klass),                  Klass*)                               \
+      static_field(SystemDictionary,            _box_klasses[0],                               Klass*)                               \
       static_field(SystemDictionary,            _java_system_loader,                           oop)                                  \
                                                                                                                                      \
   /*************/                                                                                                                    \
@@ -748,12 +690,12 @@
   /* DictionaryEntry */                                                                                                              \
   /*******************/                                                                                                              \
                                                                                                                                      \
-  nonstatic_field(DictionaryEntry,             _loader,                                       oop)                                   \
+  nonstatic_field(DictionaryEntry,             _loader_data,                                  ClassLoaderData*)                      \
   nonstatic_field(DictionaryEntry,             _pd_set,                                       ProtectionDomainEntry*)                \
                                                                                                                                      \
   /********************/                                                                                                             \
                                                                                                                                      \
-  nonstatic_field(PlaceholderEntry,            _loader,                                       oop)                                   \
+  nonstatic_field(PlaceholderEntry,            _loader_data,                                  ClassLoaderData*)                      \
                                                                                                                                      \
   /**************************/                                                                                                       \
   /* ProctectionDomainEntry */                                                                                                       \
@@ -769,7 +711,13 @@
   nonstatic_field(LoaderConstraintEntry,       _name,                                         Symbol*)                               \
   nonstatic_field(LoaderConstraintEntry,       _num_loaders,                                  int)                                   \
   nonstatic_field(LoaderConstraintEntry,       _max_loaders,                                  int)                                   \
-  nonstatic_field(LoaderConstraintEntry,       _loaders,                                      oop*)                                  \
+  nonstatic_field(LoaderConstraintEntry,       _loaders,                                      ClassLoaderData**)                     \
+                                                                                                                                     \
+  nonstatic_field(ClassLoaderData,             _class_loader,                                 oop)                                   \
+  nonstatic_field(ClassLoaderData,             _next,                                         ClassLoaderData*)                      \
+                                                                                                                                     \
+  static_field(ClassLoaderDataGraph,           _head,                                         ClassLoaderData*)                      \
+  nonstatic_field(ClassLoaderDataGraph,        _unloading,                                    ClassLoaderData*)                      \
                                                                                                                                      \
   /*******************/                                                                                                              \
   /* GrowableArrays  */                                                                                                              \
@@ -853,7 +801,7 @@
   /* NMethods (NOTE: incomplete, but only a little) */                                                                               \
   /**************************************************/                                                                               \
                                                                                                                                      \
-  nonstatic_field(nmethod,             _method,                                       methodOop)                             \
+  nonstatic_field(nmethod,             _method,                                       Method*)                        \
   nonstatic_field(nmethod,             _entry_bci,                                    int)                                   \
   nonstatic_field(nmethod,             _osr_link,                                     nmethod*)                              \
   nonstatic_field(nmethod,             _scavenge_root_link,                           nmethod*)                              \
@@ -866,6 +814,7 @@
   nonstatic_field(nmethod,             _stub_offset,                                  int)                                   \
   nonstatic_field(nmethod,             _consts_offset,                                int)                                   \
   nonstatic_field(nmethod,             _oops_offset,                                  int)                                   \
+  nonstatic_field(nmethod,             _metadata_offset,                              int)                                   \
   nonstatic_field(nmethod,             _scopes_data_offset,                           int)                                   \
   nonstatic_field(nmethod,             _scopes_pcs_offset,                            int)                                   \
   nonstatic_field(nmethod,             _dependencies_offset,                          int)                                   \
@@ -918,7 +867,7 @@
   nonstatic_field(JavaThread,                  _threadObj,                                    oop)                                   \
   nonstatic_field(JavaThread,                  _anchor,                                       JavaFrameAnchor)                       \
   nonstatic_field(JavaThread,                  _vm_result,                                    oop)                                   \
-  nonstatic_field(JavaThread,                  _vm_result_2,                                  oop)                                   \
+  nonstatic_field(JavaThread,                  _vm_result_2,                                  Metadata*)                             \
   nonstatic_field(JavaThread,                  _pending_async_exception,                      oop)                                   \
   volatile_nonstatic_field(JavaThread,         _exception_oop,                                oop)                                   \
   volatile_nonstatic_field(JavaThread,         _exception_pc,                                 address)                               \
@@ -1008,11 +957,13 @@
  nonstatic_field(ciEnv,               _task, CompileTask*)                                                                           \
  nonstatic_field(ciEnv,               _arena, Arena*)                                                                                \
                                                                                                                                      \
+ nonstatic_field(ciBaseObject,    _ident, uint)                                                                                      \
+                                                                                                                                     \
  nonstatic_field(ciObject,    _handle, jobject)                                                                                      \
  nonstatic_field(ciObject,    _klass, ciKlass*)                                                                                      \
- nonstatic_field(ciObject,    _ident, uint)                                                                                          \
                                                                                                                                      \
- nonstatic_field(ciSymbol,    _ident, uint)                                                                                          \
+ nonstatic_field(ciMetadata,  _metadata, Metadata*)                                                                           \
+                                                                                                                                     \
  nonstatic_field(ciSymbol,    _symbol, Symbol*)                                                                                      \
                                                                                                                                      \
  nonstatic_field(ciType,    _basic_type, BasicType)                                                                                  \
@@ -1024,7 +975,7 @@
  nonstatic_field(ciObjArrayKlass, _element_klass, ciKlass*)                                                                          \
  nonstatic_field(ciObjArrayKlass, _base_element_klass, ciKlass*)                                                                     \
                                                                                                                                      \
- nonstatic_field(ciInstanceKlass,   _init_state, instanceKlass::ClassState)                                                          \
+ nonstatic_field(ciInstanceKlass,   _init_state, InstanceKlass::ClassState)                                                          \
  nonstatic_field(ciInstanceKlass,   _is_shared,  bool)                                                                               \
                                                                                                                                      \
  nonstatic_field(ciMethod,     _interpreter_invocation_count, int)                                                                   \
@@ -1040,7 +991,7 @@
  nonstatic_field(ciMethodData, _arg_stack, intx)                                                                                     \
  nonstatic_field(ciMethodData, _arg_returned, intx)                                                                                  \
  nonstatic_field(ciMethodData, _current_mileage, int)                                                                                \
- nonstatic_field(ciMethodData, _orig, methodDataOopDesc)                                                                             \
+ nonstatic_field(ciMethodData, _orig, MethodData)                                                                             \
                                                                                                                                      \
  nonstatic_field(ciField,     _holder, ciInstanceKlass*)                                                                             \
  nonstatic_field(ciField,     _name, ciSymbol*)                                                                                      \
@@ -1049,7 +1000,7 @@
  nonstatic_field(ciField,     _is_constant, bool)                                                                                    \
  nonstatic_field(ciField,     _constant_value, ciConstant)                                                                           \
                                                                                                                                      \
- nonstatic_field(ciObjectFactory,     _ci_objects, GrowableArray<ciObject*>*)                                                        \
+ nonstatic_field(ciObjectFactory,     _ci_metadata, GrowableArray<ciMetadata*>*)                                                     \
  nonstatic_field(ciObjectFactory,     _symbols, GrowableArray<ciSymbol*>*)                                                           \
  nonstatic_field(ciObjectFactory,     _unloaded_methods, GrowableArray<ciMethod*>*)                                                  \
                                                                                                                                      \
@@ -1234,6 +1185,17 @@
   static_field(Arguments,                      _num_jvm_args,                                 int)                                   \
   static_field(Arguments,                      _java_command,                                 char*)                                 \
                                                                                                                                      \
+  /************/                                                                                                                     \
+  /* Array<T> */                                                                                                                     \
+  /************/                                                                                                                     \
+                                                                                                                                     \
+  nonstatic_field(Array<int>,                      _length,                                   int)                                   \
+  unchecked_nonstatic_field(Array<int>,            _data,                                     sizeof(int))                           \
+  unchecked_nonstatic_field(Array<u1>,             _data,                                     sizeof(u1))                            \
+  unchecked_nonstatic_field(Array<u2>,             _data,                                     sizeof(u2))                            \
+  unchecked_nonstatic_field(Array<Method*>, _data,                                     sizeof(Method*))                \
+  unchecked_nonstatic_field(Array<Klass*>,         _data,                                     sizeof(Klass*))                        \
+                                                                                                                                     \
   /*********************************/                                                                                                \
   /* java_lang_Class fields        */                                                                                                \
   /*********************************/                                                                                                \
@@ -1248,7 +1210,7 @@
   /* Miscellaneous fields */                                                                                                         \
   /************************/                                                                                                         \
                                                                                                                                      \
-  nonstatic_field(CompileTask,                 _method,                                      jobject)                                \
+  nonstatic_field(CompileTask,                 _method,                                      Method*)                         \
   nonstatic_field(CompileTask,                 _osr_bci,                                     int)                                    \
   nonstatic_field(CompileTask,                 _comp_level,                                  int)                                    \
   nonstatic_field(CompileTask,                 _compile_id,                                  uint)                                   \
@@ -1262,7 +1224,7 @@
                                                                                                                                      \
   nonstatic_field(vframeArrayElement,          _frame,                                       frame)                                  \
   nonstatic_field(vframeArrayElement,          _bci,                                         int)                                    \
-  nonstatic_field(vframeArrayElement,          _method,                                      methodOop)                              \
+  nonstatic_field(vframeArrayElement,          _method,                                      Method*)                         \
                                                                                                                                      \
   nonstatic_field(AccessFlags,                 _flags,                                       jint)                                   \
   nonstatic_field(elapsedTimer,                _counter,                                     jlong)                                  \
@@ -1360,14 +1322,15 @@
   declare_unsigned_integer_type(unsigned long)                            \
   /* The compiler thinks this is a different type than */                 \
   /* unsigned short on Win32 */                                           \
+  declare_unsigned_integer_type(u1)                                       \
   declare_unsigned_integer_type(u2)                                       \
-  declare_unsigned_integer_type(u1)                                       \
   declare_unsigned_integer_type(unsigned)                                 \
                                                                           \
   /*****************************/                                         \
   /* C primitive pointer types */                                         \
   /*****************************/                                         \
                                                                           \
+  declare_toplevel_type(void*)                                            \
   declare_toplevel_type(int*)                                             \
   declare_toplevel_type(char*)                                            \
   declare_toplevel_type(char**)                                           \
@@ -1389,44 +1352,40 @@
   declare_unsigned_integer_type(uint32_t)                                 \
   declare_unsigned_integer_type(uint64_t)                                 \
                                                                           \
-  /*******************************************************************************/ \
-  /* OopDesc and Klass hierarchies (NOTE: missing methodDataOop-related classes) */ \
-  /*******************************************************************************/ \
+  /******************************************/                            \
+  /* OopDesc hierarchy (NOTE: some missing) */                            \
+  /******************************************/                            \
                                                                           \
   declare_toplevel_type(oopDesc)                                          \
-  declare_toplevel_type(Klass_vtbl)                                       \
-           declare_type(Klass, Klass_vtbl)                                \
+    declare_type(arrayOopDesc, oopDesc)                                   \
+      declare_type(objArrayOopDesc, arrayOopDesc)                         \
+    declare_type(instanceOopDesc, oopDesc)                                \
+    declare_type(markOopDesc, oopDesc)                                    \
+                                                                          \
+  /**************************************************/                    \
+  /* MetadataOopDesc hierarchy (NOTE: some missing) */                    \
+  /**************************************************/                    \
+                                                                          \
+  declare_toplevel_type(CompiledICHolder)                          \
+  declare_toplevel_type(MetaspaceObj)                                     \
+    declare_type(Metadata, MetaspaceObj)                                  \
+    declare_type(Klass, Metadata)                                         \
            declare_type(arrayKlass, Klass)                                \
-           declare_type(arrayKlassKlass, klassKlass)                      \
-           declare_type(arrayOopDesc, oopDesc)                            \
-   declare_type(compiledICHolderKlass, Klass)                             \
-   declare_type(compiledICHolderOopDesc, oopDesc)                         \
-           declare_type(constantPoolKlass, Klass)                         \
-           declare_type(constantPoolOopDesc, oopDesc)                     \
-           declare_type(constantPoolCacheKlass, Klass)                    \
-           declare_type(constantPoolCacheOopDesc, oopDesc)                \
-           declare_type(instanceKlass, Klass)                             \
-           declare_type(instanceKlassKlass, klassKlass)                   \
-           declare_type(instanceOopDesc, oopDesc)                         \
-           declare_type(instanceMirrorKlass, instanceKlass)               \
-           declare_type(instanceRefKlass, instanceKlass)                  \
-           declare_type(klassKlass, Klass)                                \
-           declare_type(klassOopDesc, oopDesc)                            \
-           declare_type(markOopDesc, oopDesc)                             \
-   declare_type(methodDataKlass, Klass)                                   \
-   declare_type(methodDataOopDesc, oopDesc)                               \
-           declare_type(methodKlass, Klass)                               \
-           declare_type(constMethodKlass, Klass)                          \
-           declare_type(methodOopDesc, oopDesc)                           \
            declare_type(objArrayKlass, arrayKlass)                        \
-           declare_type(objArrayKlassKlass, arrayKlassKlass)              \
-           declare_type(objArrayOopDesc, arrayOopDesc)                    \
-           declare_type(constMethodOopDesc, oopDesc)                      \
            declare_type(typeArrayKlass, arrayKlass)                       \
-           declare_type(typeArrayKlassKlass, arrayKlassKlass)             \
-           declare_type(typeArrayOopDesc, arrayOopDesc)                   \
+      declare_type(InstanceKlass, Klass)                                  \
+        declare_type(InstanceClassLoaderKlass, InstanceKlass)             \
+        declare_type(InstanceMirrorKlass, InstanceKlass)                  \
+        declare_type(InstanceRefKlass, InstanceKlass)                     \
+    declare_type(ConstantPool, Metadata)                           \
+    declare_type(ConstantPoolCache, MetaspaceObj)                  \
+    declare_type(MethodData, Metadata)                             \
+    declare_type(Method, Metadata)                                 \
+    declare_type(ConstMethod, MetaspaceObj)                        \
+                                                                          \
            declare_toplevel_type(Symbol)                                  \
            declare_toplevel_type(Symbol*)                                 \
+  declare_toplevel_type(volatile Metadata*)                               \
                                                                           \
   declare_toplevel_type(nmethodBucket)                                    \
                                                                           \
@@ -1434,17 +1393,10 @@
   /* Oops */                                                              \
   /********/                                                              \
                                                                           \
-  declare_oop_type(constantPoolOop)                                       \
-  declare_oop_type(constantPoolCacheOop)                                  \
-  declare_oop_type(klassOop)                                              \
   declare_oop_type(markOop)                                               \
-  declare_oop_type(methodOop)                                             \
-  declare_oop_type(methodDataOop)                                         \
   declare_oop_type(objArrayOop)                                           \
   declare_oop_type(oop)                                                   \
   declare_oop_type(narrowOop)                                             \
-  declare_oop_type(wideKlassOop)                                          \
-  declare_oop_type(constMethodOop)                                        \
   declare_oop_type(typeArrayOop)                                          \
                                                                           \
   /*************************************/                                 \
@@ -1455,6 +1407,9 @@
   declare_toplevel_type(LocalVariableTableElement)                        \
   declare_toplevel_type(ExceptionTableElement)                            \
                                                                           \
+  declare_toplevel_type(ClassLoaderData)                                  \
+  declare_toplevel_type(ClassLoaderDataGraph)                             \
+                                                                          \
   /******************************************/                            \
   /* Generation and space hierarchies       */                            \
   /* (needed for run-time type information) */                            \
@@ -1468,7 +1423,6 @@
            declare_type(CardGeneration,               Generation)         \
            declare_type(OneContigSpaceCardGeneration, CardGeneration)     \
            declare_type(TenuredGeneration,            OneContigSpaceCardGeneration) \
-           declare_type(CompactingPermGenGen,         OneContigSpaceCardGeneration) \
   declare_toplevel_type(Space)                                            \
   declare_toplevel_type(BitMap)                                           \
            declare_type(CompactibleSpace,             Space)              \
@@ -1476,9 +1430,6 @@
            declare_type(EdenSpace,                    ContiguousSpace)    \
            declare_type(OffsetTableContigSpace,       ContiguousSpace)    \
            declare_type(TenuredSpace,                 OffsetTableContigSpace) \
-           declare_type(ContigPermSpace,              OffsetTableContigSpace) \
-  declare_toplevel_type(PermGen)                                          \
-           declare_type(CompactingPermGen,            PermGen)            \
   declare_toplevel_type(BarrierSet)                                       \
            declare_type(ModRefBarrierSet,             BarrierSet)         \
            declare_type(CardTableModRefBS,            ModRefBarrierSet)   \
@@ -1498,7 +1449,6 @@
   declare_toplevel_type(GenerationSpec)                                   \
   declare_toplevel_type(HeapWord)                                         \
   declare_toplevel_type(MemRegion)                                        \
-  declare_toplevel_type(PermanentGenerationSpec)                          \
   declare_toplevel_type(ThreadLocalAllocBuffer)                           \
   declare_toplevel_type(VirtualSpace)                                     \
   declare_toplevel_type(WaterMark)                                        \
@@ -1524,7 +1474,6 @@
   declare_toplevel_type(MemRegion*)                                       \
   declare_toplevel_type(OffsetTableContigSpace*)                          \
   declare_toplevel_type(OneContigSpaceCardGeneration*)                    \
-  declare_toplevel_type(PermGen*)                                         \
   declare_toplevel_type(Space*)                                           \
   declare_toplevel_type(ThreadLocalAllocBuffer*)                          \
                                                                           \
@@ -1545,15 +1494,15 @@
     declare_type(IntptrHashtable, BasicHashtable<mtInternal>)             \
   declare_type(SymbolTable, SymbolHashtable)                              \
   declare_type(StringTable, StringHashtable)                              \
-    declare_type(LoaderConstraintTable, klassOopHashtable)                \
-    declare_type(klassOopTwoOopHashtable, klassOopHashtable)              \
-    declare_type(Dictionary, klassOopTwoOopHashtable)                     \
+    declare_type(LoaderConstraintTable, KlassHashtable)                   \
+    declare_type(KlassTwoOopHashtable, KlassHashtable)                    \
+    declare_type(Dictionary, KlassTwoOopHashtable)                        \
     declare_type(PlaceholderTable, SymbolTwoOopHashtable)                 \
   declare_toplevel_type(BasicHashtableEntry<mtInternal>)                  \
   declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>)     \
-    declare_type(DictionaryEntry, klassHashtableEntry)                    \
+    declare_type(DictionaryEntry, KlassHashtableEntry)                    \
     declare_type(PlaceholderEntry, SymbolHashtableEntry)                  \
-    declare_type(LoaderConstraintEntry, klassHashtableEntry)              \
+    declare_type(LoaderConstraintEntry, KlassHashtableEntry)              \
   declare_toplevel_type(HashtableBucket<mtInternal>)                      \
   declare_toplevel_type(SystemDictionary)                                 \
   declare_toplevel_type(vmSymbols)                                        \
@@ -2007,24 +1956,19 @@
   declare_toplevel_type(ciObjectFactory)                                  \
   declare_toplevel_type(ciConstant)                                       \
   declare_toplevel_type(ciField)                                          \
-  declare_toplevel_type(void*)                                            \
-  declare_toplevel_type(ciObject)                                         \
-  declare_type(ciMethod, ciObject)                                        \
-  declare_type(ciMethodData, ciObject)                                    \
-  declare_type(ciType, ciObject)                                          \
+  declare_toplevel_type(ciSymbol)                                         \
+  declare_toplevel_type(ciBaseObject)                                     \
+  declare_type(ciObject, ciBaseObject)                                    \
   declare_type(ciInstance, ciObject)                                      \
-  declare_toplevel_type(ciSymbol)                                         \
+  declare_type(ciMetadata, ciBaseObject)                                  \
+  declare_type(ciMethod, ciMetadata)                                      \
+  declare_type(ciMethodData, ciMetadata)                                  \
+  declare_type(ciType, ciMetadata)                                        \
   declare_type(ciKlass, ciType)                                           \
   declare_type(ciInstanceKlass, ciKlass)                                  \
   declare_type(ciArrayKlass, ciKlass)                                     \
   declare_type(ciTypeArrayKlass, ciArrayKlass)                            \
   declare_type(ciObjArrayKlass, ciArrayKlass)                             \
-  declare_type(ciMethodKlass, ciKlass)                                    \
-  declare_type(ciKlassKlass, ciKlass)                                     \
-  declare_type(ciInstanceKlassKlass, ciKlassKlass)                        \
-  declare_type(ciArrayKlassKlass, ciKlassKlass)                           \
-  declare_type(ciTypeArrayKlassKlass, ciArrayKlassKlass)                  \
-  declare_type(ciObjArrayKlassKlass, ciArrayKlassKlass)                   \
                                                                           \
   /********************/                                                  \
   /* -XX flags        */                                                  \
@@ -2060,14 +2004,20 @@
                                                                           \
    declare_integer_type(Bytecodes::Code)                                  \
    declare_integer_type(Generation::Name)                                 \
-   declare_integer_type(instanceKlass::ClassState)                        \
+   declare_integer_type(InstanceKlass::ClassState)                        \
    declare_integer_type(JavaThreadState)                                  \
    declare_integer_type(Location::Type)                                   \
    declare_integer_type(Location::Where)                                  \
-   declare_integer_type(PermGen::Name)                                    \
    declare_integer_type(FlagValueOrigin)                                  \
    COMPILER2_PRESENT(declare_integer_type(OptoReg::Name))                 \
                                                                           \
+   declare_toplevel_type(CHeapObj<mtInternal>)                            \
+            declare_type(Array<int>, MetaspaceObj)                        \
+            declare_type(Array<u1>, MetaspaceObj)                         \
+            declare_type(Array<u2>, MetaspaceObj)                         \
+            declare_type(Array<Klass*>, MetaspaceObj)                     \
+            declare_type(Array<Method*>, MetaspaceObj)             \
+                                                                          \
    declare_integer_type(AccessFlags)  /* FIXME: wrong type (not integer) */\
   declare_toplevel_type(address)      /* FIXME: should this be an integer type? */\
    declare_integer_type(BasicType)   /* FIXME: wrong type (not integer) */\
@@ -2108,7 +2058,8 @@
   declare_toplevel_type(Thread*)                                          \
   declare_toplevel_type(Universe)                                         \
   declare_toplevel_type(vframeArray)                                      \
-  declare_toplevel_type(vframeArrayElement)
+  declare_toplevel_type(vframeArrayElement)                               \
+  declare_toplevel_type(Annotations*)
 
 
   /* NOTE that we do not use the last_entry() macro here; it is used  */
@@ -2149,6 +2100,7 @@
                                                                           \
   declare_constant(oopSize)                                               \
   declare_constant(LogBytesPerWord)                                       \
+  declare_constant(BytesPerWord)                                          \
   declare_constant(BytesPerLong)                                          \
                                                                           \
   /********************************************/                          \
@@ -2197,10 +2149,6 @@
   declare_constant(HeapWordSize)                                          \
   declare_constant(LogHeapWordSize)                                       \
                                                                           \
-  /* constants from PermGen::Name enum */                                 \
-                                                                          \
-  declare_constant(PermGen::MarkSweepCompact)                             \
-  declare_constant(PermGen::MarkSweep)                                    \
                                                                           \
   /************************/                                              \
   /* PerfMemory - jvmstat */                                              \
@@ -2288,16 +2236,16 @@
   declare_constant(Klass::_lh_array_tag_obj_value)                        \
                                                                           \
   /********************************/                                      \
-  /* constMethodOopDesc anon-enum */                                      \
+  /* ConstMethod anon-enum */                                      \
   /********************************/                                      \
                                                                           \
-  declare_constant(constMethodOopDesc::_has_linenumber_table)             \
-  declare_constant(constMethodOopDesc::_has_checked_exceptions)           \
-  declare_constant(constMethodOopDesc::_has_localvariable_table)          \
-  declare_constant(constMethodOopDesc::_has_exception_table)              \
+  declare_constant(ConstMethod::_has_linenumber_table)             \
+  declare_constant(ConstMethod::_has_checked_exceptions)           \
+  declare_constant(ConstMethod::_has_localvariable_table)          \
+  declare_constant(ConstMethod::_has_exception_table)              \
                                                                           \
   /*************************************/                                 \
-  /* instanceKlass enum                */                                 \
+  /* InstanceKlass enum                */                                 \
   /*************************************/                                 \
                                                                           \
                                                                           \
@@ -2314,26 +2262,25 @@
   declare_constant(FieldInfo::field_slots)                                \
                                                                           \
   /************************************************/                      \
-  /* instanceKlass InnerClassAttributeOffset enum */                      \
+  /* InstanceKlass InnerClassAttributeOffset enum */                      \
   /************************************************/                      \
                                                                           \
-  declare_constant(instanceKlass::inner_class_inner_class_info_offset)    \
-  declare_constant(instanceKlass::inner_class_outer_class_info_offset)    \
-  declare_constant(instanceKlass::inner_class_inner_name_offset)          \
-  declare_constant(instanceKlass::inner_class_access_flags_offset)        \
-  declare_constant(instanceKlass::inner_class_next_offset)                \
+  declare_constant(InstanceKlass::inner_class_inner_class_info_offset)    \
+  declare_constant(InstanceKlass::inner_class_outer_class_info_offset)    \
+  declare_constant(InstanceKlass::inner_class_inner_name_offset)          \
+  declare_constant(InstanceKlass::inner_class_access_flags_offset)        \
+  declare_constant(InstanceKlass::inner_class_next_offset)                \
                                                                           \
   /*********************************/                                     \
-  /* instanceKlass ClassState enum */                                     \
+  /* InstanceKlass ClassState enum */                                     \
   /*********************************/                                     \
                                                                           \
-  declare_constant(instanceKlass::unparsable_by_gc)                       \
-  declare_constant(instanceKlass::allocated)                              \
-  declare_constant(instanceKlass::loaded)                                 \
-  declare_constant(instanceKlass::linked)                                 \
-  declare_constant(instanceKlass::being_initialized)                      \
-  declare_constant(instanceKlass::fully_initialized)                      \
-  declare_constant(instanceKlass::initialization_error)                   \
+  declare_constant(InstanceKlass::allocated)                              \
+  declare_constant(InstanceKlass::loaded)                                 \
+  declare_constant(InstanceKlass::linked)                                 \
+  declare_constant(InstanceKlass::being_initialized)                      \
+  declare_constant(InstanceKlass::fully_initialized)                      \
+  declare_constant(InstanceKlass::initialization_error)                   \
                                                                           \
   /*********************************/                                     \
   /* Symbol* - symbol max length */                                       \
@@ -2342,12 +2289,12 @@
   declare_constant(Symbol::max_symbol_length)                             \
                                                                           \
   /*************************************************/                     \
-  /* constantPoolOop layout enum for InvokeDynamic */                     \
+  /* ConstantPool* layout enum for InvokeDynamic */                     \
   /*************************************************/                     \
                                                                           \
-  declare_constant(constantPoolOopDesc::_indy_bsm_offset)                 \
-  declare_constant(constantPoolOopDesc::_indy_argc_offset)                \
-  declare_constant(constantPoolOopDesc::_indy_argv_offset)                \
+  declare_constant(ConstantPool::_indy_bsm_offset)                 \
+  declare_constant(ConstantPool::_indy_argc_offset)                \
+  declare_constant(ConstantPool::_indy_argv_offset)                \
                                                                           \
   /********************************/                                      \
   /* ConstantPoolCacheEntry enums */                                      \
@@ -3167,8 +3114,13 @@
     }
     delete s;
   }
+  const char* start = NULL;
   if (strstr(typeName, "GrowableArray<") == typeName) {
-    const char * start = typeName + strlen("GrowableArray<");
+    start = typeName + strlen("GrowableArray<");
+  } else if (strstr(typeName, "Array<") == typeName) {
+    start = typeName + strlen("Array<");
+  }
+  if (start != NULL) {
     const char * end = strrchr(typeName, '>');
     int len = end - start + 1;
     char * s = new char[len];
--- a/src/share/vm/runtime/vmStructs.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vmStructs.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -78,10 +78,10 @@
 } VMStructEntry;
 
 typedef struct {
-  const char* typeName;            // Type name (example: "methodOopDesc")
+  const char* typeName;            // Type name (example: "Method")
   const char* superclassName;      // Superclass name, or null if none (example: "oopDesc")
-  int32_t isOopType;               // Does this type represent an oop typedef? (i.e., "methodOop" or
-                                   // "klassOop", but NOT "methodOopDesc")
+  int32_t isOopType;               // Does this type represent an oop typedef? (i.e., "Method*" or
+                                   // "Klass*", but NOT "Method")
   int32_t isIntegerType;           // Does this type represent an integer type (of arbitrary size)?
   int32_t isUnsigned;              // If so, is it unsigned?
   uint64_t size;                   // Size, in bytes, of the type
--- a/src/share/vm/runtime/vmThread.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vmThread.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -26,7 +26,7 @@
 #include "compiler/compileBroker.hpp"
 #include "gc_interface/collectedHeap.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/interfaceSupport.hpp"
 #include "runtime/mutexLocker.hpp"
--- a/src/share/vm/runtime/vm_operations.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/runtime/vm_operations.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -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
@@ -56,13 +56,12 @@
   template(PrintJNI)                              \
   template(HeapDumper)                            \
   template(DeoptimizeTheWorld)                    \
+  template(CollectForMetadataAllocation)          \
   template(GC_HeapInspection)                     \
   template(GenCollectFull)                        \
   template(GenCollectFullConcurrent)              \
   template(GenCollectForAllocation)               \
-  template(GenCollectForPermanentAllocation)      \
   template(ParallelGCFailedAllocation)            \
-  template(ParallelGCFailedPermanentAllocation)   \
   template(ParallelGCSystemGC)                    \
   template(CGC_Operation)                         \
   template(CMS_Initial_Mark)                      \
--- a/src/share/vm/services/attachListener.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/attachListener.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -44,8 +44,8 @@
 // Invokes sun.misc.VMSupport.serializePropertiesToByteArray to serialize
 // the system properties into a byte array.
 
-static klassOop load_and_initialize_klass(Symbol* sh, TRAPS) {
-  klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL);
+static Klass* load_and_initialize_klass(Symbol* sh, TRAPS) {
+  Klass* k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
   if (ik->should_be_initialized()) {
     ik->initialize(CHECK_NULL);
@@ -59,7 +59,7 @@
 
   // load sun.misc.VMSupport
   Symbol* klass = vmSymbols::sun_misc_VMSupport();
-  klassOop k = load_and_initialize_klass(klass, THREAD);
+  Klass* k = load_and_initialize_klass(klass, THREAD);
   if (HAS_PENDING_EXCEPTION) {
     java_lang_Throwable::print(PENDING_EXCEPTION, out);
     CLEAR_PENDING_EXCEPTION;
@@ -456,7 +456,7 @@
 // Starts the Attach Listener thread
 void AttachListener::init() {
   EXCEPTION_MARK;
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
   instanceKlassHandle klass (THREAD, k);
   instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
 
--- a/src/share/vm/services/classLoadingService.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/classLoadingService.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -134,7 +134,7 @@
   }
 }
 
-void ClassLoadingService::notify_class_unloaded(instanceKlass* k) {
+void ClassLoadingService::notify_class_unloaded(InstanceKlass* k) {
   DTRACE_CLASSLOAD_PROBE(unloaded, k, false);
   // Classes that can be unloaded must be non-shared
   _classes_unloaded_count->inc();
@@ -146,20 +146,20 @@
 
     // Compute method size & subtract from running total.
     // We are called during phase 1 of mark sweep, so it's
-    // still ok to iterate through methodOops here.
-    objArrayOop methods = k->methods();
+    // still ok to iterate through Method*s here.
+    Array<Method*>* methods = k->methods();
     for (int i = 0; i < methods->length(); i++) {
-      _class_methods_size->inc(-methods->obj_at(i)->size());
+      _class_methods_size->inc(-methods->at(i)->size());
     }
   }
 
   if (TraceClassUnloading) {
     ResourceMark rm;
-    tty->print_cr("[Unloading class %s]", k->external_name());
+    tty->print_cr("[Unloading class %s " INTPTR_FORMAT "]", k->external_name(), k);
   }
 }
 
-void ClassLoadingService::notify_class_loaded(instanceKlass* k, bool shared_class) {
+void ClassLoadingService::notify_class_loaded(InstanceKlass* k, bool shared_class) {
   DTRACE_CLASSLOAD_PROBE(loaded, k, shared_class);
   PerfCounter* classes_counter = (shared_class ? _shared_classes_loaded_count
                                                : _classes_loaded_count);
@@ -175,20 +175,22 @@
   }
 }
 
-size_t ClassLoadingService::compute_class_size(instanceKlass* k) {
-  // lifted from ClassStatistics.do_class(klassOop k)
+size_t ClassLoadingService::compute_class_size(InstanceKlass* k) {
+  // lifted from ClassStatistics.do_class(Klass* k)
 
   size_t class_size = 0;
 
-  class_size += k->as_klassOop()->size();
+  class_size += k->size();
 
   if (k->oop_is_instance()) {
     class_size += k->methods()->size();
+    // FIXME: Need to count the contents of methods
     class_size += k->constants()->size();
     class_size += k->local_interfaces()->size();
     class_size += k->transitive_interfaces()->size();
     // We do not have to count implementors, since we only store one!
-    class_size += k->fields()->size();
+    // FIXME: How should these be accounted for, now when they have moved.
+    //class_size += k->fields()->size();
   }
   return class_size * oopSize;
 }
--- a/src/share/vm/services/classLoadingService.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/classLoadingService.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -29,7 +29,7 @@
 #include "runtime/perfData.hpp"
 #include "utilities/growableArray.hpp"
 
-class instanceKlass;
+class InstanceKlass;
 
 // VM monitoring and management support for the Class Loading subsystem
 class ClassLoadingService : public AllStatic {
@@ -48,7 +48,7 @@
 
   static PerfVariable* _class_methods_size;
 
-  static size_t compute_class_size(instanceKlass* k);
+  static size_t compute_class_size(InstanceKlass* k);
 
 public:
   static void init();
@@ -102,9 +102,9 @@
     return (UsePerfData ? _class_methods_size->get_value() : -1);
   }
 
-  static void notify_class_loaded(instanceKlass* k, bool shared_class);
+  static void notify_class_loaded(InstanceKlass* k, bool shared_class);
   // All unloaded classes are non-shared
-  static void notify_class_unloaded(instanceKlass* k);
+  static void notify_class_unloaded(InstanceKlass* k);
   static void add_class_method_size(int size) {
     if (UsePerfData) {
       _class_methods_size->inc(size);
@@ -127,12 +127,12 @@
   int num_loaded_classes()         { return _klass_handle_array->length(); }
   KlassHandle get_klass(int index) { return _klass_handle_array->at(index); }
 
-  static void add_loaded_class(klassOop k) {
+  static void add_loaded_class(Klass* k) {
     // FIXME: For now - don't include array klasses
     // The spec is unclear at this point to count array klasses or not
     // and also indirect creation of array of super class and secondaries
     //
-    // for (klassOop l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
+    // for (Klass* l = k; l != NULL; l = Klass::cast(l)->array_klass_or_null()) {
     //  KlassHandle h(_current_thread, l);
     //  _loaded_classes->append(h);
     // }
--- a/src/share/vm/services/diagnosticCommand.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/diagnosticCommand.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -171,7 +171,7 @@
 void PrintSystemPropertiesDCmd::execute(TRAPS) {
   // load sun.misc.VMSupport
   Symbol* klass = vmSymbols::sun_misc_VMSupport();
-  klassOop k = SystemDictionary::resolve_or_fail(klass, true, CHECK);
+  Klass* k = SystemDictionary::resolve_or_fail(klass, true, CHECK);
   instanceKlassHandle ik (THREAD, k);
   if (ik->should_be_initialized()) {
     ik->initialize(THREAD);
@@ -243,7 +243,7 @@
 }
 
 void RunFinalizationDCmd::execute(TRAPS) {
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(),
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_System(),
                                                  true, CHECK);
   instanceKlassHandle klass(THREAD, k);
   JavaValue result(T_VOID);
@@ -447,7 +447,7 @@
     // throw java.lang.NoSuchMethodError if the method doesn't exist
 
     Handle loader = Handle(THREAD, SystemDictionary::java_system_loader());
-    klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
+    Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
     instanceKlassHandle ik (THREAD, k);
 
     JavaValue result(T_VOID);
@@ -506,7 +506,7 @@
     // throw java.lang.NoSuchMethodError if method doesn't exist
 
     Handle loader = Handle(THREAD, SystemDictionary::java_system_loader());
-    klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
+    Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
     instanceKlassHandle ik (THREAD, k);
 
     JavaValue result(T_VOID);
@@ -524,7 +524,7 @@
     // throw java.lang.NoSuchMethodError if method doesn't exist
 
     Handle loader = Handle(THREAD, SystemDictionary::java_system_loader());
-    klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
+    Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(), loader, Handle(), true, CHECK);
     instanceKlassHandle ik (THREAD, k);
 
     JavaValue result(T_VOID);
--- a/src/share/vm/services/gcNotifier.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/gcNotifier.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -77,7 +77,7 @@
 
 static Handle getGcInfoBuilder(GCMemoryManager *gcManager,TRAPS) {
 
-  klassOop k = Management::sun_management_GarbageCollectorImpl_klass(CHECK_NH);
+  Klass* k = Management::sun_management_GarbageCollectorImpl_klass(CHECK_NH);
   instanceKlassHandle gcMBeanKlass (THREAD, k);
 
   instanceOop i = gcManager->get_memory_manager_instance(THREAD);
@@ -100,7 +100,7 @@
   // Fill the arrays of MemoryUsage objects with before and after GC
   // per pool memory usage
 
-  klassOop mu_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
+  Klass* mu_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
   instanceKlassHandle mu_kh(THREAD, mu_klass);
 
   // The array allocations below should use a handle containing mu_klass
@@ -133,7 +133,7 @@
   // The type is 'I'
   objArrayOop extra_args_array = oopFactory::new_objArray(SystemDictionary::Integer_klass(), 1, CHECK_NH);
   objArrayHandle extra_array (THREAD, extra_args_array);
-  klassOop itKlass = SystemDictionary::Integer_klass();
+  Klass* itKlass = SystemDictionary::Integer_klass();
   instanceKlassHandle intK(THREAD, itKlass);
 
   instanceHandle extra_arg_val = intK->allocate_instance_handle(CHECK_NH);
@@ -153,7 +153,7 @@
   }
   extra_array->obj_at_put(0,extra_arg_val());
 
-  klassOop gcInfoklass = Management::com_sun_management_GcInfo_klass(CHECK_NH);
+  Klass* gcInfoklass = Management::com_sun_management_GcInfo_klass(CHECK_NH);
   instanceKlassHandle ik(THREAD, gcInfoklass);
 
   Handle gcInfo_instance = ik->allocate_instance_handle(CHECK_NH);
@@ -215,7 +215,7 @@
     Handle objAction = java_lang_String::create_from_platform_dependent_str(request->gcAction, CHECK);
     Handle objCause = java_lang_String::create_from_platform_dependent_str(request->gcCause, CHECK);
 
-    klassOop k = Management::sun_management_GarbageCollectorImpl_klass(CHECK);
+    Klass* k = Management::sun_management_GarbageCollectorImpl_klass(CHECK);
     instanceKlassHandle gc_mbean_klass(THREAD, k);
 
     instanceOop gc_mbean = request->gcManager->get_memory_manager_instance(THREAD);
--- a/src/share/vm/services/heapDumper.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/heapDumper.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -608,7 +608,7 @@
   static hprofTag type2tag(BasicType type);
 
   // returns the size of the instance of the given class
-  static u4 instance_size(klassOop k);
+  static u4 instance_size(Klass* k);
 
   // dump a jfloat
   static void dump_float(DumpWriter* writer, jfloat f);
@@ -617,26 +617,26 @@
   // dumps the raw value of the given field
   static void dump_field_value(DumpWriter* writer, char type, address addr);
   // dumps static fields of the given class
-  static void dump_static_fields(DumpWriter* writer, klassOop k);
+  static void dump_static_fields(DumpWriter* writer, Klass* k);
   // dump the raw values of the instance fields of the given object
   static void dump_instance_fields(DumpWriter* writer, oop o);
   // dumps the definition of the instance fields for a given class
-  static void dump_instance_field_descriptors(DumpWriter* writer, klassOop k);
+  static void dump_instance_field_descriptors(DumpWriter* writer, Klass* k);
   // creates HPROF_GC_INSTANCE_DUMP record for the given object
   static void dump_instance(DumpWriter* writer, oop o);
   // creates HPROF_GC_CLASS_DUMP record for the given class and each of its
   // array classes
-  static void dump_class_and_array_classes(DumpWriter* writer, klassOop k);
+  static void dump_class_and_array_classes(DumpWriter* writer, Klass* k);
   // creates HPROF_GC_CLASS_DUMP record for a given primitive array
   // class (and each multi-dimensional array class too)
-  static void dump_basic_type_array_class(DumpWriter* writer, klassOop k);
+  static void dump_basic_type_array_class(DumpWriter* writer, Klass* k);
 
   // creates HPROF_GC_OBJ_ARRAY_DUMP record for the given object array
   static void dump_object_array(DumpWriter* writer, objArrayOop array);
   // creates HPROF_GC_PRIM_ARRAY_DUMP record for the given type array
   static void dump_prim_array(DumpWriter* writer, typeArrayOop array);
   // create HPROF_FRAME record for the given method and bci
-  static void dump_stack_frame(DumpWriter* writer, int frame_serial_num, int class_serial_num, methodOop m, int bci);
+  static void dump_stack_frame(DumpWriter* writer, int frame_serial_num, int class_serial_num, Method* m, int bci);
 };
 
 // write a header of the given type
@@ -719,17 +719,8 @@
       }
 
       // reflection and sun.misc.Unsafe classes may have a reference to a
-      // klassOop so filter it out.
-      if (o != NULL && o->is_klass()) {
-        o = NULL;
-      }
-
-      // FIXME: When sharing is enabled we don't emit field references to objects
-      // in shared spaces. We can remove this once we write records for the classes
-      // and strings that are shared.
-      if (o != NULL && o->is_shared()) {
-        o = NULL;
-      }
+      // Klass* so filter it out.
+      assert(o->is_oop_or_null(), "should always be an oop");
       writer->write_objectID(o);
       break;
     }
@@ -778,7 +769,7 @@
 }
 
 // returns the size of the instance of the given class
-u4 DumperSupport::instance_size(klassOop k) {
+u4 DumperSupport::instance_size(Klass* k) {
   HandleMark hm;
   instanceKlassHandle ikh = instanceKlassHandle(Thread::current(), k);
 
@@ -811,7 +802,7 @@
 }
 
 // dumps static fields of the given class
-void DumperSupport::dump_static_fields(DumpWriter* writer, klassOop k) {
+void DumperSupport::dump_static_fields(DumpWriter* writer, Klass* k) {
   HandleMark hm;
   instanceKlassHandle ikh = instanceKlassHandle(Thread::current(), k);
 
@@ -856,7 +847,7 @@
 }
 
 // dumps the definition of the instance fields for a given class
-void DumperSupport::dump_instance_field_descriptors(DumpWriter* writer, klassOop k) {
+void DumperSupport::dump_instance_field_descriptors(DumpWriter* writer, Klass* k) {
   HandleMark hm;
   instanceKlassHandle ikh = instanceKlassHandle(Thread::current(), k);
 
@@ -881,7 +872,7 @@
 
 // creates HPROF_GC_INSTANCE_DUMP record for the given object
 void DumperSupport::dump_instance(DumpWriter* writer, oop o) {
-  klassOop k = o->klass();
+  Klass* k = o->klass();
 
   writer->write_u1(HPROF_GC_INSTANCE_DUMP);
   writer->write_objectID(o);
@@ -899,10 +890,10 @@
 
 // creates HPROF_GC_CLASS_DUMP record for the given class and each of
 // its array classes
-void DumperSupport::dump_class_and_array_classes(DumpWriter* writer, klassOop k) {
+void DumperSupport::dump_class_and_array_classes(DumpWriter* writer, Klass* k) {
   Klass* klass = Klass::cast(k);
-  assert(klass->oop_is_instance(), "not an instanceKlass");
-  instanceKlass* ik = (instanceKlass*)klass;
+  assert(klass->oop_is_instance(), "not an InstanceKlass");
+  InstanceKlass* ik = (InstanceKlass*)klass;
 
   writer->write_u1(HPROF_GC_CLASS_DUMP);
 
@@ -911,9 +902,9 @@
   writer->write_u4(STACK_TRACE_ID);
 
   // super class ID
-  klassOop java_super = ik->java_super();
+  Klass* java_super = ik->java_super();
   if (java_super == NULL) {
-    writer->write_objectID(NULL);
+    writer->write_objectID(oop(NULL));
   } else {
     writer->write_classID(Klass::cast(java_super));
   }
@@ -923,8 +914,8 @@
   writer->write_objectID(ik->protection_domain());
 
   // reserved
-  writer->write_objectID(NULL);
-  writer->write_objectID(NULL);
+  writer->write_objectID(oop(NULL));
+  writer->write_objectID(oop(NULL));
 
   // instance size
   writer->write_u4(DumperSupport::instance_size(k));
@@ -957,8 +948,8 @@
     writer->write_objectID(ik->signers());
     writer->write_objectID(ik->protection_domain());
 
-    writer->write_objectID(NULL);    // reserved
-    writer->write_objectID(NULL);
+    writer->write_objectID(oop(NULL));    // reserved
+    writer->write_objectID(oop(NULL));
     writer->write_u4(0);             // instance size
     writer->write_u2(0);             // constant pool
     writer->write_u2(0);             // static fields
@@ -971,7 +962,7 @@
 
 // creates HPROF_GC_CLASS_DUMP record for a given primitive array
 // class (and each multi-dimensional array class too)
-void DumperSupport::dump_basic_type_array_class(DumpWriter* writer, klassOop k) {
+void DumperSupport::dump_basic_type_array_class(DumpWriter* writer, Klass* k) {
  // array classes
  while (k != NULL) {
     Klass* klass = Klass::cast(k);
@@ -981,16 +972,16 @@
     writer->write_u4(STACK_TRACE_ID);
 
     // super class of array classes is java.lang.Object
-    klassOop java_super = klass->java_super();
+    Klass* java_super = klass->java_super();
     assert(java_super != NULL, "checking");
     writer->write_classID(Klass::cast(java_super));
 
-    writer->write_objectID(NULL);    // loader
-    writer->write_objectID(NULL);    // signers
-    writer->write_objectID(NULL);    // protection domain
+    writer->write_objectID(oop(NULL));    // loader
+    writer->write_objectID(oop(NULL));    // signers
+    writer->write_objectID(oop(NULL));    // protection domain
 
-    writer->write_objectID(NULL);    // reserved
-    writer->write_objectID(NULL);
+    writer->write_objectID(oop(NULL));    // reserved
+    writer->write_objectID(oop(NULL));
     writer->write_u4(0);             // instance size
     writer->write_u2(0);             // constant pool
     writer->write_u2(0);             // static fields
@@ -1004,9 +995,6 @@
 // creates HPROF_GC_OBJ_ARRAY_DUMP record for the given object array
 void DumperSupport::dump_object_array(DumpWriter* writer, objArrayOop array) {
 
-  // filter this
-  if (array->klass() == Universe::systemObjArrayKlassObj()) return;
-
   writer->write_u1(HPROF_GC_OBJ_ARRAY_DUMP);
   writer->write_objectID(array);
   writer->write_u4(STACK_TRACE_ID);
@@ -1111,11 +1099,11 @@
   }
 }
 
-// create a HPROF_FRAME record of the given methodOop and bci
+// create a HPROF_FRAME record of the given Method* and bci
 void DumperSupport::dump_stack_frame(DumpWriter* writer,
                                      int frame_serial_num,
                                      int class_serial_num,
-                                     methodOop m,
+                                     Method* m,
                                      int bci) {
   int line_number;
   if (m->is_native()) {
@@ -1129,8 +1117,8 @@
   writer->write_symbolID(m->name());                // method's name
   writer->write_symbolID(m->signature());           // method's signature
 
-  assert(Klass::cast(m->method_holder())->oop_is_instance(), "not instanceKlass");
-  writer->write_symbolID(instanceKlass::cast(m->method_holder())->source_file_name());  // source file name
+  assert(Klass::cast(m->method_holder())->oop_is_instance(), "not InstanceKlass");
+  writer->write_symbolID(InstanceKlass::cast(m->method_holder())->source_file_name());  // source file name
   writer->write_u4(class_serial_num);               // class serial number
   writer->write_u4((u4) line_number);               // line number
 }
@@ -1242,7 +1230,7 @@
 
 // Support class used to generate HPROF_GC_ROOT_STICKY_CLASS records
 
-class StickyClassDumper : public OopClosure {
+class StickyClassDumper : public KlassClosure {
  private:
   DumpWriter* _writer;
   DumpWriter* writer() const                { return _writer; }
@@ -1250,23 +1238,14 @@
   StickyClassDumper(DumpWriter* writer) {
     _writer = writer;
   }
-  void do_oop(oop* obj_p);
-  void do_oop(narrowOop* obj_p) { ShouldNotReachHere(); }
-};
-
-void StickyClassDumper::do_oop(oop* obj_p) {
-  if (*obj_p != NULL) {
-    oop o = *obj_p;
-    if (o->is_klass()) {
-      klassOop k = klassOop(o);
-      if (Klass::cast(k)->oop_is_instance()) {
-        instanceKlass* ik = instanceKlass::cast(k);
+  void do_klass(Klass* k) {
+    if (k->oop_is_instance()) {
+      InstanceKlass* ik = InstanceKlass::cast(k);
         writer()->write_u1(HPROF_GC_ROOT_STICKY_CLASS);
         writer()->write_classID(ik);
       }
     }
-  }
-}
+};
 
 
 class VM_HeapDumper;
@@ -1298,9 +1277,6 @@
   // hide the sentinel for deleted handles
   if (o == JNIHandles::deleted_handle()) return;
 
-  // ignore KlassKlass objects
-  if (o->is_klass()) return;
-
   // skip classes as these emitted as HPROF_GC_CLASS_DUMP records
   if (o->klass() == SystemDictionary::Class_klass()) {
     if (!java_lang_Class::is_primitive(o)) {
@@ -1334,7 +1310,7 @@
   static DumpWriter*    _global_writer;
   DumpWriter*           _local_writer;
   JavaThread*           _oome_thread;
-  methodOop             _oome_constructor;
+  Method*               _oome_constructor;
   bool _gc_before_heap_dump;
   bool _is_segmented_dump;
   jlong _dump_start;
@@ -1364,15 +1340,15 @@
   bool skip_operation() const;
 
   // writes a HPROF_LOAD_CLASS record
-  static void do_load_class(klassOop k);
+  static void do_load_class(Klass* k);
 
   // writes a HPROF_GC_CLASS_DUMP record for the given class
   // (and each array class too)
-  static void do_class_dump(klassOop k);
+  static void do_class_dump(Klass* k);
 
   // writes a HPROF_GC_CLASS_DUMP records for a given basic type
   // array (and each multi-dimensional array too)
-  static void do_basic_type_array_class_dump(klassOop k);
+  static void do_basic_type_array_class_dump(Klass* k);
 
   // HPROF_GC_ROOT_THREAD_OBJ records
   int do_thread(JavaThread* thread, u4 thread_serial_num);
@@ -1411,7 +1387,7 @@
     if (oome) {
       assert(!Thread::current()->is_VM_thread(), "Dump from OutOfMemoryError cannot be called by the VMThread");
       // get OutOfMemoryError zero-parameter constructor
-      instanceKlass* oome_ik = instanceKlass::cast(SystemDictionary::OutOfMemoryError_klass());
+      InstanceKlass* oome_ik = InstanceKlass::cast(SystemDictionary::OutOfMemoryError_klass());
       _oome_constructor = oome_ik->find_method(vmSymbols::object_initializer_name(),
                                                           vmSymbols::void_method_signature());
       // get thread throwing OOME when generating the heap dump at OOME
@@ -1535,7 +1511,7 @@
 
 // writes a HPROF_LOAD_CLASS record for the class (and each of its
 // array classes)
-void VM_HeapDumper::do_load_class(klassOop k) {
+void VM_HeapDumper::do_load_class(Klass* k) {
   static u4 class_serial_num = 0;
 
   // len of HPROF_LOAD_CLASS record
@@ -1552,7 +1528,7 @@
     Klass* klass = Klass::cast(k);
     writer()->write_classID(klass);
 
-    // add the klassOop and class serial number pair
+    // add the Klass* and class serial number pair
     dumper()->add_class_serial_number(klass, class_serial_num);
 
     writer()->write_u4(STACK_TRACE_ID);
@@ -1567,13 +1543,13 @@
 }
 
 // writes a HPROF_GC_CLASS_DUMP record for the given class
-void VM_HeapDumper::do_class_dump(klassOop k) {
+void VM_HeapDumper::do_class_dump(Klass* k) {
   DumperSupport::dump_class_and_array_classes(writer(), k);
 }
 
 // writes a HPROF_GC_CLASS_DUMP records for a given basic type
 // array (and each multi-dimensional array too)
-void VM_HeapDumper::do_basic_type_array_class_dump(klassOop k) {
+void VM_HeapDumper::do_basic_type_array_class_dump(Klass* k) {
   DumperSupport::dump_basic_type_array_class(writer(), k);
 }
 
@@ -1785,7 +1761,7 @@
 
   // HPROF_GC_ROOT_STICKY_CLASS
   StickyClassDumper class_dumper(writer());
-  SystemDictionary::always_strong_oops_do(&class_dumper);
+  SystemDictionary::always_strong_classes_do(&class_dumper);
 
   // fixes up the length of the dump record. In the case of a segmented
   // heap then the HPROF_HEAP_DUMP_END record is also written.
@@ -1829,7 +1805,7 @@
       }
       for (int j=0; j < depth; j++) {
         StackFrameInfo* frame = stack_trace->stack_frame_at(j);
-        methodOop m = frame->method();
+        Method* m = frame->method();
         int class_serial_num = _klass_map->find(Klass::cast(m->method_holder()));
         // the class serial number starts from 1
         assert(class_serial_num > 0, "class not found");
--- a/src/share/vm/services/heapDumper.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/heapDumper.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 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
@@ -26,7 +26,6 @@
 #define SHARE_VM_SERVICES_HEAPDUMPER_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/oop.hpp"
 #include "runtime/os.hpp"
 
--- a/src/share/vm/services/lowMemoryDetector.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/lowMemoryDetector.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -295,7 +295,7 @@
   assert(count <= _pending_trigger_count, "just checking");
 
   if (_sensor_obj != NULL) {
-    klassOop k = Management::sun_management_Sensor_klass(CHECK);
+    Klass* k = Management::sun_management_Sensor_klass(CHECK);
     instanceKlassHandle sensorKlass (THREAD, k);
     Handle sensor_h(THREAD, _sensor_obj);
     Handle usage_h = MemoryService::create_MemoryUsage_obj(_usage, CHECK);
@@ -324,7 +324,7 @@
 
 void SensorInfo::clear(int count, TRAPS) {
   if (_sensor_obj != NULL) {
-    klassOop k = Management::sun_management_Sensor_klass(CHECK);
+    Klass* k = Management::sun_management_Sensor_klass(CHECK);
     instanceKlassHandle sensorKlass (THREAD, k);
     Handle sensor(THREAD, _sensor_obj);
 
--- a/src/share/vm/services/management.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/management.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -29,7 +29,6 @@
 #include "memory/oopFactory.hpp"
 #include "memory/resourceArea.hpp"
 #include "oops/klass.hpp"
-#include "oops/klassOop.hpp"
 #include "oops/objArrayKlass.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/arguments.hpp"
@@ -59,15 +58,15 @@
 PerfVariable* Management::_end_vm_creation_time = NULL;
 PerfVariable* Management::_vm_init_done_time = NULL;
 
-klassOop Management::_sensor_klass = NULL;
-klassOop Management::_threadInfo_klass = NULL;
-klassOop Management::_memoryUsage_klass = NULL;
-klassOop Management::_memoryPoolMXBean_klass = NULL;
-klassOop Management::_memoryManagerMXBean_klass = NULL;
-klassOop Management::_garbageCollectorMXBean_klass = NULL;
-klassOop Management::_managementFactory_klass = NULL;
-klassOop Management::_garbageCollectorImpl_klass = NULL;
-klassOop Management::_gcInfo_klass = NULL;
+Klass* Management::_sensor_klass = NULL;
+Klass* Management::_threadInfo_klass = NULL;
+Klass* Management::_memoryUsage_klass = NULL;
+Klass* Management::_memoryPoolMXBean_klass = NULL;
+Klass* Management::_memoryManagerMXBean_klass = NULL;
+Klass* Management::_garbageCollectorMXBean_klass = NULL;
+Klass* Management::_managementFactory_klass = NULL;
+Klass* Management::_garbageCollectorImpl_klass = NULL;
+Klass* Management::_gcInfo_klass = NULL;
 
 jmmOptionalSupport Management::_optional_support = {0};
 TimeStamp Management::_stamp;
@@ -136,7 +135,7 @@
     // Load and initialize the sun.management.Agent class
     // invoke startAgent method to start the management server
     Handle loader = Handle(THREAD, SystemDictionary::java_system_loader());
-    klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(),
+    Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::sun_management_Agent(),
                                                    loader,
                                                    Handle(),
                                                    true,
@@ -156,12 +155,15 @@
   memcpy(support, &_optional_support, sizeof(jmmOptionalSupport));
 }
 
-klassOop Management::load_and_initialize_klass(Symbol* sh, TRAPS) {
-  klassOop k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL);
+Klass* Management::load_and_initialize_klass(Symbol* sh, TRAPS) {
+  Klass* k = SystemDictionary::resolve_or_fail(sh, true, CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
   if (ik->should_be_initialized()) {
     ik->initialize(CHECK_NULL);
   }
+  // If these classes change to not be owned by the boot loader, they need
+  // to be walked to keep their class loader alive in oops_do.
+  assert(ik->class_loader() == NULL, "need to follow in oops_do");
   return ik();
 }
 
@@ -184,75 +186,65 @@
 void Management::oops_do(OopClosure* f) {
   MemoryService::oops_do(f);
   ThreadService::oops_do(f);
-
-  f->do_oop((oop*) &_sensor_klass);
-  f->do_oop((oop*) &_threadInfo_klass);
-  f->do_oop((oop*) &_memoryUsage_klass);
-  f->do_oop((oop*) &_memoryPoolMXBean_klass);
-  f->do_oop((oop*) &_memoryManagerMXBean_klass);
-  f->do_oop((oop*) &_garbageCollectorMXBean_klass);
-  f->do_oop((oop*) &_managementFactory_klass);
-  f->do_oop((oop*) &_garbageCollectorImpl_klass);
-  f->do_oop((oop*) &_gcInfo_klass);
 }
 
-klassOop Management::java_lang_management_ThreadInfo_klass(TRAPS) {
+Klass* Management::java_lang_management_ThreadInfo_klass(TRAPS) {
   if (_threadInfo_klass == NULL) {
     _threadInfo_klass = load_and_initialize_klass(vmSymbols::java_lang_management_ThreadInfo(), CHECK_NULL);
   }
   return _threadInfo_klass;
 }
 
-klassOop Management::java_lang_management_MemoryUsage_klass(TRAPS) {
+Klass* Management::java_lang_management_MemoryUsage_klass(TRAPS) {
   if (_memoryUsage_klass == NULL) {
     _memoryUsage_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryUsage(), CHECK_NULL);
   }
   return _memoryUsage_klass;
 }
 
-klassOop Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) {
+Klass* Management::java_lang_management_MemoryPoolMXBean_klass(TRAPS) {
   if (_memoryPoolMXBean_klass == NULL) {
     _memoryPoolMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryPoolMXBean(), CHECK_NULL);
   }
   return _memoryPoolMXBean_klass;
 }
 
-klassOop Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) {
+Klass* Management::java_lang_management_MemoryManagerMXBean_klass(TRAPS) {
   if (_memoryManagerMXBean_klass == NULL) {
     _memoryManagerMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_MemoryManagerMXBean(), CHECK_NULL);
   }
   return _memoryManagerMXBean_klass;
 }
 
-klassOop Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) {
+Klass* Management::java_lang_management_GarbageCollectorMXBean_klass(TRAPS) {
   if (_garbageCollectorMXBean_klass == NULL) {
       _garbageCollectorMXBean_klass = load_and_initialize_klass(vmSymbols::java_lang_management_GarbageCollectorMXBean(), CHECK_NULL);
   }
   return _garbageCollectorMXBean_klass;
 }
 
-klassOop Management::sun_management_Sensor_klass(TRAPS) {
+Klass* Management::sun_management_Sensor_klass(TRAPS) {
   if (_sensor_klass == NULL) {
     _sensor_klass = load_and_initialize_klass(vmSymbols::sun_management_Sensor(), CHECK_NULL);
   }
   return _sensor_klass;
 }
 
-klassOop Management::sun_management_ManagementFactory_klass(TRAPS) {
+Klass* Management::sun_management_ManagementFactory_klass(TRAPS) {
   if (_managementFactory_klass == NULL) {
     _managementFactory_klass = load_and_initialize_klass(vmSymbols::sun_management_ManagementFactory(), CHECK_NULL);
   }
   return _managementFactory_klass;
 }
 
-klassOop Management::sun_management_GarbageCollectorImpl_klass(TRAPS) {
+Klass* Management::sun_management_GarbageCollectorImpl_klass(TRAPS) {
   if (_garbageCollectorImpl_klass == NULL) {
     _garbageCollectorImpl_klass = load_and_initialize_klass(vmSymbols::sun_management_GarbageCollectorImpl(), CHECK_NULL);
   }
   return _garbageCollectorImpl_klass;
 }
 
-klassOop Management::com_sun_management_GcInfo_klass(TRAPS) {
+Klass* Management::com_sun_management_GcInfo_klass(TRAPS) {
   if (_gcInfo_klass == NULL) {
     _gcInfo_klass = load_and_initialize_klass(vmSymbols::com_sun_management_GcInfo(), CHECK_NULL);
   }
@@ -303,7 +295,7 @@
 
 // Helper function to construct a ThreadInfo object
 instanceOop Management::create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS) {
-  klassOop k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
 
   JavaValue result(T_VOID);
@@ -333,7 +325,7 @@
                                                     typeArrayHandle depths_array,
                                                     objArrayHandle synchronizers_array,
                                                     TRAPS) {
-  klassOop k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
 
   JavaValue result(T_VOID);
@@ -388,7 +380,7 @@
   oop mgr_obj = JNIHandles::resolve(mgr);
   instanceHandle h(THREAD, (instanceOop) mgr_obj);
 
-  klassOop k = Management::java_lang_management_GarbageCollectorMXBean_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_GarbageCollectorMXBean_klass(CHECK_NULL);
   if (!h->is_a(k)) {
     THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                "the object is not an instance of java.lang.management.GarbageCollectorMXBean class",
@@ -433,8 +425,8 @@
 
 static void validate_thread_info_array(objArrayHandle infoArray_h, TRAPS) {
   // check if the element of infoArray is of type ThreadInfo class
-  klassOop threadinfo_klass = Management::java_lang_management_ThreadInfo_klass(CHECK);
-  klassOop element_klass = objArrayKlass::cast(infoArray_h->klass())->element_klass();
+  Klass* threadinfo_klass = Management::java_lang_management_ThreadInfo_klass(CHECK);
+  Klass* element_klass = objArrayKlass::cast(infoArray_h->klass())->element_klass();
   if (element_klass != threadinfo_klass) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
               "infoArray element type is not ThreadInfo class");
@@ -574,7 +566,7 @@
   }
 
   // Allocate the resulting MemoryPoolMXBean[] object
-  klassOop k = Management::java_lang_management_MemoryPoolMXBean_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_MemoryPoolMXBean_klass(CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
   objArrayOop r = oopFactory::new_objArray(ik(), num_memory_pools, CHECK_NULL);
   objArrayHandle poolArray(THREAD, r);
@@ -619,7 +611,7 @@
   }
 
   // Allocate the resulting MemoryManagerMXBean[] object
-  klassOop k = Management::java_lang_management_MemoryManagerMXBean_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_MemoryManagerMXBean_klass(CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
   objArrayOop r = oopFactory::new_objArray(ik(), num_mgrs, CHECK_NULL);
   objArrayHandle mgrArray(THREAD, r);
@@ -696,7 +688,7 @@
     THROW(vmSymbols::java_lang_NullPointerException());
   }
 
-  klassOop sensor_klass = Management::sun_management_Sensor_klass(CHECK);
+  Klass* sensor_klass = Management::sun_management_Sensor_klass(CHECK);
   oop s = JNIHandles::resolve(sensorObj);
   assert(s->is_instance(), "Sensor should be an instanceOop");
   instanceHandle sensor_h(THREAD, (instanceOop) s);
@@ -1306,7 +1298,7 @@
   int num_snapshots = dump_result.num_snapshots();
 
   // create the result ThreadInfo[] object
-  klassOop k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
+  Klass* k = Management::java_lang_management_ThreadInfo_klass(CHECK_NULL);
   instanceKlassHandle ik (THREAD, k);
   objArrayOop r = oopFactory::new_objArray(ik(), num_snapshots, CHECK_NULL);
   objArrayHandle result_h(THREAD, r);
@@ -1723,7 +1715,7 @@
     objArrayOop ta = objArrayOop(JNIHandles::resolve_non_null(names));
     objArrayHandle names_ah(THREAD, ta);
     // Make sure we have a String array
-    klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
+    Klass* element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
     if (element_klass != SystemDictionary::String_klass()) {
       THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                  "Array element type is not String class", 0);
@@ -1877,7 +1869,7 @@
   objArrayHandle names_ah(THREAD, na);
 
   // Make sure we have a String array
-  klassOop element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
+  Klass* element_klass = objArrayKlass::cast(names_ah->klass())->element_klass();
   if (element_klass != SystemDictionary::String_klass()) {
     THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                "Array element type is not String class", 0);
@@ -1993,8 +1985,8 @@
   }
 
   // check if the element of array is of type MemoryUsage class
-  klassOop usage_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_0);
-  klassOop element_klass = objArrayKlass::cast(array_h->klass())->element_klass();
+  Klass* usage_klass = Management::java_lang_management_MemoryUsage_klass(CHECK_0);
+  Klass* element_klass = objArrayKlass::cast(array_h->klass())->element_klass();
   if (element_klass != usage_klass) {
     THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
                "The element type is not MemoryUsage class", 0);
@@ -2142,7 +2134,7 @@
   objArrayHandle cmds_ah(THREAD, ca);
 
   // Make sure we have a String array
-  klassOop element_klass = objArrayKlass::cast(cmds_ah->klass())->element_klass();
+  Klass* element_klass = objArrayKlass::cast(cmds_ah->klass())->element_klass();
   if (element_klass != SystemDictionary::String_klass()) {
     THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
                "Array element type is not String class");
--- a/src/share/vm/services/management.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/management.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -42,17 +42,17 @@
   static TimeStamp          _stamp; // Timestamp since vm init done time
 
   // Management klasses
-  static klassOop           _sensor_klass;
-  static klassOop           _threadInfo_klass;
-  static klassOop           _memoryUsage_klass;
-  static klassOop           _memoryPoolMXBean_klass;
-  static klassOop           _memoryManagerMXBean_klass;
-  static klassOop           _garbageCollectorMXBean_klass;
-  static klassOop           _managementFactory_klass;
-  static klassOop           _garbageCollectorImpl_klass;
-  static klassOop           _gcInfo_klass;
+  static Klass*             _sensor_klass;
+  static Klass*             _threadInfo_klass;
+  static Klass*             _memoryUsage_klass;
+  static Klass*             _memoryPoolMXBean_klass;
+  static Klass*             _memoryManagerMXBean_klass;
+  static Klass*             _garbageCollectorMXBean_klass;
+  static Klass*             _managementFactory_klass;
+  static Klass*             _garbageCollectorImpl_klass;
+  static Klass*             _gcInfo_klass;
 
-  static klassOop load_and_initialize_klass(Symbol* sh, TRAPS);
+  static Klass* load_and_initialize_klass(Symbol* sh, TRAPS);
 
 public:
   static void init();
@@ -83,16 +83,16 @@
     return _vm_init_done_time->get_value();
   }
 
-  // methods to return a klassOop.
-  static klassOop java_lang_management_ThreadInfo_klass(TRAPS);
-  static klassOop java_lang_management_MemoryUsage_klass(TRAPS);
-  static klassOop java_lang_management_MemoryPoolMXBean_klass(TRAPS);
-  static klassOop java_lang_management_MemoryManagerMXBean_klass(TRAPS);
-  static klassOop java_lang_management_GarbageCollectorMXBean_klass(TRAPS);
-  static klassOop sun_management_Sensor_klass(TRAPS);
-  static klassOop sun_management_ManagementFactory_klass(TRAPS);
-  static klassOop sun_management_GarbageCollectorImpl_klass(TRAPS);
-  static klassOop com_sun_management_GcInfo_klass(TRAPS);
+  // methods to return a Klass*.
+  static Klass* java_lang_management_ThreadInfo_klass(TRAPS);
+  static Klass* java_lang_management_MemoryUsage_klass(TRAPS);
+  static Klass* java_lang_management_MemoryPoolMXBean_klass(TRAPS);
+  static Klass* java_lang_management_MemoryManagerMXBean_klass(TRAPS);
+  static Klass* java_lang_management_GarbageCollectorMXBean_klass(TRAPS);
+  static Klass* sun_management_Sensor_klass(TRAPS);
+  static Klass* sun_management_ManagementFactory_klass(TRAPS);
+  static Klass* sun_management_GarbageCollectorImpl_klass(TRAPS);
+  static Klass* com_sun_management_GcInfo_klass(TRAPS);
 
   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, TRAPS);
   static instanceOop create_thread_info_instance(ThreadSnapshot* snapshot, objArrayHandle monitors_array, typeArrayHandle depths_array, objArrayHandle synchronizers_array, TRAPS);
--- a/src/share/vm/services/memPtr.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memPtr.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -43,9 +43,9 @@
 
 
 bool VMMemRegion::contains(const VMMemRegion* mr) const {
-  assert(base() != 0, "no base address");
+  assert(base() != 0, "Sanity check");
   assert(size() != 0 || committed_size() != 0,
-    "no range");
+    "Sanity check");
   address base_addr = base();
   address end_addr = base_addr +
     (is_reserve_record()? reserved_size(): committed_size());
@@ -61,14 +61,14 @@
     return (mr->base() >= base_addr &&
       (mr->base() + mr->committed_size()) <= end_addr);
   } else if (mr->is_type_tagging_record()) {
-    assert(mr->base() != 0, "no base");
-    return mr->base() == base_addr;
+    assert(mr->base() != NULL, "Sanity check");
+    return (mr->base() >= base_addr && mr->base() < end_addr);
   } else if (mr->is_release_record()) {
     assert(mr->base() != 0 && mr->size() > 0,
       "bad record");
     return (mr->base() == base_addr && mr->size() == size());
   } else {
-    assert(false, "what happened?");
+    ShouldNotReachHere();
     return false;
   }
 }
--- a/src/share/vm/services/memPtrArray.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memPtrArray.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -84,11 +84,7 @@
 
 // implementation class
 class MemPointerArrayIteratorImpl : public MemPointerArrayIterator {
-#ifdef ASSERT
  protected:
-#else
- private:
-#endif
   MemPointerArray*  _array;
   int               _pos;
 
--- a/src/share/vm/services/memSnapshot.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memSnapshot.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -31,148 +31,54 @@
 #include "services/memSnapshot.hpp"
 #include "services/memTracker.hpp"
 
-
-// stagging data groups the data of a VM memory range, so we can consolidate
-// them into one record during the walk
-bool StagingWalker::consolidate_vm_records(VMMemRegionEx* vm_rec) {
-  MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
-  assert(cur != NULL && cur->is_vm_pointer(), "not a virtual memory pointer");
-
-  jint cur_seq;
-  jint next_seq;
-
-  bool trackCallsite = MemTracker::track_callsite();
+static int sort_in_seq_order(const void* p1, const void* p2) {
+  assert(p1 != NULL && p2 != NULL, "Sanity check");
+  const MemPointerRecord* mp1 = (MemPointerRecord*)p1;
+  const MemPointerRecord* mp2 = (MemPointerRecord*)p2;
+  return (mp1->seq() - mp2->seq());
+}
 
-  if (trackCallsite) {
-    vm_rec->init((MemPointerRecordEx*)cur);
-    cur_seq = ((SeqMemPointerRecordEx*)cur)->seq();
+bool StagingArea::init() {
+  if (MemTracker::track_callsite()) {
+    _malloc_data = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecordEx>();
+    _vm_data = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecordEx>();
   } else {
-    vm_rec->init((MemPointerRecord*)cur);
-    cur_seq = ((SeqMemPointerRecord*)cur)->seq();
-  }
-
-  // only can consolidate when we have allocation record,
-  // which contains virtual memory range
-  if (!cur->is_allocation_record()) {
-    _itr.next();
-    return true;
+    _malloc_data = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecord>();
+    _vm_data = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecord>();
   }
 
-  // allocation range
-  address base = cur->addr();
-  address end = base + cur->size();
-
-  MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next();
-  // if the memory range is alive
-  bool live_vm_rec = true;
-  while (next != NULL && next->is_vm_pointer()) {
-    if (next->is_allocation_record()) {
-      assert(next->addr() >= base, "sorting order or overlapping");
-      break;
-    }
-
-    if (trackCallsite) {
-      next_seq = ((SeqMemPointerRecordEx*)next)->seq();
-    } else {
-      next_seq = ((SeqMemPointerRecord*)next)->seq();
-    }
-
-    if (next_seq < cur_seq) {
-      _itr.next();
-      next = (MemPointerRecord*)_itr.peek_next();
-      continue;
-    }
-
-    if (next->is_deallocation_record()) {
-      if (next->addr() == base && next->size() == cur->size()) {
-        // the virtual memory range has been released
-        _itr.next();
-        live_vm_rec = false;
-        break;
-      } else if (next->addr() < end) { // partial release
-        vm_rec->partial_release(next->addr(), next->size());
-        _itr.next();
-      } else {
-        break;
-      }
-    } else if (next->is_commit_record()) {
-      if (next->addr() >= base && next->addr() + next->size() <= end) {
-        vm_rec->commit(next->size());
-        _itr.next();
-      } else {
-        assert(next->addr() >= base, "sorting order or overlapping");
-        break;
-      }
-    } else if (next->is_uncommit_record()) {
-      if (next->addr() >= base && next->addr() + next->size() <= end) {
-        vm_rec->uncommit(next->size());
-        _itr.next();
-      } else {
-        assert(next->addr() >= end, "sorting order or overlapping");
-        break;
-      }
-    } else if (next->is_type_tagging_record()) {
-      if (next->addr() >= base && next->addr() < end ) {
-        vm_rec->tag(next->flags());
-        _itr.next();
-      } else {
-          break;
-      }
-    } else {
-      assert(false, "unknown record type");
-    }
-    next = (MemPointerRecord*)_itr.peek_next();
+  if (_malloc_data != NULL && _vm_data != NULL &&
+      !_malloc_data->out_of_memory() &&
+      !_vm_data->out_of_memory()) {
+    return true;
+  } else {
+    if (_malloc_data != NULL) delete _malloc_data;
+    if (_vm_data != NULL) delete _vm_data;
+    _malloc_data = NULL;
+    _vm_data = NULL;
+    return false;
   }
-  _itr.next();
-  return live_vm_rec;
 }
 
-MemPointer* StagingWalker::next() {
-  MemPointerRecord* cur_p = (MemPointerRecord*)_itr.current();
-  if (cur_p == NULL) {
-    _end_of_array = true;
-    return NULL;
-  }
 
-  MemPointerRecord* next_p;
-  if (cur_p->is_vm_pointer()) {
-    _is_vm_record = true;
-    if (!consolidate_vm_records(&_vm_record)) {
-      return next();
-    }
-  } else { // malloc-ed pointer
-    _is_vm_record = false;
-    next_p = (MemPointerRecord*)_itr.peek_next();
-    if (next_p != NULL && next_p->addr() == cur_p->addr()) {
-      assert(cur_p->is_allocation_record(), "sorting order");
-      assert(!next_p->is_allocation_record(), "sorting order");
-      _itr.next();
-      if (cur_p->seq() < next_p->seq()) {
-        cur_p = next_p;
-      }
-    }
-    if (MemTracker::track_callsite()) {
-      _malloc_record.init((MemPointerRecordEx*)cur_p);
-    } else {
-      _malloc_record.init((MemPointerRecord*)cur_p);
-    }
+MemPointerArrayIteratorImpl StagingArea::virtual_memory_record_walker() {
+  MemPointerArray* arr = vm_data();
+  // sort into seq number order
+  arr->sort((FN_SORT)sort_in_seq_order);
+  return MemPointerArrayIteratorImpl(arr);
+}
 
-    _itr.next();
-  }
-  return current();
-}
 
 MemSnapshot::MemSnapshot() {
   if (MemTracker::track_callsite()) {
     _alloc_ptrs = new (std::nothrow) MemPointerArrayImpl<MemPointerRecordEx>();
     _vm_ptrs = new (std::nothrow)MemPointerArrayImpl<VMMemRegionEx>(64, true);
-    _staging_area = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecordEx>();
   } else {
     _alloc_ptrs = new (std::nothrow) MemPointerArrayImpl<MemPointerRecord>();
     _vm_ptrs = new (std::nothrow)MemPointerArrayImpl<VMMemRegion>(64, true);
-    _staging_area = new (std::nothrow)MemPointerArrayImpl<SeqMemPointerRecord>();
   }
 
+  _staging_area.init();
   _lock = new (std::nothrow) Mutex(Monitor::max_nonleaf - 1, "memSnapshotLock");
   NOT_PRODUCT(_untracked_count = 0;)
 }
@@ -181,11 +87,6 @@
   assert(MemTracker::shutdown_in_progress(), "native memory tracking still on");
   {
     MutexLockerEx locker(_lock);
-    if (_staging_area != NULL) {
-      delete _staging_area;
-      _staging_area = NULL;
-    }
-
     if (_alloc_ptrs != NULL) {
       delete _alloc_ptrs;
       _alloc_ptrs = NULL;
@@ -221,62 +122,64 @@
 bool MemSnapshot::merge(MemRecorder* rec) {
   assert(rec != NULL && !rec->out_of_memory(), "Just check");
 
-  // out of memory
-  if (_staging_area == NULL || _staging_area->out_of_memory()) {
-    return false;
-  }
-
   SequencedRecordIterator itr(rec->pointer_itr());
 
   MutexLockerEx lock(_lock, true);
-  MemPointerIterator staging_itr(_staging_area);
+  MemPointerIterator malloc_staging_itr(_staging_area.malloc_data());
   MemPointerRecord *p1, *p2;
   p1 = (MemPointerRecord*) itr.current();
   while (p1 != NULL) {
-    p2 = (MemPointerRecord*)staging_itr.locate(p1->addr());
-    // we have not seen this memory block, so just add to staging area
-    if (p2 == NULL) {
-      if (!staging_itr.insert(p1)) {
+    if (p1->is_vm_pointer()) {
+      // we don't do anything with virtual memory records during merge
+      if (!_staging_area.vm_data()->append(p1)) {
         return false;
       }
-    } else if (p1->addr() == p2->addr()) {
-      MemPointerRecord* staging_next = (MemPointerRecord*)staging_itr.peek_next();
-      // a memory block can have many tagging records, find right one to replace or
-      // right position to insert
-      while (staging_next != NULL && staging_next->addr() == p1->addr()) {
-        if ((staging_next->flags() & MemPointerRecord::tag_masks) <=
-          (p1->flags() & MemPointerRecord::tag_masks)) {
-          p2 = (MemPointerRecord*)staging_itr.next();
-          staging_next = (MemPointerRecord*)staging_itr.peek_next();
-        } else {
-          break;
+    } else {
+      p2 = (MemPointerRecord*)malloc_staging_itr.locate(p1->addr());
+      // we have not seen this memory block, so just add to staging area
+      if (p2 == NULL) {
+        if (!malloc_staging_itr.insert(p1)) {
+          return false;
+        }
+      } else if (p1->addr() == p2->addr()) {
+        MemPointerRecord* staging_next = (MemPointerRecord*)malloc_staging_itr.peek_next();
+        // a memory block can have many tagging records, find right one to replace or
+        // right position to insert
+        while (staging_next != NULL && staging_next->addr() == p1->addr()) {
+          if ((staging_next->flags() & MemPointerRecord::tag_masks) <=
+            (p1->flags() & MemPointerRecord::tag_masks)) {
+            p2 = (MemPointerRecord*)malloc_staging_itr.next();
+            staging_next = (MemPointerRecord*)malloc_staging_itr.peek_next();
+          } else {
+            break;
+          }
         }
-      }
-      int df = (p1->flags() & MemPointerRecord::tag_masks) -
-        (p2->flags() & MemPointerRecord::tag_masks);
-      if (df == 0) {
-        assert(p1->seq() > 0, "not sequenced");
-        assert(p2->seq() > 0, "not sequenced");
-        if (p1->seq() > p2->seq()) {
-          copy_pointer(p2, p1);
+        int df = (p1->flags() & MemPointerRecord::tag_masks) -
+          (p2->flags() & MemPointerRecord::tag_masks);
+        if (df == 0) {
+          assert(p1->seq() > 0, "not sequenced");
+          assert(p2->seq() > 0, "not sequenced");
+          if (p1->seq() > p2->seq()) {
+            copy_pointer(p2, p1);
+          }
+        } else if (df < 0) {
+          if (!malloc_staging_itr.insert(p1)) {
+            return false;
+          }
+        } else {
+          if (!malloc_staging_itr.insert_after(p1)) {
+            return false;
+          }
         }
-      } else if (df < 0) {
-        if (!staging_itr.insert(p1)) {
+      } else if (p1->addr() < p2->addr()) {
+        if (!malloc_staging_itr.insert(p1)) {
           return false;
         }
       } else {
-        if (!staging_itr.insert_after(p1)) {
+        if (!malloc_staging_itr.insert_after(p1)) {
           return false;
         }
       }
-    } else if (p1->addr() < p2->addr()) {
-      if (!staging_itr.insert(p1)) {
-        return false;
-      }
-    } else {
-      if (!staging_itr.insert_after(p1)) {
-        return false;
-      }
     }
     p1 = (MemPointerRecord*)itr.next();
   }
@@ -287,123 +190,180 @@
 
 
 // promote data to next generation
-void MemSnapshot::promote() {
-  assert(_alloc_ptrs != NULL && _staging_area != NULL && _vm_ptrs != NULL,
-    "Just check");
+bool MemSnapshot::promote() {
+  assert(_alloc_ptrs != NULL && _vm_ptrs != NULL, "Just check");
+  assert(_staging_area.malloc_data() != NULL && _staging_area.vm_data() != NULL,
+         "Just check");
   MutexLockerEx lock(_lock, true);
-  StagingWalker walker(_staging_area);
-  MemPointerIterator malloc_itr(_alloc_ptrs);
-  VMMemPointerIterator vm_itr(_vm_ptrs);
-  MemPointer* cur = walker.current();
-  while (cur != NULL) {
-    if (walker.is_vm_record()) {
-      VMMemRegion* cur_vm = (VMMemRegion*)cur;
-      VMMemRegion* p = (VMMemRegion*)vm_itr.locate(cur_vm->addr());
-      cur_vm = (VMMemRegion*)cur;
-      if (p != NULL && (p->contains(cur_vm) || p->base() == cur_vm->base())) {
-        assert(p->is_reserve_record() ||
-          p->is_commit_record(), "wrong vm record type");
-        // resize existing reserved range
-        if (cur_vm->is_reserve_record() && p->base() == cur_vm->base()) {
-          assert(cur_vm->size() >= p->committed_size(), "incorrect resizing");
-          p->set_reserved_size(cur_vm->size());
-        } else if (cur_vm->is_commit_record()) {
-          p->commit(cur_vm->committed_size());
-        } else if (cur_vm->is_uncommit_record()) {
-          p->uncommit(cur_vm->committed_size());
-          if (!p->is_reserve_record() && p->committed_size() == 0) {
-            vm_itr.remove();
+
+  MallocRecordIterator  malloc_itr = _staging_area.malloc_record_walker();
+  bool promoted = false;
+  if (promote_malloc_records(&malloc_itr)) {
+    MemPointerArrayIteratorImpl vm_itr = _staging_area.virtual_memory_record_walker();
+    if (promote_virtual_memory_records(&vm_itr)) {
+      promoted = true;
+    }
+  }
+
+  NOT_PRODUCT(check_malloc_pointers();)
+  _staging_area.clear();
+  return promoted;
+}
+
+bool MemSnapshot::promote_malloc_records(MemPointerArrayIterator* itr) {
+  MemPointerIterator malloc_snapshot_itr(_alloc_ptrs);
+  MemPointerRecord* new_rec = (MemPointerRecord*)itr->current();
+  MemPointerRecord* matched_rec;
+  while (new_rec != NULL) {
+    matched_rec = (MemPointerRecord*)malloc_snapshot_itr.locate(new_rec->addr());
+    // found matched memory block
+    if (matched_rec != NULL && new_rec->addr() == matched_rec->addr()) {
+      // snapshot already contains 'lived' records
+      assert(matched_rec->is_allocation_record() || matched_rec->is_arena_size_record(),
+             "Sanity check");
+      // update block states
+      if (new_rec->is_allocation_record() || new_rec->is_arena_size_record()) {
+        copy_pointer(matched_rec, new_rec);
+      } else {
+        // a deallocation record
+        assert(new_rec->is_deallocation_record(), "Sanity check");
+        // an arena record can be followed by a size record, we need to remove both
+        if (matched_rec->is_arena_record()) {
+          MemPointerRecord* next = (MemPointerRecord*)malloc_snapshot_itr.peek_next();
+          if (next->is_arena_size_record()) {
+            // it has to match the arena record
+            assert(next->is_size_record_of_arena(matched_rec), "Sanity check");
+            malloc_snapshot_itr.remove();
           }
-        } else if (cur_vm->is_type_tagging_record()) {
-          p->tag(cur_vm->flags());
-        } else if (cur_vm->is_release_record()) {
-          if (cur_vm->base() == p->base() && cur_vm->size() == p->size()) {
-            // release the whole range
-            vm_itr.remove();
+        }
+        // the memory is deallocated, remove related record(s)
+        malloc_snapshot_itr.remove();
+      }
+    } else {
+      // it is a new record, insert into snapshot
+      if (new_rec->is_arena_size_record()) {
+        MemPointerRecord* prev = (MemPointerRecord*)malloc_snapshot_itr.peek_prev();
+        if (prev == NULL || !prev->is_arena_record() || !new_rec->is_size_record_of_arena(prev)) {
+          // no matched arena record, ignore the size record
+          new_rec = NULL;
+        }
+      }
+      // only 'live' record can go into snapshot
+      if (new_rec != NULL) {
+        if  (new_rec->is_allocation_record() || new_rec->is_arena_size_record()) {
+          if (matched_rec != NULL && new_rec->addr() > matched_rec->addr()) {
+            if (!malloc_snapshot_itr.insert_after(new_rec)) {
+              return false;
+            }
           } else {
-            // partial release
-            p->partial_release(cur_vm->base(), cur_vm->size());
+            if (!malloc_snapshot_itr.insert(new_rec)) {
+              return false;
+            }
           }
-        } else {
-          // we do see multiple reserver on the same vm range
-          assert((cur_vm->is_commit_record() || cur_vm->is_reserve_record()) &&
-             cur_vm->base() == p->base() && cur_vm->size() == p->size(), "bad record");
-          p->tag(cur_vm->flags());
+        }
+#ifndef PRODUCT
+        else if (!has_allocation_record(new_rec->addr())) {
+          // NMT can not track some startup memory, which is allocated before NMT is on
+          _untracked_count ++;
         }
-      } else {
-        if(cur_vm->is_reserve_record()) {
-          if (p == NULL || p->base() > cur_vm->base()) {
-            vm_itr.insert(cur_vm);
-          } else {
-            vm_itr.insert_after(cur_vm);
+#endif
+      }
+    }
+    new_rec = (MemPointerRecord*)itr->next();
+  }
+  return true;
+}
+
+bool MemSnapshot::promote_virtual_memory_records(MemPointerArrayIterator* itr) {
+  VMMemPointerIterator vm_snapshot_itr(_vm_ptrs);
+  MemPointerRecord* new_rec = (MemPointerRecord*)itr->current();
+  VMMemRegionEx new_vm_rec;
+  VMMemRegion*  matched_rec;
+  while (new_rec != NULL) {
+    assert(new_rec->is_vm_pointer(), "Sanity check");
+    if (MemTracker::track_callsite()) {
+      new_vm_rec.init((MemPointerRecordEx*)new_rec);
+    } else {
+      new_vm_rec.init(new_rec);
+    }
+    matched_rec = (VMMemRegion*)vm_snapshot_itr.locate(new_rec->addr());
+    if (matched_rec != NULL &&
+        (matched_rec->contains(&new_vm_rec) || matched_rec->base() == new_vm_rec.base())) {
+      // snapshot can only have 'live' records
+      assert(matched_rec->is_reserve_record(), "Sanity check");
+      if (new_vm_rec.is_reserve_record() && matched_rec->base() == new_vm_rec.base()) {
+        // resize reserved virtual memory range
+        // resize has to cover committed area
+        assert(new_vm_rec.size() >= matched_rec->committed_size(), "Sanity check");
+        matched_rec->set_reserved_size(new_vm_rec.size());
+      } else if (new_vm_rec.is_commit_record()) {
+        // commit memory inside reserved memory range
+        assert(new_vm_rec.committed_size() <= matched_rec->reserved_size(), "Sanity check");
+        // thread stacks are marked committed, so we ignore 'commit' record for creating
+        // stack guard pages
+        if (FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) != mtThreadStack) {
+          matched_rec->commit(new_vm_rec.committed_size());
+        }
+      } else if (new_vm_rec.is_uncommit_record()) {
+        if (FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == mtThreadStack) {
+          // ignore 'uncommit' record from removing stack guard pages, uncommit
+          // thread stack as whole
+          if (matched_rec->committed_size() == new_vm_rec.committed_size()) {
+            matched_rec->uncommit(new_vm_rec.committed_size());
           }
         } else {
-          // In theory, we should assert without conditions. However, in case of native
-          // thread stack, NMT explicitly releases the thread stack in Thread's destructor,
-          // due to platform dependent behaviors. On some platforms, we see uncommit/release
-          // native thread stack, but some, we don't.
-          assert(cur_vm->is_uncommit_record() || cur_vm->is_deallocation_record(),
-            err_msg("Should not reach here, pointer addr = [" INTPTR_FORMAT "], flags = [%x]",
-               cur_vm->addr(), cur_vm->flags()));
+          // uncommit memory inside reserved memory range
+          assert(new_vm_rec.committed_size() <= matched_rec->committed_size(),
+                "Sanity check");
+          matched_rec->uncommit(new_vm_rec.committed_size());
         }
-      }
-    } else {
-      MemPointerRecord* cur_p = (MemPointerRecord*)cur;
-      MemPointerRecord* p = (MemPointerRecord*)malloc_itr.locate(cur->addr());
-      if (p != NULL && cur_p->addr() == p->addr()) {
-        assert(p->is_allocation_record() || p->is_arena_size_record(), "untracked");
-        if (cur_p->is_allocation_record() || cur_p->is_arena_size_record()) {
-          copy_pointer(p, cur_p);
-        } else {   // deallocation record
-          assert(cur_p->is_deallocation_record(), "wrong record type");
-
-          // we are removing an arena record, we also need to remove its 'size'
-          // record behind it
-          if (p->is_arena_record()) {
-            MemPointerRecord* next_p = (MemPointerRecord*)malloc_itr.peek_next();
-            if (next_p->is_arena_size_record()) {
-              assert(next_p->is_size_record_of_arena(p), "arena records dont match");
-              malloc_itr.remove();
-            }
-          }
-          malloc_itr.remove();
+      } else if (new_vm_rec.is_type_tagging_record()) {
+        // tag this virtual memory range to a memory type
+        // can not re-tag a memory range to different type
+        assert(FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == mtNone ||
+               FLAGS_TO_MEMORY_TYPE(matched_rec->flags()) == FLAGS_TO_MEMORY_TYPE(new_vm_rec.flags()),
+               "Sanity check");
+        matched_rec->tag(new_vm_rec.flags());
+      } else if (new_vm_rec.is_release_record()) {
+        // release part or whole memory range
+        if (new_vm_rec.base() == matched_rec->base() &&
+            new_vm_rec.size() == matched_rec->size()) {
+          // release whole virtual memory range
+          assert(matched_rec->committed_size() == 0, "Sanity check");
+          vm_snapshot_itr.remove();
+        } else {
+          // partial release
+          matched_rec->partial_release(new_vm_rec.base(), new_vm_rec.size());
         }
       } else {
-        if (cur_p->is_arena_size_record()) {
-          MemPointerRecord* prev_p = (MemPointerRecord*)malloc_itr.peek_prev();
-          if (prev_p != NULL &&
-             (!prev_p->is_arena_record() || !cur_p->is_size_record_of_arena(prev_p))) {
-            // arena already deallocated
-            cur_p = NULL;
+        // multiple reserve/commit on the same virtual memory range
+        assert((new_vm_rec.is_reserve_record() || new_vm_rec.is_commit_record()) &&
+          (new_vm_rec.base() == matched_rec->base() && new_vm_rec.size() == matched_rec->size()),
+          "Sanity check");
+        matched_rec->tag(new_vm_rec.flags());
+      }
+    } else {
+      // no matched record
+      if (new_vm_rec.is_reserve_record()) {
+        if (matched_rec == NULL || matched_rec->base() > new_vm_rec.base()) {
+          if (!vm_snapshot_itr.insert(&new_vm_rec)) {
+            return false;
+          }
+        } else {
+          if (!vm_snapshot_itr.insert_after(&new_vm_rec)) {
+            return false;
           }
         }
-        if (cur_p != NULL) {
-          if (cur_p->is_allocation_record() || cur_p->is_arena_size_record()) {
-            if (p != NULL && cur_p->addr() > p->addr()) {
-              malloc_itr.insert_after(cur);
-            } else {
-              malloc_itr.insert(cur);
-            }
-          }
-#ifndef PRODUCT
-          else if (!has_allocation_record(cur_p->addr())){
-            // NMT can not track some startup memory, which allocated before NMT
-            // is enabled
-            _untracked_count ++;
-          }
-#endif
-        }
+      } else {
+        // throw out obsolete records, which are the commit/uncommit/release/tag records
+        // on memory regions that are already released.
       }
-    }
-
-    cur = walker.next();
+  }
+    new_rec = (MemPointerRecord*)itr->next();
   }
-  NOT_PRODUCT(check_malloc_pointers();)
-  _staging_area->shrink();
-  _staging_area->clear();
+  return true;
 }
 
-
 #ifndef PRODUCT
 void MemSnapshot::print_snapshot_stats(outputStream* st) {
   st->print_cr("Snapshot:");
@@ -413,8 +373,15 @@
   st->print_cr("\tVM: %d/%d [%5.2f%%] %dKB", _vm_ptrs->length(), _vm_ptrs->capacity(),
     (100.0 * (float)_vm_ptrs->length()) / (float)_vm_ptrs->capacity(), _vm_ptrs->instance_size()/K);
 
-  st->print_cr("\tStaging:     %d/%d [%5.2f%%] %dKB", _staging_area->length(), _staging_area->capacity(),
-    (100.0 * (float)_staging_area->length()) / (float)_staging_area->capacity(), _staging_area->instance_size()/K);
+  st->print_cr("\tMalloc staging Area:     %d/%d [%5.2f%%] %dKB", _staging_area.malloc_data()->length(),
+    _staging_area.malloc_data()->capacity(),
+    (100.0 * (float)_staging_area.malloc_data()->length()) / (float)_staging_area.malloc_data()->capacity(),
+    _staging_area.malloc_data()->instance_size()/K);
+
+  st->print_cr("\tVirtual memory staging Area:     %d/%d [%5.2f%%] %dKB", _staging_area.vm_data()->length(),
+    _staging_area.vm_data()->capacity(),
+    (100.0 * (float)_staging_area.vm_data()->length()) / (float)_staging_area.vm_data()->capacity(),
+    _staging_area.vm_data()->instance_size()/K);
 
   st->print_cr("\tUntracked allocation: %d", _untracked_count);
 }
@@ -433,7 +400,7 @@
 }
 
 bool MemSnapshot::has_allocation_record(address addr) {
-  MemPointerArrayIteratorImpl itr(_staging_area);
+  MemPointerArrayIteratorImpl itr(_staging_area.malloc_data());
   MemPointerRecord* cur = (MemPointerRecord*)itr.current();
   while (cur != NULL) {
     if (cur->addr() == addr && cur->is_allocation_record()) {
@@ -447,7 +414,7 @@
 
 #ifdef ASSERT
 void MemSnapshot::check_staging_data() {
-  MemPointerArrayIteratorImpl itr(_staging_area);
+  MemPointerArrayIteratorImpl itr(_staging_area.malloc_data());
   MemPointerRecord* cur = (MemPointerRecord*)itr.current();
   MemPointerRecord* next = (MemPointerRecord*)itr.next();
   while (next != NULL) {
@@ -458,6 +425,13 @@
     cur = next;
     next = (MemPointerRecord*)itr.next();
   }
+
+  MemPointerArrayIteratorImpl vm_itr(_staging_area.vm_data());
+  cur = (MemPointerRecord*)vm_itr.current();
+  while (cur != NULL) {
+    assert(cur->is_vm_pointer(), "virtual memory pointer only");
+    cur = (MemPointerRecord*)vm_itr.next();
+  }
 }
 #endif // ASSERT
 
--- a/src/share/vm/services/memSnapshot.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memSnapshot.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -111,37 +111,31 @@
       MemPointerIterator(arr) {
   }
 
-  // locate an exiting record that contains specified address, or
+  // locate an existing record that contains specified address, or
   // the record, where the record with specified address, should
-  // be inserted
+  // be inserted.
+  // virtual memory record array is sorted in address order, so
+  // binary search is performed
   virtual MemPointer* locate(address addr) {
-    VMMemRegion* cur = (VMMemRegion*)current();
-    VMMemRegion* next_p;
-
-    while (cur != NULL) {
-      if (cur->base() > addr) {
-        return cur;
+    int index_low = 0;
+    int index_high = _array->length();
+    int index_mid = (index_high + index_low) / 2;
+    int r = 1;
+    while (index_low < index_high && (r = compare(index_mid, addr)) != 0) {
+      if (r > 0) {
+        index_high = index_mid;
       } else {
-        // find nearest existing range that has base address <= addr
-        next_p = (VMMemRegion*)peek_next();
-        if (next_p != NULL && next_p->base() <= addr) {
-          cur = (VMMemRegion*)next();
-          continue;
-        }
+        index_low = index_mid;
       }
-
-      if (cur->is_reserve_record() &&
-        cur->base() <= addr &&
-        (cur->base() + cur->size() > addr)) {
-          return cur;
-      } else if (cur->is_commit_record() &&
-        cur->base() <= addr &&
-        (cur->base() + cur->committed_size() > addr)) {
-          return cur;
-      }
-      cur = (VMMemRegion*)next();
+      index_mid = (index_high + index_low) / 2;
     }
-    return NULL;
+    if (r == 0) {
+      // update current location
+      _pos = index_mid;
+      return _array->at(index_mid);
+    } else {
+      return NULL;
+    }
   }
 
 #ifdef ASSERT
@@ -160,75 +154,99 @@
            (p1->flags() & MemPointerRecord::tag_masks) == MemPointerRecord::tag_release;
   }
 #endif
+  // compare if an address falls into a memory region,
+  // return 0, if the address falls into a memory region at specified index
+  // return 1, if memory region pointed by specified index is higher than the address
+  // return -1, if memory region pointed by specified index is lower than the address
+  int compare(int index, address addr) const {
+    VMMemRegion* r = (VMMemRegion*)_array->at(index);
+    assert(r->is_reserve_record(), "Sanity check");
+    if (r->addr() > addr) {
+      return 1;
+    } else if (r->addr() + r->reserved_size() <= addr) {
+      return -1;
+    } else {
+      return 0;
+    }
+  }
 };
 
-class StagingWalker : public MemPointerArrayIterator {
+class MallocRecordIterator : public MemPointerArrayIterator {
  private:
   MemPointerArrayIteratorImpl  _itr;
-  bool                         _is_vm_record;
-  bool                         _end_of_array;
-  VMMemRegionEx                _vm_record;
-  MemPointerRecordEx           _malloc_record;
 
  public:
-  StagingWalker(MemPointerArray* arr): _itr(arr) {
-    _end_of_array = false;
-    next();
+  MallocRecordIterator(MemPointerArray* arr) : _itr(arr) {
   }
 
-  // return the pointer at current position
   MemPointer* current() const {
-    if (_end_of_array) {
-      return NULL;
-    }
-    if (is_vm_record()) {
-      return (MemPointer*)&_vm_record;
+    MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
+    assert(cur == NULL || !cur->is_vm_pointer(), "seek error");
+    MemPointerRecord* next = (MemPointerRecord*)_itr.peek_next();
+    if (next == NULL || next->addr() != cur->addr()) {
+      return cur;
     } else {
-      return (MemPointer*)&_malloc_record;
+      assert(!cur->is_vm_pointer(), "Sanity check");
+      assert(cur->is_allocation_record() && next->is_deallocation_record(),
+             "sorting order");
+      assert(cur->seq() != next->seq(), "Sanity check");
+      return cur->seq() >  next->seq() ? cur : next;
     }
   }
 
-  // return the next pointer and advance current position
-  MemPointer* next();
-
-  // type of 'current' record
-  bool is_vm_record() const {
-    return _is_vm_record;
-  }
-
-  // return the next poinger without advancing current position
-  MemPointer* peek_next() const {
-    assert(false, "not supported");
-    return NULL;
+  MemPointer* next() {
+    MemPointerRecord* cur = (MemPointerRecord*)_itr.current();
+    assert(cur == NULL || !cur->is_vm_pointer(), "Sanity check");
+    MemPointerRecord* next = (MemPointerRecord*)_itr.next();
+    if (next == NULL) {
+      return NULL;
+    }
+    if (cur->addr() == next->addr()) {
+      next = (MemPointerRecord*)_itr.next();
+    }
+    return current();
   }
 
-  MemPointer* peek_prev() const {
-    assert(false, "not supported");
-    return NULL;
-  }
-  // remove the pointer at current position
-  void remove() {
-    assert(false, "not supported");
+  MemPointer* peek_next() const      { ShouldNotReachHere(); return NULL; }
+  MemPointer* peek_prev() const      { ShouldNotReachHere(); return NULL; }
+  void remove()                      { ShouldNotReachHere(); }
+  bool insert(MemPointer* ptr)       { ShouldNotReachHere(); return false; }
+  bool insert_after(MemPointer* ptr) { ShouldNotReachHere(); return false; }
+};
+
+class StagingArea : public _ValueObj {
+ private:
+  MemPointerArray*   _malloc_data;
+  MemPointerArray*   _vm_data;
+
+ public:
+  StagingArea() : _malloc_data(NULL), _vm_data(NULL) {
+    init();
   }
 
-  // insert the pointer at current position
-  bool insert(MemPointer* ptr) {
-    assert(false, "not supported");
-    return false;
+  ~StagingArea() {
+    if (_malloc_data != NULL) delete _malloc_data;
+    if (_vm_data != NULL) delete _vm_data;
+  }
+
+  MallocRecordIterator malloc_record_walker() {
+    return MallocRecordIterator(malloc_data());
   }
 
-  bool insert_after(MemPointer* ptr) {
-    assert(false, "not supported");
-    return false;
+  MemPointerArrayIteratorImpl virtual_memory_record_walker();
+  bool init();
+  void clear() {
+    assert(_malloc_data != NULL && _vm_data != NULL, "Just check");
+    _malloc_data->shrink();
+    _malloc_data->clear();
+    _vm_data->clear();
   }
 
- private:
-  // consolidate all records referring to this vm region
-  bool consolidate_vm_records(VMMemRegionEx* vm_rec);
+  inline MemPointerArray* malloc_data() { return _malloc_data; }
+  inline MemPointerArray* vm_data()     { return _vm_data; }
 };
 
 class MemBaseline;
-
 class MemSnapshot : public CHeapObj<mtNMT> {
  private:
   // the following two arrays contain records of all known lived memory blocks
@@ -237,9 +255,7 @@
   // live virtual memory pointers
   MemPointerArray*      _vm_ptrs;
 
-  // stagging a generation's data, before
-  // it can be prompted to snapshot
-  MemPointerArray*      _staging_area;
+  StagingArea           _staging_area;
 
   // the lock to protect this snapshot
   Monitor*              _lock;
@@ -252,18 +268,19 @@
   virtual ~MemSnapshot();
 
   // if we are running out of native memory
-  bool out_of_memory() const {
-    return (_alloc_ptrs == NULL || _staging_area == NULL ||
+  bool out_of_memory() {
+    return (_alloc_ptrs == NULL ||
+      _staging_area.malloc_data() == NULL ||
+      _staging_area.vm_data() == NULL ||
       _vm_ptrs == NULL || _lock == NULL ||
       _alloc_ptrs->out_of_memory() ||
-      _staging_area->out_of_memory() ||
       _vm_ptrs->out_of_memory());
   }
 
   // merge a per-thread memory recorder into staging area
   bool merge(MemRecorder* rec);
   // promote staged data to snapshot
-  void promote();
+  bool promote();
 
 
   void wait(long timeout) {
@@ -280,6 +297,9 @@
  private:
    // copy pointer data from src to dest
    void copy_pointer(MemPointerRecord* dest, const MemPointerRecord* src);
+
+   bool promote_malloc_records(MemPointerArrayIterator* itr);
+   bool promote_virtual_memory_records(MemPointerArrayIterator* itr);
 };
 
 
--- a/src/share/vm/services/memTrackWorker.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memTrackWorker.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -118,7 +118,10 @@
           _head = (_head + 1) % MAX_GENERATIONS;
         }
         // promote this generation data to snapshot
-        snapshot->promote();
+        if (!snapshot->promote()) {
+          // failed to promote, means out of memory
+          MemTracker::shutdown(MemTracker::NMT_out_of_memory);
+        }
       } else {
         snapshot->wait(1000);
         ThreadCritical tc;
--- a/src/share/vm/services/memTracker.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memTracker.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -39,7 +39,7 @@
 #include "thread_solaris.inline.hpp"
 #endif
 
-#ifdef _DEBUG_
+#ifdef _DEBUG
   #define DEBUG_CALLER_PC  os::get_caller_pc(3)
 #else
   #define DEBUG_CALLER_PC  0
@@ -223,12 +223,33 @@
     }
   }
 
+  static inline void record_thread_stack(address addr, size_t size, Thread* thr,
+                           address pc = 0) {
+    if (is_on()) {
+      assert(size > 0 && thr != NULL, "Sanity check");
+      create_memory_record(addr, MemPointerRecord::virtual_memory_reserve_tag() | mtThreadStack,
+                          size, pc, thr);
+      create_memory_record(addr, MemPointerRecord::virtual_memory_commit_tag() | mtThreadStack,
+                          size, pc, thr);
+    }
+  }
+
+  static inline void release_thread_stack(address addr, size_t size, Thread* thr) {
+    if (is_on()) {
+      assert(size > 0 && thr != NULL, "Sanity check");
+      create_memory_record(addr, MemPointerRecord::virtual_memory_uncommit_tag() | mtThreadStack,
+                          size, DEBUG_CALLER_PC, thr);
+      create_memory_record(addr, MemPointerRecord::virtual_memory_release_tag() | mtThreadStack,
+                          size, DEBUG_CALLER_PC, thr);
+    }
+  }
+
   // record a virtual memory 'commit' call
   static inline void record_virtual_memory_commit(address addr, size_t size,
                             address pc = 0, Thread* thread = NULL) {
     if (is_on()) {
       create_memory_record(addr, MemPointerRecord::virtual_memory_commit_tag(),
-                           size, pc, thread);
+                           size, DEBUG_CALLER_PC, thread);
     }
   }
 
@@ -237,7 +258,7 @@
                             Thread* thread = NULL) {
     if (is_on()) {
       create_memory_record(addr, MemPointerRecord::virtual_memory_uncommit_tag(),
-                           size, 0, thread);
+                           size, DEBUG_CALLER_PC, thread);
     }
   }
 
@@ -246,7 +267,7 @@
                             Thread* thread = NULL) {
     if (is_on()) {
       create_memory_record(addr, MemPointerRecord::virtual_memory_release_tag(),
-                           size, 0, thread);
+                           size, DEBUG_CALLER_PC, thread);
     }
   }
 
@@ -257,7 +278,7 @@
       assert(base > 0, "wrong base address");
       assert((flags & (~mt_masks)) == 0, "memory type only");
       create_memory_record(base, (flags | MemPointerRecord::virtual_memory_type_tag()),
-                           0, 0, thread);
+                           0, DEBUG_CALLER_PC, thread);
     }
   }
 
--- a/src/share/vm/services/memoryManager.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memoryManager.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -100,7 +100,7 @@
   if (mgr_obj == NULL) {
     // It's ok for more than one thread to execute the code up to the locked region.
     // Extra manager instances will just be gc'ed.
-    klassOop k = Management::sun_management_ManagementFactory_klass(CHECK_0);
+    Klass* k = Management::sun_management_ManagementFactory_klass(CHECK_0);
     instanceKlassHandle ik(THREAD, k);
 
     Handle mgr_name = java_lang_String::create_from_str(name(), CHECK_0);
--- a/src/share/vm/services/memoryPool.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memoryPool.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -77,7 +77,7 @@
   if (pool_obj == NULL) {
     // It's ok for more than one thread to execute the code up to the locked region.
     // Extra pool instances will just be gc'ed.
-    klassOop k = Management::sun_management_ManagementFactory_klass(CHECK_NULL);
+    Klass* k = Management::sun_management_ManagementFactory_klass(CHECK_NULL);
     instanceKlassHandle ik(THREAD, k);
 
     Handle pool_name = java_lang_String::create_from_str(_name, CHECK_NULL);
--- a/src/share/vm/services/memoryPool.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memoryPool.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -46,8 +46,6 @@
 class SensorInfo;
 class Generation;
 class DefNewGeneration;
-class PSPermGen;
-class PermGen;
 class ThresholdSupport;
 
 class MemoryPool : public CHeapObj<mtInternal> {
--- a/src/share/vm/services/memoryService.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memoryService.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -33,7 +33,6 @@
 #include "memory/generationSpec.hpp"
 #include "memory/heap.hpp"
 #include "memory/memRegion.hpp"
-#include "memory/permGen.hpp"
 #include "memory/tenuredGeneration.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/javaCalls.hpp"
@@ -45,13 +44,11 @@
 #include "services/memoryService.hpp"
 #include "utilities/growableArray.hpp"
 #ifndef SERIALGC
-#include "gc_implementation/concurrentMarkSweep/cmsPermGen.hpp"
 #include "gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp"
 #include "gc_implementation/g1/g1CollectedHeap.inline.hpp"
 #include "gc_implementation/parNew/parNewGeneration.hpp"
 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
 #include "gc_implementation/parallelScavenge/psOldGen.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "gc_implementation/parallelScavenge/psYoungGen.hpp"
 #include "services/g1MemoryPool.hpp"
 #include "services/psMemoryPool.hpp"
@@ -160,25 +157,6 @@
 
   add_generation_memory_pool(heap->get_gen(minor), _major_gc_manager, _minor_gc_manager);
   add_generation_memory_pool(heap->get_gen(major), _major_gc_manager);
-
-  PermGen::Name name = policy->permanent_generation()->name();
-  switch (name) {
-    case PermGen::MarkSweepCompact: {
-      CompactingPermGenGen* perm_gen = (CompactingPermGenGen*) heap->perm_gen();
-      add_compact_perm_gen_memory_pool(perm_gen, _major_gc_manager);
-      break;
-    }
-#ifndef SERIALGC
-    case PermGen::ConcurrentMarkSweep: {
-      CMSPermGenGen* cms_gen = (CMSPermGenGen*) heap->perm_gen();
-      add_cms_perm_gen_memory_pool(cms_gen, _major_gc_manager);
-      break;
-    }
-#endif // SERIALGC
-    default:
-      guarantee(false, "Unrecognized perm generation");
-        break;
-  }
 }
 
 #ifndef SERIALGC
@@ -194,7 +172,6 @@
 
   add_psYoung_memory_pool(heap->young_gen(), _major_gc_manager, _minor_gc_manager);
   add_psOld_memory_pool(heap->old_gen(), _major_gc_manager);
-  add_psPerm_memory_pool(heap->perm_gen(), _major_gc_manager);
 }
 
 void MemoryService::add_g1_heap_info(G1CollectedHeap* g1h) {
@@ -207,7 +184,6 @@
 
   add_g1YoungGen_memory_pool(g1h, _major_gc_manager, _minor_gc_manager);
   add_g1OldGen_memory_pool(g1h, _major_gc_manager);
-  add_g1PermGen_memory_pool(g1h, _major_gc_manager);
 }
 #endif // SERIALGC
 
@@ -349,45 +325,8 @@
   }
 }
 
-void MemoryService::add_compact_perm_gen_memory_pool(CompactingPermGenGen* perm_gen,
-                                                     MemoryManager* mgr) {
-  PermanentGenerationSpec* spec = perm_gen->spec();
-  size_t max_size = spec->max_size() - spec->read_only_size() - spec->read_write_size();
-  MemoryPool* pool = add_space(perm_gen->unshared_space(),
-                               "Perm Gen",
-                                false, /* is_heap */
-                                max_size,
-                                true   /* support_usage_threshold */);
-  mgr->add_pool(pool);
-  if (UseSharedSpaces) {
-    pool = add_space(perm_gen->ro_space(),
-                     "Perm Gen [shared-ro]",
-                     false, /* is_heap */
-                     spec->read_only_size(),
-                     true   /* support_usage_threshold */);
-    mgr->add_pool(pool);
-
-    pool = add_space(perm_gen->rw_space(),
-                     "Perm Gen [shared-rw]",
-                     false, /* is_heap */
-                     spec->read_write_size(),
-                     true   /* support_usage_threshold */);
-    mgr->add_pool(pool);
-  }
-}
 
 #ifndef SERIALGC
-void MemoryService::add_cms_perm_gen_memory_pool(CMSPermGenGen* cms_gen,
-                                                 MemoryManager* mgr) {
-
-  MemoryPool* pool = add_cms_space(cms_gen->cmsSpace(),
-                                   "CMS Perm Gen",
-                                   false, /* is_heap */
-                                   cms_gen->reserved().byte_size(),
-                                   true   /* support_usage_threshold */);
-  mgr->add_pool(pool);
-}
-
 void MemoryService::add_psYoung_memory_pool(PSYoungGen* gen, MemoryManager* major_mgr, MemoryManager* minor_mgr) {
   assert(major_mgr != NULL && minor_mgr != NULL, "Should have two managers");
 
@@ -421,15 +360,6 @@
   _pools_list->append(old_gen);
 }
 
-void MemoryService::add_psPerm_memory_pool(PSPermGen* gen, MemoryManager* mgr) {
-  PSGenerationPool* perm_gen = new PSGenerationPool(gen,
-                                                    "PS Perm Gen",
-                                                    MemoryPool::NonHeap,
-                                                    true /* support_usage_threshold */);
-  mgr->add_pool(perm_gen);
-  _pools_list->append(perm_gen);
-}
-
 void MemoryService::add_g1YoungGen_memory_pool(G1CollectedHeap* g1h,
                                                MemoryManager* major_mgr,
                                                MemoryManager* minor_mgr) {
@@ -454,39 +384,6 @@
   mgr->add_pool(old_gen);
   _pools_list->append(old_gen);
 }
-
-void MemoryService::add_g1PermGen_memory_pool(G1CollectedHeap* g1h,
-                                              MemoryManager* mgr) {
-  assert(mgr != NULL, "should have one manager");
-
-  CompactingPermGenGen* perm_gen = (CompactingPermGenGen*) g1h->perm_gen();
-  PermanentGenerationSpec* spec = perm_gen->spec();
-  size_t max_size = spec->max_size() - spec->read_only_size()
-                                     - spec->read_write_size();
-  MemoryPool* pool = add_space(perm_gen->unshared_space(),
-                               "G1 Perm Gen",
-                               false, /* is_heap */
-                               max_size,
-                               true   /* support_usage_threshold */);
-  mgr->add_pool(pool);
-
-  // in case we support CDS in G1
-  if (UseSharedSpaces) {
-    pool = add_space(perm_gen->ro_space(),
-                     "G1 Perm Gen [shared-ro]",
-                     false, /* is_heap */
-                     spec->read_only_size(),
-                     true   /* support_usage_threshold */);
-    mgr->add_pool(pool);
-
-    pool = add_space(perm_gen->rw_space(),
-                     "G1 Perm Gen [shared-rw]",
-                     false, /* is_heap */
-                     spec->read_write_size(),
-                     true   /* support_usage_threshold */);
-    mgr->add_pool(pool);
-  }
-}
 #endif // SERIALGC
 
 void MemoryService::add_code_heap_memory_pool(CodeHeap* heap) {
@@ -605,7 +502,7 @@
 }
 
 Handle MemoryService::create_MemoryUsage_obj(MemoryUsage usage, TRAPS) {
-  klassOop k = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
+  Klass* k = Management::java_lang_management_MemoryUsage_klass(CHECK_NH);
   instanceKlassHandle ik(THREAD, k);
 
   instanceHandle obj = ik->allocate_instance_handle(CHECK_NH);
--- a/src/share/vm/services/memoryService.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/memoryService.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -40,15 +40,11 @@
 class DefNewGeneration;
 class PSYoungGen;
 class PSOldGen;
-class PSPermGen;
 class CodeHeap;
 class ContiguousSpace;
 class CompactibleFreeListSpace;
-class PermanentGenerationSpec;
 class GenCollectedHeap;
 class ParallelScavengeHeap;
-class CompactingPermGenGen;
-class CMSPermGenGen;
 class G1CollectedHeap;
 
 // VM Monitoring and Management Support
@@ -85,26 +81,18 @@
     add_generation_memory_pool(gen, major_mgr, NULL);
   }
 
-  static void add_compact_perm_gen_memory_pool(CompactingPermGenGen* perm_gen,
-                                               MemoryManager* mgr);
-  static void add_cms_perm_gen_memory_pool(CMSPermGenGen* perm_gen,
-                                           MemoryManager* mgr);
 
   static void add_psYoung_memory_pool(PSYoungGen* gen,
                                       MemoryManager* major_mgr,
                                       MemoryManager* minor_mgr);
   static void add_psOld_memory_pool(PSOldGen* gen,
                                     MemoryManager* mgr);
-  static void add_psPerm_memory_pool(PSPermGen* perm,
-                                     MemoryManager* mgr);
 
   static void add_g1YoungGen_memory_pool(G1CollectedHeap* g1h,
                                          MemoryManager* major_mgr,
                                          MemoryManager* minor_mgr);
   static void add_g1OldGen_memory_pool(G1CollectedHeap* g1h,
                                        MemoryManager* mgr);
-  static void add_g1PermGen_memory_pool(G1CollectedHeap* g1h,
-                                        MemoryManager* mgr);
 
   static MemoryPool* add_space(ContiguousSpace* space,
                                const char* name,
--- a/src/share/vm/services/psMemoryPool.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/psMemoryPool.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -25,7 +25,6 @@
 #include "precompiled.hpp"
 #include "classfile/systemDictionary.hpp"
 #include "classfile/vmSymbols.hpp"
-#include "gc_implementation/parallelScavenge/psPermGen.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/handles.inline.hpp"
 #include "runtime/javaCalls.hpp"
@@ -42,14 +41,6 @@
                       gen->reserved().byte_size(), support_usage_threshold), _gen(gen) {
 }
 
-PSGenerationPool::PSGenerationPool(PSPermGen* gen,
-                                   const char* name,
-                                   PoolType type,
-                                   bool support_usage_threshold) :
-  CollectedMemoryPool(name, type, gen->capacity_in_bytes(),
-                      gen->reserved().byte_size(), support_usage_threshold), _gen(gen) {
-}
-
 MemoryUsage PSGenerationPool::get_memory_usage() {
   size_t maxSize   = (available_for_allocation() ? max_size() : 0);
   size_t used      = used_in_bytes();
--- a/src/share/vm/services/psMemoryPool.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/psMemoryPool.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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
@@ -42,7 +42,6 @@
 
 public:
   PSGenerationPool(PSOldGen* pool, const char* name, PoolType type, bool support_usage_threshold);
-  PSGenerationPool(PSPermGen* pool, const char* name, PoolType type, bool support_usage_threshold);
 
   MemoryUsage get_memory_usage();
   size_t used_in_bytes()              { return _gen->used_in_bytes(); }
--- a/src/share/vm/services/serviceUtil.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/serviceUtil.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -43,11 +43,6 @@
       return false;
     }
 
-    // ignore KlassKlass
-    if (o->is_klass()) {
-      return false;
-    }
-
     // instance
     if (o->is_instance()) {
       // instance objects are visible
@@ -58,11 +53,11 @@
         return true;
       }
       // java.lang.Classes are visible
-      o = java_lang_Class::as_klassOop(o);
-      if (o->is_klass()) {
+      Klass* k = java_lang_Class::as_Klass(o);
+      if (k->is_klass()) {
         // if it's a class for an object, an object array, or
         // primitive (type) array then it's visible.
-        klassOop klass = (klassOop)o;
+        Klass* klass = k;
         if (Klass::cast(klass)->oop_is_instance()) {
           return true;
         }
@@ -77,18 +72,13 @@
     }
     // object arrays are visible if they aren't system object arrays
     if (o->is_objArray()) {
-      objArrayOop array = (objArrayOop)o;
-      if (array->klass() != Universe::systemObjArrayKlassObj()) {
         return true;
-      } else {
-        return false;
-      }
     }
     // type arrays are visible
     if (o->is_typeArray()) {
       return true;
     }
-    // everything else (methodOops, ...) aren't visible
+    // everything else (Method*s, ...) aren't visible
     return false;
   };   // end of visible_oop()
 
--- a/src/share/vm/services/threadService.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/threadService.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -249,9 +249,9 @@
   // Allocate the resulting StackTraceElement[][] object
 
   ResourceMark rm(THREAD);
-  klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_StackTraceElement_array(), true, CHECK_NH);
-  objArrayKlassHandle ik (THREAD, k);
-  objArrayOop r = oopFactory::new_objArray(ik(), num_threads, CHECK_NH);
+  Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_StackTraceElement_array(), true, CHECK_NH);
+  objArrayKlass* ik = objArrayKlass::cast(k);
+  objArrayOop r = oopFactory::new_objArray(ik, num_threads, CHECK_NH);
   objArrayHandle result_obj(THREAD, r);
 
   int num_snapshots = dump_result.num_snapshots();
@@ -384,7 +384,7 @@
 ThreadDumpResult::ThreadDumpResult() : _num_threads(0), _num_snapshots(0), _snapshots(NULL), _next(NULL), _last(NULL) {
 
   // Create a new ThreadDumpResult object and append to the list.
-  // If GC happens before this function returns, methodOop
+  // If GC happens before this function returns, Method*
   // in the stack trace will be visited.
   ThreadService::add_thread_dump(this);
 }
@@ -448,7 +448,6 @@
 }
 
 void StackFrameInfo::oops_do(OopClosure* f) {
-  f->do_oop((oop*) &_method);
   if (_locked_monitors != NULL) {
     int length = _locked_monitors->length();
     for (int i = 0; i < length; i++) {
@@ -463,7 +462,7 @@
   int len = (_locked_monitors != NULL ? _locked_monitors->length() : 0);
   for (int i = 0; i < len; i++) {
     oop o = _locked_monitors->at(i);
-    instanceKlass* ik = instanceKlass::cast(o->klass());
+    InstanceKlass* ik = InstanceKlass::cast(o->klass());
     st->print_cr("\t- locked <" INTPTR_FORMAT "> (a %s)", (address)o, ik->external_name());
   }
 
@@ -564,7 +563,7 @@
 }
 
 Handle ThreadStackTrace::allocate_fill_stack_trace_element_array(TRAPS) {
-  klassOop k = SystemDictionary::StackTraceElement_klass();
+  Klass* k = SystemDictionary::StackTraceElement_klass();
   assert(k != NULL, "must be loaded in 1.4+");
   instanceKlassHandle ik(THREAD, k);
 
@@ -681,7 +680,7 @@
 
   for (int i = 0; i < locks->length(); i++) {
     instanceOop obj = locks->at(i);
-    instanceKlass* ik = instanceKlass::cast(obj->klass());
+    InstanceKlass* ik = InstanceKlass::cast(obj->klass());
     st->print_cr("\t- <" INTPTR_FORMAT "> (a %s)", (address)obj, ik->external_name());
   }
   st->cr();
@@ -832,7 +831,7 @@
       oop obj = (oop)waitingToLockMonitor->object();
       if (obj != NULL) {
         st->print(" (object "INTPTR_FORMAT ", a %s)", (address)obj,
-                   (instanceKlass::cast(obj->klass()))->external_name());
+                   (InstanceKlass::cast(obj->klass()))->external_name());
 
         if (!currentThread->current_pending_monitor_is_from_java()) {
           owner_desc = "\n  in JNI, which is held by";
@@ -846,7 +845,7 @@
     } else {
       st->print("  waiting for ownable synchronizer " INTPTR_FORMAT ", (a %s)",
                 (address)waitingToLockBlocker,
-                (instanceKlass::cast(waitingToLockBlocker->klass()))->external_name());
+                (InstanceKlass::cast(waitingToLockBlocker->klass()))->external_name());
       assert(waitingToLockBlocker->is_a(SystemDictionary::abstract_ownable_synchronizer_klass()),
              "Must be an AbstractOwnableSynchronizer");
       oop ownerObj = java_util_concurrent_locks_AbstractOwnableSynchronizer::get_owner_threadObj(waitingToLockBlocker);
--- a/src/share/vm/services/threadService.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/services/threadService.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 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
@@ -68,7 +68,7 @@
   static bool          _thread_allocated_memory_enabled;
 
   // Need to keep the list of thread dump result that
-  // keep references to methodOop since thread dump can be
+  // keep references to Method* since thread dump can be
   // requested by multiple threads concurrently.
   static ThreadDumpResult* _threaddump_list;
 
@@ -272,12 +272,12 @@
   void            add_jni_locked_monitor(oop object) { _jni_locked_monitors->append(object); }
 };
 
-// StackFrameInfo for keeping methodOop and bci during
+// StackFrameInfo for keeping Method* and bci during
 // stack walking for later construction of StackTraceElement[]
 // Java instances
 class StackFrameInfo : public CHeapObj<mtInternal> {
  private:
-  methodOop           _method;
+  Method*             _method;
   int                 _bci;
   GrowableArray<oop>* _locked_monitors; // list of object monitors locked by this frame
 
@@ -289,7 +289,7 @@
       delete _locked_monitors;
     }
   };
-  methodOop method() const       { return _method; }
+  Method* method() const       { return _method; }
   int       bci()    const       { return _bci; }
   void      oops_do(OopClosure* f);
 
--- a/src/share/vm/shark/sharkBuilder.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkBuilder.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -26,7 +26,7 @@
 #include "precompiled.hpp"
 #include "ci/ciMethod.hpp"
 #include "memory/resourceArea.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/method.hpp"
 #include "runtime/os.hpp"
 #include "runtime/synchronizer.hpp"
 #include "runtime/thread.hpp"
--- a/src/share/vm/shark/sharkCacheDecache.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkCacheDecache.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -107,7 +107,7 @@
 void SharkDecacher::process_method_slot(Value** value, int offset) {
   // Decache the method pointer
   write_value_to_frame(
-    SharkType::methodOop_type(),
+    SharkType::Method*_type(),
     *value,
     offset);
 
@@ -205,7 +205,7 @@
 
 void SharkCacher::process_method_slot(Value** value, int offset) {
   // Cache the method pointer
-  *value = read_value_from_frame(SharkType::methodOop_type(), offset);
+  *value = read_value_from_frame(SharkType::Method*_type(), offset);
 }
 
 void SharkFunctionEntryCacher::process_method_slot(Value** value, int offset) {
--- a/src/share/vm/shark/sharkContext.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkContext.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -61,8 +61,8 @@
   _jniHandleBlock_type = PointerType::getUnqual(
     ArrayType::get(jbyte_type(), sizeof(JNIHandleBlock)));
 
-  _methodOop_type = PointerType::getUnqual(
-    ArrayType::get(jbyte_type(), sizeof(methodOopDesc)));
+  _Method*_type = PointerType::getUnqual(
+    ArrayType::get(jbyte_type(), sizeof(Method)));
 
   _monitor_type = ArrayType::get(
     jbyte_type(), frame::interpreter_frame_monitor_size() * wordSize);
@@ -77,13 +77,13 @@
     ArrayType::get(jbyte_type(), sizeof(ZeroStack)));
 
   std::vector<const Type*> params;
-  params.push_back(methodOop_type());
+  params.push_back(Method*_type());
   params.push_back(intptr_type());
   params.push_back(thread_type());
   _entry_point_type = FunctionType::get(jint_type(), params, false);
 
   params.clear();
-  params.push_back(methodOop_type());
+  params.push_back(Method*_type());
   params.push_back(PointerType::getUnqual(jbyte_type()));
   params.push_back(intptr_type());
   params.push_back(thread_type());
--- a/src/share/vm/shark/sharkContext.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkContext.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -118,7 +118,7 @@
   const llvm::PointerType*  _jniEnv_type;
   const llvm::PointerType*  _jniHandleBlock_type;
   const llvm::PointerType*  _klass_type;
-  const llvm::PointerType*  _methodOop_type;
+  const llvm::PointerType*  _Method*_type;
   const llvm::ArrayType*    _monitor_type;
   const llvm::PointerType*  _oop_type;
   const llvm::PointerType*  _thread_type;
@@ -139,8 +139,8 @@
   const llvm::PointerType* klass_type() const {
     return _klass_type;
   }
-  const llvm::PointerType* methodOop_type() const {
-    return _methodOop_type;
+  const llvm::PointerType* Method*_type() const {
+    return _Method*_type;
   }
   const llvm::ArrayType* monitor_type() const {
     return _monitor_type;
--- a/src/share/vm/shark/sharkRuntime.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkRuntime.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -24,7 +24,6 @@
  */
 
 #include "precompiled.hpp"
-#include "oops/klassOop.hpp"
 #include "runtime/biasedLocking.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/thread.hpp"
@@ -43,13 +42,13 @@
   KlassHandle exc_klass(thread, ((oop) tos_at(thread, 0))->klass());
 
   for (int i = 0; i < num_indexes; i++) {
-    klassOop tmp = pool->klass_at(indexes[i], CHECK_0);
+    Klass* tmp = pool->klass_at(indexes[i], CHECK_0);
     KlassHandle chk_klass(thread, tmp);
 
     if (exc_klass() == chk_klass())
       return i;
 
-    if (exc_klass()->klass_part()->is_subtype_of(chk_klass()))
+    if (exc_klass()->is_subtype_of(chk_klass()))
       return i;
   }
 
@@ -83,7 +82,7 @@
 JRT_END
 
 JRT_ENTRY(void, SharkRuntime::new_instance(JavaThread* thread, int index))
-  klassOop k_oop = method(thread)->constants()->klass_at(index, CHECK);
+  Klass* k_oop = method(thread)->constants()->klass_at(index, CHECK);
   instanceKlassHandle klass(THREAD, k_oop);
 
   // Make sure we are not instantiating an abstract klass
@@ -120,7 +119,7 @@
 JRT_ENTRY(void, SharkRuntime::anewarray(JavaThread* thread,
                                         int         index,
                                         int         size))
-  klassOop klass = method(thread)->constants()->klass_at(index, CHECK);
+  Klass* klass = method(thread)->constants()->klass_at(index, CHECK);
   objArrayOop obj = oopFactory::new_objArray(klass, size, CHECK);
   thread->set_vm_result(obj);
 JRT_END
@@ -129,7 +128,7 @@
                                              int         index,
                                              int         ndims,
                                              int*        dims))
-  klassOop klass = method(thread)->constants()->klass_at(index, CHECK);
+  Klass* klass = method(thread)->constants()->klass_at(index, CHECK);
   oop obj = arrayKlass::cast(klass)->multi_allocate(ndims, dims, CHECK);
   thread->set_vm_result(obj);
 JRT_END
@@ -137,8 +136,8 @@
 JRT_ENTRY(void, SharkRuntime::register_finalizer(JavaThread* thread,
                                                  oop         object))
   assert(object->is_oop(), "should be");
-  assert(object->klass()->klass_part()->has_finalizer(), "should have");
-  instanceKlass::register_finalizer(instanceOop(object), CHECK);
+  assert(object->klass()->has_finalizer(), "should have");
+  InstanceKlass::register_finalizer(instanceOop(object), CHECK);
 JRT_END
 
 JRT_ENTRY(void, SharkRuntime::throw_ArithmeticException(JavaThread* thread,
@@ -196,8 +195,8 @@
   tty->print_cr("");
 }
 
-bool SharkRuntime::is_subtype_of(klassOop check_klass, klassOop object_klass) {
-  return object_klass->klass_part()->is_subtype_of(check_klass);
+bool SharkRuntime::is_subtype_of(Klass* check_klass, Klass* object_klass) {
+  return object_klass->is_subtype_of(check_klass);
 }
 
 int SharkRuntime::uncommon_trap(JavaThread* thread, int trap_request) {
--- a/src/share/vm/shark/sharkRuntime.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkRuntime.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -27,7 +27,6 @@
 #define SHARE_VM_SHARK_SHARKRUNTIME_HPP
 
 #include "memory/allocation.hpp"
-#include "oops/klassOop.hpp"
 #include "runtime/thread.hpp"
 #include "shark/llvmHeaders.hpp"
 #include "shark/llvmValue.hpp"
@@ -71,7 +70,7 @@
   static const SharkFrame* last_frame(JavaThread *thread) {
     return thread->last_frame().zero_sharkframe();
   }
-  static methodOop method(JavaThread *thread) {
+  static Method* method(JavaThread *thread) {
     return last_frame(thread)->method();
   }
   static address bcp(JavaThread *thread, int bci) {
@@ -87,7 +86,7 @@
   // Non-VM calls
  public:
   static void dump(const char *name, intptr_t value);
-  static bool is_subtype_of(klassOop check_klass, klassOop object_klass);
+  static bool is_subtype_of(Klass* check_klass, Klass* object_klass);
   static int uncommon_trap(JavaThread* thread, int trap_request);
 };
 
--- a/src/share/vm/shark/sharkStack.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkStack.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -75,7 +75,7 @@
   _method_slot_offset = offset++;
   if (setup_sp_and_method) {
     builder()->CreateStore(
-      method, slot_addr(method_slot_offset(), SharkType::methodOop_type()));
+      method, slot_addr(method_slot_offset(), SharkType::Method*_type()));
   }
 
   // Unextended SP
--- a/src/share/vm/shark/sharkState.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkState.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -131,7 +131,7 @@
   Value *this_method = this->method();
   Value *other_method = other->method();
   if (this_method != other_method) {
-    PHINode *phi = builder()->CreatePHI(SharkType::methodOop_type(), "method");
+    PHINode *phi = builder()->CreatePHI(SharkType::Method*_type(), "method");
     phi->addIncoming(this_method, this_block);
     phi->addIncoming(other_method, other_block);
     set_method(phi);
@@ -287,7 +287,7 @@
   char name[18];
 
   // Method
-  set_method(builder()->CreatePHI(SharkType::methodOop_type(), "method"));
+  set_method(builder()->CreatePHI(SharkType::Method*_type(), "method"));
 
   // Local variables
   for (int i = 0; i < max_locals(); i++) {
--- a/src/share/vm/shark/sharkTopLevelBlock.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkTopLevelBlock.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009, 2010 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -1103,7 +1103,7 @@
 Value *SharkTopLevelBlock::get_direct_callee(ciMethod* method) {
   return builder()->CreateBitCast(
     builder()->CreateInlineOop(method),
-    SharkType::methodOop_type(),
+    SharkType::Method*_type(),
     "callee");
 }
 
@@ -1118,9 +1118,9 @@
   return builder()->CreateLoad(
     builder()->CreateArrayAddress(
       klass,
-      SharkType::methodOop_type(),
+      SharkType::Method*_type(),
       vtableEntry::size() * wordSize,
-      in_ByteSize(instanceKlass::vtable_start_offset() * wordSize),
+      in_ByteSize(InstanceKlass::vtable_start_offset() * wordSize),
       LLVMValue::intptr_constant(vtable_index)),
     "callee");
 }
@@ -1142,12 +1142,12 @@
   Value *vtable_start = builder()->CreateAdd(
     builder()->CreatePtrToInt(object_klass, SharkType::intptr_type()),
     LLVMValue::intptr_constant(
-      instanceKlass::vtable_start_offset() * HeapWordSize),
+      InstanceKlass::vtable_start_offset() * HeapWordSize),
     "vtable_start");
 
   Value *vtable_length = builder()->CreateValueOfStructEntry(
     object_klass,
-    in_ByteSize(instanceKlass::vtable_length_offset() * HeapWordSize),
+    in_ByteSize(InstanceKlass::vtable_length_offset() * HeapWordSize),
     SharkType::jint_type(),
     "vtable_length");
   vtable_length =
@@ -1231,7 +1231,7 @@
             method->itable_index() * itableMethodEntry::size() * wordSize)),
         LLVMValue::intptr_constant(
           itableMethodEntry::method_offset_in_bytes())),
-      PointerType::getUnqual(SharkType::methodOop_type())),
+      PointerType::getUnqual(SharkType::Method*_type())),
     "callee");
 }
 
@@ -1312,7 +1312,7 @@
 
   // Load the SharkEntry from the callee
   Value *base_pc = builder()->CreateValueOfStructEntry(
-    callee, methodOopDesc::from_interpreted_offset(),
+    callee, Method::from_interpreted_offset(),
     SharkType::intptr_type(),
     "base_pc");
 
--- a/src/share/vm/shark/sharkType.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/shark/sharkType.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2008, 2009 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
@@ -82,8 +82,8 @@
   static const llvm::PointerType* klass_type() {
     return context().klass_type();
   }
-  static const llvm::PointerType* methodOop_type() {
-    return context().methodOop_type();
+  static const llvm::PointerType* Method*_type() {
+    return context().Method*_type();
   }
   static const llvm::ArrayType* monitor_type() {
     return context().monitor_type();
--- a/src/share/vm/utilities/accessFlags.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/accessFlags.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -77,6 +77,7 @@
   if (is_synthetic   ()) st->print("synthetic "   );
   if (is_old         ()) st->print("{old} "       );
   if (is_obsolete    ()) st->print("{obsolete} "  );
+  if (on_stack       ()) st->print("{on_stack} "  );
 }
 
 #endif
--- a/src/share/vm/utilities/accessFlags.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/accessFlags.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -39,7 +39,7 @@
   // flags actually put in .class file
   JVM_ACC_WRITTEN_FLAGS           = 0x00007FFF,
 
-  // methodOop flags
+  // Method* flags
   JVM_ACC_MONITOR_MATCH           = 0x10000000,     // True if we know that monitorenter/monitorexit bytecodes match
   JVM_ACC_HAS_MONITOR_BYTECODES   = 0x20000000,     // Method contains monitorenter/monitorexit bytecodes
   JVM_ACC_HAS_LOOPS               = 0x40000000,     // Method has loops
@@ -54,22 +54,23 @@
   JVM_ACC_IS_OLD                  = 0x00010000,     // RedefineClasses() has replaced this method
   JVM_ACC_IS_OBSOLETE             = 0x00020000,     // RedefineClasses() has made method obsolete
   JVM_ACC_IS_PREFIXED_NATIVE      = 0x00040000,     // JVMTI has prefixed this native method
+  JVM_ACC_ON_STACK                = 0x00080000,     // RedefinedClasses() is used on the stack
 
-  // klassOop flags
+  // Klass* flags
   JVM_ACC_HAS_MIRANDA_METHODS     = 0x10000000,     // True if this class has miranda methods in it's vtable
   JVM_ACC_HAS_VANILLA_CONSTRUCTOR = 0x20000000,     // True if klass has a vanilla default constructor
   JVM_ACC_HAS_FINALIZER           = 0x40000000,     // True if klass has a non-empty finalize() method
   JVM_ACC_IS_CLONEABLE            = (int)0x80000000,// True if klass supports the Clonable interface
   JVM_ACC_HAS_FINAL_METHOD        = 0x01000000,     // True if klass has final method
 
-  // klassOop and methodOop flags
+  // Klass* and Method* flags
   JVM_ACC_HAS_LOCAL_VARIABLE_TABLE= 0x00200000,
 
   JVM_ACC_PROMOTED_FLAGS          = 0x00200000,     // flags promoted from methods to the holding klass
 
   // field flags
   // Note: these flags must be defined in the low order 16 bits because
-  // instanceKlass only stores a ushort worth of information from the
+  // InstanceKlass only stores a ushort worth of information from the
   // AccessFlags value.
   // These bits must not conflict with any other field-related access flags
   // (e.g., ACC_ENUM).
@@ -114,7 +115,7 @@
   // Attribute flags
   bool is_synthetic   () const         { return (_flags & JVM_ACC_SYNTHETIC   ) != 0; }
 
-  // methodOop flags
+  // Method* flags
   bool is_monitor_matching     () const { return (_flags & JVM_ACC_MONITOR_MATCH          ) != 0; }
   bool has_monitor_bytecodes   () const { return (_flags & JVM_ACC_HAS_MONITOR_BYTECODES  ) != 0; }
   bool has_loops               () const { return (_flags & JVM_ACC_HAS_LOOPS              ) != 0; }
@@ -130,13 +131,13 @@
   bool is_obsolete             () const { return (_flags & JVM_ACC_IS_OBSOLETE            ) != 0; }
   bool is_prefixed_native      () const { return (_flags & JVM_ACC_IS_PREFIXED_NATIVE     ) != 0; }
 
-  // klassOop flags
+  // Klass* flags
   bool has_miranda_methods     () const { return (_flags & JVM_ACC_HAS_MIRANDA_METHODS    ) != 0; }
   bool has_vanilla_constructor () const { return (_flags & JVM_ACC_HAS_VANILLA_CONSTRUCTOR) != 0; }
   bool has_finalizer           () const { return (_flags & JVM_ACC_HAS_FINALIZER          ) != 0; }
   bool has_final_method        () const { return (_flags & JVM_ACC_HAS_FINAL_METHOD       ) != 0; }
   bool is_cloneable            () const { return (_flags & JVM_ACC_IS_CLONEABLE           ) != 0; }
-  // klassOop and methodOop flags
+  // Klass* and Method* flags
   bool has_localvariable_table () const { return (_flags & JVM_ACC_HAS_LOCAL_VARIABLE_TABLE) != 0; }
   void set_has_localvariable_table()    { atomic_set_bits(JVM_ACC_HAS_LOCAL_VARIABLE_TABLE); }
   void clear_has_localvariable_table()  { atomic_clear_bits(JVM_ACC_HAS_LOCAL_VARIABLE_TABLE); }
@@ -145,6 +146,7 @@
   bool is_field_access_watched() const  { return (_flags & JVM_ACC_FIELD_ACCESS_WATCHED) != 0; }
   bool is_field_modification_watched() const
                                         { return (_flags & JVM_ACC_FIELD_MODIFICATION_WATCHED) != 0; }
+  bool on_stack() const                 { return (_flags & JVM_ACC_ON_STACK) != 0; }
   bool is_internal() const              { return (_flags & JVM_ACC_FIELD_INTERNAL) != 0; }
   bool field_has_generic_signature() const
                                         { return (_flags & JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE) != 0; }
@@ -168,7 +170,7 @@
   void atomic_clear_bits(jint bits);
 
  private:
-  friend class methodOopDesc;
+  friend class Method;
   friend class Klass;
   friend class ClassFileParser;
   // the functions below should only be called on the _access_flags inst var directly,
@@ -177,7 +179,7 @@
   // attribute flags
   void set_is_synthetic()              { atomic_set_bits(JVM_ACC_SYNTHETIC);               }
 
-  // methodOop flags
+  // Method* flags
   void set_monitor_matching()          { atomic_set_bits(JVM_ACC_MONITOR_MATCH);           }
   void set_has_monitor_bytecodes()     { atomic_set_bits(JVM_ACC_HAS_MONITOR_BYTECODES);   }
   void set_has_loops()                 { atomic_set_bits(JVM_ACC_HAS_LOOPS);               }
@@ -192,7 +194,7 @@
   void set_is_obsolete()               { atomic_set_bits(JVM_ACC_IS_OBSOLETE);             }
   void set_is_prefixed_native()        { atomic_set_bits(JVM_ACC_IS_PREFIXED_NATIVE);      }
 
-  // klassOop flags
+  // Klass* flags
   void set_has_vanilla_constructor()   { atomic_set_bits(JVM_ACC_HAS_VANILLA_CONSTRUCTOR); }
   void set_has_finalizer()             { atomic_set_bits(JVM_ACC_HAS_FINALIZER);           }
   void set_has_final_method()          { atomic_set_bits(JVM_ACC_HAS_FINAL_METHOD);        }
@@ -222,6 +224,14 @@
                                          atomic_set_bits(JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE);
                                        }
 
+  void set_on_stack(const bool value)
+                                       {
+                                         if (value) {
+                                           atomic_set_bits(JVM_ACC_ON_STACK);
+                                         } else {
+                                           atomic_clear_bits(JVM_ACC_ON_STACK);
+                                         }
+                                       }
   // Conversion
   jshort as_short() const              { return (jshort)_flags; }
   jint   as_int() const                { return _flags; }
--- a/src/share/vm/utilities/array.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/array.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -27,6 +27,7 @@
 
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
+#include "memory/metaspace.hpp"
 
 // correct linkage required to compile w/o warnings
 // (must be on file level - cannot be local)
@@ -97,6 +98,10 @@
     _data    = (void*) NEW_C_HEAP_ARRAY(char *, esize * length, F);
   }
 
+  void initialize(size_t esize, int length) {
+    // In debug set array to 0?
+  }
+
 #ifdef ASSERT
   void init_nesting();
 #endif
@@ -123,7 +128,7 @@
    public:                                                                               \
     /* creation */                                                                       \
     array_name() : base_class()                       {}                                 \
-    array_name(const int length) : base_class(esize, length) {}                          \
+    explicit array_name(const int length) : base_class(esize, length) {}                          \
     array_name(const int length, const etype fx)      { initialize(length, fx); }        \
     void initialize(const int length)     { base_class::initialize(esize, length); }     \
     void initialize(const int length, const etype fx) {                                  \
@@ -292,4 +297,96 @@
 define_array(boolArray, bool)          define_stack(boolStack, boolArray)
 define_array(intArray , int )          define_stack(intStack , intArray )
 
+// Array for metadata allocation
+
+template <typename T>
+class Array: public MetaspaceObj {
+  friend class MetadataFactory;
+  friend class VMStructs;
+  friend class MethodHandleCompiler;           // special case
+protected:
+  int _length;                                 // the number of array elements
+  T   _data[1];                                // the array memory
+
+  void initialize(int length) {
+    _length = length;
+  }
+
+ private:
+  // Turn off copy constructor and assignment operator.
+  Array(const Array<T>&);
+  void operator=(const Array<T>&);
+
+  void* operator new(size_t size, ClassLoaderData* loader_data, int length, bool read_only, TRAPS) {
+    size_t word_size = Array::size(length);
+    return (void*) Metaspace::allocate(loader_data, word_size, read_only,
+                        Metaspace::NonClassType, CHECK_NULL);
+  }
+
+  static size_t byte_sizeof(int length) { return sizeof(Array<T>) + MAX2(length - 1, 0) * sizeof(T); }
+
+  explicit Array(int length) : _length(length) {
+    assert(length >= 0, "illegal length");
+  }
+
+  Array(int length, T init) : _length(length) {
+    assert(length >= 0, "illegal length");
+    for (int i = 0; i < length; i++) {
+      _data[i] = init;
+    }
+  }
+
+ public:
+
+  // standard operations
+  int  length() const                 { return _length; }
+  T* data()                           { return _data; }
+  bool is_empty() const               { return length() == 0; }
+
+  int index_of(const T& x) const {
+    int i = length();
+    while (i-- > 0 && _data[i] != x) ;
+
+    return i;
+  }
+
+  // sort the array.
+  bool contains(const T& x) const      { return index_of(x) >= 0; }
+
+  T    at(int i) const                 { return _data[i]; }
+  void at_put(const int i, const T& x) { _data[i] = x; }
+  T*   adr_at(const int i)             { return &_data[i]; }
+  int  find(const T& x)                { return index_of(x); }
+
+  T at_acquire(const int which)              { return OrderAccess::load_acquire(adr_at(which)); }
+  void release_at_put(int which, T contents) { OrderAccess::release_store(adr_at(which), contents); }
+
+  static int size(int length) {
+    return align_size_up(byte_sizeof(length), BytesPerWord) / BytesPerWord;
+  }
+
+  int size() {
+    return size(_length);
+  }
+
+  static int length_offset_in_bytes() { return (int) (offset_of(Array<T>, _length)); }
+  // Note, this offset don't have to be wordSize aligned.
+  static int base_offset_in_bytes() { return (int) (offset_of(Array<T>, _data)); };
+
+  // FIXME: How to handle this?
+  void print_value_on(outputStream* st) const {
+    st->print("Array<T>(" INTPTR_FORMAT ")", this);
+  }
+
+#ifndef PRODUCT
+  void print(outputStream* st) {
+     for (int i = 0; i< _length; i++) {
+       st->print_cr("%d: " INTPTR_FORMAT, i, (intptr_t)at(i));
+     }
+  }
+  void print() { print(tty); }
+#endif // PRODUCT
+};
+
+
 #endif // SHARE_VM_UTILITIES_ARRAY_HPP
--- a/src/share/vm/utilities/constantTag.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/constantTag.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -49,7 +49,6 @@
     case JVM_CONSTANT_UnresolvedClass :
     case JVM_CONSTANT_UnresolvedClassInError :
     case JVM_CONSTANT_ClassIndex :
-    case JVM_CONSTANT_UnresolvedString :
     case JVM_CONSTANT_StringIndex :
     case JVM_CONSTANT_MethodHandle :
     case JVM_CONSTANT_MethodType :
@@ -89,8 +88,12 @@
       return "NameAndType";
     case JVM_CONSTANT_MethodHandle :
       return "MethodHandle";
+    case JVM_CONSTANT_MethodHandleInError :
+      return "MethodHandle Error";
     case JVM_CONSTANT_MethodType :
       return "MethodType";
+    case JVM_CONSTANT_MethodTypeInError :
+      return "MethodType Error";
     case JVM_CONSTANT_InvokeDynamic :
       return "InvokeDynamic";
     case JVM_CONSTANT_Object :
@@ -103,8 +106,6 @@
       return "Unresolved Class Error";
     case JVM_CONSTANT_ClassIndex :
       return "Unresolved Class Index";
-    case JVM_CONSTANT_UnresolvedString :
-      return "Unresolved String";
     case JVM_CONSTANT_StringIndex :
       return "Unresolved String Index";
     default:
--- a/src/share/vm/utilities/constantTag.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/constantTag.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -39,11 +39,12 @@
   JVM_CONSTANT_InternalMin              = 100,  // First implementation tag (aside from bad value of course)
   JVM_CONSTANT_UnresolvedClass          = 100,  // Temporary tag until actual use
   JVM_CONSTANT_ClassIndex               = 101,  // Temporary tag while constructing constant pool
-  JVM_CONSTANT_UnresolvedString         = 102,  // Temporary tag until actual use
-  JVM_CONSTANT_StringIndex              = 103,  // Temporary tag while constructing constant pool
-  JVM_CONSTANT_UnresolvedClassInError   = 104,  // Error tag due to resolution error
-  JVM_CONSTANT_Object                   = 105,  // Required for BoundMethodHandle arguments.
-  JVM_CONSTANT_InternalMax              = 105   // Last implementation tag
+  JVM_CONSTANT_StringIndex              = 102,  // Temporary tag while constructing constant pool
+  JVM_CONSTANT_UnresolvedClassInError   = 103,  // Error tag due to resolution error
+  JVM_CONSTANT_MethodHandleInError      = 104,  // Error tag due to resolution error
+  JVM_CONSTANT_MethodTypeInError        = 105,  // Error tag due to resolution error
+  JVM_CONSTANT_Object                   = 106,  // Required for BoundMethodHandle arguments.
+  JVM_CONSTANT_InternalMax              = 106   // Last implementation tag
 };
 
 
@@ -73,8 +74,14 @@
     return _tag == JVM_CONSTANT_UnresolvedClassInError;
   }
 
+  bool is_method_handle_in_error() const {
+    return _tag == JVM_CONSTANT_MethodHandleInError;
+  }
+  bool is_method_type_in_error() const {
+    return _tag == JVM_CONSTANT_MethodTypeInError;
+  }
+
   bool is_klass_index() const       { return _tag == JVM_CONSTANT_ClassIndex; }
-  bool is_unresolved_string() const { return _tag == JVM_CONSTANT_UnresolvedString; }
   bool is_string_index() const      { return _tag == JVM_CONSTANT_StringIndex; }
 
   bool is_object() const            { return _tag == JVM_CONSTANT_Object; }
@@ -91,8 +98,7 @@
   bool is_loadable_constant() const {
     return ((_tag >= JVM_CONSTANT_Integer && _tag <= JVM_CONSTANT_String) ||
             is_method_type() || is_method_handle() ||
-            is_unresolved_klass() || is_unresolved_string() ||
-            is_object());
+            is_unresolved_klass() || is_object());
   }
 
   constantTag() {
--- a/src/share/vm/utilities/debug.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/debug.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -264,6 +264,10 @@
   report_vm_error(file, line, "ShouldNotReachHere()");
 }
 
+void report_should_not_reach_here2(const char* file, int line, const char* message) {
+  report_vm_error(file, line, "ShouldNotReachHere()", message);
+}
+
 void report_unimplemented(const char* file, int line) {
   report_vm_error(file, line, "Unimplemented()");
 }
@@ -276,13 +280,13 @@
 
 void report_out_of_shared_space(SharedSpaceType shared_space) {
   static const char* name[] = {
-    "permanent generation",
+    "native memory for metadata",
     "shared read only space",
     "shared read write space",
     "shared miscellaneous data space"
   };
   static const char* flag[] = {
-    "PermGen",
+    "Metaspace",
     "SharedReadOnlySize",
     "SharedReadWriteSize",
     "SharedMiscDataSize"
@@ -413,8 +417,8 @@
 
 extern "C" void dump_vtable(address p) {
   Command c("dump_vtable");
-  klassOop k = (klassOop)p;
-  instanceKlass::cast(k)->vtable()->print();
+  Klass* k = (Klass*)p;
+  InstanceKlass::cast(k)->vtable()->print();
 }
 
 
@@ -627,10 +631,10 @@
 }
 
 
-extern "C" methodOop findm(intptr_t pc) {
+extern "C" Method* findm(intptr_t pc) {
   Command c("findm");
   nmethod* nm = CodeCache::find_nmethod((address)pc);
-  return (nm == NULL) ? (methodOop)NULL : nm->method();
+  return (nm == NULL) ? (Method*)NULL : nm->method();
 }
 
 
@@ -650,82 +654,6 @@
   }
 }
 
-class LookForRefInGenClosure : public OopsInGenClosure {
-public:
-  oop target;
-  void do_oop(oop* o) {
-    if (o != NULL && *o == target) {
-      tty->print_cr(INTPTR_FORMAT, o);
-    }
-  }
-  void do_oop(narrowOop* o) { ShouldNotReachHere(); }
-};
-
-
-class LookForRefInObjectClosure : public ObjectClosure {
-private:
-  LookForRefInGenClosure look_in_object;
-public:
-  LookForRefInObjectClosure(oop target) { look_in_object.target = target; }
-  void do_object(oop obj) {
-    obj->oop_iterate(&look_in_object);
-  }
-};
-
-
-static void findref(intptr_t x) {
-  CollectedHeap *ch = Universe::heap();
-  LookForRefInGenClosure lookFor;
-  lookFor.target = (oop) x;
-  LookForRefInObjectClosure look_in_object((oop) x);
-
-  tty->print_cr("Searching heap:");
-  ch->object_iterate(&look_in_object);
-
-  tty->print_cr("Searching strong roots:");
-  Universe::oops_do(&lookFor, false);
-  JNIHandles::oops_do(&lookFor);   // Global (strong) JNI handles
-  Threads::oops_do(&lookFor, NULL);
-  ObjectSynchronizer::oops_do(&lookFor);
-  //FlatProfiler::oops_do(&lookFor);
-  SystemDictionary::oops_do(&lookFor);
-
-  tty->print_cr("Searching code cache:");
-  CodeCache::oops_do(&lookFor);
-
-  tty->print_cr("Done.");
-}
-
-class FindClassObjectClosure: public ObjectClosure {
-  private:
-    const char* _target;
-  public:
-    FindClassObjectClosure(const char name[])  { _target = name; }
-
-    virtual void do_object(oop obj) {
-      if (obj->is_klass()) {
-        Klass* k = klassOop(obj)->klass_part();
-        if (k->name() != NULL) {
-          ResourceMark rm;
-          const char* ext = k->external_name();
-          if ( strcmp(_target, ext) == 0 ) {
-            tty->print_cr("Found " INTPTR_FORMAT, obj);
-            obj->print();
-          }
-        }
-      }
-    }
-};
-
-//
-extern "C" void findclass(const char name[]) {
-  Command c("findclass");
-  if (name != NULL) {
-    tty->print_cr("Finding class %s -> ", name);
-    FindClassObjectClosure srch(name);
-    Universe::heap()->permanent_object_iterate(&srch);
-  }
-}
 
 // Another interface that isn't ambiguous in dbx.
 // Can we someday rename the other find to hsfind?
@@ -735,11 +663,6 @@
 }
 
 
-extern "C" void hsfindref(intptr_t x) {
-  Command c("hsfindref");
-  findref(x);
-}
-
 extern "C" void find(intptr_t x) {
   Command c("find");
   os::print_location(tty, x, false);
@@ -752,6 +675,17 @@
 }
 
 
+// Need method pointer to find bcp, when not in permgen.
+extern "C" void findbcp(intptr_t method, intptr_t bcp) {
+  Command c("findbcp");
+  Method* mh = (Method*)method;
+  if (!mh->is_native()) {
+    tty->print_cr("bci_from(%p) = %d; print_codes():",
+                        mh, mh->bci_from(address(bcp)));
+    mh->print_codes_on(tty);
+  }
+}
+
 // int versions of all methods to avoid having to type type casts in the debugger
 
 void pp(intptr_t p)          { pp((void*)p); }
@@ -764,8 +698,8 @@
   tty->print_cr("  pv(intptr_t p)- ((PrintableResourceObj*) p)->print()");
   tty->print_cr("  ps()          - print current thread stack");
   tty->print_cr("  pss()         - print all thread stacks");
-  tty->print_cr("  pm(int pc)    - print methodOop given compiled PC");
-  tty->print_cr("  findm(intptr_t pc) - finds methodOop");
+  tty->print_cr("  pm(int pc)    - print Method* given compiled PC");
+  tty->print_cr("  findm(intptr_t pc) - finds Method*");
   tty->print_cr("  find(intptr_t x)   - finds & prints nmethod/stub/bytecode/oop based on pointer into it");
 
   tty->print_cr("misc.");
@@ -812,7 +746,7 @@
   (char *)"ps", CMDID_PS, "    Print Current Thread Stack Trace",
   (char *)"pss", CMDID_PSS, "   Print All Thread Stack Trace",
   (char *)"psf", CMDID_PSF, "   Print All Stack Frames",
-  (char *)"findm", CMDID_FINDM, " Find a methodOop from a PC",
+  (char *)"findm", CMDID_FINDM, " Find a Method* from a PC",
   (char *)"findnm", CMDID_FINDNM, "Find an nmethod from a PC",
   (char *)"pp", CMDID_PP, "    Find out something about a pointer",
   (char *)"break", CMDID_BPT, " Execute a breakpoint",
@@ -837,7 +771,7 @@
   intptr_t addr;
   char buffer[256];
   nmethod *nm;
-  methodOop m;
+  Method* m;
 
   tty->print_cr("You have entered the diagnostic command interpreter");
   tty->print("The supported commands are:\n");
@@ -872,7 +806,7 @@
               case CMDID_FINDM:
                 tty->print("Please enter the hex addr to pass to findm: ");
                 scanf("%I64X", &addr);
-                m = (methodOop)findm(addr);
+                m = (Method*)findm(addr);
                 tty->print("findm(0x%I64X) returned 0x%I64X\n", addr, m);
                 break;
               case CMDID_FINDNM:
--- a/src/share/vm/utilities/debug.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/debug.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -192,6 +192,12 @@
   BREAKPOINT;                                                                \
 } while (0)
 
+#define ShouldNotReachHere2(message)                                         \
+do {                                                                         \
+  report_should_not_reach_here2(__FILE__, __LINE__, message);                \
+  BREAKPOINT;                                                                \
+} while (0)
+
 #define Unimplemented()                                                      \
 do {                                                                         \
   report_unimplemented(__FILE__, __LINE__);                                  \
@@ -212,6 +218,7 @@
                              const char* message);
 void report_should_not_call(const char* file, int line);
 void report_should_not_reach_here(const char* file, int line);
+void report_should_not_reach_here2(const char* file, int line, const char* message);
 void report_unimplemented(const char* file, int line);
 void report_untested(const char* file, int line, const char* message);
 
--- a/src/share/vm/utilities/exceptions.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/exceptions.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -88,7 +88,7 @@
   // adequate stack space.
   // This can happen with stress testing a large value of StackShadowPages
   if (h_exception()->klass() == SystemDictionary::StackOverflowError_klass()) {
-    instanceKlass* ik = instanceKlass::cast(h_exception->klass());
+    InstanceKlass* ik = InstanceKlass::cast(h_exception->klass());
     assert(ik->is_initialized(),
            "need to increase min_stack_allowed calculation");
   }
@@ -219,10 +219,10 @@
 void Exceptions::throw_stack_overflow_exception(Thread* THREAD, const char* file, int line, methodHandle method) {
   Handle exception;
   if (!THREAD->has_pending_exception()) {
-    klassOop k = SystemDictionary::StackOverflowError_klass();
-    oop e = instanceKlass::cast(k)->allocate_instance(CHECK);
+    Klass* k = SystemDictionary::StackOverflowError_klass();
+    oop e = InstanceKlass::cast(k)->allocate_instance(CHECK);
     exception = Handle(THREAD, e);  // fill_in_stack trace does gc
-    assert(instanceKlass::cast(k)->is_initialized(), "need to increase min_stack_allowed calculation");
+    assert(InstanceKlass::cast(k)->is_initialized(), "need to increase min_stack_allowed calculation");
     if (StackTraceInThrowable) {
       java_lang_Throwable::fill_in_stack_trace(exception, method());
     }
@@ -257,7 +257,7 @@
   Handle h_exception;
 
   // Resolve exception klass
-  klassOop ik = SystemDictionary::resolve_or_fail(name, h_loader, h_protection_domain, true, thread);
+  Klass* ik = SystemDictionary::resolve_or_fail(name, h_loader, h_protection_domain, true, thread);
   instanceKlassHandle klass(thread, ik);
 
   if (!thread->has_pending_exception()) {
@@ -451,7 +451,7 @@
         message = java_lang_String::as_utf8_string(msg);
       }
     }
-    debug_check_abort(instanceKlass::cast(exception()->klass())->external_name(), message);
+    debug_check_abort(InstanceKlass::cast(exception()->klass())->external_name(), message);
   }
 }
 #endif
--- a/src/share/vm/utilities/exceptions.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/exceptions.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 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
--- a/src/share/vm/utilities/globalDefinitions.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/globalDefinitions.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2010, 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
@@ -112,6 +112,7 @@
       case T_LONG:
       case T_OBJECT:
       case T_ADDRESS:   // random raw pointer
+      case T_METADATA:  // metadata pointer
       case T_NARROWOOP: // compressed pointer
       case T_CONFLICT:  // might as well support a bottom type
       case T_VOID:      // padding or other unaddressed word
@@ -178,7 +179,7 @@
 
 
 // Map BasicType to signature character
-char type2char_tab[T_CONFLICT+1]={ 0, 0, 0, 0, 'Z', 'C', 'F', 'D', 'B', 'S', 'I', 'J', 'L', '[', 'V', 0, 0, 0};
+char type2char_tab[T_CONFLICT+1]={ 0, 0, 0, 0, 'Z', 'C', 'F', 'D', 'B', 'S', 'I', 'J', 'L', '[', 'V', 0, 0, 0, 0};
 
 // Map BasicType to Java type name
 const char* type2name_tab[T_CONFLICT+1] = {
@@ -196,6 +197,7 @@
   "void",
   "*address*",
   "*narrowoop*",
+  "*metadata*",
   "*conflict*"
 };
 
@@ -211,7 +213,7 @@
 
 
 // Map BasicType to size in words
-int type2size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, 1, -1};
+int type2size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, -1};
 
 BasicType type2field[T_CONFLICT+1] = {
   (BasicType)0,            // 0,
@@ -231,7 +233,8 @@
   T_VOID,                  // T_VOID     = 14,
   T_ADDRESS,               // T_ADDRESS  = 15,
   T_NARROWOOP,             // T_NARROWOOP= 16,
-  T_CONFLICT               // T_CONFLICT = 17,
+  T_METADATA,              // T_METADATA = 17,
+  T_CONFLICT               // T_CONFLICT = 18,
 };
 
 
@@ -253,7 +256,8 @@
   T_VOID,    // T_VOID     = 14,
   T_ADDRESS, // T_ADDRESS  = 15,
   T_NARROWOOP, // T_NARROWOOP  = 16,
-  T_CONFLICT // T_CONFLICT = 17,
+  T_METADATA,  // T_METADATA   = 17,
+  T_CONFLICT // T_CONFLICT = 18,
 };
 
 
@@ -275,7 +279,8 @@
   0,                      // T_VOID     = 14,
   T_OBJECT_aelem_bytes,   // T_ADDRESS  = 15,
   T_NARROWOOP_aelem_bytes,// T_NARROWOOP= 16,
-  0                       // T_CONFLICT = 17,
+  T_OBJECT_aelem_bytes,   // T_METADATA = 17,
+  0                       // T_CONFLICT = 18,
 };
 
 #ifdef ASSERT
--- a/src/share/vm/utilities/globalDefinitions.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/globalDefinitions.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -128,6 +128,14 @@
 #endif
 };
 
+// Analogous opaque struct for metadata allocated from
+// metaspaces.
+class MetaWord {
+  friend class VMStructs;
+ private:
+  char* i;
+};
+
 // HeapWordSize must be 2^LogHeapWordSize.
 const int HeapWordSize        = sizeof(HeapWord);
 #ifdef _LP64
@@ -272,6 +280,10 @@
 inline size_t pointer_delta(const HeapWord* left, const HeapWord* right) {
   return pointer_delta(left, right, sizeof(HeapWord));
 }
+// A version specialized for MetaWord*'s.
+inline size_t pointer_delta(const MetaWord* left, const MetaWord* right) {
+  return pointer_delta(left, right, sizeof(MetaWord));
+}
 
 //
 // ANSI C++ does not allow casting from one pointer type to a function pointer
@@ -482,7 +494,8 @@
   T_VOID     = 14,
   T_ADDRESS  = 15,
   T_NARROWOOP= 16,
-  T_CONFLICT = 17, // for stack value type with conflicting contents
+  T_METADATA = 17,
+  T_CONFLICT = 18, // for stack value type with conflicting contents
   T_ILLEGAL  = 99
 };
 
@@ -854,6 +867,7 @@
 class JavaCallWrapper;
 
 class   oopDesc;
+class   metaDataOopDesc;
 
 class NativeCall;
 
@@ -911,6 +925,7 @@
 const int      uninitBlockPad   = 0xF1;                     // value used to zap newly malloc'd blocks.
 const intptr_t badJNIHandleVal  = (intptr_t) CONST64(0xFEFEFEFEFEFEFEFE); // value used to zap jni handle area
 const juint    badHeapWordVal   = 0xBAADBABE;               // value used to zap heap after GC
+const juint    badMetaWordVal   = 0xBAADFADE;               // value used to zap metadata heap after GC
 const int      badCodeHeapNewVal= 0xCC;                     // value used to zap Code heap at allocation
 const int      badCodeHeapFreeVal = 0xDD;                   // value used to zap Code heap at deallocation
 
--- a/src/share/vm/utilities/growableArray.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/growableArray.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -281,6 +281,13 @@
     return -1;
   }
 
+  int  find_from_end(const E& elem) const {
+    for (int i = _len-1; i >= 0; i--) {
+      if (_data[i] == elem) return i;
+    }
+    return -1;
+  }
+
   int  find(void* token, bool f(void*, E)) const {
     for (int i = 0; i < _len; i++) {
       if (f(token, _data[i])) return i;
@@ -288,7 +295,7 @@
     return -1;
   }
 
-  int  find_at_end(void* token, bool f(void*, E)) const {
+  int  find_from_end(void* token, bool f(void*, E)) const {
     // start at the end of the array
     for (int i = _len-1; i >= 0; i--) {
       if (f(token, _data[i])) return i;
--- a/src/share/vm/utilities/hashtable.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/hashtable.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -94,20 +94,6 @@
 
 template <class T, MEMFLAGS F> jint Hashtable<T, F>::_seed = 0;
 
-template <class T, MEMFLAGS F> unsigned int Hashtable<T, F>::new_hash(Symbol* sym) {
-  ResourceMark rm;
-  // Use alternate hashing algorithm on this symbol.
-  return AltHashing::murmur3_32(seed(), (const jbyte*)sym->as_C_string(), sym->utf8_length());
-}
-
-template <class T, MEMFLAGS F> unsigned int Hashtable<T, F>::new_hash(oop string) {
-  ResourceMark rm;
-  int length;
-  jchar* chars = java_lang_String::as_unicode_string(string, length);
-  // Use alternate hashing algorithm on the string
-  return AltHashing::murmur3_32(seed(), chars, length);
-}
-
 // Create a new table and using alternate hash code, populate the new table
 // with the existing elements.   This can be used to change the hash code
 // and could in the future change the size of the table.
@@ -126,7 +112,7 @@
       HashtableEntry<T, F>* next = p->next();
       T string = p->literal();
       // Use alternate hashing algorithm on the symbol in the first table
-      unsigned int hashValue = new_hash(string);
+      unsigned int hashValue = string->new_hash(seed());
       // Get a new index relative to the new table (can also change size)
       int index = new_table->hash_to_index(hashValue);
       p->set_hash(hashValue);
@@ -314,9 +300,9 @@
 
 #endif
 // Explicitly instantiate these types
-template class Hashtable<constantPoolOop, mtClass>;
+template class Hashtable<ConstantPool*, mtClass>;
 template class Hashtable<Symbol*, mtSymbol>;
-template class Hashtable<klassOop, mtClass>;
+template class Hashtable<Klass*, mtClass>;
 template class Hashtable<oop, mtClass>;
 #ifdef SOLARIS
 template class Hashtable<oop, mtSymbol>;
--- a/src/share/vm/utilities/hashtable.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/hashtable.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -25,6 +25,7 @@
 #ifndef SHARE_VM_UTILITIES_HASHTABLE_HPP
 #define SHARE_VM_UTILITIES_HASHTABLE_HPP
 
+#include "classfile/classLoaderData.hpp"
 #include "memory/allocation.hpp"
 #include "oops/oop.hpp"
 #include "oops/symbol.hpp"
@@ -283,9 +284,6 @@
 
  private:
   static jint _seed;
-
-  unsigned int new_hash(Symbol* s);
-  unsigned int new_hash(oop string);
 };
 
 
@@ -302,18 +300,17 @@
     : Hashtable<T, F>(table_size, entry_size, t, number_of_entries) {}
 
 public:
-  unsigned int compute_hash(Symbol* name, Handle loader) {
-    // Be careful with identity_hash(), it can safepoint and if this
-    // were one expression, the compiler could choose to unhandle each
-    // oop before calling identity_hash() for either of them.  If the first
-    // causes a GC, the next would fail.
+  unsigned int compute_hash(Symbol* name, ClassLoaderData* loader_data) {
     unsigned int name_hash = name->identity_hash();
-    unsigned int loader_hash = loader.is_null() ? 0 : loader->identity_hash();
+    // loader is null with CDS
+    assert(loader_data != NULL || UseSharedSpaces || DumpSharedSpaces,
+           "only allowed with shared spaces");
+    unsigned int loader_hash = loader_data == NULL ? 0 : loader_data->identity_hash();
     return name_hash ^ loader_hash;
   }
 
-  int index_for(Symbol* name, Handle loader) {
-    return this->hash_to_index(compute_hash(name, loader));
+  int index_for(Symbol* name, ClassLoaderData* loader_data) {
+    return this->hash_to_index(compute_hash(name, loader_data));
   }
 };
 
--- a/src/share/vm/utilities/xmlstream.cpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/xmlstream.cpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -26,8 +26,8 @@
 #include "code/nmethod.hpp"
 #include "memory/allocation.hpp"
 #include "memory/allocation.inline.hpp"
-#include "oops/methodDataOop.hpp"
-#include "oops/methodOop.hpp"
+#include "oops/methodData.hpp"
+#include "oops/method.hpp"
 #include "oops/oop.inline.hpp"
 #include "runtime/deoptimization.hpp"
 #include "runtime/vmThread.hpp"
@@ -379,7 +379,7 @@
   print(" iicount='%d'", method->interpreter_invocation_count());
   int throwouts = method->interpreter_throwout_count();
   if (throwouts != 0)  print(" throwouts='%d'", throwouts);
-  methodDataOop mdo = method->method_data();
+  MethodData* mdo = method->method_data();
   if (mdo != NULL) {
     uint cnt;
     cnt = mdo->decompile_count();
@@ -399,7 +399,7 @@
   assert_if_no_error(inside_attrs(), "printing attributes");
   if (method.is_null())  return;
   //method->print_short_name(text());
-  method->method_holder()->klass_part()->name()->print_symbol_on(text());
+  method->method_holder()->name()->print_symbol_on(text());
   print_raw(" ");  // " " is easier for tools to parse than "::"
   method->name()->print_symbol_on(text());
   print_raw(" ");  // separator
@@ -442,7 +442,7 @@
 
 void xmlStream::object(const char* attr, Handle x) {
   assert_if_no_error(inside_attrs(), "printing attributes");
-  if (x.is_null())  return;
+  if (x == NULL)  return;
   print_raw(" ");
   print_raw(attr);
   print_raw("='");
@@ -452,14 +452,31 @@
 
 void xmlStream::object_text(Handle x) {
   assert_if_no_error(inside_attrs(), "printing attributes");
-  if (x.is_null())  return;
+  if (x == NULL)  return;
+  x->print_value_on(text());
+}
+
+
+void xmlStream::object(const char* attr, Metadata* x) {
+  assert_if_no_error(inside_attrs(), "printing attributes");
+  if (x == NULL)  return;
+  print_raw(" ");
+  print_raw(attr);
+  print_raw("='");
+  object_text(x);
+  print_raw("'");
+}
+
+void xmlStream::object_text(Metadata* x) {
+  assert_if_no_error(inside_attrs(), "printing attributes");
+  if (x == NULL)  return;
   //x->print_value_on(text());
   if (x->is_method())
-    method_text(methodOop(x()));
+    method_text((Method*)x);
   else if (x->is_klass())
-    klass_text(klassOop(x()));
+    klass_text((Klass*)x);
   else
-    x->print_value_on(text());
+    ShouldNotReachHere(); // Add impl if this is reached.
 }
 
 
--- a/src/share/vm/utilities/xmlstream.hpp	Thu Sep 13 13:15:14 2012 -0700
+++ b/src/share/vm/utilities/xmlstream.hpp	Fri Sep 14 21:50:58 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2002, 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
@@ -140,12 +140,14 @@
   void          method(methodHandle m);  // method='k n s' ...
   void          klass(KlassHandle k);    // klass='name'
   void          name(const Symbol* s);   // name='name'
+  void          object(const char* attr, Metadata* val);
   void          object(const char* attr, Handle val);
 
   // print the text alone (sans ''):
   void          method_text(methodHandle m);
   void          klass_text(KlassHandle k);    // klass='name'
   void          name_text(const Symbol* s);   // name='name'
+  void          object_text(Metadata* x);
   void          object_text(Handle x);
 
   /*  Example uses:
--- a/test/compiler/6859338/Test6859338.java	Thu Sep 13 13:15:14 2012 -0700
+++ b/test/compiler/6859338/Test6859338.java	Fri Sep 14 21:50:58 2012 -0700
@@ -27,7 +27,7 @@
  * @bug 6859338
  * @summary Assertion failure in sharedRuntime.cpp
  *
- * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions  -XX:-InlineObjectHash -Xbatch -XX:-ProfileInterpreter Test6859338
+ * @run main/othervm -Xcomp -XX:+IgnoreUnrecognizedVMOptions  -XX:-InlineObjectHash -Xbatch -XX:-ProfileInterpreter Test6859338
  */
 
 public class Test6859338 {